Про перенесення кольорів

Навіть темними холодними зимовими вечорами за вікном нас продовжує радувати прекрасний світ всіма своїми фарбами. А з появою Інтернету, із зростанням популярності цифрових камер, сканерів, кольорових принтерів, все більша частина прекрасного реального світу знаходить собі віддзеркалення в цифровому форматі.

Завдання мало змінилося з моменту постановки — необхідно забезпечити відповідність кольорів між друком на папері і зображенням на моніторі, на принтері, і на цифровій камері — забезпечити взаємну відповідність між всіма цими зображеннями і реальним світом.

Ви навіть і уявити собі не можете, наскільки складно правильно передавати колір. Але все таки відзначимо, з часом технології роботи з кольором поліпшуються і стають простішими у використанні як для кінцевих користувачів, так і для розробників устаткування і програмного забезпечення.

Причиною тому головним чином стало те, що індустрія (включаючи і програмні продукти, і апаратне забезпечення) знаходить свої стандарти. Відзначимо, що існує не один стандарт, а ціле сімейство стандартів представлення кольору. В нашій статті ми розглянемо стандарт ICM 2.0 (Image Color Management — управління кольоровістю зображення), він використовується в Windows 98, 2000 і ME, стандарт профілів ICC (International Color Consortium — міжнародного співтовариства проблеми перенесення кольорів), стандарти sRGB і scRGB (які, швидше за все, вам знайомі як старіша версія — sRGB64). Для того, щоб усвідомити значущість всіх цих стандартів, спершу треба розібратися, чому при перенесенні кольорів виникають такі складнощі.

В ідеалі все повинно бути так: ви берете сканер, монітор, цифрову камеру або принтер, і миттєво створюєте з їх допомогою якісне кольорове зображення. Причому зображення, що на екрані, що на принтері — повинно відповідати одне одному. При скануванні або фотографуванні в ідеалі зображення повинно також відповідати оригіналу.

Ще недавно таке було утопією — нормальному перенесенню кольорів заважало безліч чинників. Серед найістотніших відзначимо наступні:

По-перше,  колір — поняття суб'єктивне. Здавалося б, абсолютно очевидно, що колір — це характеристика об'єкту. Травушка-муравушка — зелена, небеса — блакитні, шпалери в кімнаті — кольору персика (у кого — як...), і так далі. З першого погляду здається, що простіше нікуди. Насправді все не так. Колір — це відчуття, його можна порівняти з дотиком. І ті кольори, що ми бачимо, повністю суб'єктивні, вони інтерпретуються нашою зоровою системою, нашим мозком.

По-друге, на колір впливає освітлення: колір предмету — і в оригіналі, і в роздрукованому вигляді — буде різним залежно від освітлення. Наприклад, зображення буде різним залежно від того, чи освітлюється предмет лампою розжарювання, люмінесцентною лампою, або денним світлом.

По-третє, однакові кольори можуть виявитися метамірними — два предмети мають один колір при одному освітленні, але можуть виявитися різних кольорів при зміні освітлення.

По-четверте, кольори взаємозалежні один від одного — від того, яким чином розташовані кольори, ви сприйматимете загальну картину по-різному. Такий ефект називається одночасним зоровим контрастом. Спробуйте намалювати на синьому фоні маленький зелений квадратик, і він прийме відтінок жовтого. Якщо поміняти фон на жовтий, то квадрат прийме відтінок синього.

По-п'яте, людські очі — не сенсори сканера або фотоапарата. Сенсори пристроїв і колби людських очей сприймають світло різних частот в різних пропорціях.

Крім того, різні пристрої характеризуються різною колірною гамою. Монітор здатний показати такі кольори, які не здатний надрукувати принтер, а принтер, в свою чергу, може вивести колір, який не можна відтворити на моніторі. Сенсори камери або сканера можуть визначати кольори, які не можна відтворити ні на моніторі, ні на принтері.

Нарешті, різні пристрої використовують різні колірні моделі. Колірна модель — це представлення кольору в математичному вигляді. Якщо пристрої використовують різні колірні моделі, вони повинні перетворювати колір з однієї моделі в іншу. При таких операціях часто відбуваються помилки. Це ціла проблема для залежних від пристроїв моделей (device-dependent models) — моделей, призначених тільки для роботи з конкретним принтером, монітором, сканером або фотоапаратом.

Важливо не тільки знати всі ці чинники, але і розуміти різницю між виправними колірними помилками і непоправними помилками. Перші можна виправити програмним шляхом. З другими вже нічого не поробиш, оскільки інформації, потрібної для виправлення, вже не існує. При таких помилках інформація втрачається під час сканування, зйомки або друку.

Наприклад, якщо ви не бачите деяких тонких відтінків, які повинні бачити, ви не зможете правильно відтворити кольори. Якщо ж ви зберегли відтінки, і бачите, що колір не той, ви можете це виправити.

Звичайно як зразок фотографії, щоб судити про якість зображення, служить знімок корзини з фруктами, зроблений зблизька. Такий вибір не випадковий — кожен знає, як повинен виглядати фрукт, тому можна судити про реалістичність зображення. Не звертайте поки уваги на перенесення кольорів, відмітьте, зображення стало не тривимірним — яким ви його бачили в оригіналі. Таке втілення означає втрату деяких тонких відтінків при роздруку, і це вважається непоправною помилкою.

Уважно придивіться до зображення з кольором (крупний план особи або небо), що плавно змінюється, і ви переконаєтеся, що колір змінюється поступово, безперервно. Різка зміна кольору замість поступового називається огрубленням (posterization), і відноситься до непоправних помилок.

Спробуйте роздрукувати фотографію, на якій є і темні, і яскраві області — наприклад, фотографію ряду дерев на тлі ясного неба. Придивіться, чи втрачається якість на цих областях? Деталі повинні бути видимими на всьому діапазоні яскравості.

Всі ці ефекти відбуваються в результаті втрати градацій сірого. Втілення об'єкту відбувається внаслідок втрати відтінків кольору, огрублення також відбувається в результаті втрати різних відтінків. Втрата деталей на світлих і темних областях зображення також є результатом втрати відтінків.

У будь-якому випадку, якщо не можна провести ту або іншу градацію сірого, втрачається певний колір. А оскільки інформація практично відсутня, нічого поробити не можна. З іншого боку, при інших помилках — наприклад, зрушенні за кольором (shift in color) — інформація не втрачається, вона просто не використовується належним чином. І такі помилки вважаються поправними.

Те ж саме (відносно поправних і непоправних помилок) відноситься і до камер, і до сканерів. Кращі об'єктиви, краще оптичне покриття і поліпшені ПЗС матриці можуть звести всі непоправні помилки при скануванні або фотографуванні до мінімуму. Відзначимо, для подолання поправних помилок потрібне управління кольорами (color management). Тепер, коли ми розібралися зі всіма чинниками, що впливають на передачу кольору, називати це зрівнюванням кольорів (color matching — зрівнювання кольорів) буде дещо неправильно, з погляду англійської мови, точніше назвати це саме управлінням, підбором кольорів (color management).

До недавніх пір, підбір кольору в цифрових зображеннях вважався чимось загадковим, доступним тільки професійним фотографам і поліграфістам. Річ у тому, що робота з кольором насправді була дуже складна. Класичний підхід до підбору кольору полягав в замкнутому калібруванні (closed loop calibration) різних частин спеціального апаратного забезпечення для подальшої роботи з якою-небудь спеціальною програмою.

Наприклад, щоб провести калібрування сканера і принтера, ви спочатку скануєте предмет, потім друкуєте зображення, що вийшло. Калібрувальне програмне забезпечення після цього порівняє те, що побачив сканер, з тим, що роздрукував принтер. Після цього програма створить профіль для принтера, за допомогою якого компенсуватиметься різниця. Якщо у вас не один принтер, операцію доведеться повторити. Якщо ви потім перешлете файл з відсканованим зображенням ще комусь, це зовсім не означатиме, що зображення буде відкалібровано для екрану цієї людини. Крім того, ви можете відкалібрувати зображення спеціально для тієї програми, з якої ви збираєтеся роздрукувати файл — адже кожна програма сприймає кольори по-різному.

Ідея калібрування монітора така ж, але дещо відрізняється сама процедура. Програма відображає певні кольори — скажімо, стільки-то частин червоного, зеленого і синього, і потім порівнює ці характеристики з характеристиками кольору, побаченого колориметром. Після порівняння програма створює профіль, який потім компенсує різницю.

Ця рутинна робота була неминучою, оскільки не існувало загальноприйнятих стандартів управління кольором. Очевидно, що якби кожна програма користувалася одним і тим же підходом для управління кольором, що і принтер, монітор, сканер або камера — вся робота виявилася б набагато простішою. Якби все програмне забезпечення користувалося однаковим стандартом колірної моделі, або поставлялося з профілем, який би приводив всю інформацію про колір в стандартний вигляд, то можна було б переміщати зображення з програми в програму або сканувати і потім роздруковувати практично без помилок.