Обнаружение ребра и наложение изображений

Этот пример демонстрирует, как обнаружить и подсветить края объекта в видеопотоке. Поведение пиксельного потока Детектор Ребра Sobel, выравнивание видеопотока, и наложение, проверяется путем сравнения результатов с тем же алгоритмом, вычисленным блоками полного кадра от Системы Компьютерного зрения Toolbox™.

Эта модель в качестве примера предоставляет аппаратно-совместимый алгоритм. Можно реализовать этот алгоритм на плате с помощью исходного проекта Xilinx™ Zynq™. Смотрите Алгоритмы визуализации Разработки для Находящегося в Zynq Оборудования (Пакет Поддержки Computer Vision Toolbox для Xilinx Находящееся в Zynq Оборудование).

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

Систему EdgeDetectionAndOverlayHDL.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™ введет задержку. Задержка предотвращает нас от прямого взвешивания и добавления двух изображений, чтобы получить наложенное изображение. Чтобы решить эту проблему, блок Pixel Stream Aligner используется, чтобы синхронизировать потоки на два пикселя перед суммой.

Чтобы правильно использовать этот блок, refPixel и refCtrl должен быть соединен с пикселем и шиной управления, которые сопоставлены с задержанным пиксельным потоком. В нашем примере, из-за задержки, введенной Детектором Ребра, пиксельный поток, выходящий из Детектора Ребра, задерживается относительно того питания в него. Поэтому восходящим источником refPixel и refCtrl является Ребро и ctrl вывод Детектора Ребра.

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

Как компаньон, чтобы Структурировать К Пикселям, который преобразовывает кадр полного образа в пиксельный поток, блок 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-код и проверьте его поведение

Проверять и сгенерировать HDL-код сослались в этом примере, у вас должна быть лицензия HDL Coder™.

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

makehdl('EdgeDetectionAndOverlayHDL/Pixel-Stream HDL Model');

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

makehdltb('EdgeDetectionAndOverlayHDL/Pixel-Stream HDL Model');