Nice logo
Programe de desenat - pe care le recomand
 
De-a lungul celor cativa ani in care am lucrat intens in analiza / generarea automata de imagine digitala (mai ales in timpul unor proiecte de anvergura mai mare) a fost necesar ca din cand in cand sa folosesc programe specializate. Cu unele dintre ele am avut experiente traumatizante, dar am  gasit si unele excelente - care pot face fata unor sarcini dificile; pe acestea din urma le prezint mai jos:
 

Grafica tip vectorial Grafica tip raster Fractal & fun.
3D Content


Grafica de tip vectorial
Inkscape screenshot
Inkscape

Este un program de grafica vectoriala (asemanator cu Corel-Draw, Adobe Illustrator sau XaraX), insa cu o versatilitate iesita din comun.
L-am folosit in special pentru crearea de postere / flyere sau demonstratii pe curbe b-spline.
Site: www.inkscape.org

Avantaje Inkscape:
  1. Principal: program de tip Open Source - gratuit; este ideal din aceasta cauza in mediul academic.
  2. Evolutie rapida si constanta, datorat unei comunitati mari de utilizatori-dezvoltatori.
  3. Multiplatform: Windows, Linux, MacOS
  4. Formatul fisierelor este standard .SVG (Scalable Vector Graphics), deci pot fi importate/exportate usor in orice aplicatie care suporta acest standard
  5. Exporta versiuni rasterizate la orice rezolutie, in format .PNG
  6. Poate exporta direct continutul si ca .EPS sau .PDF, avand optiunea de a transforma font-urile in path-uri (si evita orice incompatibilitate cu printerele). Lista completa de formate suportate este:
    • .SVG - Scalable vector Graphics (plain, standard sau compressed svgz)
    • .PS,  .EPS, .EPSI - (Encapsulated) PostScript
    • .PDF - Adobe Portable Document Format
    • .ODG - OpenOffice Document Drawing
    • .TEX - Latex PStricks
    • .DXF - Desktop Cutting Plotter
    • .AI - Adobe Illustrator v.8
    • .XCF - Gimp (pastreaza si layerele)
  7. Utilizare foarte usoara in special in problemele tipice de aliniere, distributie multipla de obiecte pe pagina. Modul de aliniere a textului este foarte bine pus la punct (se poate face aliniere nu numai intr-un "bloc" de text, ci in orice "shape" (orice forma).
  8. Un avantaj major: cateva mii de clipart-uri sunt disponibile gratuit pe internet (in format .svg), una dintre cele mai mari arhive fiind la OpenClipart.
  9. Help-ul programului contine si un tutorial bine scris; de asemenea, exista (pe site-ul proiectului) carti complete si gratuite despre modul de folosire al acestui program.
Dezavantaje Inkscape:
  1. Necesita (ca orice program vectorial) mult RAM numai pentru el (min. 512Mb pentru performate decente la un document A0)
  2. Exportul in spatiul CMYK lipseste
  3. ObjectBrowser-ul este text-only, facand utilizarea lui descurajanta pentru incepatorii care vor sa organizeze documente mai complexe

    Exemple de sarcini la care Inkscape mi-a fost de folos:
  • crearea de grafice pentru documentatia tehnica si stiintifica; precizie deosebita a definirii tipului de linie (tusa) si exportul facil in formatul .eps pentru LaTeX
  • crearea de postere A0 in format vectorial; exportul catre raster poate fi facut la orice rezolutie, astfel ca imaginea finala este de o calitate exceptionala
  • importarea, editarea si exportarea de documente vectoriale .svg
  • crearea de texturi bazate pe modele geometrice precise si fonturi care pot fi manipulate extrem de precis.
  • crearea de flyere (pentru prezentarea la conferinte)
  • excelent program pentru generat calendare, pentru generat spirografuri, grid-uri, etc.


KIG snapshot
Kig


Uneori este necesara rezolvarea grafica a unor probleme sau crearea unor diagrame de geometrie, in care sa se poata modifica rapid unghiurile, punctele de intersectie, etc. KDE's Interactive Geometry este o unealta perfecta pentru aceasta.
Site: http://edu.kde.org/kig/
Demo: http://edu.kde.org/kig/screenshots.php

Avantaje Kig:
  1. Principal: Program Open Source - gratuit;
  2. Poate exporta graficele ca .SVG (Scalable Vector Graphics), XFIG, LATEX, sau raster, PBM.
  3. Coordonate polare sau carteziene
  4. Multe tipuri de obiecte predefinite (segmente, poligoane, cercuri, elipse, conice, etc)
  5. Rezolva rapid probleme de bisectoare, transformari afine, proiectii, etc.
  6. Este foarte usor de  folosit si intuitiv - am incercat cu copii din ciclul gimnazial, s-au descurcat usor cu el.
Dezavantaje Kig:
  1. Nu este disponibil pentru Windows intr-o versiune usor de instalat. (este preinstalat doar pe distributile KDE, deci este mai greu de instalat si configurat pe alte sisteme de operare in afara de GNU/Linux). 
Exemple de sarcini la care Kig mi-a fost de folos:
  • demonstratii interactive pentru mersul razelor de lumina in instrumente optice. Acestea sunt reduse la probleme de geometrie, drept urmare pot fi implementate in Kig.
  • demonstratii si trasari de grafice (plot-uri) ale locurilor geometrice
 


Grafica de tip raster


GNU Gimp
Gimp


GNU Image Manipulation Program
este un program de grafica raster (asemanator cu Adobe Photoshop), folosit pentru retusare foto, manipulare de imagine, etc. Desi nu poate concura (complet) cu Photoshop-ul, poate fi folosit cu acelasi success in locul acestuia in multe proiecte.
Site (inclusiv tutoriale): http://gimp.org/
Carte: Grokking the GIMP

Avantaje Gimp:
  1. Principal: Program Open Source - gratuit;
  2. Multiplatform: Windows, Linux, MacOS, etc.
  3. Are majoritatea facilitatilor si filtrelor care pot fi gasite in Photoshop
  4. Exportul in format .JPG este extrem de detaliat si se pot obtine imagini de calitate mare dar cu dimensiuni  mici, prin ajustarea fina a parametrilor. Multe dintre imaginile de pe acest site sunt realizate cu GIMP. De altfel, poate importa/exporta documentele intr-un numar impresionant de formate de imagine raster sau rasterizabile (38 de formate in total, inclusiv cele uzuale: .bmp, .jpg, .tiff, .tga, .png, .pcx, .ico, .pnm, .psd, .txt, .html, .h, .c) [Da, poate exporta imagini ca text, ca ascii art, sau encoding pentru cod sursa in limbaj C. ]
  5. Suporta multe plug-in-uri aditionale (separat fata de distributia de baza)
  6. Suporta lucrul cu imagini animate (.GIF), fiecare frame fiind importat intr-un layer.
  7. M-a salvat de mai multe ori prin rasterizarea la calitate exceptionala a unor imagini .EPS incorect exportate, imagini care nu puteau fi deschise cu Photoshop de ex.
  8. Un pachet mare de  templateuri  si de efecte  deosebite dedicate  generarii de imagini pentru  web (roll-overs, glows, image-maps, etc), via Script-Fu (un limbaj de scripting dedicat)
  9. Foarte util, pentru mine, a fost un filtru care permite obtinerea de  mozaicuri care se imbina perfect pe orice latura, din orice imagine, oricat de nesimetrica ar fi aceasta (Filters->Map->Make Seamless)
Dezavantaje Gimp:
  1. Exista un numar enorm de opinii pro/contra GIMP, si prefer sa nu ma amestec in preferintele fiecaruia, limitandu-ma doar la inconvenientele pe care le-am sesizat eu. 
  2. In instalarea implicita, nu are suport pentru automatizarea actiunilor repetitive, ceea ce il face greu de utilizat pentru seturi mari de imagini.  
  3. O filozofie diferita de utilizare, ceea ce impune neaparat petrecerea catorva ore bune de citit manuale si how-to-uri.
  4. Necesita un ecran cu rezolutie mare, interfata neexeceland in ergonomie.

    Trebuie spus insa ca aceste dezavantaje pot fi depasite prin diverese tehnici, astfel ca GIMP ramane unul dintre cele mai puternice programe de prelucrare grafica-raster gratuite existente.



ImageMagick


Este un set de programe fara interfata grafica (se utilizeaza din lina de comanda). Aceste programe pot modifica fisiere-imagine (convertiri intre formate, scalari, extragere de obiecte, filtre, etc.) ImageMagick este probabil cea mai buna alegere atunci cand este necesara prelucrarea similara a sute de imagini.
Site: http://www.imagemagick.org

Avantaje ImageMagick:
  1. Principal: scriptabilitate totala; se pot crea relativ usor scripturi cu comenzi catre ImageMagick, care sa faca prelucrari complexe de imagine, pe un numar mare de imagini. Este ideal pentru taskuri repetitive (de ex: cresterea contrastului cu 20% in toate imaginile dintr-un director dat, etc.)
  2. Program Open Source - gratuit;
  3. Multiplatform (inclusiv Windows si Linux)
  4. Necesita putin RAM: programele din pachetul IM pot prelucra pe calculatoare modeste imagini cu dimensiuni mari (>10.000 pixeli). Acesta  este  un avantaj enorm  atunci cand  trebuiesc prelucrate succesiv multe imagini de dimensiuni mari - de obicei Adobe Photoshop BatchProcessing va esua din lipsa de memorie in astfel de cazuri.
  5. Suporta un numar substantial (> 100)  de formate de imagine (inclusiv CMYK de diverse tipuri, YCbCrA, si diverse formate RAW ale camerelor foto, DPX si EXR). Lista completa a tipurilor de imagini care pot fi citite, recunoscute sau prelucrate de ImageMagick, aici.
Dezavantaje ImageMagick:
  1. Este destinat in principal utilizatorilor avansati, care au cunostinte minime de algoritmi, si care au mai folosit programe in linia de comanda (scrierea de scripturi gen .bat sau .sh)
Exemple de sarcini la care ImageMagick mi-a fost de folos:
  • se cere ca imaginea sursa sa fie descompusa in sub-imagini (tiles) de 16x32 pixeli. Operatiunea trebuie aplicata pe toata imaginile sursa dintr-un folder dat.
  • Se cere ca fiecare frame dintr-o animatie .gif sa fie salvat ca imagine separata; fiecare imagine rezultata trebuie sa fie convertita din indexed-colorspace in RGB-colorspace. Operatiunea de convertire a trebuit sa fie efectuata pe o ierarhie de foldere si subfoldere, continand  ~ 800 de imagini .gif
La un moment dat voi face o pagina separata cu script-uri si comenzi imagemagick. Documentatie integrala si exemple sunt insa din belsug pe site-ul imagemagick.


Fara imagine
JAI si Java2D


Nu sunt programe propriu-zise ci librarii de functii pentru prelucrare de imagine, care pot fi folosite din cadrul programeleor scrise in Java. Java2D este suficient pentru crearea usoara de orice tip de imagini; intre facilitatile pe care le-am folosit sunt antialising variabil, layer-ing si alpha-blending; de asemenea, toate operatiile de I/O cu imagini sunt banale (1 linie de cod), ceea ce permite concentrarea pe problema de rezolvat, nu pe detalii de implementare.

JAI - Java Advanced Imaging contine functii pentru modificat structura imaginii (proiectii, transformari afine, transformari proiective speciale si generale) precum si suport pentru stack-uri de imagini (ex: imagini volumetrice din scannere CT/RMN) sau imagini multi-rezolutie.
Este folosit in mai multe proiecte de anvergura mare (de ex. prelucrarea imaginilor trimise de  robotii NASA Mars-Rovers).
Site Java2D: http://java.sun.com/javase/technologies/desktop/media/2D/
Site JAI:  http://java.sun.com/javase/technologies/desktop/media/jai/

Avantaje:

  1. Sunt distribuite gratuit de catre Sun Microsystems (preluat de Oracle)
  2. Multiplatforma
  3. Documentatie excelenta si specificatiile disponibile
  4. Tutoriale si how-to-uri cu exemple clare
  5. Rezolvare foarte usoara si eleganta a situatiilor in care se cere suprapunerea de imagini cu transparenta, impreuna cu prelucrarea pe loc acestora
Dezavantaje:
  1. Pot fi folosite numai din cadrul programelor scrise in Java
  2. Accelerarea hardware pentru imagini nu este disponibila pentru toate platformele sau toate tipurile de placi video (in special accesul la memoria video
  3. Instalarea JAI si Java2D este contraintuitiva iar navigarea pe site-ul lor lasa de dorit.
Exemple de sarcini la care JAI-Java2D mi-au fost de folos:
  • analiza de imagine (distributie de entropie)
  • algoritmi de deformare vectoriala a unor imagini raster date (grid morphing)
  • crearea de imagini-test in cercetare psihofizica, oftalmologica



Fractal and fun

Screenshot Apophysis
Apophysis


Este un generator freeware de imagini fractale de tip "flacara" (flame fractals).
Site: http://www.apophysis.org/

Imagini spectaculoase realizate cu acest program, la:
http://apophysis.deviantart.com/




Ascii Art example - AALIB and CACAFIRE
Ascii art

           ________
            <  COOL  >
                   
--------
                   
        \   ^__^
                   
         \  (@@)\_______
                   
            (__)\       )\/\
                  
                ||----w |
                
                   ||     ||
                  
##############################

(realizat de programul "cowsay")

  Este o suite de tehnici care transforma imagini obisnuite in versiuni simplificate compuse din caractere. Traditional sunt folosite caractere ASCII cu font tip "fixed", dar se pot folosi si fonturi truetype. Mai demult se realizau manual, dar este posibila si folosirea de programe si librarii grafice dedicate. Sunt folosite atunci cand o imagine raster poat fi greu reprodusa (placi video vechi cu iesire text-only, printere si teletipuri cu iesire text, iar mai nou, conexiuni prin terminale text, la servere fara iesire grafica (gen ssh sau telnet). Plus, pentru glume, bannere text, chat.

  Cea mai raspandita librarie este aalib, care genereaza imagini folosind fonturi monocrome; exemple si detalii la: 
http://en.wikipedia.org/wiki/AAlib  si la  http://aa-project.sourceforge.net/

Imaginea de mai sus este generata de cacafire, un program-exemplu pentru alta librarie ascii-art, libcaca. Aceasta e o imbunatatire a celei precedente, in sensul ca are suport pentru culori, caractere unicode, Detalii si exemple la http://caca.zoy.org/wiki/libcaca

caca-utils este un pachet de programe care contine:
cacaview - un viewer de imagini, in mod text
cacaxine - un player multimedia care functioneaza in mod text, alaturat este un exemplu al acestui player
img2txt - un convertor de imagini raster
cacaserver, cacaplay:  pentru streaming-ul animatilor text
Demonstratii vizuale  spectaculoase: cacafire (imaginea de la inceputul sectiunii), cacademo, si altele pe siteul libcaca.   
screenshot cacaxine - KungFu Panda


Pentru creatia de bannere, anunturi printate, etc, un programel interesant este FIGLET, care converteste un text oarecare intr-o versiune asciiart. Se pot selecta dinverse moduri de creare a caracterelor, etc. Exemplu:

################################
 _____ _       _         _
|  ___(_) __ _| |    ___| |_
| |_  | |/ _` | |   / _ \ __|
|  _| | | (_| | |__|  __/ |_
|_|   |_|\__, |_____\___|\__|
         |___/

###############################

Un program asemanator este banner (BSD, slackware) sau printerbanner (debian) pe care l-am folosit bine pe vechile printere matriciale cu foaie perforata (mai exista functionale!).





3D Content



3D Studio Max


Este unul din programele standard industriale de grafica 3D tip CAD (Computer Aided Design). Este destinat sa fie un modelator de suprafete (nu de volume) de uz general (artistice, arhitectura, inginerie si animatie).

 

Site Autodesk - Discreet 3DSMax;    O descriere sintetica: wikipedia - 3dstudiomax

Avantaje:

  1. Are o istorie indelungata si este considerat matur.
  2. Deoarece este foarte folosit in medii industriale (design, jocuri pe calculator, efecte speciale in filme), numarul de optiuni si de functii este enorm. Exista module aditionale pentru sarcini mai putin uzuale.
  3. Animatia poate fi realizata atat prin tweening cat si parametric (se scrie sau se specifica ecuatia de miscare a obiectului, parametric). Aceasta este motivul principal pentru care l-am folosit in cateva proiecte in care era necesara o animatie stiintifica precisa.
  4. Documentatie excelenta in Help (atat ca tutoriale, cat si ca manual tehnic. Parcurgera documentatiei este o experienta educationala in sine, punand intr-un mod clar impreuna cunostinte de geometrie 2D si 3D, optica, fizica, modelare, mecanica. 
Dezavantaje:
  1. Un pret prohibitiv - chiar pentru companii medii. De aceea, alegerea lui 3DSmax pentru un proiect trebuie analizata inainte. Din fericire, exista licente educationale / academice. 
  2. Numarul de optiuni si de functii este de-a dreptul intimidant la primul contact cu el, si poate parea frustranta incercarea de a-l folosi fara documentatie
  3. Nu este foarte potrivit pentru modelarea "organica" (desi se poate realiza cu succes, necesita mai multa munca decat cu alte programe dedicate)
Comentarii: Exista o multime de programe de grafica 3D, care sunt mai mult sau mai putin specializate, de ex. ZBrush (sculptura), Rhino (NURBS), Bryce, (peisaje), sau Poser (modelare caractere). 3DSMax este un program "generalist", de aceea comparatia intre el si acestea nu isi are locul.   Poate fi comparat insa cu alte programe 3D generale, gen Maya sau Cinema 4D, dar discutia nu isi are locul in aceasta pagina.   


Blender interface screenshot
Blender


Este un program de modelare 3D, gratuit (si de tip OpenSource) care a evoluat spectaculos in ultimii ani.

Site: http://www.blender.org/

Galerie de imagini spectaculoase realizate cu Blender: aici.

Avantaje:
  1. Multiplatforma (Windows 32 si 64 bit, Linux 32 si 64 bit, Mac si altele)
  2. O comunitate foarte mare de sustinatori entuziasti (cu wiki-uri utile, tutoriale, etc)
  3. Multe tutoriale sunt disponibile in format video
  4. Diverse tipuri de render-engine-uri si camere (inclusiv camere tip fish-eye)
  5. Un "Work-flow editor" foarte util, sub forma de diagrame care permit editarea usoara a actiunilor (de ex: redarea unui obiect modelat in doua perspective cu corectii de culoare, pentru producerea de stereograme rosu-verde)
  6. Tehnicile de texturare sunt foarte clare
Dezavantaje:
  1. Interfata grafica este foarte diferita de alte programe din aceeasi categorie. Desi categoric ergonomica (este mai compacta, fara suprapuneri de ferestre), eu nu am reusit sa ma descurc fara sa citesc documentatie si mai ales sa ma uit la tutoriale video.
  2. Accelerarea hardware pentru imagini nu este disponibila pentru toate platformele sau toate tipurile de placi video (in special accesul la memoria video)



Vilarceau Circles - generated and rendered in POVRay by T.O. Kristensen
POVRAY

Persistence of Vision - Raytracer

Site: http://www.povray.org/

Exemple spectaculoase: http://hof.povray.org/

POVRAY este un program gratuit si open-source pentru obtinut imagini 2D ale unor scene 3D ("rendering"), care foloseste ca tehnica ray-tracing-ul. Calitatea imaginilor obtinute este exceptionala, fotorealista (suporta reflexii, refractii, foton-mapping, radiosity).

Scena care urmeaza a fi desenata ("rendered") este scrisa intr-un limbaj propriu, "Scene Description Language", si poate fi createa in orice editor de texte. 

Avantaje:

  1. Gratuit, Multiplatforma
  2. Abilitatea de a genera prin calcul obiectele care urmeaza a fi randate (de ex. obiecte fractale 3D, gen Sierpinski, etc)
  3. Documentatie excelenta si specificatiile disponibile
  4. Tutoriale si how-to-uri din belsug
Dezavantaje:
  1. Intelegerea limbajului de descriere a scenei necesita timp
  2. Greselile sunt frustrante - sunt observabile dupa ce calcularea scenei a fost finalizata
  3. Durata de calcul este foarte mare uneori, pentru scene complexe.






Ce este homeopatia?