an artistic transformation algorithm for digital photos · classic painting styles. the algorithm...
TRANSCRIPT
-
XGEN 2020
An artistic transformation algorithm for digital
photos
Laura Cosma
student, Universitatea Tehnică Cluj Napoca, Centrul universitar Nord
Baia Mare, România
email [email protected]
Abstract— In the fine arts, especially in painting, people have
used, over time, various techniques to create unique visual
experiences, by composing a complex interaction between the
content and the style of represented images. The algorithm
underlying this process is so far unknown. There is no artificial
system with similar capabilities.
This work presents a new algorithm for automatically
creating high-quality visual artistic images that emulate several
classic painting styles. The algorithm is based on point
transformations, nonlinear filters, contour enhancement, and
various color spaces.
Keywords—digital image processing, non-photorealistic
rendering
I. INTRODUCERE
Arta picturii a debutat în perioada preistorică a omenirii și continuă în zilele noastre. In timpurile vechi , când nu existau aparate fotografice, pictura era folosită pentru a crea amintiri, iar lucrările erau cu atât mai prețuite cu cât reproduceau mai fidel realitatea (până la nivelul celor mai fine detalii). Tehnicile de pictură au evoluat în timp.
Apariția aparatelor fotografice care capturează cu ușurință și cele mai mici detalii, a adus schimbarea tehnicilor de pictură. Picturile foto-realiste si-au pierdut valoarea, din cauza asemănării cu fotografiile ieftine. Cele mai apreciate opere de artă în prezent sunt cele care surprind doar elementele esențiale ale imaginilor. În Fig. 1 este prezentată evoluția tehnicilor de pictură. În Fig. 1.a este prezentat un portret realizat în anul 1620 de Anthon van Dyck, folosind o tehnică foto-realistă. În Fig. 1.b este prezentat un tablou din perioada impresionismului (Răsărit de Claude Monet). În Fig. 1.c și 1.d sunt prezentate 2 tablouri din perioada expresionismului (Țipătul de Edvard Munch, care este cel mai scump tablou în prezent, și un portret de Van Gogh). Se observă că în ultimele curente artistice nu se mai pune nici un preț pe reproducerea imaginilor cu fidelitate fotografică
a. b.
c. d.
Fig. 1. Evoluția tehnicilor de pictură
II. STUDIU BIBLIOGRAFIC
Un algoritm complet automat, proiectat pentru a
transforma o fotografie într-o imagine de pictură în ulei este
prezentată în [1]. În [2] sunt prezentate principalele tehnici de
transformate a fotografiilor în imagini artistice. Sunt trecute
în revistă atât tehnicile semi-automate de pictură, cât și o serie
de algoritmi care funcționează complet automat. O serie de
algoritmi și tehnici de generare a picturilor, ilustrațiilor și
animațiilor pe calculator sunt prezentate în [3]. Algoritmii
prezentați sunt proiectați astfel încât să producă imagini
plăcute și expresive, care au aspectul de picturi sau desene
realizate manual. În [4] este prezentată o tehnică de
transformare a unei secvențe video într-o animație cu aspect
de pictură realizată manual. În [5] este prezentat un sistem de
reprezentare non-fotorealistă a imaginilor cu ajutorul liniilor
de hașură, care funcționează în timp real. Un algoritm și
diverse tehnici de reprezentare a suprafețelor în creion și
cerneală sunt prezentate în [6]. În [7] este prezentat un
algoritm care utilizează contururi pentru a reda scene grafice
3D pe calculator într-un mod stilizat, sugerând complexitatea
scenei fără a o reprezenta în mod explicit. În [8] sunt
prezentate tehnici de redare non-fotorealiste care
manipulează marginile și textura, pentru a realiza o
reprezentare dorită a scenei. Majoritatea metodelor
descompun imaginea folosind filtre de conservare a
marginilor și lucrează independent la straturile de bază și
detaliile rezultate pentru a obține efectele vizuale dorite. În
[9] este descris un algoritm original pentru detectarea
marginilor obiectelor. În [10] este prezentată o metodă de
redare automată a ilustrațiilor de copaci în creion și cerneală.
Un model arbore 3-d dat este ilustrat de scheletul arborelui și
o reprezentare vizuală a frunzișului folosind primitive de
desen abstract. În [11] este prezentat un set de algoritmi
pentru redarea suprafețelor netede prin linii artistice. Este
prezentat un algoritm eficient, pentru identificarea siluetelor
bazate pe dualitate geometrică și un algoritm pentru
-
segmentarea curbelor siluetei în părți netede, cu vizibilitate
constantă. În [12] este prezentată o metodă de redare artistică
pentru suprafețe polinomiale, care este capabilă funcționeze
în timp real. În [13] este prezentată o metodă de creare a unor
imagini abstracte cu aspect de artă impresionistă. În [14] sunt
prezentați doi algoritmi de redare a imaginilor care păstrează
consistența scenei. Acești algoritmi utilizează o hartă de
adâncime relativă furnizată de utilizator. În [15] sunt
prezentate metode care funcționează în timp real pentru a
imita stilurile de desene animate, precum si variații ale unei
tehnici de mapare a texturii pentru a realiza schițe în timp
real. În [16] se propune o reprezentare a imaginilor prin nori
de puncte. În [17] se propune o tehnică pentru transformarea
automată a unei imagini într-un desen în creion. În [18] este
prezentată o tehnica de redare a materialelor si a obiectelor
cu geometrie complexă. În [19] este prezentată o metodă de
reprezentare în timp real a imaginilor, utilizând tehnici de
hașură.
III. DESCRIEREA ALGORITMULUI
Algoritmul de realizare a picturilor digitale este un algoritm asistat. Din cauza diversității imaginilor de intrare, acesta nu poate funcționa complet automat. Pe parcursul funcționării trebuie luate o serie de decizii ce influențează rezultatul final.
Algoritmul conține trei etape principale de prelucrare, care sunt prezentate în Fig. 2: Preprocesare, Pictură și Postprocesare.
A. Etapa de preprocesare
În prima etapă de preprocesare se pot realiza o serie de corecții la nivelul fotografiei originale. Acestea sunt: ajustarea nivelului de saturație, corecția gamei de culori și ajustarea luminozității. În această etapă sunt folosite următoarele trei spații de culoare: Red Green Blue (RGB), Hew Saturation Brightness (HSB) și un spațiu original de tip luminanță – crominanță (YC1C2). Mai multe informații despre spațiile de culoare se găsesc în [20] și [21].
Fotografie originală
Preprocesare• Ajustare saturație• Corecție gamma• Ajustare luminozitate
Pictură• filtru median
Accentuare tușe• accentuare detalii
Efecte speciale• filtru minim• filtru maxim
Postprocesare• Ajustare contrast• binarizare
Pictură
Fig. 2. Etapele de prelucrare ale algoritmului de pictură digitală
Spațiul RGB este folosit pentru afișarea imaginilor pe ecran, pentru corecțiile de gamă, pentru ajustarea saturației și a luminozității. Fiecare pixel al unui ecran color are trei componente, ce pot fi afișate cu diverse intensități. Cele trei componente sunt culori pure: roșu verde și albastru. Aproape orice nuanță din spectrul vizibil poate fi sintetizată cu ajutorul a trei stimuli luminoși ce sunt recepționați de cele trei tipuri de celule fotosensibile ce intră în alcătuirea retinei. Astfel orice imagine fotografică poate fi reprezentată prin trei componente ce conțin nivelurile de roșu verde și albastru ale fiecărui pixel. Acest aspect este prezentat în Fig. 3.
Spațiul de culoare RGB are forma unui cub, care este prezentat în figura 4. Punctele de pe diagonala reprezentată cu linie punctată a cubului reprezintă nuanțe de gri și nu au culoare. Nuanțele sunt cu atât mai colorate cu cât sunt mai îndepărtate de diagonală.
De regulă, intensitățile celor trei componente color ale fiecărui pixel sunt reprezentate pe 8 biți, deci au valori întregi din intervalul [0, 255]. Aplicația care implementează algoritmul propus, permite corectarea gamei de culori cu ajutorul a 3 slidere, câte unul pentru fiecare componentă a spațiului de culoare RGB.
a. Imaginea originală b. Componenta R
c. Componenta G d. Componenta B
Fig. 3. Componentele RGB ale unei imagini color
Fig. 4. Spațiul de culaore RGB
-
Cele trei slidere permit stabilirea a trei constante de ajustare (𝑘𝑟 , 𝑘𝑔 ș𝑖 𝑘𝑏) din intervalul [-100, 100], cu ajutorul cărora se ajustează intensitățile celor 3 componente (𝑟, 𝑔, 𝑏) ale fiecărui pixel. Intensitățile corectate (𝑟𝑐 , 𝑔𝑐 ș𝑖 𝑏𝑐 ) sunt calculate pe baza relației (1). Astfel se evită ca valorile corectate să iasă în afara intervalului permis de valori.
𝑟𝑐 = min (max(𝑟 + 𝑘𝑟 , 0) , 255)
𝑔𝑐 = min (max(𝑔 + 𝑘𝑔, 0) , 255)
𝑏𝑐 = min (max(𝑏 + 𝑘𝑏 , 0) , 255)
(1)
Programul ce implementează algoritmul propus conține două modalități de ajustare a nivelului de saturație și a luminozității. Prima modalitate se bazează pe spațiul de culoare HSB. Acesta permite reprezentarea fiecărui pixel dintr-o imagine cu ajutorul a trei componente ale căror valori se găsesc în intervalul [0, 1]. Prima componentă (Hue) reprezintă culoarea, cea de-a doua (Saturation) reprezintă nivelul de saturație, sau cât de intensă e culoarea, iar cea de-a treia (Brigthtness) reprezintă luminozitatea pixelului.
Spațiul de culoare HSB este prezentat in Fig. 5 și are forma unui cilindru [20]. Întreaga bază inferioară a cilindrului reprezintă culoarea negru. Axa cilindrului reprezintă niveluri de gri, care nu au culoare. Punctul aflat în centrul bazei superioare reprezintă nuanța cea mai luminoasă de alb. Unghiul H reprezintă culoarea pixelului. Intensitatea culorilor este cu atât mai mare cu cât nuanțele sunt mai îndepărtate față de axa cilindrului, iar luminozitatea crește cu cât nuanțele sunt mai îndepărtate față de baza cilindrului.
Pentru corecția gamei de culori, se realizează conversia din spațiul de culoare RGB în HSB, după metoda prezentată în [20]. În continuare se aleg cu ajutorul a două slidere două constante de corecție (𝑘𝑠 ș𝑖 𝑘𝑏) din intervalul [-1, 1]. Valorile corectate ale celor două componente (𝑠𝑐 ș𝑖 𝑏𝑐) se calculează pentru fiecare pixel pe baza relației (2). Astfel se evită depășirea limitelor intervalului de valori admise [0, 1] pentru cele 2 componente ajustate. In final imaginea este convertită înapoi in spațiul de culoare RGB pentru afișare pe ecran.
A doua modalitate de ajustare a nivelului de saturație este
o modalitate originală bazată pe un spațiu de tip luminanță –
crominanță.
𝑠𝑐 = min (max(𝑠 + 𝑘𝑠, 0) , 1)
𝑏𝑐 = min (max(𝑏 + 𝑘𝑏 , 0) , 1) (2)
.
Fig. 5. Spațiul de culaore HSB
Spațiile color de tip luminanță – crominanță sunt
modelate după acuitatea sistemului vizual uman, care are o
sensibilitate mult mai mare la lumină decât la culoare. Un
astfel de spațiu are următoarele 3 componente: O componentă
de luminozitate (luminanță) Y și 2 componente care au
denumiri diferite în spațiile de culoare cunoscute și acestea
reprezintă informația de culoare. În implementarea propusă
am utilizat un spațiu de culoare original, pe care l-am numit
YC1C2. Transformarea din RGB in YC1C2 se face pe baza
relației (3).
[𝑌𝐶1𝐶2
] = [0.299 0.587 0.114
0.5 −0.2 −0.30.3 0.4 −0.7
] [𝑅𝐺𝐵
]= 𝐴 [𝑅𝐺𝐵
] (3)
Coeficienții de pe prima linie a matricei de transformare A au fost determinați pe cale experimentală [20], [21], și au proprietatea că suma lor este 1. Sumele coeficienților de pe liniile 2 și 3 sunt 0. Transformarea inversă din RGB în YC1C2 este dată de relația 4:
[𝑅𝐺𝐵
] = 𝐴−1 [𝑌𝐶1𝐶2
] (4)
Datorită proprietăților matricei A, toate elementele de pe prima coloană a matricei inverse au valoarea 1. În consecință pentru pixelii gri care nu au culoare, C1 = C2 = 0, iar R = G = = B = Y.
Este cunoscută din literatură [20], [21] o tehnică de desaturare a imaginilor color, ce se bazează pe relația 5:
[
𝑅𝑑𝐺𝑑𝐵𝑑
] = [𝑌𝑌𝑌
] + 𝑠 [𝑅 − 𝑌𝐺 − 𝑌𝐵 − 𝑌
] (5)
unde 𝑠 ∈ [0,1] este o constantă care reprezintă nivelul de desaturare. Astfel pentru s = 0 imaginea devine alb – negru, iar pentru s = 1 imaginea rămâne nemodificată.
În cadrul aplicației propuse am folosit o tehnică originală care permite atât micșorarea cât și creșterea nivelului de saturație. Tehnica propusă se bazează pe relația 6:
[
𝑅𝑚𝐺𝑚𝐵𝑚
] = [𝑅𝐺𝐵
] + 𝑘 [𝑅 − 𝑌𝐺 − 𝑌𝐵 − 𝑌
] (6)
unde k este o constantă din intervalul [-1, 1]. Pentru k = -1 imaginea este desaturată total, iar pentru k = 1, intensitatea culorilor este mărită. Pentru evitarea apariției distorsiunilor, valoarea maximă a componentelor ajustate (𝑅𝑚, 𝐺𝑚 si 𝐵𝑚 ) este limitată la 255.
Pentru implementarea celei de-a doua tehnici de ajustare a saturației, se convertește imaginea din spațiul de culoare RGB în YC1C2, după care se alege constanta de saturare cu ajutorul unui slider. În continuare se ajustează cele trei componente RGB ale fiecărui pixel pe baza relației (6).
Cele două tehnici de ajustare a saturației au fost incluse în aplicație deoarece dau rezultate diferite. Astfel se poate alege tehnica potrivită pentru fiecare imagine in parte.
-
B. Etapa de pictură
Această etapă conține următoarele trei operații: Pictură, Accentuare tușe și Efecte speciale.
Principalul scop al operației de pictură este eliminarea detaliilor nesemnificative din fotografia originală. Pentru realizarea acestei prelucrări se folosește un filtru median ce este descris în [20], [21]. Principiul de funcționare al acestui filtru este prezentat în Fig. 6.
Acest filtru se aplică doar componentei Y din spațiul de culoare YC1C2, care este componenta de luminozitate a imaginii color. Pentru ajustarea luminozității fiecărui pixel se iau în considerare vecinii acestuia aflați într-un pătrat a cărui latură este egală cu dimensiunea pensulei. Pixelul ajustat se află în centrul pătratului. Pentru satisfacerea acestei condiții, latura pătratului trebuie să fie un număr impar. Luminozitățile tuturor pixelilor din interiorul pătratului se așază într-un vector care este sortat crescător. Valoarea filtrată a pixelului considerat este preluată de la mijlocul vectorului sortat.
S-a observat că aplicarea iterativă a filtrului median are două efecte: eliminarea tot mai accentuată a detaliilor nesemnificative și apariția unor tușe foarte asemănătoare cu cele aplicate de pictori.
Efectele speciale se realizează cu ajutorul a două două variante ale filtrului median. Acestea sunt filtrul minim și filtrul maxim [20], [21]. Filtrul minim diferă față de filtrul median prin faptul că înlocuiește valoarea pixelului filtrat cu cea mai mică valoare din vectorul sortat. Acest filtru are un efect de întunecare a imaginii. Filtrul maxim care înlocuiește valoarea pixelului filtrat cu valoarea maximă a vectorului, având un efect de solarizare.
Pentru aplicarea acestor filtre (median, minim și maxim) pe marginile fotografiei, tabloul ce conține pixelii este extins (virtual) în exterior atât cât este nevoie, funcție de dimensiunea pensulei.
Operația de accentuare a tușelor are rolul de a scoate în evidență tușele create prin aplicarea iterativă a filtrului median. Această operație este necesară, deoarece filtrul median creează tușe foarte fine care nu sunt vizibile cu ochiul liber.
Accentuarea tușelor se realizează cu ajutorul unui filtru Laplace de accentuare a detaliilor, pe baza relației (7), unde 𝐼𝑚 este imaginea modificată, 𝐼 este imaginea originală, 𝐼𝑙 reprezintă detaliile imaginii originale obținute prin aplicarea unui filtru Laplace, iar 𝑘𝑎 este o constantă ce reprezintă nivelul de accentuare si se poate stabili cu ajutorul unui slider.
Fig. 6. Funcționarea filtrelor median, minim și maxim.
𝐼𝑚 = 𝐼 − 𝑘𝑎𝐼𝑙 (7)
Filtrul Laplace folosit în operația de accentuare a detaliilor are următorii coeficienți:
[1 1 11 −8 11 1 1
]
C. Etapa de postprocesare
În această etapă se pot realiza următoarele două operații: ajustarea contrastului și binarizare. Prin ajustarea contrastului se poate îmbunătăți aspectul final al picturii, iar prin binarizare se pot realiza lucrări de grafică. Pragul de binarizare se poate ajusta cu ajutorul unui slider.
IV. REZULTATE
În Fig. 7 - 22 sunt prezentate o serie de fotografii originale și picturile realizate cu ajutorul aplicației propuse.
Fig. 7. Imagine originală 1.
Fig. 8. Creșterea saturației și corecția gamei de culori.
-
Fig. 9. Rezultatul obținut după 3 iterații de aplicare a filtrului median, cu o pensulă de dimensiune 7.
Fig. 10. Rezultatul obținut după accentuarea tușelor.
Fig. 11. Rezultatul aplicării efectelor speciale.
Fig. 12. Imagine originală 2.
Fig. 13. Pictură obținută din imaginea originală 2.
Fig. 14. Imagine originală 3.
Fig. 15. Pictură obținută din imaginea originală 3.
Fig. 16. Imagine originală 4.
-
Fig. 17. Pictură 1 obtinută din imaginea originală 4.
Fig. 18. Pictură 2 obținută din imaginea originală 4.
Fig. 19. Grafică obținută din imaginea originală 4.
Fig. 20. Imagine originală 5.
Fig. 21. Pictură 1 obținută din imaginea originală 5.
Fig. 22. Pictură 2 obținută din imaginea originală 5.
REFERENCES
[1] Fay Huang, Bo-Hui Wu, and Bo-Ru Huang, Synthesis of Oil-Style
Paintings, PSIVT 2015: Revised Selected Papers of the 7th Pacific-Rim Symposium on Image and Video Technology - Volume 9431, November 2015 Pages 15–26
[2] Jan Eric Kyprianidis, John Collomosse, Tinghuai Wang, and Tobias Isenberg, State of the ‘Art’: A Taxonomy of Artistic Stylization Techniques for Images and Video, IEEE Transactions on Visualization and Computer Graphics, vol. 19, no. 5, may 2013
[3] Aaron Hertzmann, Algorithms for Rendering in Artistic Styles, phd thesis, New York University May 2001
[4] Peter Litwinowicz, Processing Images and Video for An Impressionist Effect, SIGGRAPH '97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques, August 1997, pp. 407–414, https://doi.org/10.1145/258734.258893
[5] Emil Praun, Hugues Hoppe, Matthew Webb, Real-Time Hatching, Proceedings of ACM SIGGRAPH 2001, August 2001
[6] Georges Winkenbach David H. Salesin, Rendering Parametric Surfaces in Pen and Ink, SIGGRAPH '96: Proceedings of the 23rd annual conference on Computer graphics and interactive techniquesAugust 1996 Pages 469–476 https://doi.org/10.1145/237170.237287.
[7] Michael A. Kowalski, Lee Markosian, J.D. Northrup, Lubomir Bourdev, Ronen Barzel, Loring S. Holden John F. Hughes, Art-Based Rendering of Fur, Grass, and Trees, SIGGRAPH '99: Proceedings of the 26th annual conference on Computer graphics and interactive techniques, July 1999, pp 433 – 438, https://doi.org/10.1145/311535.311607
[8] Patil A. G., Raman S. Automatic Content-Aware Non-photorealistic Rendering of Images, Advances in Visual Computing. ISVC 2016. Lecture Notes in Computer Science, vol 1007, Springer, Cham, pp 101-112
https://doi.org/10.1145/258734.258893https://doi.org/10.1145/237170.237287https://doi.org/10.1145/311535.311607
-
[9] John Canny, A Computational Approach to Edge Detection, IEEE Transactions on Pattern Analisys and Machine Intelligence, Vol. PAMI-8, no. 6, November 1986
[10] Oliver Deussen and Thomas Strothotte, Computer-Generated Pen-and-Ink Illustration of Trees, SIGGRAPH '00: Proceedings of the 27th annual conference on Computer graphics and interactive techniquesJuly 2000 Pages 13–18https://doi.org/10.1145/344779.344792
[11] Aaron Hertzmann and Denis Zorin, Illustrating smooth surfaces, SIGGRAPH '00: Proceedings of the 27th annual conference on Computer graphics and interactive techniquesJuly 2000 Pages 517–526 https://doi.org/10.1145/344779.345074
[12] Gershon Elber, Interactive Line Art Rendering of Freeform Surfaces, EUROGRAPHICS ’99 / P. Brunet and R. Scopigno (Guest Editors) Volume 18 (1999), Number 3
[13] Paul Haeberli, Paint by Numbers:Abstract Image Representation, ACM SIGGRAPH Computer GraphicsSeptember 1990 https://doi.org/10.1145/97880.97902
[14] Alex Mansfield, Peter Gehler, Luc Van Gool, and Carsten Rother, Scene Carving:Scene Consistent Image Retargeting, rom book Computer Vision - ECCV 2010 (pp.143-156)
[15] Adam Lake, Carl Marshall, Mark Harris and Marc Blackstein, Stylized Rendering Techniques For Scalable Real-Time 3D
Animation, Proceedings of 22nd National Conference, ACM, Thompson Book Company, Washington D.C., Academic Press, London, pp. 387-393. 1967.
[16] Adam Runions, FaramarzSamavati, PrzemyslawPrusinkiewicz, A representation for point clouds, The Visual Computer 23(9-11), pp. 945-954.
[17] Michitaka Hata·Masahiro Toyoura·Xiaoyang Mao, Automatic generation of accentuated pencil drawing with saliency map and LIC, The Visual Computer: International Journal of Computer GraphicsJune 2012 https://doi.org/10.1007/s00371-012-0689-9
[18] Paiva, A., Vital Brazil, E., Petronetto, F. et al. Fluid-based hatching for tone mapping in line illustrations. Vis Comput 25, 519–527 (2009). https://doi.org/10.1007/s00371-009-0322-8
[19] Jordane Suarez1 , Farès Belhadj1 and Vincent Boyer, Real-time 3D rendering with hatching, 1319–1334 (2017). https://doi.org/10.1007/s00371-016-1222-3
[20] Wilhelm Burger, Mark J. Burge, Principles of Digital Image Processing Fundamental Techniques, Springer, 2009
[21] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, Prentice-Hall, 2002
https://doi.org/10.1007/s00371-012-0689-9https://doi.org/10.1007/s00371-009-0322-8