Введение
Метод хранения цвета
Высокоцветная графика — это метод хранения информации об изображении в памяти компьютера, при котором каждый пиксель представлен двумя байтами. Обычно цвет представлен всеми 16 битами, но некоторые устройства также поддерживают 15-битный высокоцветный режим. В Windows 7 компания Microsoft использовала термин "высокий цвет" для обозначения систем отображения, способных использовать более 8 бит на цветовой канал (форматы рендеринга 10:10:10:2 или 16:16:16:16) по сравнению с традиционными 8-битными форматами на цветовой канал. Это отличается от 15-битных (5:5:5) или 16-битных (5:6:5) форматов, традиционно ассоциируемых с термином "высокий цвет"; см. глубокий цвет.
15-битный цвет
В 15-битном режиме высоких цветов один из битов двух байтов игнорируется или резервируется для альфа-канала, а оставшиеся 15 битов распределяются между красным, зеленым и синим компонентами итогового цвета. Каждому из компонентов RGB отведено 5 битов, что дает 2⁵ = 32 уровня интенсивности для каждого компонента. Это позволяет получить 32768 возможных цветов для каждого пикселя. Популярные графические чипы Cirrus Logic начала 1990-х годов использовали незанятый старший бит для своих так называемых "смешанных" видеорежимов: при сброшенном бите 15 биты с 0 по 14 интерпретировались как значение RGB, как описано выше, а при установленном бите 15 биты с 0 по 7 интерпретировались как 8-битный индекс в палитру из 256 цветов (при этом биты с 8 по 14 оставались неиспользованными). Это позволяло отображать (относительно) высококачественные цветные изображения одновременно с анимированными элементами экрана, реализованными через палитру, но на практике эта функция практически не использовалась в каком-либо программном обеспечении.
16-битный цвет
Когда используются все 16 бит, один из компонентов (обычно зеленый в формате RGB565, см. ниже) получает дополнительный бит, обеспечивая 64 уровня интенсивности для этого компонента и в общей сложности 65536 доступных цветов. Это может приводить к небольшим неточностям при кодировании, например, при попытке закодировать 24-битный цвет RGB (40, 40, 40) в 16 бит (проблема, часто встречающаяся при субдискретизации). Число сорок в двоичном представлении – 00101000. Красный и синий каналы будут использовать пять старших битов и иметь значение 00101, то есть 5 по шкале от 0 до 31 (16,1%). Зеленый канал, с точностью в шесть бит, будет иметь двоичное значение 001010, то есть 10 по шкале от 0 до 63 (15,9%). В результате цвет RGB (40, 40, 40) при отображении в 16 битах будет иметь легкий пурпурный (магента) оттенок. Значение 40 по шкале от 0 до 255 составляет 15,7%. Другие 24-битные цвета при субдискретизации могут приобретать зеленоватый оттенок: например, 24-битное RGB-представление 14,1% серого, то есть (36, 36, 36), будет кодироваться как 4/31 (12,9%) для красного и синего каналов, но как 9/63 (14,3%) для зеленого канала, поскольку 36 в двоичном виде представляется как 00100100. Зеленый обычно выбирают для дополнительного бита в 16-битном представлении, потому что человеческий глаз наиболее чувствителен к оттенкам зеленого. Чтобы увидеть это на практике, внимательно рассмотрите следующее изображение (примечание: это будет работать только на мониторах, отображающих истинные цвета, то есть 24 или 32 бита), где показаны темные оттенки красного, зеленого и синего цветов, используя 128 уровней интенсивности для каждого компонента (7 бит). Люди с нормальным зрением должны относительно легко различать отдельные оттенки зеленого, в то время как оттенки красного будет трудно различить, а оттенки синего, скорее всего, будут неотличимы. В редких случаях некоторые системы поддерживают дополнительную глубину цвета для красного или синего канала, обычно в приложениях, где эти цвета преобладают (например, при фотографировании оттенков кожи или неба).
Другие примечания
В режиме высокой цветовой глубины обычно нет необходимости в таблице цветового поиска (CLUT, или палитре), поскольку количество доступных цветов на пиксель достаточно для разумно удовлетворительного отображения графики и фотографий. Однако недостаток точности снижает достоверность изображения; в результате некоторые форматы изображений (например, TIFF) могут сохранять 16-битные изображения с внедрённой CLUT.