Человеческий глаз способен видеть намного больше цветов, чем показывают ему современные видео дисплеи. Каким бы навороченным не был компьютер, он все равно может воспроизвести лишь конечное количество цветов. В этой статье мы расскажем об использовании 10-битной глубины цвета в сравнении с 8-битной, исходя из функционала процессоров Intel Core седьмого поколения и оптимизирующих возможностей Intel Software Tools. В статье вы также найдете ссылку на пример программы, реализующей 10-битное HEVC кодирование.



Глубина цвета


Глубина цвета, известная также как битовая глубина — это количество битов, используемое для отображения цвета отдельного пикселя. Одно и то же изображение или кадр с различной глубиной цвета выглядят различно, поскольку количество цветов в пикселе зависит от глубины цвета.

Количество битов в изображении включает в себя набор битов на канал для каждого типа цвета в пикселе. Количество цветовых каналов в пикселе зависит от используемого цветового пространства. Например, цветовые каналы в цветовом пространстве RGBA — красный ( R), зеленый (G), синий (B) и альфа (A). Каждый дополнительный бит удваивает количество информации, которое мы можем хранить для каждого цвета. В 8-битном изображении общее количество доступных цветов пикселя равняется 256. В Таблице 1 показано возможное количество доступных цветов для каждой соответствующей глубины цвета.
Глубина канала Оттенков на канал на пиксель Общее количество возможных оттенков
8-бит 256 16.78 миллионов
10-бит 1024 1.07 миллиарда
12-бит 4096 68.68 миллиардов
Большинство мониторов и телевизоров способны отображать лишь 8-битный контент, 10-битные изображения в них преобразуются в 8-битные. Однако преимущества 10-битной глубины имеют место уже сейчас:

  • при обработке изображений или видео после съемки
  • при использовании 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)


  1. DrZlodberg
    15.06.2017 08:53
    +1

    Большинство мониторов и телевизоров способны отображать лишь 8-битный контент, 10-битные изображения в них преобразуются в 8-битные.
    Сейчас уже 8? Несколько лет назад покупал моник — как-то было сложно найти за разумные деньги аппарат с честными 8 бит. Все были 6+дизер.
    И на примере картинки как раз не 8, а скорее 6, да ещё и без дизеринга.


    1. Nekto_Habr
      15.06.2017 15:24

      Не знаете, как обстоят дела сейчас? Какие есть честные мониторы за разумные деньги? Разумные — чтобы переплата за «честность» была оправдана, по сравнению с покупкой хорошего 6+дизер-моника.


      1. DrZlodberg
        15.06.2017 15:44

        Нет. После покупки перестал следить за темой. Ну и «разумность» переплаты понятие всё-таки очень индивидуальное. Я себе брал для работы с фото, так что требования качества было несколько повыше, чем для более утилитарного использования. Хотя пресловутые градиенты меня и без фото изрядно задолбали тогда. Взял какой-то NEC MultiSync. Конкретно моей модели, вроде, уже нет в продаже (ну, или не нашел). Но это было ещё до последнего кризиса, так что цена была несколько более адекватная. Сейчас уже вряд-ли бы сподвигся…


    1. navion
      15.06.2017 22:55

      Большинство мониторов на IPS отображают честные 8 бит, а 6 бит было в TN и дешевых *VA.
      Но для sRGB это небольшая потеря в отличии от кислотных цветов с широким охватом, который умеет компенсировать лишь Макось.


      1. sborisov
        16.06.2017 10:40

        Увы и ах, но нет.
        Когда производители стараются продать недорогие мониторы, гордо пишут — IPS.
        Но при внимательном чтении характеристик — оказывается что это e-IPS — а это 6 бит.
        Единственный плюс — это углы обзора, которые даёт «из коробки» струтура пикселей IPS, а по количеству цветов это тоже самое, что и TN-Film.
        Хотите 8бит — необходимо AH-IPS — а это уже в 2 раза дороже.


  1. Arxitektor
    15.06.2017 09:02

    10-битный цвет с цветовой субдискретизацией 4:2:0

    А есть ли различие с цветовой субдискретизацией 4:2:2 и честной цветовой субдискретизацией 4:4:4
    Будет ли различия в цветовой субдискретизацией 4:2:0 и цветовой субдискретизацией 4:4:4
    видны глазом?


    1. zuborg
      15.06.2017 12:44

      На тексте и подобном высококонтрастном контенте — конечно будут видны. Особенно на субпиксельном сглаживании.
      Фото/видео — тут уже нет.


    1. 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 бит на пиксель


  1. Hayate
    15.06.2017 09:17
    +2

    Вот простор для маркетологов-то будет.


  1. kostus1974
    15.06.2017 09:31
    +8

    Можно сказать, что возможности глаза безграничны

    дальше читать бессмысленно.


    1. vics001
      16.06.2017 11:14

      Уже убрали :) Но, действительно, возможности глаза просто принципиально другие, чем у мониторов. Глаз различает до 50 Мегапикселей, но 80% этого различия находится в маленькой области фокуса. Глаз различает минимальные отличия по яркости, в одной сцене от 1 нит до 10000 нит, но глаз не различиает много цветов в пределах одной яркости.


  1. DmitriyDev
    15.06.2017 11:46
    +4

    Извините пожалуйста, я не придираюсь, но как так получается, что у меня, на 8-ми битном (на канал) дисплее, правое изображение не содержит полос, а левое содержит? (Там где солнце и закат/рассвет). Для меня это выглядит так же как и магия, когда на обычном телевизоре показывают рекламу с сравнением обычного телевизора и супер нового и эта разница таки видна!!!


  1. ramzes2
    15.06.2017 11:46

    Есть ли шанс, что появится поддержка 10 битного цвета в OpenGL на Intel GPU?


    1. barnes
      15.06.2017 16:08
      +1

      Там давно есть работа с 16 и 32 бит текстурами (на канал). Просто надо чтобы тонмап не резал до диапазона (0...1), только и всего. Ну и видео карта должна поддерживать 10-12бит на выходе.


      1. 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.


        1. barnes
          15.06.2017 16:41
          +1

          Ага, железо вывод не тянет. Хотя что вы хотите от интела? Их гл драйвер всегда был ужасающий по качеству.


  1. VaalKIA
    15.06.2017 18:37

    не была передана сенсором

    Редь идёт о мониторе цитирую
    чем показывают ему современные видео дисплеи
    , то есть — излучателе, ближайшее что может быть там сенсорного, это «сенсорный экран, который к изображению не имеет никакого отношния, а скорее к тачпаду».
    Вы выдрали кусок текста из статьи о фотоприёмниках — CMOS ПЗС матрицы и пытаетесь это прикрутить к дисплеям, статья непрофессиональная у вас везде путаница между устройствами отображения и ввода, вы застряли где-то посередине со своим HEVC не зная на чём акцентировать внимание.


  1. 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).


  1. avigmati
    16.06.2017 10:11

    Пользуясь случаем спрошу: планируется ли создание графической утилиты для настройки драйвера видеокарты для linux? Типа такого:

    image


    1. sborisov
      16.06.2017 10:44

      Лучше бы дали возможность отключать своё видео в биосе на ноутбуках (производителям железа), облегчив жизнь людям, которые хотят видеокарту NVidia в Linux, работающую без бубна.


  1. OLDRihard
    16.06.2017 10:11
    +1

    Мне всегда нравились такие картинки сравнения качества изображения 2х мониторов… показанных на еще более дешевом офисном мониторе =D.


  1. PaulZi
    16.06.2017 10:45

    В обычном видео даже не 8 бит, а чуть больше 7-ми бит, из-за TV диапазона 16-235 (https://habrahabr.ru/post/136318/). fullrange видео встречается очень редко.