Этот пример демонстрирует, как обнаружить и подсветить края объекта в видеопотоке. Функциональность пиксельного потока Детектор Ребра Sobel и Видео блоки Выравнивания проверяется путем сравнения результатов со сгенерированными блоками полного кадра от Системы Компьютерного зрения Toolbox™.
hdlcoder_sobel.slx систему показывают ниже.
Различие в цвете строк, питающих Подсистемы модели HDL Поведенческой модели и Пиксельного Потока Полного Кадра, указывает на изменение в уровне изображений на ответвлении потоковой передачи модели. Этот переход уровня состоит в том, потому что пиксельный поток отослан за то же количество времени как полные кадры видео, и поэтому это передается на более высоком уровне.
Следующая схема показывает структуру подсистемы Поведенческой модели Полного Кадра, которая использует основанный на кадре блок Edge Detection.
Учитывая, что основанный на кадре блок Edge Detection не вводит задержку, наложение изображений выполняется путем взвешивания исходного изображения и выходного изображения Обнаружения Ребра, и добавления их вместе прямым способом.
Один кадр исходного видео, результата обнаружения ребра и наложенного изображения показывают слева направо в схеме ниже.
Это - хорошая практика, чтобы разработать поведенческие системные блоки использования, которые обрабатывают кадры полного образа, подсистему Поведенческой модели Полного Кадра в этом примере, перед продвижением к тому, чтобы работать над предназначающимся для FPGA проектом. Такая поведенческая модель помогает проверить проект обработки видеоданных. Позже, это может служить ссылкой для проверки реализации алгоритма, предназначенного к FPGA. А именно, PSNR (пиковое отношение сигнал-шум) блок в верхнем уровне модели сравнивает результаты обработки полного кадра с теми от обработки пиксельного потока.
Задача Кадра К Пикселям состоит в том, чтобы преобразовать полное изображение кадра в пиксельный поток. Чтобы моделировать эффект горизонтальных и вертикальных времен гашения обратного хода, найденных в реальных аппаратных системах видео, активное изображение увеличивается с неданными изображения. Для получения дополнительной информации о пиксельном протоколе потоковой передачи щелкнуть здесь. Блок Frame To Pixels сконфигурирован как показано:
Номер поля компонентов определяется к 1 для входа полутонового изображения, и поле Формата видео составляет 240 пунктов, чтобы совпадать с тем из источника видеосигнала.
В этом примере Активная Видео область соответствует 240x320 матрица темного изображения от восходящего блока Corruption. Шесть других параметров, а именно, Общие пиксели на строку, Общие видео строки, Запуская активную строку, Заканчивая активную строку, Передний подъезд и Заднее крыльцо задают, сколько неданных изображения будет увеличено на четырех сторонах Активного Видео. Для получения дополнительной информации смотрите страницу с описанием блока Frame To Pixels.
Обратите внимание на то, что шаг расчета Источника видеосигнала определяется продуктом Общих пикселей на строку и Общих видео строк.
Подсистему модели HDL Пиксельного Потока показывают в схеме ниже. Можно сгенерировать HDL-код от этой подсистемы.
Из-за природы обработки пиксельного потока, в отличие от блока Edge Detection в Поведенческой модели Полного Кадра, блок Edge Detector от Vision HDL Toolbox™ введет задержку. Задержка предотвращает нас от прямого взвешивания и добавления двух изображений, чтобы получить наложенное изображение. Чтобы решить эту проблему, Выровнять Видео подсистема используется, чтобы синхронизировать потоки на два пикселя перед суммой.
Структуру Выровнять Видео подсистемы показывают ниже.
Чтобы правильно использовать эту подсистему, pixelInDelayed и ctrlInDelayed должен быть соединен с пикселем и шиной управления, которые сопоставлены с задержанным пиксельным потоком. В нашем примере, из-за задержки, введенной Детектором Ребра, пиксельный поток, выходящий из Детектора Ребра, задерживается относительно того питания в него. Поэтому восходящим источником pixelInDelayed и ctrlInDelayed является Ребро и ctrl вывод Детектора Ребра.
Основная идея выровнять пиксельные потоки состоит в том, чтобы продвинуть в FIFO допустимые пиксели, которые прибывают ранее, и соответственно выталкивают отдельный пиксель от этого FIFO на основе допустимого сигнала задержанного пиксельного потока. Обратитесь к hdlcoder_sobelimpaired.slx системе для обработки детали как, как эта модель реализована.
Как компаньон, чтобы Структурировать К Пикселям, который преобразовывает кадр полного образа в пиксельный поток, блок Pixels To Frame, противоположно, преобразовывает пиксельный поток назад в полный кадр путем использования сигналов синхронизации. Поскольку вывод блока Pixels To Frame является 2D матрицей полного образа, нет никакой потребности далее продолжить шину, содержащую пять сигналов синхронизации.
Номер поля компонентов и полей Формата видео и Кадра К Пикселям и Пикселей, Чтобы Структурировать определяется в 1 и 240 пунктах, соответственно, чтобы совпадать с форматом источника видеосигнала.
При создании фрагмента потоковой передачи проекта PSNR блочно-непрерывно проверяет результаты по исходному проекту полного кадра. Блок Delay на верхнем уровне образцового времени - выравнивает 2D матрицы для справедливого сравнения. В ходе симуляции блок PSNR должен дать inf вывод, указав, что выходное изображение от Поведенческой модели Полного Кадра совпадает с изображением, сгенерированным от потока, обрабатывающего Модель HDL Пиксельного Потока.
Пример позволяет вам экспериментировать с различным порогом и альфа-значениями, чтобы исследовать их эффект на качество наложенных изображений. А именно, две переменные рабочей области и с начальными значениями 7 и 0.8, соответственно, создаются после открытия модели. Можно изменить их значения с помощью командной строки MATLAB можно следующим образом:
thresholdValue=8 alpha=0.5
Обновленный будет распространен к полю Threshold блока Edge Detection в Поведенческой модели Полного Кадра и блока Edge Detector в Обнаружении Модели/Ребра HDL Пиксельного Потока. Значение будет распространено к блоку Gain1 в Наложении Модели/Изображения HDL Поведенческой модели и Пиксельного Потока Полного Кадра и значению движений к блокам Gain2. Закрытие модели очищает обе переменные из вашей рабочей области.
В этом примере допустимая область значений - между 0 и 256, включительно. При установке равный или больше, чем 257 триггеров переполнение Параметра сообщения произошло для 'порога'. Чем выше вы устанавливаете, тем меньшим сумма ребер пример находит в видео.
Допустимая область значений - между 0 и 1, включительно. Это определяет веса для выходного изображения обнаружения ребра и изображения первоисточника прежде, чем добавить их. Операция наложения является линейной интерполяцией согласно следующей формуле.
overlaid image = alpha*source image + (1-alpha)*edge image.
Поэтому, когда, наложенное изображение является обнаружением ребра вывод, и когда это становится исходным изображением.
Чтобы сгенерировать HDL-код, используйте следующую команду:
makehdl('hdlcoder_sobel/Pixel-Stream HDL Model');
Чтобы сгенерировать испытательный стенд, используйте следующую команду:
makehdltb('hdlcoder_sobel/Pixel-Stream HDL Model');