8. Обробка та формування графічних файлів

 8.1. Робота з кольорами та напівтонами

8.1.2. Палітри й оптимізація палітр

 

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

У комп'ютерах теж використовуються палітри, але комп'ютерні колірні палітри більш обмежені. Дійсно, ілюстративна програма, що підтримує максимум 256 кольорів, ніяк не зможе використовувати більш 256 кольорів одночасно. Залишається єдина надія на псевдотонування. Але навіть ювелірно настроєне дифузійне псевдотонування буде навряд чи ефективно, якщо кольори палітри погано підібрані. У кінцевому рахунку, програмними засобами підбирають фарби палітри, які якнайкраще відповідають відтінкам зображення.   

Однієї з проблем, що виникають час від часу в комп'ютерній графіка, є проблема вибору колірної палітри, за допомогою якої можна відобразити картинку з кількістю відтінків, що перевищують кількість кольорів у палітрі. Яка комбінація кольорів дасть найкращий результат? Відповідь на це питання дає процес, що називають оптимізацією палітри. Самий простий підхід полягає в тому, щоб, перебравши всі піксели в зображені, порахувати скільки разів зустрічається кожний колір і скласти палітру з тих кольорів, що зустрічаються частіше інших. Якщо деякий відтінок синього кольору зустрічається 100 разів, а відтінок червоного тільки 20, то перевага віддається синьому кольору. Але цей метод має декілька недоліків. Один із них полягає в тому, що деякі кольори будуть виключені повністю. Уявіть собі зображення заміської дороги, де переважають сині, коричневі, жовті, зелені тони, і десь в одному куту виявився червоний, дорожній знак "Стій". Якщо червоний колір більш ніде на цій картинці не зустрічається, те він не потрапить у палітру, і, отже, буде пофарбований у якийсь інший колір.   

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

Інше рішення проблеми - це метод квантування кольорів медіанним перетином. Колірний простір розглядається як тривимірний куб. Кожна вісь куба відповідає одному з трьох основних кольорів: червоному, зеленому або синьому (розглянемо для прикладу випадок, коли використовують 256 кольорів). Кожна з трьох сторін розбивається на 255 рівних частин, Розподіли на осях нумеруються від 0 до 255, причому більше значення відповідає більшій інтенсивності кольору. Точки усередині куба, що відповідають кольорам відмічаються так само, як точки тривимірного графіка, якби були задані x, y і z координати точки. Приміром, якщо значення червоної, зеленої і синьої компонент є 128, 64 і 192 відповідно, то необхідно відкласти на осі Ч - 128, на осі З - 64, на осі С - 192 і одержати точку усередині куба, що відповідає даного кольору. Чорний колір із компонентами 0, 0, 0, потрапить на одну вершину куба, а білий - із компонентами 255, 255, 255, в іншу, діагонально протилежну вершину. Якщо відзначити точки усередині куба, що відповідають кольорам пікселів у звичайному повнокольоровому зображенні, то виявляється , що точки нерівномірно розташовані по всьому кубі. Очевидна тенденція групування точок в окремих регіонах.   

Метод медіанного перетину поділяє куб на 256 паралелепіпедів, кожний із який містить приблизно однакову кількість пікселів. При такій розбивці куба центральна точка кожного паралелепіпеда представляє оптимальний вибір для колірної палітри. У тій області куба, що густо заповнена точками, буде більше паралелепіпедів і, відповідно, у палітру потрапить більше кольорів. А там, де точок менше, і кольорів буде взято менше. Жодний колір не буде відкинутий цілком. Тим же кольорам, що зустрічаються частіше, буде віддана перевага. Звернемося ще раз до приклада з заміською дорогою. Кольори в палітрі, отриманої медіанним перетином, будуть концентруватися навколо синього, коричневого, жовтого і зеленого, але принаймні знайдеться один відтінок із достатньою червоною компонентою, щоб апроксимувати колір знака "Стій".

Метод квантування кольорів медіанним перетином.

Метод квантування кольорів за допомогою медіанного перетину застосовується при виборі 256 кольорів, щоб представити повнокольорове зображення, що містить декілька тисяч кольорів. Щоб зрозуміти як працює метод медіанного перетину, представимо колірний простір як куб. Кожна вісь відповідає одному з трьох основних кольорів і розподіли на осі нумеруються від 0 до 255.  

Перший крок перебуває у відсіканні "країв" куба, що не містять пікселів. Приміром, якщо у всіх пікселів значення червоної компоненти не менше, ніж 8 і не більше, ніж 250, то відкидаються частини куба від Ч=0 до Ч=7   і від Ч=251 до Ч=255. 

Другий крок полягає в розрізуванні отриманого паралелепіпеда на два в середній точці (медіані) самої довгої сторони. Якщо сама довга сторона паралельна осі С, то комп'ютер вибирає серединне синє значення з усіх синіх значень, поданих у паралелепіпеді і розрізає в цій точці. Тепер паралелепіпед розділений на два паралелепіпеди меншого розміру, що містять однакову кількість пікселів.

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

Медіанний перетин повторно застосовується для того, щоб розділити куб на 8, 16, 32, 64, 128 і 256 паралелепіпедів. Вони містять приблизно ту саму кількість пікселів і їхні об'єми обернено пропорційні щільностям пікселів.  

Маючи простір, розділений таким чином, легко вибрати палітру. Кожний із 256 паралелепіпедів включає піксели приблизно однакового кольору і центр кожного паралелепіпеда представляє оптимальне значення кольору для палітри. Маючи координати вершин, дуже просто обчислити координати центральної точки. (Деякі графічні програми замість того, щоб обчислювати центральну точку, усереднюють значення всіх пікселів, які знаходяться усередині паралелепіпеда; на обчислення піде більше часу, але отримана палітра буде кращою.) Вирахувавши Ч, З и С координати для всіх 256 центральних точок у паралелепіпедах, одержимо 256 кольорів, що і будуть складати палітру.

Контрольні   запитання.

1.  Що таке палітра?  

2.  В чому полягає оптимізація палітри?  

3. Дайте характеристику методу квантування кольорів медіанним перетином.

     Зміст