Гамма-коррекция

Поддержка HDL оказывается для Гамма-коррекции в Vision HDL Toolbox™. Этот пример демонстрирует функциональность блока Gamma Corrector пиксельного потока и сравнивает результаты со сгенерированными блоками полного кадра от Системы Компьютерного зрения Toolbox™.

Структура примера

Модели продукта Computer Vision System Toolbox на высоком уровне абстракции. Блоки и объекты выполняют обработку полного кадра, работающую с одним фреймом изображения за один раз. Однако FPGA или системы ASIC выполняют обработку пиксельного потока, работающую с одним пикселем изображения за один раз. Этот пример моделирует полный кадр и передающие потоком пиксель алгоритмы в той же модели.

hdlcoder_gamma.slx систему показывают ниже.

Различие в цвете строк, питающих Гамма Гамма подсистемы Компенсации Компенсации и Пиксельного Потока Полного Кадра, указывает на изменение в уровне изображений на ответвлении потоковой передачи модели. Этот переход уровня состоит в том, потому что пиксельный поток отослан за то же количество времени как полные кадры видео, и поэтому это передается на более высоком уровне.

В этом примере Гамма-коррекция используется, чтобы исправить темные изображения. Более темные изображения сгенерированы путем питания Источника видеосигнала блок Corruption. Video Source выходные параметры полутоновое видео на 240 пунктов и блок Corruption применяет De-гамма операцию, чтобы сделать исходное видео перцепционно более темным. Затем нисходящий блок Full-Frame Gamma Compensation или Гамма подсистема Компенсации Пиксельного Потока удаляют предыдущую De-гамма операцию из поврежденного видео, чтобы восстановить исходное видео.

Один кадр исходного видео, его поврежденной версии, и восстановленной версии, показывают слева направо в схеме ниже.

Это - хорошая практика, чтобы разработать поведенческие системные блоки использования, которые обрабатывают кадры полного образа, блок Full-Frame Gamma Compensation в этом примере, перед продвижением к тому, чтобы работать над предназначающимся для FPGA проектом. Такая поведенческая модель помогает проверить проект обработки видеоданных. Позже, это может служить ссылкой для проверки реализации алгоритма, предназначенного к FPGA. А именно, ниже PSNR (пиковое отношение сигнал-шум) блок в разделе Result Verification в верхнем уровне модели сравнивает результаты обработки полного кадра с теми от обработки пиксельного потока.

Кадр к пикселям: генерация пиксельного потока

Задача Кадра К Пикселям состоит в том, чтобы преобразовать изображение полного кадра в пиксельный поток. Чтобы моделировать эффект горизонтальных и вертикальных времен гашения обратного хода, найденных в реальных аппаратных системах видео, активное изображение увеличивается с неданными изображения. Для получения дополнительной информации о пиксельном протоколе потоковой передачи щелкнуть здесь. Блок Frame To Pixels сконфигурирован как показано:

Номер поля компонентов определяется к 1 для входа полутонового изображения, и поле Формата видео составляет 240 пунктов, чтобы совпадать с тем из источника видеосигнала.

В этом примере Активная Видео область соответствует 240x320 матрица темного изображения от восходящего блока Corruption. Шесть других параметров, а именно, Общие пиксели на строку, Общие видео строки, Запуская активную строку, Заканчивая активную строку, Передний подъезд и Заднее крыльцо задают, сколько неданных изображения будет увеличено на четырех сторонах Активного Видео. Для получения дополнительной информации смотрите страницу с описанием блока Frame To Pixels.

Обратите внимание на то, что шаг расчета Источника видеосигнала определяется продуктом Общих пикселей на строку и Общих видео строк.

Гамма-коррекция

Как показано в схеме ниже, Гамма подсистема Компенсации Пиксельного Потока содержит только блок Gamma Corrector.

Блок Gamma Corrector принимает пиксельный поток, а также шину, содержащую пять сигналов синхронизации, от блока Frame To Pixels. Это передает тот же набор сигналов к нисходящему блоку Pixels To Frame. Такой пакет сигнала и обслуживание необходимы для обработки пиксельного потока.

Пиксели, чтобы структурировать: преобразование пиксельного потока Назад к полному кадру

Как компаньон, чтобы Структурировать К Пикселям, который преобразовывает кадр полного образа в пиксельный поток, блок Pixels To Frame, противоположно, преобразовывает пиксельный поток назад в полный кадр путем использования сигналов синхронизации. Поскольку вывод блока Pixels To Frame является 2D матрицей полного образа, нет никакой потребности далее продолжить шину, содержащую пять сигналов синхронизации.

Номер поля компонентов и полей Формата видео и Кадра К Пикселям и Пикселей, Чтобы Структурировать определяется в 1 и 240 пунктах, соответственно, чтобы совпадать с форматом источника видеосигнала.

Image Viewer и верификация результата

Когда вы запустите симуляцию, три изображения будут отображены (отошлите к изображениям, показанным в "Структуре Примера" Раздел):

  • Исходное изображение дано подсистемой Источника изображения

  • Темное изображение производится блоком Corruption

  • HDL вывод сгенерирован гамма подсистемой Компенсации Пиксельного Потока

Присутствие четырех блоков Единичной задержки на верхнем уровне модели ко времени - выравнивают 2D матрицы для справедливого сравнения.

При создании фрагмента потоковой передачи проекта PSNR блочно-непрерывно проверяет, что результаты HDLOut против исходного полного кадра разрабатывают BehavioralOut. В ходе симуляции этот блок PSNR должен дать inf вывод, указав, что выходное изображение от Гамма Компенсации Полного Кадра совпадает с изображением, сгенерированным от потока, обрабатывающего модель Pixel-Stream Gamma Compensation.

Исследование примера

Пример позволяет вам экспериментировать с различными Гамма значениями, чтобы исследовать их эффект на Гамма и De-гамма операцию. А именно, переменная рабочей области с начальным значением 2.2 создается после открытия модели. Можно изменить его значение с помощью командной строки MATLAB можно следующим образом:

gammaValue=4

Обновленный будет распространен к полю Gamma блока Corruption, блока Full-Frame Gamma Compensation и блока Gamma Corrector в Гамма подсистеме Компенсации Пиксельного Потока. Закрытие модели очищается из вашей рабочей области.

Несмотря на то, что операция Gamma является концептуально инверсией De-гаммы, питание изображения к Гамме, сопровождаемой De-гаммой (или De-гаммой сначала затем Гамма), не обязательно отлично восстанавливает оригинальное изображение. Искажения ожидаются. Чтобы измерить это, в нашем примере, другой блок PSNR помещается между SourceImage и BehavioralOut. Чем выше PSNR, тем меньше искажения было введено. Идеально, если HDL вывод и исходное изображение идентичен, PSNR выходные параметры inf. В нашем примере это происходит только, когда равняется 1 (т.е. и Гамма и De-гамма блоки передают исходное изображение через).

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

Сгенерируйте HDL-код и Проверьте его Поведение

Чтобы сгенерировать HDL-код, используйте следующую команду:

makehdl('hdlcoder_gamma/Pixel-Stream Gamma Compensation')

Чтобы вывести RAM, чтобы реализовать интерполяционную таблицу, используемую в Гамма Корректоре, свойство LUTRegisterResetType не установлено ни в один. Чтобы получить доступ к этому свойству, щелкните правой кнопкой мыши по блоку Gamma Corrector в Гамма Компенсации Пиксельного Потока и перейдите к HDL Coder-> HDL Block Properties...

Чтобы сгенерировать испытательный стенд, используйте следующую команду:

makehdltb('hdlcoder_gamma/Pixel-Stream Gamma Compensation')