exponenta event banner

Многозональный учет

В этом примере показано, как использовать блок «Статистика изображения» для многозонального измерения для извлечения интересующей области (ROI).

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

Введение

Ниже показана система MultizoneMeteringHDL.slx.

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

В этом примере подсистема извлечения Pixel-Stream ROI вычисляет среднее значение интенсивности над 12 заранее определенными ROI в кадре и выводит индексный номер (1-12), который соответствует наиболее освещенному ROI. Дочерняя подсистема выбора маски принимает этот номер индекса и выводит соответствующее двоичное изображение маски. Двоичное изображение маски применяется к исходному видео для отображения только наиболее освещенного ROI и маскирования других 11 ROI. Блок задержки на верхнем уровне модели используется, чтобы соответствовать задержке, введенной обработкой потока пикселей.

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

Можно создать код HDL из подсистемы извлечения Pixel-Stream ROI.

Источник видео

Формат видео - 240p. Каждый кадр состоит из 240 строк и 320 пикселей на строку. В этом примере видеокадры делятся на 12 неперекрывающихся прямоугольных ROI, обозначенных как ROI числа 1-12, как показано на диаграмме ниже. Каждый ROI включает в себя одну клавишу изображения входной клавиатуры.

ROI номер 1 имеет ширину 107 пикселей и высоту 60 пикселей, и координата (x, y) его верхнего левого пикселя равна (1,1). Номер ROI 2 имеет ширину 107 пикселей и высоту 60 пикселей, а координата его верхнего левого пикселя равна (108,1) и так далее. Первый кадр входного видео имеет более яркие пиксели в пределах ROI номер 1, как показано выше. Второй кадр имеет более яркие пикселы в пределах ROI номер 2 и так далее.

От кадра до пикселей: создание потока пикселей

«От кадра до пикселей» преобразует полнокадровое изображение в поток пикселей. Для моделирования эффекта периодов горизонтального и вертикального гашения, обнаруженных в реальных аппаратных видеосистемах, активное изображение дополняется данными, не являющимися данными изображения. Дополнительные сведения о потоковом пиксельном протоколе см. в разделе Потоковый пиксельный интерфейс. Блок Frame To Pixels настроен так, как показано на рисунке:

Для ввода изображения в градациях серого в поле Number of components установлено значение 1, а в поле Video format установлено значение 240p, соответствующее значению источника видео.

В этом примере область Active Video соответствует матрице 240x320 исходного изображения. Шесть других параметров, а именно «Общее количество пикселей на строку», «Общее количество видеопостроек», «Начальная активная линия», «Конечная активная линия», «Передняя часть» и «Задняя часть», указывают, сколько данных, не относящихся к изображениям, будет увеличено на четырех сторонах активного видео. Дополнительные сведения см. на странице ссылок блока «От кадра до пикселов».

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

Извлечение ROI пиксельного потока

Подсистема извлечения ROI Pixel-Stream содержит две подсистемы, а именно многозонный измеритель и индексатор ROI.

Подсистема многозонального измерения вычисляет среднее значение интенсивности по 12 заданным значениям ROI. Полученные 12 средних значений передаются в подсистему индексатора ROI в нисходящем направлении. ROI Indexer выводит индекс (1-12) ROI, который имеет максимальное среднее значение интенсивности (или, что эквивалентно, наиболее освещенный ROI) среди 12 кандидатов.

Структура многозонной подсистемы учета показана на схеме ниже.

Многозонная подсистема учета содержит 12 идентичных подсистем ROIStatistic. Каждый экземпляр ROIStatistic вычисляет среднее значение интенсивности по одному ROI. Все 12 подсистем ROIStatistic принимают пиксель и ctrl в качестве первых двух входов. Остальные четыре входа определяют, с какой ROI работает эта подсистема, и они отличаются от одной подсистемы к другой. Например, подсистема ROIStaticstic1 фокусируется на ROI номер 1, принимая координату (x, y) верхнего левого пикселя (1,1), ROI ширину 107 и высоту 60. Аналогично, подсистема ROIStaticstic12 фокусируется на номере 12 ROI, чья (x, y) координата верхнего левого пикселя равна (215 181), и чья ширина и высота равны 106 и 60 соответственно.

Подсистемы ROIStatistic1- ROIStatistic12 имеют одинаковую структуру, показанную ниже.

Он содержит подсистему ROI, за которой следует блок статистики изображений. Подсистема ROI манипулирует управляющим сигналом исходного изображения 240p и создает управляющие сигналы, связанные только с ROI, заданным парой (x, y), ROIWidth и ROIHeight.

Выбор маски

Структура подсистемы выбора маски показана ниже.

Доступны двенадцать изображений маски, соответствующих 12 различным ROI. Эти шаблоны масок показаны как BM {1} - BM {12} на вышеприведенной схеме. При открытии модели модель загружает предопределенный массив ячеек BM в рабочее пространство. Маски представляют собой двоичные изображения с форматом видео 240p. Для маски BM {n} (n = 1,2,..., 12) число ROI n заполняется логическими пикселями 1 (белыми), а все остальные 11 ROI заполняются логическими пикселями 0 (черными). На основе индексного ввода (1-12) подсистема выбора маски выводит соответствующее двоичное изображение маски.

Создание кода HDL

Для проверки и генерации кода HDL, на который ссылается этот пример, необходимо иметь лицензию HDL Coder™.

Для создания кода HDL используется следующая команда.

makehdl('MultizoneMeteringHDL/Pixel-Stream ROI Extraction')

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

makehdltb('MultizoneMeteringHDL/Pixel-Stream ROI Extraction')