5 Кодування кольору

Кодування кольору. палітра

Для того щоб комп'ютер мав можливість працювати з кольоровими зображеннями, необхідно представляти кольору у вигляді чисел - кодувати колір. Спосіб кодування залежить від колірної моделі і формату числових даних в комп'ютері.

Зазвичай під зберігання кожного з компонентів кольору відводиться фіксований число n біт пам'яті. Тому вважається, що допустимий діапазон значень для компонент кольори не [0; 1], а [0; 2 n -1].

Найбільш простий є організація палітри на
EGA -Адаптер. Під кожен з 16 можливих логічних квітів (значень пікселя) відводиться 6 біт, по 2 біти на кожний колірний компонент. При цьому колір в палітрі задається байтом виду 00 rgbRGB. де r. g. b. R. G. B можуть приймати значення 0 або 1. Таким чином, для кожного з 16 логічних квітів можна поставити будь-яке з 64 можливих фізичних квітів.

256-кольорова для VGA. Для 256- VGA значення пікселя безпосередньо використовується для індексації масиву DAC-регістри.

В даний час досить поширеним є формат True Color. в якому кожен компонент представлений у вигляді байта, що дає 256 градацій яскравості для кожного компонента: R = 0 ... 255, G = 0 ... 255, B = 0 ... 255. Кількість квітів становить 256х256х256 = 16.7 млн ​​(2 24).

Такий спосіб кодування можна назвати компонентним. У комп'ютері коди зображень True Color представляються у вигляді трійок байтів, або упаковуються в довге ціле (четирехбайтное) - 32 біта (так, наприклад, зроблено в API Windows):

C = 00000000 bbbbbbbb gggggggg rrrrrrrr.

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

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

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

Різні зображення можуть мати різні колірні палітри. Наприклад, в одному зображенні зелений колір може кодуватися індексом 64, а в іншому цей індекс може бути відданий рожевого кольору. Якщо відтворити зображення з "чужої" палітрою кольорів, то зелена ялинка на екрані може виявитися рожевої.

У тих випадках, коли колір зображення закодований двома байтами (режим High Color), на екрані можливо зображення 65 тисяч квітів. Зрозуміло, це не всі можливі кольори, а лише одна 256-я частка загального безперервного спектра фарб, доступних в режимі True Color. У такому зображенні кожен двухбайтное код теж висловлює якийсь колір із загального спектра. Але в даному випадку не можна прикласти до файлу індексний палітру, в якій було б записано, який код якому кольору відповідає, оскільки в цій таблиці було б 65 тис. Записів і її розмір склав би сотні тисяч байтів. Навряд чи є сенс прикладати до файлу таблицю, яка може бути за розміром більше самого файлу. У цьому випадку використовують поняття фіксованої палітри. Її не треба докладати до файлу, оскільки в будь-якому графічному файлі, що має 16-розрядне кодування кольору, один і той же код завжди висловлює один і той же колір.

Термін безпечна палітра використовують в Web-графік. Оскільки швидкість передачі даних в Інтернеті поки залишає бажати кращого, для оформлення Web-сторінок не застосовувати графіку, має кодування кольору вище 8-розрядної.

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

Така палітра, жорстко визначає індекси для кодування 216 кольорів, називається безпечною палітрою.