Глубина цвета
Глубина цвета, известная также как битовая глубина — это количество битов, используемое для отображения цвета отдельного пикселя. Одно и то же изображение или кадр с различной глубиной цвета выглядят различно, поскольку количество цветов в пикселе зависит от глубины цвета.
Количество битов в изображении включает в себя набор битов на канал для каждого типа цвета в пикселе. Количество цветовых каналов в пикселе зависит от используемого цветового пространства. Например, цветовые каналы в цветовом пространстве RGBA — красный ( R), зеленый (G), синий (B) и альфа (A). Каждый дополнительный бит удваивает количество информации, которое мы можем хранить для каждого цвета. В 8-битном изображении общее количество доступных цветов пикселя равняется 256. В Таблице 1 показано возможное количество доступных цветов для каждой соответствующей глубины цвета.
Глубина канала | Оттенков на канал на пиксель | Общее количество возможных оттенков |
---|---|---|
8-бит | 256 | 16.78 миллионов |
10-бит | 1024 | 1.07 миллиарда |
12-бит | 4096 | 68.68 миллиардов |
- при обработке изображений или видео после съемки
- при использовании High Dynamic Range (HDR) мониторов или камер.
Если контент снят с глубиной 10 бит, важно не потерять ее при дальнейшей обработке, поскольку это может привести к снижению резкости, контраста и других важных характеристик. В том случае, если редактируется 8-битный контент, это также может привести к уменьшению глубины и вызвать эффект цветовых полос.
Эффект цветовых полос
При захвате изображения иногда случается так, что сенсор не может распознать минимальное различие между двумя двумя соседними цветами, и возникает проблема некорректного отображения цветов. Как результат, область рисунка закрашивается одним цветом за неимением более подходящего другого. Таким образом, на рисунке появляются цветные полосы вместо плавного перехода из одного цвета в другой.
Возможные варианты решения проблемы цветовых полос:
- увеличить глубину цвета на канал
- применить цветовую дискретизацию (не рассматривается в этой статье).
Неоткалиброванный дисплей может также вызвать эффект полос. Чтобы этого избежать, воспользуйтесь утилитой Intel Graphics Control Panel.
Рисунок 1. Сравнение 8-битного (слева) и 10-битного (справа) изображения. Слева виден эффект полос.
Рисунок 1 показывает разницу между 8-битным и 10-битным изображениями применительно к эффекту цветовых полос. На левом изображении необходимая цветовая детализация не была передана сенсором, что привело у меньшему, чем надо, количеству цветов и цветовым полосам. На правом фото цветовой информации достаточно и переход между цветами получился плавным. Для обеспечения плавности цветовых переходов необходим более широкий цветовой диапазон, описанный в стандарте BT2020.
Стандарт BT. 2020
Седьмое поколение процессоров Intel Xeon и Core поддерживает стандарт BT. 2020 (известный также как Rec. 2020) в таких случаях как создание/воспроизведение 4K Ultra-high definition (UHD) контента, использование HDR с поддержкой 10 битов и т.д. UHD-мониторы имеют разрешение 3840*2160 при различной диагонали. Поддержка стандарта BT.2020 улучшает качество картинки при столь высоком разрешении.
Рисунок 2. Сравнение цветовых пространств BT.2020 и BT.709
Рекомендации The International Telecommunications Union (ITU) BT.2020 представляют значительно больший диапазон цветов, чем ранее используемые BT.709. Сравнение соответствующих цветовых пространств показано на Рисунке 2, представляющим диаграмму цветности CIE 1931. Оси X и Y показывают относительные координаты цветности с длинами волн соответствующих цветовых пространств (синий шрифт). Желтый треугольник покрывает цветовое пространство по стандарту BT. 709. Черный треугольник показывает цветовое пространство BT. 2020, значительно большее по размеру и, следовательно, содержащее большее количество цветов для плавных переходов. BT. 2020 также определяет различные аспекты UHD TV такие как разрешение дисплея, частоту кадров, цветовую субдискретизацию и глубину цвета в добавление к цветовому пространству.
Процессоры Intel 7 поколения поддерживают профили HEVC Main 10 profile, VP9 Profile 2 и High Dynamic Range (HDR) видео рендеринг с использованием стандарта BT.2020.
Профиль HEVC Main 10
High Efficiency Video Coding (HEVC), также известный как H.265 — стандарт видео сжатия, наследник хорошо известного стандарта H.264/AVC. По сравнению с предшественниками, HEVC использует более сложные алгоритмы сжатия. Больше информации о стандарте можно узнать здесь. Профиль Main 10 позволяет использовать 8-битный или 10-битный цвет с цветовой субдискретизацией 4:2:0.
Поддержка декодирования HEVC 10b появилась начиная с 6 поколения процессоров Intel. Команда ниже показывает, как тестовая утилита sample_decode из набора примеров кода Intel Media SDK может быть использована для получения сырых кадров из простейшего HEVC потока.
sample_decode.exe h265 -p010 -i input.h265 -o raw_farmes.yuv -hw
Используемый выше входной поток (input.h265) может быть взят здесь. Выходной поток (raw_frames.yuv) должен быть в формате P010, используемом как исходный материал для утилиты sample_encode.
Аппаратная поддержка кодирования/декодирования HEVC 10b внедрена начиная с 7 поколения процессоров Intel. Кодирование 10-битного HEVC реализовано с помощью дополнительного кода modified_sample_encode, специально измененного для этой конкретной функциональности. Данный пример работает с Intel Media SDK 2016 R2. Инструкция по сборке приведена в руководстве по примерам медиа в образцах кода Intel Media SDK.
Ниже показан пример 10-битного кодирования с использованием sample_encode из добавленной modified_sample_encode.
sample_encode.exe h265 -i raw_frames.yuv -o output.265 -w 3840 -h 2160 -p010 -hw
Рисунок 3. Скриншот утилиты Video Quality Caliper, показывающий, показывающий, что кодированный поток имеет 10 бит на пиксель.
Профиль VP9 2
VP9 — формат видео кодирования, разработанный Google как наследник VP8. Платформы Intel седьмого поколения поддерживают аппаратное ускорение декодирования VP9 10-бит, тогда как кодирование пока комбинированное, софтово-хардварное.
Высокий динамический диапазон (High Dynamic Range, HDR)
Динамический диапазон — это отношение значения самой светлой к самой темной точке на изображении. Видео высокого динамического диапазона (HDR) позволяет получить лучший динамический диапазон, чем обычное (SDR) видео, использующее нелинейные операции для кодирования и декодирования уровня освещенности.
Видео контент HDR поддерживается при использовании кодека HEVC Main 10 или VP9.2, аппаратно ускоренных начиная с 7 поколения процессоров Intel. Для передачи контента HDR, система должна быть оснащена портом DisplayPort 1.4 или HDMI 2.0a. Данная функциональность пока находится на стадии тестирования и не включена в общедоступные релизы.
Заключение
Как мы выяснили, разработчики сейчас имеют возможность создавать красивое, реалистичное видео в самых современных форматах, расцвеченных ярками красками 10-битного цвета, идеальным для HD/UHD дисплеев. Используя процессоры Intel седьмого поколения для создания контента стандарта BT.2020, а также возможности оптимизации Intel Media SDK, мы уже сейчас можем заглянуть за пределы разрешения 4K UHD и стандартной на сегодня кадровой скорости. В дальнейшем область применения современных аппаратно-ускоренных видео кодеков будет расширяться.
В этой статье упоминались следующие программные средства (со ссылками для скачивания):
- Программное обеспечение — Intel Media SDK 2016 R2
- Входной видео поток — MHD_2013_2160p_ShowReel_R_9000f_24fps_RMN_QP23_10b.hevc из Бесплатные потоки H.265/HEVC
- Кодек — H.265/HEVC
- Средство анализа — Video Quality Caliper (VQC), компонент Intel Media Server Studio Professional Edition и Intel Video Pro Analyzer
- Тестовый стенд:
- ЦПУ: Intel Core i7-7500U CPU @ 2.70GHz
- ОС: Microsoft Windows 10 Professional 64-bit
- Графика: Intel HD Graphics 620
Полезные ссылки
Комментарии (22)
Arxitektor
15.06.2017 09:0210-битный цвет с цветовой субдискретизацией 4:2:0
А есть ли различие с цветовой субдискретизацией 4:2:2 и честной цветовой субдискретизацией 4:4:4
Будет ли различия в цветовой субдискретизацией 4:2:0 и цветовой субдискретизацией 4:4:4
видны глазом?zuborg
15.06.2017 12:44На тексте и подобном высококонтрастном контенте — конечно будут видны. Особенно на субпиксельном сглаживании.
Фото/видео — тут уже нет.
vics001
16.06.2017 11:11Субдискретизация будет чем больше заметна, чем ниже разрешение экрана. Например 4К с 4:2:0 на самом деле дает гораздо больше цветовой информации, чем FHD 4:4:4. Можно на это смотреть с математической точки зрения, 4:2:0 это эффективный способ хранить 50% от полного цвета, но разница конечно есть.
8 бит 4:2:0 (yuv420p) — 12 бит на пиксель (грубый перевод 4 бита на цвет)
8 бит 4:2:2 (yuv422p) — 16 бит на пиксель
8 бит 4:4:4 (yuv444p) — 24 бит на пиксель
10 бит 4:2:2 yuv422p10 — 20 бит на пиксель
10 бит 4:2:0 yuv420p10 — 15 бит на пиксель
10 бит 4:4:4 yuv444p10 — 30 бит на пиксель
kostus1974
15.06.2017 09:31+8Можно сказать, что возможности глаза безграничны
дальше читать бессмысленно.vics001
16.06.2017 11:14Уже убрали :) Но, действительно, возможности глаза просто принципиально другие, чем у мониторов. Глаз различает до 50 Мегапикселей, но 80% этого различия находится в маленькой области фокуса. Глаз различает минимальные отличия по яркости, в одной сцене от 1 нит до 10000 нит, но глаз не различиает много цветов в пределах одной яркости.
DmitriyDev
15.06.2017 11:46+4Извините пожалуйста, я не придираюсь, но как так получается, что у меня, на 8-ми битном (на канал) дисплее, правое изображение не содержит полос, а левое содержит? (Там где солнце и закат/рассвет). Для меня это выглядит так же как и магия, когда на обычном телевизоре показывают рекламу с сравнением обычного телевизора и супер нового и эта разница таки видна!!!
ramzes2
15.06.2017 11:46Есть ли шанс, что появится поддержка 10 битного цвета в OpenGL на Intel GPU?
barnes
15.06.2017 16:08+1Там давно есть работа с 16 и 32 бит текстурами (на канал). Просто надо чтобы тонмап не резал до диапазона (0...1), только и всего. Ну и видео карта должна поддерживать 10-12бит на выходе.
ramzes2
15.06.2017 16:37+1Пункт 3.4 в документе «Deep Color Support of Intel® Graphics», на который есть ссылка в конце статьи (Поддержка глубокого цвета в Intel Graphics):
There is no OpenGL* support for 10/12 bit with Intel graphics driver. Intel will re-evaluate this as the technology matures.
barnes
15.06.2017 16:41+1Ага, железо вывод не тянет. Хотя что вы хотите от интела? Их гл драйвер всегда был ужасающий по качеству.
VaalKIA
15.06.2017 18:37не была передана сенсором
Редь идёт о мониторе цитируючем показывают ему современные видео дисплеи
, то есть — излучателе, ближайшее что может быть там сенсорного, это «сенсорный экран, который к изображению не имеет никакого отношния, а скорее к тачпаду».
Вы выдрали кусок текста из статьи о фотоприёмниках — CMOS ПЗС матрицы и пытаетесь это прикрутить к дисплеям, статья непрофессиональная у вас везде путаница между устройствами отображения и ввода, вы застряли где-то посередине со своим HEVC не зная на чём акцентировать внимание.
Rend
16.06.2017 03:00+2Уважаемый saul, вы вводите читателей в заблуждение.
ITU-R BT.2020 определяет в первую очередь расширенное цветовое пространство, которое должно отображаться. Подавляющее большинство существующих мониторов его не может отобразить в силу своих технических ограничений.
10 бит, которые приписаны BT.2020, также явно присутствуют как для Rec.709 (HD), так и для обычного Rec.601 (SD).
Попытка привязать 10 бит исключительно к H.265 также не особо удачна — и в H.264 есть профиль 10-битный профиль Hi10p. В форматах записи его, в частности, использовал Panasonic (AVC Intra 50).
avigmati
16.06.2017 10:11Пользуясь случаем спрошу: планируется ли создание графической утилиты для настройки драйвера видеокарты для linux? Типа такого:
OLDRihard
16.06.2017 10:11+1Мне всегда нравились такие картинки сравнения качества изображения 2х мониторов… показанных на еще более дешевом офисном мониторе =D.
PaulZi
16.06.2017 10:45В обычном видео даже не 8 бит, а чуть больше 7-ми бит, из-за TV диапазона 16-235 (https://habrahabr.ru/post/136318/). fullrange видео встречается очень редко.
DrZlodberg
И на примере картинки как раз не 8, а скорее 6, да ещё и без дизеринга.
Nekto_Habr
Не знаете, как обстоят дела сейчас? Какие есть честные мониторы за разумные деньги? Разумные — чтобы переплата за «честность» была оправдана, по сравнению с покупкой хорошего 6+дизер-моника.
DrZlodberg
Нет. После покупки перестал следить за темой. Ну и «разумность» переплаты понятие всё-таки очень индивидуальное. Я себе брал для работы с фото, так что требования качества было несколько повыше, чем для более утилитарного использования. Хотя пресловутые градиенты меня и без фото изрядно задолбали тогда. Взял какой-то NEC MultiSync. Конкретно моей модели, вроде, уже нет в продаже (ну, или не нашел). Но это было ещё до последнего кризиса, так что цена была несколько более адекватная. Сейчас уже вряд-ли бы сподвигся…
navion
Большинство мониторов на IPS отображают честные 8 бит, а 6 бит было в TN и дешевых *VA.
Но для sRGB это небольшая потеря в отличии от кислотных цветов с широким охватом, который умеет компенсировать лишь Макось.
sborisov
Увы и ах, но нет.
Когда производители стараются продать недорогие мониторы, гордо пишут — IPS.
Но при внимательном чтении характеристик — оказывается что это e-IPS — а это 6 бит.
Единственный плюс — это углы обзора, которые даёт «из коробки» струтура пикселей IPS, а по количеству цветов это тоже самое, что и TN-Film.
Хотите 8бит — необходимо AH-IPS — а это уже в 2 раза дороже.