Библиотека
RGB to YCrCb Color-Space
Первоисточник: RGB to YCrCB Color-space Converter v2.0 Data Sheet [pdf]
Введение
RGB to YCrCb Color-Space Converter это - упрощенный 3x3 матричный множитель, преобразовывающий три входных канала цвета в три выходных канала цвета за один CLK цикл. Оптимизированная структура использует только четыре множителя или DSP48 - слайсы, используя зависимости между коэффициентами в конвертируемой матрице RGB к YCrCb или RGB к YUV стандартам. Ядро эффективно использует 18x18-битные множители, сумматоры и регистры, построенные на блоках DSP Virtex ™-5, Virtex-4 и Spartan ™-3A DSP устройств, или интегрированные 18x18-битные множители в Virtex-II, Virtex-II Pro и Spartan 3, приводящие к высокоэффективному и оптимальному использованию ресурсов.
Особенности
- Встроенная поддержка для:
- SD (ITU 601)
- HD (ITU 709) PAL
- HD (ITU 709) NTSC
- YUV
- Поддержка пользовательских матриц преобразования
- Эффективное использование блоков DSP
- До 16-бит на входе и выходе точности
- Поддержка трех сигналов синхронизации с задержкой
Применения
- Предварительная обработка блока датчиков изображения
- Сжатие изображений
- Видеонаблюдение
- Предварительная обработка блока видеоаналитики
Общее описание
Цветовое пространство -это математическое представление наборацветов. Три самые популярные модели цвета:
- RGB, используемая в компьютерной графике, или гамма-R'G'B ' исправления RGB
- YIQ, YUV и YCrCb используемых в системах видеорегистрации
- CMYK используется в цветной печати
Эти цветовые пространства имеют непосредственное отношение к интуитивному понятию
оттенка, насыщенности и яркости.
Все цветовые пространства могут быть получены из RGB поставляемых устройствами,
такими как цифровые камеры и сканеры.
Различные цветовые пространства, исторически развивались для различных приложений.
Каждое цветовое пространство вбиралось для конкретного применения.
Цветовое пространство RGB
Красный, зеленый и синий (RGB) цветовое пространство, широко используются в
компьютерной графике. Красный, зеленый и синий три основных аддитивных цвета: отдельные
компоненты добавляются вместе, чтобы сформировать требуемый цвет, и представлены в
трехмерные, прямоугольной системе координат, как показано на рисунке 1.
В таблице 1 показаны RGB значения для 100% насыщенных цветов.
Таблица 1 - RGB значения для 100% насыщенных цветов.
Цветовое пространство RGB является наиболее распространенным выбором для компьютерной графики, поскольку цветные дисплеи используют красный, зеленый и синий цвета для создания желаемого цвета.
RGB не очень эффективно, когда речь идет о реальных изображений. Все три компоненты должны иметь одинаковую пропускную способность чтобы генерировать произвольные цвета внутри цветового куба. Кроме того, обрабатывать изображение в пространстве RGB не очень удобно. Например, чтобы изменить интенсивность или цвет пикселя нужно чтобы все три RGB-значения были доступны на чтение, изменение и запись. Если изображение представлено в формате цветоразностной модели, то процесс происходит быстрее.
YCbCr (или YCrCb) цветовое пространство
YCbCr или YCrCb цветовое пространство было разработано в ходе развития всемирного цифрового стандарта видео компонента. YCbCr представляет собой упрощенную версию YUV цветового пространства. Y имеет диапазон от 16 до 235, Cb и Cr имеют номинальный диапазон от 16 до 240. Существует несколько стандартов YCbCr: 4:4:4, 4:2:2 и 4:2:0.
Преобразование уравнений
Вывод преобразования уравнений
Чтобы сгенерировать яркостный компонент (Y, или сервый уровень), были проведены биологические эксперименты чтобы измерить как человеческий глаз воспринимает интенсивность красного, зеленого и синего цветов. Основываясь на этих экспериментах, оптимальные значения коэффициентов СА и СВ были определены как :
Фактические значения для CA и CB могут немного отличаться в различных стандартах.
Преобразованные параметры из пространства RGB яркость и цветность выражаются следующим образом:
Коэффициенты СА и СВ выбраны между 0 и 1 и гарантирует, что диапазон Y расположен между
максимальным и минимальным разрешенными значениями RGB, RGBmax и RGBmin соответственно.
Минимальные и максимальные значения R-Y:
Таким образом, диапазон R-Y:
Точно так же минимальные и максимальные значения B-Y:
Таким образом, диапазон B-Y:
В большинстве практического выполнения диапазон Y и C должен быть равным. Есть два способа достигнуть этого: компоненты хроматических данных (B-Y и R-Y) могут быть нормализованы (сжатый), или значения выше и ниже диапазона светимости могут быть сокращены.
Сокращение и сжатие динамического диапазона приводит к потере информации. Чтобы усилить различия во входном (RGB) диапазоне, различные стандарты выбирают различные комбинации между сокращением и нормализацией.
Преобразование из RGB в YCrCb облегчает и сжатие диапазона и дополнительное сокращение, сжатие и расширение. Диапазон, сдвиг, сокращение и сжатие уровней являются параметризироваными. Ядро поддерживает преобразования, которые соответствуют следующей общей форме:
CC и CD позволяют динамическое сжатие даипазона для R-Y и B-Y, а константы OY и OC компенсируют результирующие Y, CB и CR компонент. Основываясь на Уравнении 3 и Уравнении 4, чтобы ограничить результирующие компоненты хроматических данных (CB и CR) в [0 1] диапазон, цветовое смещение (OC), и константы сжатия цветового диапазона (CC и CD) должны быть отобраны следующим образом (OC=0.5):
Когда значения RGB находятся также в этом [0.1] диапазоне, использование следующих уравнений позволяет избежать арифметического переполнения (OC=0.5).
Преобразование RGB в YCrCb (Уравнение 5) может быть выражено как:
Эти уравнения могут быть непосредственно аппаратно реализованы, как показано на рисунке 2. Синие блоки на рисунке 2 представляют собой логические блоки, которые всегда реализуются на DSP-блоках, если DSP-блоки доступны в целевом устройстве.
Ядро генератора - Графический Пользовательский Интерфе
Первая страница генератора позволяет выполнить быстрое стандартное преобразование из RGB to YCrCb или RGB to YUV, не требуя необходимости вручную вводить значения из Таблиц 2, 3, и 4. Color- Space Converter также поддерживает нестандартную реализацию конвертера. Это сделано, с помощью функции "выборочный" из меню выбора, пока произвольная конвертируемая матрица может быть преобразована к форме Уравнения 5. Первую страницу GUI показывают в рисунке 3.
Первая страница GUI показывает следующие варианты:
- Component Name: название компонента используется в качестве базового имени выходных файлов, сгенерированных для модуля. Имена должны начаться с букв и должны быть составлены из символов от а до z, от 0 до 9 и “_”.
- Standard Selection: Выберите стандарт, который будет выполнен. Предлагаемые стандарты:
- YCrCb ITU 601 (SD)
- YCrCb ITU 709 (HD) 1125/60 (PAL)
- YCrCb ITU 709 (HD) 1250/50 (NTSC)
- YUV
- выборочный
Пункт "выборочный" включает средства управления на странице 2 и 3 GUI, таким образом, могут быть настроены конверсионные параметры. Иначе, страницы 2 и 3 будут только показывают параметры, которые будут использоваться, чтобы выполнить выбранный стандарт.
- Output Range Selection: Этот выбор управляет диапазоном выхода Y, Cr, и Cb, затрагивая
конверсионные коэффициенты так же как сокращение и сжатие значений. Ядро поддерживает
следующие типичные диапазоны продукции:
- 16 - 235, типичный для оборудования студии
- 16 - 240, типичный для радиопередачи или телевидения
- от 0 до 255, типичный для компьютерной графики
Обрезание выходных данных и сжатие значений являются одинаковыми для каналов цвета и яркости. Чтобы установить асимметричное значение, например от 16 до 235 для Cr и Cb и 16 - 240 для Y, выберите "выборочная" для стандарта, тогда вручную изменяют обрезание и сжатие значений на странице 3.
Вышеупомянутые диапазоны характерны для 8-битовых выходов. Если используются 10-или 16- битовые выходы, то диапазоны расширяются пропорционально. Например, 16 - 240 режим для 10- битовых выходов приведет к значениям выходов в пределах от 64 - 960.
- Input Width(IWIDTH): определяет ширину входов R, G и B.
- Output Width (OWIDTH): определяет ширину выходовY, Cr и Cb.
Страница 2 GUI, показанного в рисунке 4, показывает и позволяет редактирование конверсионных коэффициентов, подобных Уравнению 9, Уравнение 10, и Уравнение 11. Содержание модифицируемо только, когда пункт "выборочный" отмечен как стандарт на странице 1.
- Conversion Matrix: Войдите в конверсионные константы с плавающей запятой, в пределах от от 0 до 1 в четыре области, представляющие CB, CC, и CD.
- Offset Compensation: Введите константы компенсации смещения (YOFFSET и COFFSET в Уравнении 9). Эти константы масштабируются к выходному представлению. Если OY и OC находятся в диапазоне 0.0 - 1.0 , и вывод представлен как 10-разрядные целые без знака, то яркость и смещения цветности должны быть введены как целые числа в этих 0-1023 диапазонах.. Рисунок 5 показывает страницу 3 GUI.
Страница 3 GUI позволяет устанавливать отсечение и фиксацию значений. Содержание доступно для редактирования, только когда "пользовательский" выбран как стандарт на странице 1.
- Outputs Clipped/Outputs Clamped: Этот флажки контролируют, будет ли отсечение или фиксация логики иллюстрироваться примерами в произведенном списке соединений. Логика отсечения/фиксации гарантирует, что никаких арифметических ошибок не происходят за счет дополнительных логических ресурсов.
- Minimum and Maximum Values:
Подобный величинам смещения, окна редактирования принимают значения целого без знака в амплитуде, разрешенной представлением токового выхода. Рисунок 6 показывает страницу 4 GUI.
Страница 4 GUI позволяет устанавливать длину слова для битов множителя и коэффициентов. Страница также показывает оценку ресурсов для ядра, которое будет произведено с выбранными параметрами.
- Coefficient Bits: Определяет количество битов, используемых, чтобы представить коэффициенты СА, CB, CC и CD. Как показано в рисунке 2, ширина коэффициентов затрагивает ширину результатов множителя, которые могут затронуть размер сумматоров. Сокращение размера коэффициента может сохранить некоторые слайсы, балансируя между точностью и логическими ресурсами.
- Multiplier Input Bits: Позволяет пользователю управлять шириной операндов (MWIDTH) для CC и множителей CD (рисунок 2). Подобно настройке ширины коэффициента, этот продвинутый контроль позволяет балансировать между точностью и логическим количеством ресурса.
Распиновка
CLK - Часы
Это – основной синхросигнал для всех регистров, SRL16/SRL32s и DSP-блоков.
SCLR- Synchronous Clear
Высокий уровень SCLR сбрасыает все выходы в ноль. Кроме того, внутренние регистры в пределах блока DSP и D-триггеров очищаются. Однако, ядро использует основанные на SRL16/SRL32 линии задержки для генерации сигналов синхронизации SYNC и PIX_EN, которые не очищаются SCLR. Это может привести к ненулевым значениям на выходах после того как сигнал SCLR сброшен, пока содержание SRL16/SRL32s не стирается. Нежелательных результатов можно избежать, если SCLR считается активным, пока SRL16/SRL32s не стираются.
CE – Clock Enable
Низкий уровень CE приостанавливает все операции в пределах ядра. Выходы удерживаются, и никакие входные сигналы не обрабатываются, за исключением сброса (SCLR имеет приоритет над CE).
R, G, B Inputs
Красные, зеленые и синие входы - шириной IWIDTH (UINT format).
Y, Cr, Cb Outputs
Для яркости и цветности, данные представлены в UINT (IWIDTH bus) формате.
H_SYNC_in, H_SYNC_in, Входы PIX_EN_in
Много видео систем требуют синхронизирующих сигналов наряду с видео потоками. Синхронизация и справедливые/позволенные сигналы могут отличить интервалы гашения / активные интервалы. Три основных видео сигнала синхронизации потока предоставляются и задерживаются ядром, таким образом, сигналы синхронизации находятся в фазе с Y, Cr, и Cb выходами. Синхронизация и включает входы, не затрагивая RGB to YCrCb конвертацию. Сбрасывание их не остановило бы обработку R, G, B потоков.
H_SYNC_out, H_SYNC_out, PIX_EN_out Outputs
Соответствующие входные сигналы приходят с задержкой, поэтому синхронизация и разрешенные выходные сигналы находятся в фазе с выходами Y, Cr и Cb, сохраняя целостность видео-потока. Сигналы синхронизации не влияют на процесс преобразования. Выводы синхронизации соединяются с соответствующими вводами через линии задержки, соответствующие задержку канала обработки RGB. Распространение синхронизации является удобным свойством для более легкой интеграции Color-Space Converter на практике с трема синхро -входами. Нежелательные входы должны иметь высокий уровень на входе, а соответствующие им выходы должны остаться не подключенными, в результате отсечетса неиспользуемая логика.
Анализ ошибок
Следующий анализ, основанный на основных принципах DSP, представляет среднеквадратическую ошибку (MSE) вычисления для преобразования из RGB в YCrCb, предполагая, что IWIDTH - размер входных данных на входах RGB, OWIDTH - размер выходных данных на выходах YCrCb, и биты CWIDTH для коэффициентов точности.
Принимая округление/квантизацию во внимание, структура, иллюстрированная на рисунке 2, осуществляет следующие уравнения:
где [ ]k обозначает округление до k битов. Архитектура содержит три возможных оператора, которые могли бы представить шум. Шум квантизации появляется при округлении данных.
- Данные округлены до бит MWIDTH-2 после вычисления Yraw,
- Данные округлены до бит OWIDTH на выходе.
- Если коефициенты CCOEF and DCOEF выбраны так что Cb and Cr могут превышать или быть меньше, шум отсечения появляется в общем потоке сигнала.
Прежде, чем проанализировать эффекты от шумовых источников, сначала рассмотрим входной Сигнал в Отношение Шума Квантизации (SQNR). Принятие однородно распределенной ошибки квантизации,
Первый округляющийся шумовой источник может быть фактически устранен аккуратным выбором MWIDTH. Приближая SQNR 6.02 MWIDTH [dB], интуитивно округляющийся шум может быть уменьшен, увеличивая MWIDTH. Тем не менее, MWIDTH влияет на использование ресурсов и отвечает за длину цепочки в разработке (тем самым, затрагивая максимальной скорости). Выбор MWIDTH> 18 значительно увеличил бы количество используемых множителей в проекте.
Таким образом, оптимальные значения MWIDTH в диапазоне от IWIDTH +4 до 18, не значительно увеличит объем ресурсов, но гарантирует, что шум квантования будет незначительным (по крайней мере на 20 дБ меньше, чем входной шум).
Шум Квантизации продукции
Коэффициенты СС и СD в уравнении 3 позволяют разработчикам искать компромисс квантования выходов и шума при отсечении. Фактически наличие шума зависит от вероятности статистики Cb и Cr переменных, но в целом, если СС и CD больше, чем максимальное значения, рассчитанные из уравнения 4 и 5 уравнения, выходные значения могут урезаться, представляя отсечения шума. Тем не менее, чем ниже выбраны значения СС и CD, тем хуже Cb и Cr значения будут использовать имеющиеся динамический диапазон, таким образом, внедряя больше шумов квантования. Таким образом, задача разработчика состоит в уравнении мощности квантования и отсечения шума, тщательно выбрав СС и CD зная значения Cb и Cr. Например, когда вероятность экстремальных значений цветности очень маленькое, может быть полезно увеличить значения СС и CD, так как дополнительный шум появившийся в результате случайного отсеченя меньше, чем прирост средней мощности сигнала (и, следовательно, SQNR).
Хотя количественный анализ шума графа потока сигналов, построенных на рисунке 2, возможен путем замены квантователей с соответствующими источниками AWGN, сложность при выводе формулы окончательного шума в котором рассматриваются отсечения шума, выходит за рамки этого документа. Вместо этого, Таблица 6 иллюстрирует значение шума для некоторых типичных (см. таблицу 2 на стр. 5) комбинации параметров.
Выходные Помехи Отсечения
Если коэффициенты СС и CD в уравнении 3 больше, чем максимальное значения, рассчитанные в уравнениях 4 и 5, выходные значения Cr и Cb могут стать больше (переполнение), чем максимум или меньше, чем может быть минимальное выходное значение. Если происходит переполнение HAS_CLIPPING = 0, появляются вокруг двоичные значения и существенный шум на выходе. Если HAS_CLIPPING = 1, выход значений насыщения, представляя меньше шума(рис.8).
Точно так же зажимающая логика включена в дизайн если HAS_CLAMPING=1. Использование обрыва и зажима увеличивает количество частей в проекте приблизительно в 6OWIDTH части.
Выходная Синхронизация
Задержка распространения сигнала от RGB к основным YCrCb зависит от параметризации, но не зависит от фактического значения сигналов (R, G, B h_sync_in, v_sync_in, pix_en_in) . Сбрасывая, CE приостанавливает обработку, которая может быть полезной, чтобы соответствовать задержке других компонентов обработки. Время ожидания ядра показывают в следующем кодексе:
Этот код вычисляется CLK 11 циклов для типичных случаев (если не в "пользовательском" режим отсечения и / или зажимной схемы ).
Основное Использование Ресурса
Для точной меры использования примитивов, слайсов и CLB для определенного экземпляра проверяют флажок Display Core Viewer после Generation чек бокса в генераторе ядра. Таблица 7 показывает количество триггеров и слайсов для параметров по умолчанию для разных семейств. Блоков DSP48 всегда 4. Ядро конвертера не использует блоков RAM, предназначенных IO и средств CLK.
Таблицы 8,9,10 ,11 представляют ресурсы логических структур для ядра конвертера для всех входов- выходов различных семейств и стандартов.
Тест
Проект был протестирован с использованием стандарта ISE 9.2i (J.36) с опциями по умолчанию.