Палітра (комп'ютерна графіка)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

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

Опис[ред. | ред. код]

Sample Image RGB Cube

На момент 2019 року найбільш поширеним кольоровим простором для зображень у відеокартах є RGB, що означає червоний, зелений та синій канали. Глибина кольору цього простору становить 8 біт на піксель, що дозволяє описати рівень яскравості в кожному з цих каналів. Усього 24 біти використовуються для повного опису кольору кожного пікселя.

Системна палітра для такого обладнання складається з 224 кольорів, що визначається використанням 8 біт для кожного каналу RGB. Однак, для зменшення обсягу даних, що обробляються, використовується техніка Color Lookup Table (CLUT). Це дозволяє зменшити кількість бітів на піксель, скорочуючи набір можливих кольорів, які обробляються одночасно, за допомогою індексів.

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

Майстер-палітра[ред. | ред. код]

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

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

Основна палітра, створена таким чином, може містити до 8R×8G×4B = 256 кольорів, але це може не залишити місця в палітрі для зарезервованих кольорів. Більш загальним є використання лише 6R×6G×6B = 216 (як у випадку веб-кольорів), 6R×8G×5B = 240 або 6R×7G×6B = 252, що залишає місце для деяких зарезервованих кольорів.

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

Адаптивна палітра[ред. | ред. код]

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

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

IndexedColorSample (Lapis.elephant.800pix.060203)
IndexedColorSample (Strawberries picked)
IndexedColorSample (Lemon)

Прозорість в палітрах[ред. | ред. код]

Запис палітри[1] в індексованому кольоровому зображенні може містити спеціальний прозорий колір, який дозволяє виконувати просте накладання відео. Це застосовується, наприклад, при накладанні назв фільмів/телепередач та титрів на відео. У цьому випадку, у зображенні, яке накладається, певний елемент палітри відіграє роль прозорого кольору, часто індексованого як номер 0, але може бути вибраний інший номер за допомогою програмного забезпечення.

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

Ця техніка застосовується в іграх для персонажів (спрайтів), у титрах відео та інших програмах змішування зображень. Наприклад, ранні комп'ютери, такі як Commodore 64 та Amiga, підтримували обладнання для накладання спрайтів з прозорістю.

Деякі формати файлів, такі як GIF, дозволяють визначити прозорий колір в записах палітри для індексованих кольорових зображень. У BMP резервується простір для альфа-каналу в таблиці кольорів, хоча наразі це не використовується. PNG, натомість, підтримує альфа-канали для створення напівпрозорих ефектів.

В роботі із справжніми кольорами, деяке обладнання використовує чорний триплет RGB (0,0,0) як прозорий колір. Такі методи також можуть застосовуватися в графічних програмах, як Microsoft Paint та Deluxe Paint, де користувач може вибрати фоновий колір як прозорий під час операцій вирізання та вставлення.

Microsoft Windows[ред. | ред. код]

Програми, що працюють у середовищі Microsoft Windows, взаємодіють з палітрою 4- або 8-бітних індексованих кольорових пристроїв відображення за допомогою спеціалізованих функцій Win32 API. У режимах відображення Highcolor і Truecolor, використання палітр стає менш доцільним. Win32 API має справу із "системною палітрою" та кількома "логічними палітрами".

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

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

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

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

Дивитися також[ред. | ред. код]

Список палітри кольорів[en]

  1. Transparency (graphic). Wikipedia (англ.). 26 вересня 2023. Процитовано 25 листопада 2023.