Этот пример показывает, как смоделировать передающую потоком пиксель гамма-коррекцию для аппаратных проектов. Модель сравнивает результаты блока Vision HDL Toolbox™ Gamma Corrector с результатами, сгенерированными блоком Gamma полного кадра от Системы Компьютерного зрения Toolbox™.
Эта модель в качестве примера предоставляет аппаратно-совместимый алгоритм. Можно реализовать этот алгоритм на плате с помощью исходного проекта Xilinx™ Zynq™. Смотрите Гамма-коррекцию с Находящимся в Zynq Оборудованием (Пакет Поддержки Computer Vision Toolbox для Xilinx Находящееся в Zynq Оборудование).
Модели продукта Computer Vision System Toolbox на высоком уровне абстракции. Блоки и объекты выполняют обработку полного кадра, работающую с одним фреймом изображения за один раз. Однако FPGA или системы ASIC выполняют обработку пиксельного потока, работающую с одним пикселем изображения за один раз. Этот пример моделирует полный кадр и передающие потоком пиксель алгоритмы в той же модели.
Систему GammaCorrectionHDL.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 пунктах, соответственно, чтобы совпадать с форматом источника видеосигнала.
Когда вы запустите симуляцию, три изображения будут отображены (отошлите к изображениям, показанным в "Структуре Примера" Раздел):
Исходное изображение дано подсистемой Источника изображения
Темное изображение производится блоком 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 Coder™.
Чтобы сгенерировать HDL-код, используйте следующую команду:
makehdl('GammaCorrectionHDL/Pixel-Stream Gamma Compensation')
Чтобы вывести RAM, чтобы реализовать интерполяционную таблицу, используемую в Гамма Корректоре, свойство LUTRegisterResetType не установлено ни в один. Чтобы получить доступ к этому свойству, щелкните правой кнопкой мыши по блоку Gamma Corrector в Гамма Компенсации Пиксельного Потока и перейдите к HDL Coder-> HDL Block Properties...
Чтобы сгенерировать испытательный стенд, используйте следующую команду:
makehdltb('GammaCorrectionHDL/Pixel-Stream Gamma Compensation')