Faceți căutări pe acest blog

sâmbătă, 12 noiembrie 2011

Imagini ca ASCII art și mozaic

 Chestii inutile, dar simpatice... :D

 Putem transforma imaginile (.png, jpg, .jpeg, etc)  în fișiere text în care pixelii imaginii sunt înlocuiți de caractere ASCII sau în imagini mozaic, formate din alte imagini. Vom lua o imagine (F_wallpaper.png) pe care o vom supune diverselor transformări:
 După cum observați am ales o imagine destul de mare (1280x800) și viu colorată, tocmai pentru ca transformările să fie cât mai vizibile...


 ASCII
 Pentru a transforma o imagine în artă ASCII avem nevoie de aalib (în funcție de distribuție pachetul se poate numi aa-lib, libaa, etc, în Arch Linux este aalib) și ascii. În consolă/ terminal dăm comanda:
asciiview imagine.png                 (de exemplu asciiview F_wallpaper.png)
și vom primi o fereastră cu rezultatul. Dacă facem un screenshot acelei ferestre putem salva fișierul modificat în ASCII:
 După cum se vede, rezultatul este alb-negru, dacă dorim și culori vom folosi libcaca și caca-utils (acest pachet e-n AUR), în același mod cum  am folosit asciiview (salvăm imaginea tot cu screenshot al ferestrei rezultate), deci comanda dată în consolă va fi:
cacaview imagine.png      (cacaview F_wallpaper.png)
 Acum seamănă mult mai bine cu imaginea originală.


 Mozaic
 Dacă vi se pare cam simplistă și brută transformarea imaginilor în ASCII puteți alege o imagine- mozaic, formată din multe alte imagini. Eu folosesc wallpaperele (și unele din screenshoturile mele) pe post de ”pietricele”/ thumbnails/ părți componente ale imaginii convertite. În primul rând avem nevoie de o aplicație ce va face conversia, metapixel, pixelize, sau altceva. Pixelize este un utilitar cu GUI, mai simplu de folosit (și mai rapid...), dar calitatea conversiilor sale este mult inferioară celei obținute cu metapixel, așa că voi prezenta metapixel detaliat și la final câteva cuvinte despre pixelize.

 1- Avem nevoie de un director cu imagini (fotografii, wallpapere, screenshoturi, preferabil în număr cât mai mare/ eu am vreo 500 și tot mi-ar prinde bine mai multe), și trebuie să creăm un director ce va conține baza de date pentru metapixel (mkdir .metapixel-db). Observați că directorul nou- creat va fi ascuns în /home/user și va avea un nume sugestiv, ușor de asociat aplicației și scopului.
 2- Vom pregăti acea bază de imagini pentru metapixel dând în consolă comanda:
 metapixel-prepare -r director-cu-imagini .metapixel-db
 (exemplu concret->   metapixel-prepare -r ~/Pictures .metapixel-db )
Dacă dorim putem alege și dimensiunile în care vor fi convertite imaginile de origine, adăugând comenzii precedente parametrii: --width=24 --height=24
(sau alte dimensiuni în funcție de preferințe). Astfel toate imaginile din directorul-cu-imagini vor fi redimensionate la 24x24 pixeli și vor fi mutate în .metapixel, unde vor constitui piesele din care se va construi mozaicul. Dacă nu dăm parametrii referitori la rezoluție în această comandă, sau dorim ca ”piesele” mozaicului să aibă altă dimensiune putem specifica acest lucru în comanda de conversie propriu- zisă.
 3- Acum putem trece la treabă, dând în terminal comanda:
metapixel --metapixel imagine-sursă.png  imagine-rezultat.png -l director-sursă --scale=5 --distance=10
 Exemplul concret:
metapixel --metapixel F_wallpaper.png  F_wallpaper-mozaic.png -l .metapixel --scale=5 --distance=10
Parametrii ce pot fi folosiți:
--scale     = mărim imaginea rezultată de 5 ori față de cea sursă, iar după terminarea conversiei o redimensionăm/ micșorăm la loc, astfel calitatea imaginii obținute va fi mult mai bună. Cu cât factorul de mărirre este mai mare, imaginea va fi mai bună, dar și timpul de procesare va crește simțitor, ca și dimensiunea fișierului respectiv, la un factor de 35 mi-a rezultat o imagine enormă, de aproximativ 600 MB, timpul de prelucrarea fiind de aproximativ 60 minute, pe un PC bunicel, dacă aveți componente slabe, mulțumiți-vă cu valori în jur de 4-10!!! Nici să nu vă gândiți să deschideți acea imagine, după terminarea procesului de conversie redimensionați-o la valori normale, fie în consolă/ trebuie să aveți instalat pachetul imagemagick (convert -resize 1024 imagine.png imagine-dorită.png / acestă comandă va redimensiona imaginea la valoarea de 1024 pixeli lățime, înălțimea fiind calculată în raport cu lățimea... dacă preferați puteți pune valoarea exactă 1024x768, sau ce valori doriți), fie cu altceva (eu mai folosesc Kim4 în Dolphin sau Krusader după cum am scris aici: http://stressat.blogspot.com/2011/06/dolphin.html).
 Modul de lucru al metapixel este simplu, în primul rând împarte imaginea în sectoare, le scanează și observă culoarea predominantă sectorului respectiv, caută în baza de date o imagine cât mai apropiată și în ultima fază înlocuiește sectorul cu imaginea aleasă.
 Câțiva parametri folosiți:
--distance     = alegem distanța dintre locurile în care poate fi folosită aceeași imagine/ parte componentă a mozaicului; dacă baza noastră de date conține puține imagini e bine ca valoarea atribuită acestui parametru să fie mică.

--width (respectiv --height)    = stabilim dimensiunile imaginilor fragment (lățime și înălțime); pentru o imagine cât mai aproape de original acceste valori vor fi mici.

-l (--library)   = directorul bază de date (în exemplul meu .metapixel-db).

--cheat   = gradul de opacitate (între 0 și 100).
 Pentru alți parametri posibili dați comanda metapixel --help în consolă.
 Iată câteva imagini rezultate, imaginile diferă datorită dimensiunii fragmentelor componente și gradului de mărire, cu cât dimensiunea imaginilor fragment este mai mică și factorul de mărire este mai mare, cu atât este calitatea imaginilor mai bună (dar crește și timpul de procesare):

    --scale=4

    --scale=8

    --scale=15


 Pixelize
 Cum întotdeauna unii utilizatori vor evita CLI, pentru aceștia prezint altă aplicație pentru transformat imaginile în mozaic: Pixelize.
1- instalăm pixelize.
2- creăm baza de date necesară:
make_db director-cu imagini/*       (make_db Pictures/* în cazul meu)
3- pornim aplicația tastând pixelize în consolă sau krunner și apăsând Enter. Vom primi fereastra următoare:

 Încărcăm o imagine cu clic pe ”File”- Open- navigăm prin directoare (afișate în partea stângă a ferestrei) și fișiere (afișate în panoul din dreapta)- selectăm o imagine- acum dăm clic pe ”Options”- Options- dăm valorile dorite la dimensiunea sau numărul imaginilor componente, factorul de apropiere admis (duplicate)- Dismiss-

iar clic ”Options”- Render- așteptăm să se termine procesarea- clic ”File”- Save- alegem locația și numele imaginii rezultate- închidem.

 Imaginea sursă:

  Imaginea mozaic rezultată (din câte am observat, nu se pot totuși modifica la opțiuni dimensiunea fragmentelor, numărul lor, depărtarea între fragmente identice!):

 Pentru a putea face comparații corecte între metapixel și pixelize, am prelucrat și prima imagine cu pixelize:

Niciun comentariu:

Trimiteți un comentariu

Back to top