Обнаружение ребра и наложение изображений с поврежденной системой координат

В этом примере показано, как ввести нарушения для того, чтобы протестировать проект с несовершенным вводом видео. При разработке алгоритмов обработки видеоданных важное беспокойство является качеством входящего видеопотока. Реальные системы видео, как камеры наблюдения или видеокамеры, производят несовершенные сигналы. Поток может содержать ошибки, такие как активные линии неравной длины, незначительных сбоев или неполных систем координат. В симуляции источник потокового видео будет обычно производить совершенные сигналы. Когда вы используете блок Frame To Pixels из Vision HDL Toolbox™, все линии имеют равный размер, и все системы координат завершены. Видео алгоритм, который симулирует хорошо при этих условиях, не гарантирует своей эффективности на FPGA, который соединяется с реальным источником видеосигнала. Чтобы оценить робастность видео алгоритма под неидеальными реальными видеосигналами, это практично, чтобы ввести нарушения в пиксельном потоке.

Этот пример расширяет пример Наложения Обнаружения и Изображения Ребра путем ручного маскирования от ведущих управляющих сигналов системы координат напомнить сценарий, где алгоритм запускается посреди системы координат. Такие сценарии тестирования необходимы, чтобы доказать робастность проектов потокового видео.

Это выгодно, чтобы пробежаться через пример Наложения Обнаружения и Изображения Ребра прежде, чем перейти к этому примеру.

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

Структуру примера EdgeDetectionAndOverlayWithImpairedFrameHDL.slx показывают ниже, который сопровождает структуру блока обработки пиксельного потока модели в Наложении Обнаружения и Изображения Ребра.

Подсистема Обнаружения Ребра реализует алгоритм Sobel, чтобы подсветить ребро изображения. Выровнять Видео подсистема используется, чтобы синхронизировать задержанный выход EdgeDetector с исходной системой координат. Отобразите веса Наложения, и подводит итог двух выровненных временем изображений.

Этот материал организован можно следующим образом. Мы сначала разрабатываем Выровнять Видео подсистему, которая работает хорошо с совершенными видеосигналами. Затем мы используем подсистему Нарушения Системы координат для маски от ведущих управляющих сигналов системы координат напомнить сценарий, где алгоритм запускается посреди системы координат. Мы будем видеть, что такое нарушение делает, Выравнивают неэффективное Видео. Наконец, исправленная версия Выравнивается, Видео разрабатывается, чтобы решить проблему.

Выровняйтесь Видео реализовано как различная подсистема. Можно использовать переменную VERSION в рабочей области, чтобы выбрать, какую из этих двух версий вы хотите симулировать.

Примечание: Начиная в R2017a блок Pixel Stream Aligner заменяет Выровнять Видео подсистему, показанную здесь. Этот новый блок устанавливает настройку buffer size линии и количество намного легче линий и генерирует HDL-код. В новых проектах используйте блок Pixel Stream Aligner, а не Выровнять Видео подсистему. Для примера того, как использовать блок, смотрите Наложение Обнаружения и Изображения Ребра.

Первая версия выравнивает видео

Следующая схема показывает структуру первой версии Выровнять Видео подсистемы.

Выровняйтесь Видео использует управляющие сигналы обнаружить активную область системы координат. Для получения дополнительной информации о пиксельном протоколе потоковой передачи смотрите Пиксельный Интерфейс Потоковой передачи.

Основная идея выровнять потоки на два пикселя состоит в том, чтобы буферизовать допустимые пиксели, которые прибывают ранее в FIFO, базирующийся только на допустимых сигналах, и соответственно выталкивают отдельный пиксель от этого FIFO на основе допустимого сигнала задержанного пиксельного потока.

Тест выравнивает видео Используя подсистему нарушения системы координат

Чтобы проиллюстрировать, как подсистема Нарушения Системы координат работает, рассмотрите 2 3 пиксельная система координат. В фигуре ниже, эта система координат, показал в пунктирном прямоугольнике с неактивными пикселями, окружающими его. Неактивные пиксели включают заднее крыльцо 1 пиксель шириной, передний подъезд 2 пикселя шириной, 1 линия перед первой активной линией и 1 линией после последней активной линии. И активные и неактивные пиксели помечены своими полутоновыми значениями.

Если блок Frame To Pixels признает, что это 2 3 структурирует как вход, и его настройки соответствуют длинам подъезда, показанным выше, то схема синхронизации Frame To Pixels выход проиллюстрирована в верхней половине следующей схемы.

Подсистема Нарушения Системы координат пропускает конфигурируемое количество допустимых пикселей в начале симуляции. Например, если бы это было сконфигурировано, чтобы пропустить 4 пикселя системы координат в качестве примера, результат был бы как в более низкой половине схемы синхронизации. Мы видим, что путем пропуска 4 допустимых пикселей, три допустимых пикселя на второй линии (т.е. со значениями интенсивности 30, 60, и 90), и первый допустимый пиксель на третьей линии, маскируются прочь, наряду с их связанными управляющими сигналами. Кроме того, подсистема Нарушения Системы координат вводит две тактовых задержки. Если мы вводим 0 пикселей, чтобы пропустить, это только задерживает и пиксель и ctrl выходные параметры от Системы координат До Пикселей двумя тактами.

Дважды кликните подсистему Нарушения Системы координат и гарантируйте, что 'Номер допустимых пикселей, чтобы пропустить' определяется к 0. Как упомянуто прежде, эта установка не повреждает систему координат, все, что это делает должен задержать и пиксель и ctrl выходные параметры от Системы координат До Пикселей двумя тактами. Выход от видеовыхода показывают ниже, который ожидается.

Теперь дважды кликните Нарушение Системы координат снова и введите любой положительный целый номер, скажите 100 в поле 'Number of valid pixels to skip'.

Повторно выполните модель, и получившийся видеовыход показывают ниже.

Мы видим, что ребро, которое выход в нужной области кадра, но оригинальное изображение смещено. Этот выход ясно предлагает, чтобы наша первая версия Выровнялась, Видео не устойчиво против пиксельного потока, который запускается посреди системы координат.

Две причины объясняют это поведение. Во-первых, блок EdgeDetector начинает обрабатывать только после наблюдения, что допустимая система координат запускается, обозначенный hStart, vStart, и допустимым движением высоко в том же такте. Блок ничего не выводит для частичной системы координат. Во-вторых, FIFO, в Выровнять Видео подсистеме, начинает буферизовать систему координат, если допустимый сигнал верен, является ли это частичной системой координат или полной системой координат. Поэтому в начале второй системы координат, FIFO был загрязнен пикселями предыдущей частичной системы координат.

Откорректированная версия выравнивает видео

На основе понимания, полученного от предыдущего раздела, Выравнивается исправленная версия, Видео показывают ниже.

Цель состоит в том, чтобы только продвинуть пиксели полных систем координат в FIFO. Если ведущие системы координат не завершены, их допустимые пиксели проигнорированы.

Чтобы достигнуть этого, названная блокировка активированного регистра используется (подсвеченный в схеме выше). Его начальное значение является логическим нолем. Выполнение операции "И" этот 0 с задержанной версией допустимых всегда дает логический ноль. Это препятствует тому, чтобы любые допустимые пиксели были продвинуты в FIFO. Блокировка переключает свой выход от логического ноля до 1 только, когда hStart, vStart, и допустимые сигналы утверждают высоко, индикатор запуска новой системы координат. После переключателей блокировки к 1, вход 'нажатия' FIFO теперь следует за задержанной версией допустимого сигнала. Таким образом, допустимые пиксели новой системы координат будут буферизованы в FIFO.

Чтобы протестировать эту пересмотренную реализацию, введите следующую команду в посдказке MATLAB.

   VERSION=2;

Повторно выполните симуляцию. Теперь ребро выход и оригинальное изображение отлично выравнивается.