Введение
Количество битов, используемых для представления цвета. Глубина цвета, также известная как бит-глубина, представляет собой либо количество битов, используемых для указания цвета отдельного пикселя, либо количество битов, используемых для каждого цветового компонента отдельного пикселя. Применительно к пикселю, это понятие можно определить как биты на пиксель (bpp). Применительно к цветовому компоненту, это понятие можно определить как биты на компонент, биты на канал, биты на цвет (все три сокращенно bpc), а также биты на компонент пикселя, биты на цветовой канал или биты на выборку (bps). Современные стандарты обычно используют биты на компонент, но в исторических системах с меньшей глубиной чаще использовались биты на пиксель. Глубина цвета – это лишь один из аспектов цветового представления, определяющий точность, с которой можно выразить количество каждого основного цвета; другой аспект – диапазон выражаемых цветов (гамма). Определение как точности цвета, так и гаммы достигается с помощью спецификации цветового кодирования, которая присваивает цифровое кодовое значение положению в цветовом пространстве. Количество битов, определяющих интенсивность в цветовом канале, также известно как радиометрическое разрешение, особенно в контексте спутниковых изображений.
Color depth or colour depth (see spelling differences), also known as bit depth, is either the number of bits used to indicate the color of a single pixel, or the number of bits used for each color component of a single pixel. When referring to a pixel, the concept can be defined as bits per pixel (bpp). When referring to a color component, the concept can be defined as bits per component, bits per channel, bits per color (all three abbreviated bpc), and also bits per pixel component, bits per color channel or bits per sample (bps). Modern standards tend to use bits per component, but historical lower depth systems used bits per pixel more often. Color depth is only one aspect of color representation, expressing the precision with which the amount of each primary can be expressed; the other aspect is how broad a range of colors can be expressed (the gamut). The definition of both color precision and gamut is accomplished with a color encoding specification which assigns a digital code value to a location in a color space. The number of bits of resolved intensity in a color channel is also known as radiometric resolution, especially in the context of satellite images.
Индексованный цвет
При относительно низкой цветовой глубине, хранимое значение обычно представляет собой число, обозначающее индекс в цветовой карте или палитре (форма векторного квантования). Цвета, доступные в самой палитре, могут быть фиксированы аппаратным обеспечением или изменяемы программным обеспечением. Изменяемые палитры иногда называют псевдоцветными. Старые графические чипы, особенно те, что использовались в домашних компьютерах и игровых консолях, часто имели возможность использовать различные палитры для спрайтов и тайлов, чтобы увеличить максимальное количество одновременно отображаемых цветов, минимизируя при этом использование дорогостоящей в то время памяти (и пропускной способности). Например, в ZX Spectrum изображение хранится в двухцветном формате, но эти два цвета могут быть определены отдельно для каждого прямоугольного блока 8×8 пикселей. Сама палитра имеет свою глубину цвета (количество битов на запись). В то время как лучшие VGA-системы предлагали только 18-битную (262 144 цвета) палитру, из которой можно было выбирать цвета, все цветные видеокарты Macintosh предлагали 24-битную (16 миллионов цветов) палитру. 24-битные палитры практически универсальны на любом современном оборудовании или в файловых форматах, которые их используют. Если же цвет можно напрямую определить из значений пикселей, то это "прямой цвет". Палитры редко использовались при глубине более 12 бит на пиксель, так как объем памяти, занимаемый палитрой, превышал бы необходимый объем памяти для прямого цвета на каждый пиксель.
1-битный цвет
2 цвета, часто чёрный и белый, прямая цветовая схема. Иногда 1 обозначал чёрный цвет, а 0 — белый, что было обратным современным стандартам. Большинство первых графических дисплеев были именно такого типа, для таких дисплеев была разработана система X Window System, и это предполагалось для компьютера 3M. В конце 80-х годов существовали профессиональные дисплеи с разрешением до 300 точек на дюйм (dpi), сопоставимым с современными лазерными принтерами, но цвет оказался более востребованным.
2-битный цвет
4 цвета, обычно из набора предопределенных палитр. Ранние NeXTstation в оттенках серого, цветные Macintosh, среднее разрешение Atari ST.
3-битный цвет
8 цветов, почти всегда все комбинации максимальной интенсивности красного, зеленого и синего. Многие ранние домашние компьютеры с телевизионными дисплеями, включая ZX Spectrum и BBC Micro.
4-битный цвет
16 цветов, обычно из набора фиксированных палитр. Используется IBM CGA (при минимальном разрешении), EGA, а также стандартом VGA с минимальными требованиями при более высоком разрешении. Цветные Macintosh, Atari ST в низком разрешении, Commodore 64 и Amstrad CPC также поддерживали 4-битный цвет.
5-битный цвет
32 цвета из программируемой палитры, используемой оригинальным чипсетом Amiga.
6-битный цвет
64 цвета. Используется в Master System, Enhanced Graphics Adapter, GIME для TRS 80 Color Computer 3, смарт-часах Pebble Time (64-цветный e-paper дисплей) и Parallax Propeller с использованием эталонной схемы VGA.
12-битный цвет
4096 цветов, обычно из полностью программируемой палитры (хотя часто использовалась цветовая кубическая модель 16×16×16). Такую цветовую глубину имеют некоторые системы Silicon Graphics, Color NeXTstation и Amiga в режиме HAM. RGBA4444, связанное 16-битное представление, обеспечивающее цветовой куб и 16 уровней прозрачности, является распространенным форматом текстур в мобильной графике.
Высокий цвет (15/16-битный)
В высокоцветных системах для каждого пикселя сохраняется два байта (16 бит). Чаще всего каждому компоненту (R, G и B) выделяется по 5 бит, плюс один неиспользуемый бит (или используемый для масочного канала или для переключения на индексированную цветовую палитру); это позволяет представить 32 768 цветов. Однако альтернативное распределение, перенаправляющее неиспользуемый бит в канал G, позволяет представить 65 536 цветов, но без поддержки прозрачности. Такие цветовые глубины иногда используются в небольших устройствах с цветным дисплеем, например, в мобильных телефонах, и иногда считаются достаточными для отображения фотографий. В некоторых случаях используется 4 бита на цвет и 4 бита для альфа-канала, что дает 4096 цветов. К первым аппаратным средствам, поддерживавшим этот стандарт, относятся Sharp X68000 и графический массив IBM Extended Graphics Array (XGA). В последнее время термин "высокий цвет" стал использоваться для обозначения цветовых глубин, превышающих 24 бита.
18-битный
Почти все самые дешевые ЖК-дисплеи (например, типичные дисплеи скрученного нематика) обеспечивают 18-битную глубину цвета (64×64×64 = 262 144 комбинации) для достижения более быстрого времени переключения цветов и используют либо дитеринг, либо управление частотой кадров для имитации 24-битного цвета на пиксель, либо полностью отбрасывают 6 бит цветовой информации. Более дорогие ЖК-дисплеи (обычно IPS) способны отображать 24-битную глубину цвета или более.
Истинный цвет (24-битный)
24 бита почти всегда используют по 8 бит для красного, зеленого и синего (8 bpc). По состоянию на 2018 год, 24-битная глубина цвета используется практически на каждом компьютерном и телефонном дисплее, а также в подавляющем большинстве форматов хранения изображений. В большинстве случаев 32 бита на пиксель выделяют 24 бита для цвета, а оставшиеся 8 – для альфа-канала или остаются неиспользованными. 2<sup>24</sup> дает 16 777 216 цветовых вариаций. Человеческий глаз способен различать до десяти миллионов цветов, и поскольку цветовой охват дисплея меньше, чем диапазон человеческого зрения, этого должно быть достаточно для покрытия этого диапазона с большей детализацией, чем может быть воспринято. Однако дисплеи не распределяют цвета равномерно в цветовом пространстве, воспринимаемом человеком, поэтому люди могут видеть изменения между некоторыми соседними цветами в виде цветовых полос. Монохромные изображения устанавливают все три канала на одно и то же значение, в результате чего получается только 256 различных цветов; некоторые программы пытаются выполнить дитеринг оттенков серого в цветовых каналах, чтобы увеличить их количество, хотя в современном программном обеспечении это чаще используется для субпиксельного рендеринга для повышения пространственного разрешения на ЖК-экранах, где цвета имеют немного разные позиции. Стандарты DVD Video и Blu-ray Disc поддерживают 8-битную глубину цвета на компонент в YCbCr с 4:2:0 цветовой субдискретизацией. YCbCr можно без потерь преобразовать в RGB. В MacOS 24-битный цвет называется "миллионами цветов". Термин "истинный цвет" иногда используется для обозначения того, что в этой статье называется прямым цветом. Он также часто используется для обозначения любой глубины цвета, большей или равной 24.
Глубокий цвет (30-битный)
Глубокий цвет состоит из миллиарда или более цветов. 230 в степени 10 – это 1 073 741 824. Обычно это 10 бит на каждый из красного, зеленого и синего (10 бит на компонент). Если добавить альфа-канал того же размера, то каждый пиксель будет занимать 40 бит. Некоторые ранние системы размещали три 10-битных канала в 32-битном слове, при этом 2 бита оставались неиспользованными (или использовались как 4-уровневый альфа-канал); например, формат файла Cineon использовал такую схему. Некоторые системы SGI имели 10-битные (или более) цифро-аналоговые преобразователи для видеосигнала и могли быть настроены на интерпретацию данных, хранящихся в таком формате, для отображения. Файлы BMP определяют это как один из своих форматов, и Microsoft называет его "HiColor". Видеокарты с 10 битами на компонент начали появляться на рынке в конце 1990-х годов. Ранним примером была карта Radius ThunderPower для Macintosh, которая включала расширения для QuickDraw и плагины Adobe Photoshop для поддержки редактирования 30-битных изображений. Некоторые производители называют свои 24-битные панели с FRC 30-битными; однако, настоящие дисплеи с глубоким цветом имеют 10 бит или более на компонент без использования FRC. Спецификация HDMI 1.3 определяет глубину цвета в 30 бит (а также 36 и 48 бит). В связи с этим, графические карты Nvidia Quadro, выпущенные после 2006 года, поддерживают 30-битный глубокий цвет, а также карты GeForce и Titan архитектуры Pascal и более поздних версий при использовании драйвера Studio, как и некоторые модели серии Radeon HD 5900, такие как HD 5970. Графическая карта ATI FireGL V7350 поддерживает 40- и 64-битные пиксели (30 и 48-битная глубина цвета с альфа-каналом). Спецификация DisplayPort также поддерживает глубину цвета более 24 бит на пиксель в версии 1.3 посредством "Сжатия потока дисплея VESA (VESA Display Stream Compression), которое использует визуально без потерь алгоритм с низкой задержкой, основанный на предсказующем DPCM и цветовом пространстве YCoCg R, и позволяет увеличить разрешение и глубину цвета, а также снизить энергопотребление". На WinHEC 2008 Microsoft объявила о поддержке глубины цвета 30 и 48 бит в Windows 7, а также широкой цветовой гаммы scRGB. Высокоэффективное видеокодирование (HEVC или H.265) определяет профиль Main 10, который допускает 8 или 10 бит на отсчет с субдискретизацией цветности 4:2:0. Профиль Main 10 был добавлен на встрече HEVC в октябре 2012 года на основе предложения JCTVC K0109, в котором предлагалось добавить 10-битный профиль в HEVC для потребительских приложений. По состоянию на 2020 год некоторые смартфоны начали использовать 30-битную глубину цвета, такие как OnePlus 8 Pro, Oppo Find X2 & Find X2 Pro, Sony Xperia 1 II, Xiaomi Mi 10 Ultra, Motorola Edge+, ROG Phone 3 и Sharp Aquos Zero 2.
36-битный
Использование 12 бит на цветовой канал дает 36 бит, что соответствует 68 719 476 736 цветам. Если добавить альфа-канал того же размера, то глубина цвета составит 48 бит на пиксель.
48-битный
Использование 16 бит на цветовой канал дает 48 бит, или 281 474 976 710 656 цветов. Если добавить альфа-канал того же размера, то получится 64 бита на пиксель. Программное обеспечение для редактирования изображений, такое как Adobe Photoshop, начало использовать 16 бит на канал довольно рано, чтобы снизить эффект квантования при промежуточных вычислениях (то есть, если операция делится на 4 и затем умножается на 4, то при использовании 8-битных данных будут потеряны младшие 2 бита, а при использовании 16 бит – ни одного). Кроме того, цифровые камеры способны выдавать 10 или 12 бит на канал в формате RAW; поскольку 16 бит – наименьший адресуемый формат, превышающий эти значения, его использование упрощает обработку RAW-данных.
Высокий динамический диапазон и широкий диапазон
Некоторые системы начали использовать эти биты для чисел вне диапазона 0–1, а не для повышения разрешения. Числа, превышающие 1, использовались для отображения цветов, более ярких, чем мог показать дисплей, как, например, в изображениях с высоким динамическим диапазоном (HDRI). Отрицательные числа могут расширить цветовую гамму, охватывая все возможные цвета, а также для хранения результатов фильтрации с использованием отрицательных коэффициентов фильтра. Компьютер изображений Pixar использовал 12 бит для хранения чисел в диапазоне [1.5, 2.5), выделяя 2 бита на целую часть и 10 на дробную. Система Cineon использовала 10-битные профессиональные видеодисплеи, при этом видеоаппаратура была настроена таким образом, чтобы значение 95 соответствовало черному цвету, а 685 – белому. Усиленный сигнал приводил к сокращению срока службы ЭЛТ.
Линейное цветовое пространство и плавающая точка
Больше битов также способствовало хранению света в виде линейных значений, где число напрямую соответствует количеству излучаемого света. Линейные уровни значительно упрощают вычисления в компьютерной графике. Однако линейные цвета приводят к непропорционально большему количеству сэмплов вблизи белого и меньшему – вблизи черного, поэтому качество 16-битного линейного изображения примерно соответствует 12-битному sRGB. Числа с плавающей точкой могут представлять линейные уровни яркости, располагая сэмплы полулогарифмически. Представления с плавающей запятой также позволяют значительно расширить динамический диапазон и использовать отрицательные значения. Большинство систем изначально поддерживали 32-битную точность с одинарной точностью, что значительно превышало необходимую точность для большинства приложений. В 1999 году Industrial Light & Magic выпустили открытый стандарт формата файла изображения OpenEXR, который поддерживал 16 бит на канал с плавающей запятой половинной точности. При значениях, близких к 1.0, значения с плавающей запятой половинной точности имеют точность, эквивалентную 11-битному целому числу, что заставляет некоторых специалистов по графике отказываться от половинной точности в ситуациях, когда расширенный динамический диапазон не требуется.
Больше трех праймериз
Практически все телевизионные и компьютерные дисплеи формируют изображения, изменяя интенсивность всего лишь трех основных цветов: красного, зеленого и синего. Например, ярко-желтый цвет формируется примерно равными вкладами красного и зеленого, без вклада синего. Для хранения и обработки изображений существуют альтернативные способы расширения традиционного цветового треугольника: можно преобразовать кодирование изображения для использования фиктивных основных цветов, которые физически невозможны, но при этом расширяют треугольник, охватывая гораздо более широкую цветовую гамму. Эквивалентное, более простое изменение – разрешить отрицательные значения в цветовых каналах, чтобы представленные цвета могли выходить за пределы цветового треугольника, образованного основными цветами. Однако это лишь расширяет цвета, которые могут быть представлены в кодировании изображения; ни один из этих приемов не расширяет гамму цветов, которые могут быть фактически воспроизведены на устройстве отображения. Дополнительные цвета могут расширить цветовую гамму дисплея, поскольку она больше не ограничивается внутренней частью треугольника, образованного тремя основными цветами в его вершинах, например, цветовым пространством CIE 1931. Недавние технологии, такие как BrilliantColor от Texas Instruments, дополняют типичные красные, зеленые и синие каналы до трех других основных: голубого, пурпурного и желтого. Голубой цвет будет обозначен отрицательными значениями в красном канале, пурпурный – отрицательными значениями в зеленом канале, а желтый – отрицательными значениями в синем канале, что подтверждает возможность использования в противном случае фиктивных отрицательных чисел в цветовых каналах. Mitsubishi и Samsung (среди прочих) используют BrilliantColor в некоторых своих телевизорах для расширения диапазона отображаемых цветов. В линейку телевизоров Sharp Aquos была внедрена технология Quattron, которая дополняет обычные компоненты пикселей RGB желтым субпикселем. Однако форматы и носители, поддерживающие или использующие расширенную цветовую гамму, в настоящее время крайне редки. Поскольку большинство людей являются трихроматами или дихроматами, можно предположить, что добавление четвертого "основного" цвета не даст ощутимой практической пользы. Однако люди способны видеть более широкий диапазон цветов, чем может отобразить смесь трех цветных источников света. Недостаток цветов особенно заметен в насыщенных оттенках сине-зеленого (показано как левая верхняя серая часть подковы на диаграмме) на RGB-дисплеях: большинство людей могут видеть более яркие сине-зеленые оттенки, чем способен отобразить любой цветной видеоэкран.