Conversie de culoare

De la Capisci

Salt la: navigare, căutare
Acest articol face parte din seria de articole despre culoare.

Conversia de culoare dintr-un spaţiu de culoare în altul este o treabă mai complicată decât ar putea părea.

Cuprins

Introducerea problemei

În primul rând, de ce este necesar să ne batem capul cu acest subiect? Conversia se face singură, nu-i aşa? Ei, nu e tocmai aşa – adică da, ea se face singură, dar tot avem de luat nişte decizii (v-am spus că e mai complicat decât pare).

Cel mai frecvent, conversii de culoare au loc în următoarele situaţii:

  • atunci când afişăm o imagine pe un monitor sau proiector;
  • atunci când capturăm o imagine cu un scanner, aparat foto sau cameră de filmat;
  • atunci când tipărim o imagine.

Adică tot timpul.

De fiecare dată conversia de culoare are loc pe baza profilului de culoare al dispozitivului de intrare sau de ieşire şi pe baza spaţiului de culoare al imaginii sursă sau destinaţie. Şi aproape de fiecare dată apar probleme.

Înainte de a trece mai departe trebuie spus că fiecare conversie de culoare presupune pierderi. Imaginile sunt întotdeauna stocate în formate bazate pe numere întregi (un octet pentru roşu, doi octeţi pentru roşu – nu contează, sunt tot numere întregi). La fiecare conversie apar deci nişte rotunjiri ale valorilor. Prin urmare o imagine care suferă multe conversii succesive de culoare se va degrada considerabil faţă de original. Soluţia este păstrarea pe cât posibil a imaginii originale de-a lungul oricărui proces care implică conversii de culoare şi aplicarea unui număr cât mai mic de conversii, de obicei cât mai aproape de finalul procesului. De exemplu dacă porniţi de la o imagine RGB originală şi scopul este tiparul, atunci trebuie să încercaţi pe cât posibil să păstraţi originalul RGB în proces până determinaţi profilul de culoare pentru tipar – conversia din RGB într-un profil generic CMYK urmată de o conversie din profilul generic CMYK în profilul corect CMYK introduce o conversie inutilă în proces.

Probleme şi soluţii

Gama de culori din spaţiul Adobe RGB cu negru; comparativ sRGB cu gri. Imagine disponibilă sub licenţa GNU FDL, click pentru detalii.

Hai să începem cu un caz chipurile simplu: conversia de culoare necesară pentru afişarea unei imagini pe monitor. În afară de cazul că monitorul afişează exact spaţiul de culoare al imaginii sursă (ceea ce măcar teoretic se întâmplă totuşi destul de frecvent dacă ambele folosesc nativ spaţiul sRGB), vor exista întotdeauna culori care nu pot fi afişate pe monitor sau culori pe care monitorul le-ar putea afişa dar nu există în spaţiul de culoare sursă. Al doilea caz e cel fericit: dacă monitorul poate afişa o gamă de culori mai mare decât cea acoperită de spaţiul sursă atunci conversia e banală, se aplică pur şi simplu algoritmul descris de profilul de culoare al monitorului şi basta. Însă dacă vrem să afişăm o imagine stocată în spaţiul Adobe RGB pe un monitor care nu poate reprezenta decât sRGB? Se vede cu ochiul liber în imaginea din dreapta că există o gamă întreagă de culori pe care monitorul pur şi simplu nu are cum să le afişeze. Ce ne facem?

Compromisuri la alegere

Teoretic am putea opera conversia riguroasă ca şi mai sus, iar ce iese din spaţiul de culoare al monitorului... ei bine, ghinion, alegem cea mai apropiată culoare disponibilă şi basta. Însă rezultatul ar fi odios, imaginea ar arăta nejustificat de rău. Unde pui că monitoarele sunt în general destul de limitate – doar modelele scumpe pot reprezenta corect întreg spaţiul Adobe RGB, ca să nu mai vorbim de ProPhoto sau altele.[1] Soluţia recomandată de ICC[2] este de a oferi patru opţiuni de conversie, opţiuni care reprezintă diverse variante de compromis.

Vă daţi seama că orice astfel de compromis nu poate avea loc decât în spaţiul de referinţă (vezi diagrama de la articolul Profil de culoare), fiindcă acela este singurul în care avem garanţia că avem o reprezentare corectă a tuturor culorilor din imagine. Prin urmare toate compromisurile de mai jos sunt metode de a comprima şi/sau muta norul de puncte prin spaţiul de culoare de referinţă înainte de a face conversia finală (din spaţiul de referinţă în spaţiul imaginii pentru dispozitive de captură sau din spaţiul de referinţă în spaţiul dispozitivului, pentru dispozitive de redare).

Media-Relative Colorimetric Intent

Scopul acestei variante de compromis, numită pe scurt şi relative colorimetric este acela de a reprezenta cât mai corect toate culorile, ţinând cont şi de mediu (mediul este aici tot lanţul de elemente fizice care afectează reprezentarea sau captura). Acesta este compromisul uzual în Europa şi Statele Unite, de aceea îl analizăm înaintea celorlalte.

Aceasta este cea mai intuitivă metodă de a rezolva problema: punctul de alb al spaţiului de intrare se suprapune peste punctul de alb al spaţiului de ieşire, iar apoi se comprimă toate nuanţele în aşa fel încât toate punctele din spaţiul de intrare să aibă corespondent valid în spaţiul de ieşire.

Colorimetric absolut

Această soluţie de compromis, numită în engleză formal ICC-Absolute Colorimetric Intent, sau pe scurt absolute colorimetric, este varianta cea mai riguroasă de conversie: punctul de alb rămâne neschimbat şi nu se operează niciun fel de conversie. Culorile din afara gamei spaţiului de ieşire sunt pur şi simplu aproximate prin cele mai apropiate culori din acesta – exact, este contraexemplul odios pe care l-am folosit mai sus.

Vă daţi seama că rezultatul este o imagine semnificativ denaturată, care pierde detaliu cromatic în multe locuri. Această variantă este folosită atunci când dorim să aproximăm efectele mediului asupra rezultatului (dat fiind că nu compensăm pentru mediu) – de exemplu atunci când vrem să vedem în ce fel culoarea hârtiei sau calitatea tiparului afectează rezultatul final al unei tipărituri, probabil comparând mai multe variante.

Altă situaţie în care este utilă conversia absolută este cea în care ştim că toate culorile folosite în imagine încap în spaţiul destinaţie şi nu ne interesează ce s-ar întâmpla dacă am avea culori în afara acestuia. Nu uitaţi că o conversie relativă comprimă culorile din imaginea sursă în funcţie de felul în care se suprapun spaţiile de culoare sursă şi destinaţie, rezolvând prin mici modificări ale tuturor nuanţelor orice situaţie teoretică. Dar dacă imaginea noastră particulară „încape” deja în spaţiul destinaţie, de ce să-i modificăm culorile? Gândiţi-vă de exemplu la situaţia în care trebuie tipărită sigla albastră a companiei IBM – ce rost ar avea să facem o conversie care să modifice nuanţa siglei, dat fiind că acea nuanţă de albastru este oricum disponibilă în aproape toate spaţiile de culoare uzuale?

Perceptual

Acesta este cel mai ezoteric dintre toate cele patru variante de compromis prezentate aici – ICC nici măcar nu specifică în ce fel anume trebuie implementată această conversie de culoare, ci indică doar că această variantă trebuie să încerce pe cât posibil să reproducă toate culorile din spaţiul sursă în aşa fel încât deviaţiile de culoare observabile să fie minime. În general această variantă este strâns legată de calităţile mediului şi de temeinicia cercetării din spatele fiecărei variante particulare de implementare a algoritmului de conversie. În mod surprinzător, acesta este compromisul implicit în Japonia – cine ştie, la ei or fi toţi producătorii foarte conştiincioşi şi se pune bază pe ei...

Saturaţie

Acesta este un compromis la prima vedere bizar: păstrarea corespondenţei între nuanţa culorii de intrare şi nuanţa culorii de ieşire este mai puţin importantă decât protejarea saturaţiei culorii. Exact, aţi înţeles bine, dacă alegem acest compromis spunem „n-ai decât să-mi faci nuanţele de verde mai gălbui, sau nuanţele de albastru mai roşiatice atâta timp cât culorile rezultate sunt intense”. Evident că nu ne interesează prea tare nuanţele dacă alegem această metodă de conversie. Ea este creată pentru tipărirea diagramelor (gândiţi-vă la grafice sau diagrame colorate), situaţii în care culorile sunt oricum alese arbitrar şi nu contează aproape deloc să fie păstrate nemodificate – dimpotrivă, suntem dispuşi să permitem algoritmului să le modifice atâta timp cât produce culori vii.

Note

  1. Vezi articolul Modelul RGB pentru detalii
  2. Vezi articolele Profil de culoare şi Modelul RGB pentru informaţii despre ICC