Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Пример цветовой плоскости UV, значение Y '= 0,5, представленной в цветовой гамме RGB
Изображение вместе с его компонентами Y ', U и V соответственно

YUV - это система кодирования цвета, обычно используемая как часть конвейера цветного изображения . Он кодирует цветное изображение или видео с учетом человеческого восприятия , позволяя уменьшить полосу пропускания для компонентов цветности , тем самым, как правило, позволяет более эффективно маскировать ошибки передачи или артефакты сжатия человеческим восприятием, чем при использовании «прямого» RGB-представления. Другие цветовые кодировки имеют аналогичные свойства, и основная причина для реализации или исследования свойств Y'UV будет заключаться в взаимодействии с аналоговым или цифровым телевизионным или фотооборудованием, которое соответствует определенным стандартам Y'UV.

Модель Y'UV определяет цветовое пространство с точки зрения одного компонента яркости (Y ') и двух компонентов цветности , называемых U (синяя проекция) и V (красная проекция) соответственно. Цветовая модель Y'UV используется в PAL композитного цветного видеосигнала ( за исключением PAL-N ) стандарта. Предыдущие черно-белые системы использовали только информацию о яркости (Y '). Информация о цвете (U и V) добавлялась отдельно через поднесущую, так что черно-белый приемник все еще мог принимать и отображать передачу цветного изображения в собственном черно-белом формате приемника .

Y 'обозначает компонент яркости (яркость), а U и V - компоненты цветности (цвета); яркости обозначаются Y и яркостью с помощью Y '- простые символы (') обозначают гамма - коррекция , [1] с „ яркостью “ , что означает физическую яркость линейного пространства, в то время как „ люм “ представляют собой (нелинейная) перцептивная яркость.

Объем терминов Y'UV, YUV, YCbCr , YPbPr и т. Д. Иногда неоднозначен и перекрывается. Исторически термины YUV и Y'UV использовались для определенного аналогового кодирования информации о цвете в телевизионных системах, в то время как YCbCr использовался для цифрового кодирования информации о цвете, подходящей для сжатия и передачи видео и неподвижных изображений, таких как MPEG и JPEG . [2] Сегодня термин YUV обычно используется в компьютерной индустрии для описания файловых форматов , которые кодируются с использованием YCbCr .

Цветовая модель YPbPr, используемая в аналоговом компонентном видео, и ее цифровая версия YCbCr, используемая в цифровом видео, более или менее унаследованы от нее и иногда называются Y'UV. (C B / P B и C R / P R - отклонения от серого на сине-желтой и красно-голубой осях, тогда как U и V - различия яркости синего и красного соответственно.) Цветовое пространство Y'IQ, используемое в система аналогового телевизионного вещания NTSC связана с ним, хотя и более сложным образом. YDbDr цветового пространства, используемого в аналоговом SECAM и PAL-N телевизионного вещания систем, также связаны между собой .

Что касается этимологии, Y, Y ', U и V не являются сокращениями. Использование буквы Y для обозначения яркости можно проследить до выбора основных цветов XYZ . Это естественным образом позволяет использовать одну и ту же букву в яркости (Y '), которая приближается к перцептивно однородному корреляту яркости. Аналогичным образом, U и V были выбраны, чтобы отличать оси U и V от осей в других пространствах, таких как пространство цветности x и y. См. Приведенные ниже уравнения или сравните историческое развитие математики. [3] [4] [5]

История [ править ]

Y'UV был изобретен, когда инженеры хотели цветного телевидения в черно-белой инфраструктуре. [6] Им нужен был метод передачи сигнала, совместимый с черно-белым (B&W) телевидением, но с возможностью добавления цвета. Компонент яркости уже существовал как черно-белый сигнал; они добавили к этому УФ-сигнал в качестве раствора.

УФ-представление цветности было выбрано по сравнению с прямыми сигналами R и B, потому что U и V - это цветоразностные сигналы. Другими словами, сигналы U и V говорят телевизору сместить цвет определенного пятна (дисплеи с ЭЛТ не имеют дискретных пикселей) без изменения его яркости. Или сигналы U и V говорят монитору сделать один цвет ярче за счет другого и на сколько он должен быть сдвинут. Чем выше (или ниже, если они отрицательные) значения U и V, тем более насыщенным (красочным) становится пятно. Чем ближе значения U и V к нулю, тем меньше изменяется цвет, что означает, что красный, зеленый и синий свет будут более одинаково яркими, создавая более серое пятно. Это преимущество использования цветоразностных сигналов, т.е. вместо того, чтобы сообщать, сколько красного в цвете,он показывает, насколько он более красный, чем зеленый или синий. В свою очередь, это означало, что когда сигналы U и V были бы нулевыми или отсутствовали, он просто отображал бы изображение в оттенках серого. Если бы использовались R и B, они имели бы ненулевые значения даже в черно-белой сцене, требующей всех трех сигналов, несущих данные. Это было важно на заре цветного телевидения, потому что старые черно-белые телевизионные сигналы не имели сигналов U и V, а это означало, что цветной телевизор просто отображал бы их как черно-белые телевизоры из коробки. Кроме того, черно-белые приемники могут принимать сигнал Y 'и игнорировать сигналы U- и V-цветов, что делает Y'UV обратно совместимым со всем существующим черно-белым оборудованием, входом и выходом. Если бы в стандарте цветного телевидения не использовались бы цветоразностные сигналы, это могло бы означать, что цветной телевизор будет воспроизводить смешные цвета из черно-белыхW-вещание, иначе потребуются дополнительные схемы для преобразования черно-белого сигнала в цветной. Было необходимо назначить более узкую полосу пропускания для канала цветности, потому что не было доступной дополнительной полосы пропускания. Если бы некоторая информация о яркости поступала через канал цветности (как это было бы, если бы RB-сигналы использовались вместо дифференциальных УФ-сигналов), черно-белое разрешение было бы скомпрометировано.[7]

Преобразование в / из RGB [ править ]

SDTV с BT.601 [ править ]

Сигналы Y'UV обычно создаются из источника RGB ( красный , зеленый и синий ). Взвешенные значения R, G и B суммируются, чтобы получить Y ', меру общей яркости или яркости. U и V вычисляются как масштабированные разности между Y 'и значениями B и R.

BT.601 определяет следующие константы:

Y'UV вычисляется из RGB (линейный RGB, например RGB без гамма-коррекции или sRGB ) следующим образом:

Результирующие диапазоны Y ', U и V соответственно равны [0, 1], [- U max , U max ] и [- V max , V max ].

Инвертирование вышеуказанного преобразования преобразует Y'UV в RGB:

Аналогичным образом, замена значений констант и их выражение в виде матриц дает следующие формулы для BT.601:

Обратите внимание, что для малых значений Y 'можно получить отрицательные значения R, G или B, поэтому на практике мы ограничиваем результаты RGB до интервала [0,1].

HDTV с BT.709 [ править ]

HDTV Rec. 709 (довольно близко к SDTV Rec. 601) по сравнению с UHDTV Rec. 2020 г.

Для HDTV ATSC решил изменить основные значения для W R и W B по сравнению с ранее выбранных значений в системе SDTV. Для HDTV эти значения предоставлены Рек. 709 . Это решение дополнительно повлияло на матрицу преобразования Y'UV↔RGB, так что значения ее элементов также немного отличаются. В результате, с SDTV и HDTV для любой тройки RGB обычно возможны два различных представления Y'UV: SDTV-Y'UV и HDTV-Y'UV. Это означает, что при прямом преобразовании между SDTV и HDTV информация о яркости (Y ') примерно такая же, но представление информации канала цветности (U и V) требует преобразования. Все еще освещается цветовым пространством CIE 1931Рек. 709 почти идентично Rec. 601 и покрывает 35,9%. [8] В отличие от этого UHDTV с Rec. 2020 охватывает гораздо большую территорию и в дальнейшем увидит свою собственную матрицу для YUV / Y'UV.

BT.709 определяет эти значения веса:

Матрицы и формулы преобразования для BT.709:

Примечания [ править ]

  • Веса, используемые для вычисления Y '(верхняя строка матрицы), идентичны весам, используемым в цветовом пространстве Y'IQ .
  • Равные значения красного, зеленого и синего (т. Е. Уровни серого) дают 0 для U и V. Черный, RGB = (0, 0, 0), дает YUV = (0, 0, 0). Белый, RGB = (1, 1, 1), дает YUV = (1, 0, 0).
  • Эти формулы традиционно используются в аналоговых телевизорах и оборудовании; цифровое оборудование, такое как HDTV и цифровые видеокамеры, используют Y'CbCr.
  • Предполагается, что входные значения RGB находятся в линейном пространстве RGB. RGB с гамма-коррекцией или sRGB необходимо сначала правильно преобразовать в линейное пространство.
  • UV-плоскости в диапазоне Y = [0,1] с использованием матрицы BT.709.
  • Y 'значение 0

  • Значение Y '0,5

  • Значение Y '0,5, с неусеченной гаммой, показанной центральным прямоугольником

  • Y 'значение 1

Численные приближения [ править ]

До разработки быстрых процессоров SIMD с плавающей запятой в большинстве цифровых реализаций RGB → Y'UV использовалась целочисленная математика, в частности аппроксимации с фиксированной запятой . Аппроксимация означает, что точность используемых чисел (входные данные, выходные данные и постоянные значения) ограничена, и, таким образом, потеря точности, как правило, около последней двоичной цифры, принимается тем, кто использует эту опцию, как правило, в качестве компромисса для улучшенная скорость вычислений.

В следующих примерах оператор " " обозначает сдвиг вправо двоичной позиции a на b . Для пояснения переменные используют два суффиксных символа: «u» используется для окончательного представления без знака, а «t» - для уменьшенного промежуточного значения. Приведенные ниже примеры приведены только для BT.601. Тот же принцип можно использовать для выполнения функционально эквивалентных операций с использованием значений, которые обеспечивают приемлемое соответствие для данных, соответствующих BT.709 или любому другому сопоставимому стандарту.

Значения Y 'обычно сдвигаются и масштабируются до диапазона [16, 235] (называемого студийным свингом или "уровнями ТВ"), а не с использованием полного диапазона [0, 255] (называемого полным колебанием или "уровнями ПК"). "). Эта практика была стандартизирована в SMPTE-125M, чтобы компенсировать выбросы сигнала («звон») из-за фильтрации. Значение 235 соответствует максимальному выбросу от черного к белому в размере 255-235 = 20 или 20 / (235-16) = 9,1%, что немного больше теоретического максимального выброса ( феномен Гиббса ), составляющего около 8,9% максимальный шаг. Пространство для пальцев меньше, допускает только 16/219 = 7,3% перерегулирования, что меньше теоретического максимального перерегулирования в 8,9%. Вот почему 16 добавляется к Y 'и почему коэффициенты Y' в основной сумме преобразования равны 220 вместо 255.[9] Значения U и V, которые могут быть положительными или отрицательными, суммируются со 128, чтобы сделать их всегда положительными, что дает студийный диапазон от 16 до 240 для U и V. (Эти диапазоны важны при редактировании и производстве видео, так как использование неправильных диапазона приведет либо к изображению с "обрезанными" черными и белыми цветами, либо к изображению с низкой контрастностью.)

Студийные качели для BT.601 [ править ]

Для получения традиционного "студийного" 8-битного представления Y'UV для SDTV / BT.601 можно использовать следующие операции:

1. Базовое преобразование из 8-битных значений RGB в 16-битные (Y ': без знака, U / V: со знаком, значения матрицы округлены, так что желаемый диапазон Y' [16..235] и U / Достигнут диапазон V [16..240]):

2. Уменьшите масштаб (« >> 8») до 8 бит с округлением («+128») (Y ′: без знака, U / V: со знаком):

3. Добавьте смещение к значениям, чтобы исключить любые отрицательные значения (все результаты беззнаковые 8-битные):

Полный ход для BT.601 [ править ]

Для получения «полноценного» 8-битного представления Y'UV для SDTV / BT.601 можно использовать следующие операции:

1. Базовое преобразование из 8-битных значений RGB в 16-битные значения (Y ': без знака, U / V: со знаком, значения матрицы округлены, так что желаемый диапазон Y'UV каждого [0..255] в дальнейшем будет достигнута, пока не произойдет переполнение):

2. Уменьшите масштаб («>> 8») до 8-битных значений с округлением («+128») (Y ′: без знака, U / V: со знаком):

3. Добавьте смещение к значениям, чтобы исключить любые отрицательные значения (все результаты беззнаковые 8-битные):

Системы яркости / цветности в целом [ править ]

Основное преимущество систем яркости / цветности, таких как Y'UV и его родственников Y'IQ и YDbDr , заключается в том, что они остаются совместимыми с черно-белым аналоговым телевидением (во многом благодаря работе Жоржа Валенси ). Канал Y 'сохраняет все данные, записанные черно-белыми камерами, поэтому он производит сигнал, подходящий для приема на старых монохромных дисплеях. В этом случае U и V просто отбрасываются. При отображении цвета используются все три канала, и исходная информация RGB может быть декодирована.

Еще одно преимущество Y'UV состоит в том, что часть информации можно отбросить, чтобы уменьшить полосу пропускания . Человеческий глаз имеет довольно низкую пространственную чувствительность к цвету: точность информации о яркости канала яркости оказывает гораздо большее влияние на детали изображения, чем у двух других. Понимая этот человеческий недостаток, такие стандарты, как NTSC и PAL, значительно сокращают полосу пропускания каналов цветности. (Пропускная способность находится во временной области, но она переводится в пространственную область, когда изображение сканируется.)

Следовательно, результирующие сигналы U и V могут быть существенно «сжаты». В системах NTSC (Y'IQ) и PAL сигналы цветности имели значительно более узкую полосу пропускания, чем у сигналов яркости. Ранние версии NTSC быстро чередовались между определенными цветами в идентичных областях изображения, чтобы они казались дополняющими друг друга для человеческого глаза, в то время как все современные аналоговые и даже большинство цифровых стандартов видео используют субдискретизациюзаписывая информацию о цвете изображения с уменьшенным разрешением. Сохраняется только половина горизонтального разрешения по сравнению с информацией о яркости (так называемая субдискретизация цветности 4: 2: 2), и часто вертикальное разрешение также уменьшается вдвое (давая 4: 2: 0). Стандарт 4: x: x был принят из-за самого раннего цветного стандарта NTSC, в котором использовалась субдискретизация цветности 4: 1: 1 (где разрешение цвета по горизонтали делится на четверть, а по вертикали - полное разрешение), так что изображение несло только четверть цветового разрешения по сравнению с разрешением по яркости. Сегодня только высококачественное оборудование, обрабатывающее несжатые сигналы, использует субдискретизацию цветности 4: 4: 4 с идентичным разрешением как для информации о яркости, так и для информации о цвете.

Оси I и Q были выбраны в соответствии с полосой пропускания, необходимой для человеческого зрения, одна ось требовала наибольшей полосы пропускания, а другая (случайно под углом 90 градусов) минимальной. Однако истинная I- и Q-демодуляция была относительно более сложной, требуя двух аналоговых линий задержки, и приемники NTSC редко использовали ее.

Однако это преобразование цветового пространства происходит с потерями , что особенно очевидно в перекрестных помехах от яркости к проводу, несущему цветность, и наоборот, в аналоговом оборудовании (включая разъемы RCA для передачи цифрового сигнала, поскольку все, что они передают, - это аналоговое композитное видео , которое это либо YUV, YIQ, либо даже CVBS ). Кроме того, цветовые сигналы в кодировке NTSC и PAL смешиваются друг с другом, чтобы обеспечить обратную совместимость с черно-белым телевизионным оборудованием, что приводит к ползанию точек и перекрестному цвету.артефакты. Когда в 1950-х годах был создан стандарт NTSC, это не было серьезной проблемой, поскольку качество изображения ограничивалось оборудованием монитора, а не принимаемым сигналом с ограниченной полосой пропускания. Однако современное телевидение способно отображать больше информации, чем содержится в этих сигналах с потерями. Чтобы идти в ногу с возможностями новых технологий отображения, с конца 1970-х годов предпринимались попытки сохранить больше сигнала Y'UV при передаче изображений, например, через разъемы SCART (1977) и S-Video (1987).

Вместо Y'UV, Y'CbCr использовался в качестве стандартного формата для (цифровых) распространенных алгоритмов сжатия видео , таких как MPEG-2 . Цифровое телевидение и DVD сохраняют свои сжатые видеопотоки в формате MPEG-2, который использует полное цветовое пространство Y'CbCr, хотя и сохраняет установленный процесс субдискретизации цветности. В профессиональном цифровом видеоформате CCIR 601 также используется Y'CbCr с общей частотой субдискретизации цветности 4: 2: 2, в первую очередь для совместимости с предыдущими стандартами аналогового видео. Этот поток можно легко смешать с любым необходимым форматом вывода.

Y'UV не является абсолютным цветовым пространством . Это способ кодирования информации RGB, и фактический отображаемый цвет зависит от фактических красителей RGB, используемых для отображения сигнала. Следовательно, значение, выраженное как Y'UV, является предсказуемым только в том случае, если используются стандартные красители RGB (т. Е. Фиксированный набор основных цветностей или определенный набор красного, зеленого и синего).

Кроме того, диапазон цветов и яркости (известный как цветовая гамма) RGB (будь то BT.601 или Rec.709) намного меньше, чем диапазон цветов и яркости, разрешенный Y'UV. Это может быть очень важно при преобразовании из Y'UV (или Y'CbCr) в RGB, поскольку приведенные выше формулы могут давать "недопустимые" значения RGB, то есть значения ниже 0% или намного выше 100% диапазона (например, вне стандартного диапазона яркости 16–235 (и диапазона цветности 16–240) для телевизоров и HD-контента или за пределами 0–255 для стандартного разрешения на ПК). Если эти значения не обрабатываются, они обычно будут «обрезаны» (т. Е. Ограничены) до допустимого диапазона затронутого канала. Это изменяет оттенок цвета, что очень нежелательно, поэтому часто считается, что лучше обесцветить оскорбительные цвета, чтобы они попадали в цветовую гамму RGB. [10]Аналогично, когда RGB с заданной битовой глубиной преобразуется в YUV с той же битовой глубиной, несколько цветов RGB могут стать одним и тем же цветом Y'UV, что приведет к потере информации.

Связь с Y′CbCr [ править ]

Y'UV часто используется как термин для YCbCr . Однако, хотя они связаны, это разные форматы с разными масштабными коэффициентами. [11] U и V представляют собой биполярные сигналы, которые могут быть положительными или отрицательными, и равны нулю для серого, тогда как YCbCr обычно масштабирует все каналы либо до диапазона 16–235, либо до диапазона 0–255, что делает величины Cb и Cr беззнаковыми, которые 128 для серого.

Тем не менее, соотношение между ними в стандартном случае простое. В частности, каналы Y 'обоих линейно связаны друг с другом, как Cb, так и U связаны линейно с (BY), а Cr и V линейно связаны с (RY).

Типы выборки [ править ]

Чтобы получить цифровой сигнал, изображения Y'UV могут быть дискретизированы несколькими различными способами; см. подвыборку цветности .

Преобразование между Y'UV и RGB [ править ]

Файлы RGB обычно кодируются с использованием 8, 12, 16 или 24 бит на пиксель. В этих примерах мы примем 24 бита на пиксель, что записывается как RGB888 . Стандартный байтовый формат:

r0, g0, b0, r1, g1, b1, ...

Файлы Y'UV могут быть закодированы с разрешением 12, 16 или 24 бит на пиксель. Распространенными форматами являются Y'UV444 (или YUV444), YUV411, Y'UV422 (или YUV422) и Y'UV420p (или YUV420). Апостроф после Y часто опускается, как и «p» после YUV420p. Что касается фактических форматов файлов, YUV420 является наиболее распространенным, поскольку данные легче сжимаются, а расширение файла обычно ".YUV".

Отношение между скоростью передачи данных и дискретизацией (A: B: C) определяется соотношением между Y к U и V каналу. [12] [13]

Для преобразования из RGB в YUV или обратно проще всего использовать RGB888 и YUV444. Для YUV411, YUV422 и YUV420 байты сначала необходимо преобразовать в YUV444.

YUV444 3 байта на пиксель (12 байтов на 4 пикселя)YUV422 4 байта на 2 пикселя (8 байтов на 4 пикселя)YUV411 6 байтов на 4 пикселяYUV420p 6 байтов на 4 пикселя, переупорядоченный

Преобразование Y′UV444 в RGB888 [ править ]

Функция [R, G, B] = Y′UV444toRGB888 (Y ′, U, V) преобразует формат Y′UV в простой формат RGB.

Формулы преобразования RGB, используемые для формата Y'UV444, также применимы к стандартному формату передачи ТВ NTSC YUV420 (или YUV422, если на то пошло). Для YUV420, поскольку каждая выборка U или V используется для представления 4 выборок Y, которые образуют квадрат, правильный метод выборки может позволить использовать точные формулы преобразования, показанные ниже. Для получения дополнительных сведений см. Демонстрацию формата 4: 2: 0 в нижней части этой статьи.

Эти формулы основаны на стандарте NTSC:

В более старых архитектурах без SIMD арифметика с плавающей запятой выполняется намного медленнее, чем с использованием арифметики с фиксированной запятой, поэтому альтернативная формулировка: [14]

Для преобразования из Y'UV в RGB, используя коэффициенты С, D и Е, и учитывая , что обозначает зажимное значение в 8-битном диапазоне от 0 до 255, следующие формулы обеспечивают преобразование из RGB в Y'UV ( Версия NTSC):

Примечание: приведенные выше формулы фактически подразумеваются для YCbCr. Хотя здесь используется термин YUV, YUV и YCbCr в строгом смысле не одно и то же.

Версия формулы МСЭ-R отличается от , тогда как и выше:

Целочисленная операция стандарта ITU-R для YCbCr (8 бит на канал) в RGB888:

Преобразование Y′UV422 в RGB888 [ править ]

Ввод: прочитать 4 байта Y'UV (u, y1, v, y2)
Вывод: записывает 6 байтов RGB (R, G, B, R, G, B)
u = yuv [0];y1 = yuv [1];v = yuv [2];y2 = yuv [3];

Используя эту информацию, он может быть проанализирован как обычный формат Y'UV444, чтобы получить информацию о 2 пикселях RGB:

rgb1 = Y'UV444toRGB888 (y1, u, v);rgb2 = Y'UV444toRGB888 (y2, u, v);

Y'UV422 также может быть выражен значениями в альтернативном порядке, например, для кода формата FourCC YUY2.

Ввод: прочитать 4 байта Y'UV (y1, u, y2, v), (y1, y2, u, v) или (u, v, y1, y2)

Преобразование Y′UV411 в RGB888 [ править ]

Ввод: прочитать 6 байтов Y'UV
Вывод: записывает 12 байтов RGB.
// Извлекаем компоненты YUVu = yuv [0];y1 = yuv [1];y2 = yuv [2];v = yuv [3];y3 = yuv [4];y4 = yuv [5];
rgb1 = Y'UV444toRGB888 (y1, u, v);rgb2 = Y'UV444toRGB888 (y2, u, v);rgb3 = Y'UV444toRGB888 (y3, u, v);rgb4 = Y'UV444toRGB888 (y4, u, v);

Итак, в результате мы получаем 4 значения пикселей RGB (4 * 3 байта) из 6 байтов. Это означает уменьшение размера передаваемых данных вдвое с потерей качества.

Преобразование Y'UV420p (и Y'V12 или YV12) в RGB888 [ править ]

Y'UV420p - это планарный формат, означающий, что значения Y ', U и V сгруппированы вместе, а не перемежаются. Причина этого в том, что, группируя значения U и V вместе, изображение становится более сжимаемым. Когда дан массив изображения в формате Y'UV420p, сначала идут все значения Y ', затем все значения U, а затем, наконец, все значения V.

Формат Y'V12 по существу такой же, как Y'UV420p, но в нем переключаются данные U и V: за значениями Y 'следуют значения V, а значения U - последними. Если позаботиться о извлечении значений U и V из надлежащих мест, как Y'UV420p, так и Y'V12 могут обрабатываться с использованием одного и того же алгоритма.

Как и в большинстве форматов Y'UV, существует столько значений Y ', сколько пикселей. Где X равно высоте, умноженной на ширину, первые индексы X в массиве представляют собой значения Y ', соответствующие каждому отдельному пикселю. Однако значений U и V всего на четверть меньше. Значения U и V соответствуют каждому блоку 2 на 2 изображения, то есть каждая запись U и V применяется к четырем пикселям. После значений Y 'следующие индексы X / 4 - это значения U для каждого блока 2 на 2, а следующие за ними индексы X / 4 - это значения V, которые также применяются к каждому блоку 2 на 2.

Как показано на изображении выше, компоненты Y ', U и V в Y'UV420 кодируются отдельно в последовательных блоках. Значение AY 'сохраняется для каждого пикселя, за ним следует значение U для каждого квадратного блока пикселей 2 × 2 и, наконец, значение V для каждого блока 2 × 2. Соответствующие значения Y ', U и V показаны одним цветом на диаграмме выше. Считайте построчно как поток байтов от устройства, блок Y 'будет найден в позиции 0, блок U в позиции x × y (6 × 4 = 24 в этом примере) и блок V в позиции x × y + (x × y) / 4 (здесь 6 × 4 + (6 × 4) / 4 = 30).

Преобразование Y′UV420sp (NV21) в RGB (Android) [ править ]

Этот формат (NV21) является стандартным форматом изображения для предварительного просмотра камеры Android . Планарное изображение YUV 4: 2: 0 с 8-битными выборками Y, за которым следует чередующаяся плоскость V / U с 8-битными субдискретизированными выборками цветности 2x2. [15]

Код C ++, используемый на Android для преобразования пикселей YUVImage: [16]

void  YUVImage :: yuv2rgb ( uint8_t  yValue ,  uint8_t  uValue ,  uint8_t  vValue ,  uint8_t  * r ,  uint8_t  * g ,  uint8_t  * b )  const  {  int  rTmp  =  yValue  +  ( 1.370705  *  ( vValue ); -128 );  // или быстрое целочисленное вычисление с малым приближением  // rTmp = yValue + (351 * (vValue-128)) >> 8;  int  gTmp  =  yValue -  ( 0,698001  *  ( vValue -128 ))  -  ( 0,337633  *  ( uValue -128 ));  // gTmp = yValue - (179 * (vValue-128) + 86 * (uValue-128)) >> 8;  int  bTmp  =  yValue  +  ( 1,732446  *  ( uValue -128 ));  // bTmp = yValue + (443 * (uValue-128)) >> 8;  * r  =  зажим ( rTmp ,  0 ,  255 );  * g  =  зажим ( gTmp , 0 ,  255 );  * b  =  зажим ( bTmp ,  0 ,  255 ); }

Ссылки [ править ]

  1. ^ Инженерное руководство EG 28, «Аннотированный глоссарий основных терминов для электронного производства», SMPTE, 1993.
  2. ^ Пойнтон, Чарльз. «YUV и яркость считаются вредными: призыв к точной терминологии в видео» [1]
  3. ^ CIELUV
  4. ^ CIE 1960 цветовое пространство
  5. ^ Macadam, Дэвид Л. (1 августа 1937). «Проективные преобразования цветовых характеристик ICI» . Журнал Оптического общества Америки . 27 (8): 294–297. Bibcode : 1937JOSA ... 27..294M . DOI : 10.1364 / JOSA.27.000294 . Проверено 12 апреля 2014 года .
  6. ^ Маллер, Джо. Цвет RGB и YUV , справочник FXScript
  7. W. Wharton & D. Howorth, Принципы телевизионного приема , Pitman Publishing, 1971, стр. 161-163.
  8. ^ " " Super Hi-Vision "как телевидение следующего поколения и его параметры видео" . Информационный дисплей . Проверено 1 января 2013 года .
  9. Кейт Джек. Видео развенчано . ISBN 1-878707-09-4.
  10. ^ Ограничение цифровых видеосигналов YUV (публикация BBC) Авторы: В. Г. Деверо http://downloads.bbc.co.uk/rd/pubs/reports/1987-22.pdf
  11. ^ Пойнтон, Чарльз (19 июня 1999). «YUV и яркость считаются вредными» (PDF) . Проверено 18 ноября +2016 . Cite journal requires |journal= (help)
  12. ^ msdn.microsoft.com, Рекомендуемые 8-битные форматы YUV для рендеринга видео
  13. ^ msdn.microsoft.com, Подтипы видео YUV
  14. ^ https://msdn.microsoft.com/en-us/library/ms893078.aspx
  15. ^ fourcc.com Пиксельные формы YUV
  16. ^ https://android.googlesource.com/platform/frameworks/av/+/0e4e5a8/media/libstagefright/yuv/YUVImage.cpp

Внешние ссылки [ править ]

  • Преобразование пикселей RGB / Y'UV
  • Объяснение множества различных форматов в семействе Y'UV
  • Пойнтон, Чарльз. Видео инженерия
  • Colorlab MATLAB набор инструментов для вычисления науки о цвете и точной цветопередачи (от Хесуса Мало и Марии Хосе Луке, Университет Валенсии). Он включает в себя стандартную трехцветную колориметрию CIE и преобразования ряда нелинейных моделей внешнего вида цвета (CIE Lab, CIE CAM и т. Д.).
  • Кон, Майк. Y′UV422 в RGB с использованием SSE / Assembly
  • Цветовые пространства YUV, YCbCr, YPbPr
  • Цветовые форматы для обработки изображений и видео - преобразование цвета между RGB, YUV, YCbCr и YPbPr
  • либюв
  • pixfc-sse - C-библиотека для преобразования цветовых форматов, оптимизированных для SSE
  • Файлы YUV - образцы / демонстрационные видеофайлы YUV / RGB во многих форматах YUV, помогут вам в тестировании.