В этом примере показано, как обнаруживать и подсвечивать края объектов в видеопотоке. Поведение пиксельного блока Sobel Edge Detector, выравнивания видеопотока и наложения проверяется путем сравнения результатов с тем же алгоритмом, вычисленным блоками полных кадров из Toolbox™ компьютерного зрения.
В этом примере модели представлен аппаратно совместимый алгоритм. Вы можете осуществить этот алгоритм на правлении, использующем справочный дизайн Xilinx™ Zynq™. См. раздел Разработка алгоритмов видения для аппаратных средств на основе Zynq (пакет поддержки панели инструментов Vision HDL для аппаратных средств на основе Xilinx Zynq).
Ниже показана система EdgeDetenseAndOverlayHDL.slx.

Разница в цвете линий, питающих подсистемы Full-Frame Behavioral Model и Pixel-Stream HDL Model, указывает на изменение скорости изображения в потоковой ветви модели. Этот переход скорости происходит потому, что поток пикселей отправляется в то же самое время, что и полные видеокадры, и поэтому он передается с более высокой скоростью.
На следующей схеме показана структура подсистемы Full-Frame Behavioral Model, в которой используется блок обнаружения краев на основе кадра.

Учитывая, что блок обнаружения края на основе кадра не вводит задержку, наложение изображения выполняется путем взвешивания исходного изображения и выходного изображения обнаружения края и добавления их вместе простым способом.
Один кадр исходного видео, результат обнаружения края и наложенное изображение показаны слева направо на диаграмме ниже.

Рекомендуется разработать поведенческую систему с использованием блоков, обрабатывающих полные кадры изображения, подсистему Full-Frame Behavioral Model в этом примере, прежде чем переходить к работе над конструкцией FPGA-таргетинга. Такая поведенческая модель помогает проверить дизайн обработки видео. Позднее он может служить справочником для проверки реализации алгоритма, направленного на FPGA. В частности, блок PSNR (пиковое отношение сигнал/шум) на верхнем уровне модели сравнивает результаты обработки полного кадра с результатами обработки потока пикселей.
Задача Frame To Pixels состоит в преобразовании полного изображения кадра в поток пикселей. Для моделирования эффекта периодов горизонтального и вертикального гашения, обнаруженных в реальных аппаратных видеосистемах, активное изображение дополняется данными, не являющимися данными изображения. Дополнительные сведения о потоковом пиксельном протоколе см. в разделе Потоковый пиксельный интерфейс. Блок Frame To Pixels настроен так, как показано на рисунке:
![]()
Для ввода изображения в градациях серого в поле Number of components установлено значение 1, а в поле Video format установлено значение 240p, соответствующее значению источника видео.
В этом примере область Active Video соответствует матрице 240x320 темного изображения из блока Коррупция в восходящем направлении. Шесть других параметров, а именно «Общее количество пикселей на строку», «Общее количество видеопостроек», «Начальная активная линия», «Конечная активная линия», «Передняя часть» и «Задняя часть», указывают, сколько данных, не относящихся к изображениям, будет увеличено на четырех сторонах активного видео. Дополнительные сведения см. на странице ссылок блока «От кадра до пикселов».
Обратите внимание, что время выборки источника видео определяется произведением суммарных пикселей на строку и суммарных строк видео.
Подсистема Pixel-Stream HDL Model показана на диаграмме ниже. Из этой подсистемы можно создать код HDL.

Из-за характера обработки пиксельного потока, в отличие от блока обнаружения краев в модели поведения с полным кадром, блок обнаружения краев из Toolbox™ Vision HDL будет вводить задержку. Задержка предотвращает прямое взвешивание и добавление двух изображений для получения наложенного изображения. Для решения этой проблемы используется блок выравнивания пиксельного потока, чтобы синхронизировать два пиксельных потока перед суммой.
Чтобы правильно использовать этот блок, refPixel и refCtrl должны быть подключены к пикселю и управляющей шине, которые связаны с отложенным потоком пикселей. В нашем примере из-за задержки, введенной краевым детектором, поток пикселей, выходящий из краевого детектора, задерживается относительно потока, подаваемого в него. Следовательно, восходящий источник refPixel и refCtrl являются выходными данными Edge и Ctrl детектора кромок.
В качестве компаньона к кадру к пикселям, который преобразует полный кадр изображения в поток пикселей, блок пикселов к кадру преобразует поток пикселей обратно в полный кадр, используя сигналы синхронизации. Поскольку выходной сигнал блока Pixels To Frame является 2-D матрицей полного изображения, нет необходимости дополнительно переносить по шине, содержащей пять сигналов синхронизации.
Поле «Количество компонентов» и поля «Формат видео» обоих полей «От кадра до пикселей» и «От пикселей до кадра» установлены в 1 и 240p соответственно для соответствия формату источника видео.
При построении потоковой части конструкции блок PSNR непрерывно проверяет результаты по сравнению с первоначальной конструкцией с полным кадром. Блок Задержка на верхнем уровне модели времени выравнивает матрицы 2-D для справедливого сравнения. В ходе моделирования блок PSNR должен выдавать выходные данные inf, указывающие на то, что выходное изображение из модели поведения полного кадра соответствует изображению, сформированному из модели HDL обработки потока Pixel-Stream.
В примере можно поэкспериментировать с различными пороговыми и альфа-значениями, чтобы проверить их влияние на качество наложенных изображений. В частности,
при открытии модели создаются две переменные рабочей области с начальными значениями 7 и 0,8 соответственно. Изменить их значения можно с помощью командной строки MATLAB следующим образом:
thresholdValue=8 alpha=0.5
Обновленные
данные будут распространены в поле «Порог» блока обнаружения границ внутри модели поведения полных кадров и блока обнаружения кромок внутри модели HDL/обнаружения кромок Pixel-Stream.
Значение будет распространено на Gain1 блок в полнокадровой поведенческой модели и Pixel-Stream HDL Model/Image Overlay, а значение
перейдет к Gain2 блокам. При закрытии модели обе переменные удаляются из рабочей области.
В этом примере допустимый диапазон
от 0 до 256 включительно. Установка значения
, равного или превышающего 257, запускает сообщение о переполнении параметра для порога. Чем выше установлено значение,
тем меньшее количество ребер будет найдено в видео.
Допустимый диапазон
от 0 до 1 включительно. Он определяет веса для выходного изображения обнаружения кромок и исходного исходного изображения перед их добавлением. Операция наложения представляет собой линейную интерполяцию по следующей формуле.
overlaid image = alpha*source image + (1-alpha)*edge image.
Следовательно, когда
наложенное изображение является выводом обнаружения кромки, и когда
оно становится исходным изображением.
Для проверки и генерации кода HDL, на который ссылается этот пример, необходимо иметь лицензию HDL Coder™.
Для создания кода HDL используется следующая команда:
makehdl('EdgeDetectionAndOverlayHDL/Pixel-Stream HDL Model');
Для создания тестового стенда используйте следующую команду:
makehdltb('EdgeDetectionAndOverlayHDL/Pixel-Stream HDL Model');