ЛР6 > Применение фильтра для выделения границ в видеопотоке (Edge Detection)

Тема: Использование медианного и фильтра выделения границ при обработке видеопотока. Использование компонентов Clocked Video Input, Color Plane Sequencer, Deinterlacer, Scaler, Median Filter 2D, FIR Filter 2D, Frame Buffer, Clocked video Output в SOPC Builder

Теоретические сведения

Скачать Материалы к лабораторной работе №6.

Целью данной лабораторной работы является реализация компонента выделения границ в видеопотоке. Пример использования алгоритма выделения границ на изображении показан на рисунке 1.

Рисунок 1. Пример выделения границ на изображении.

Выделение перепадов яркости на изображении позволяет получить полезную информацию о наблюдаемых объектах. Она может указывать на:

  • изменение глубины объекта;
  • изменение ориентации поверхности;
  • изменения свойств материала объекта;
  • различие в освещении наблюдаемой сцены.

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

Описание работы фильтра выделения границ (Edge Detection).

Для выделения границ в видеопотоке используется КИХ-фильтр со специальной импульсной характеристикой, заданной в следующем виде:

Рисунок 2. Варианты ядра КИХ-фильтра.

Свёртка двухмерного видеосигнала с ядром такого фильтра формирует дискретный Лапласиан. Дискретный Лапласиан представляет собой сумму вторых производных и вычисляется как сумма перепадов яркости центрального пиксела с его соседями.

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

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

Описание работы медианного фильтра

Медианный фильтр — один из видов цифровых фильтров, широко используемый в цифровой обработке сигналов и изображений для уменьшения уровня шума. Медианный фильтр является нелинейным КИХ-фильтром.

Значения отсчётов обрабатываемого сигнала сортируются внутри окна этого фильтра в порядке возрастания (убывания). Выходным значением такого фильтра будет значение, находящееся в середине упорядоченного списка отсчетов. Затем, окно фильтра перемещается вдоль фильтруемого сигнала и вычисления повторяются. Пример работы медианного фильтра представлен на рисунке 3:

Рисунок 3.
Пример обработки медианным фильтром зашумленного изображения с тремя различными значениями ширины окна фильтра.

С учетом необходимости предварительной сглаживающей фильтрации входного изображения, реализуемое устройство для выделения границ перепада яркости (Edge Detection),
должно иметь следующий вид:


Рисунок 4. Структурная схема устройства выделения границ яркости.

Задание 1

1. Создайте новый проект в Вашей рабочей директории. Укажите название проекта Video.

2. Для реализации всех необходимых функций с помощью утилиты SOPC Builder создайте ядро устройства выделения границ в видеопотоке следующей конфигурации:

Рисунок 5. Конфигурация устройства выделения границ в видеопотоке.

3. Выберите компонент Clocked Video Input из папки Video and Image Processing. Этот модуль предназначен для преобразования стандартного последовательного видеопотока в формат Avalon-ST Video. Его необходимо настроить на прием сигнала, представленного двумя полукадрами (чересстрочная развертка) с разрешением 720 х 288 пикселей. Количество цветоразностных составляющих – 2, каждая представлена 8 битами (рисунок 6).

Рисунок 6. Настройки блока CVI.

4. Настройки компонента Color Plane Sequencer показаны на рисунке 7. В данном случае компонент настраивается на работу только с сигналом яркости (Y). Поэтому выходное изображение будет черно-белым (с оттенками серого).

Рисунок 7. Настройки блока CPS_442_to_Y.

5. Настройки блока Deinterlacer показаны на рисунке 8. Этот блок объединяет два полукадра в один кадр (прогрессивная развертка) с разрешением 720 х 576 пикселей.

Рисунок 8. Настройки блока deintrlacer.

6. Настройки блока Scaler представлены на рисунке 9. Этот блок изменяет разрешение выходного сигнала с 720 х 576 пикселей на 640 х 480 пикселей (для VGA монитора). Настройки на страницах 2 и 3 для данного блока оставьте по умолчанию.

Рисунок 9. Настройки блока scaler.

7. Настройки блока Median Filter 2D представлены на рисунке 10. Фильтр осуществляет предварительное сглаживание видеоизображения. Используется ядро фильтра размером 5х5.


Рисунок 10. Настройки блока alt_vip_med_0.

8. Настройка блока FIR Filter 2D представлена на рисунках 11 и 12. Компонент
FIR Filter 2D
– это универсальный КИХ-фильтр. Функцию выделения границ яркости обеспечивает специальное ядро фильтра, приведенное в теоретических сведениях к данной работе. На первой странице окна конфигурации задается масштабирование выходных значений фильтра в интервале от -128 до +127


Рисунок 11. Настройки блока alt_vip_fir_0. Страница 1.

9. На второй странице выполняется запись коэфициентов ядра фильтра и выбор точности представления коэфициентов ядра. Используется ядро размером 7х7. Поскольку ядро симметрично, включение опции Enable symmetric mode значительно сокращает число ячеек, требуемых для реализации фильтра

Рисунок 12. Настройки блока alt_vip_fir_0. Страница 2.

10. Настройки компонента
Frame Buffer представлены на рисунке 13.
Блок выполняет функцию временного буфера для накопления некоторого количества видеофреймов с их дальнейшей передачей компоненту Clocked video Output. Используется для синхронизации видеопоследовательности.

Рисунок 13. Настройки блока FrameBuffer.

11. Настройки контроллера SDRAM – такие же, как и в лабораторных работах № 2 и № 3.

12. Настройка компонента
Clocked video Output представлены на рисунке 14.
Блок преобразовывает видеопоток Avalon-ST Video в формат, совместимый с VGA. Блок настроен на генерацию стандартного сигнала для VGA монитора с разрешением 640х480 пикселей и единственным сигналом яркости.

Рисунок 14. Настройки компонента CVO.

13. Укажите базовый адрес для компонента sdram_ctrl равный 0х00800000. Укажите значение входной внешней тактовой частоты, равное 100 МГц.

14. Сохраните конфигурацию устройства преобразования видеосигнала.
Выполните команду Generate.

Задание 2

1. После успешного создания устройства выделения границ в видеопотоке необходимо создать файл верхнего уровня иерархии проекта.

2. Откройте файл Video.v (в папке с исходными данными). Данный файл является файлом верхнего уровня иерархии проекта, написанный на языке Verilog. Подключите разработанное устройство после строки с комментарием

//SOPC builder generated system.

3. Обратите внимание!!! Интерфейс устройства преобразования видеосигнала описывается в файле имя_устройства_inst.v в рабочей директории проекта.

4. Подключите следующие сигналы к устройству преобразования видеосигнала:

//Example instantiation for system ‘video_system’

video_system video_system_inst (

.clk_0                (OSC_100),

.overflow_from_the_CVI     (),

.reset_n             (RESET),

.underflow_from_the_CVO    (),

.vid_clk_to_the_CVI        (TD_CLK),

.vid_clk_to_the_CVO    (OSC_27),

.vid_data_from_the_CVO    (Y),

.vid_data_to_the_CVI    (TD_DATA),

.vid_datavalid_from_the_CVO    (),

.vid_datavalid_to_the_CVI    (1’b1),

.vid_f_from_the_CVO    (),

.vid_h_from_the_CVO    (hblank),

.vid_h_sync_from_the_CVO    (hsync),

.vid_locked_to_the_CVI    (1’b1),

.vid_v_from_the_CVO    (vblank),

.vid_v_sync_from_the_CVO    (vsync),

.zs_addr_from_the_sdram_ctrl    (DRAM_ADDR),

.zs_ba_from_the_sdram_ctrl    ({DRAM_BA_1, DRAM_BA_0}),

.zs_cas_n_from_the_sdram_ctrl    (DRAM_CAS_N),

.zs_cke_from_the_sdram_ctrl    (DRAM_CKE),

.zs_cs_n_from_the_sdram_ctrl    (DRAM_CS_N),

.zs_dq_to_and_from_the_sdram_ctrl (DRAM_DQ),

.zs_dqm_from_the_sdram_ctrl    ({DRAM_UDQM, DRAM_LDQM}),

.zs_ras_n_from_the_sdram_ctrl    (DRAM_RAS_N),

.zs_we_n_from_the_sdram_ctrl    (DRAM_WE_N)

);

5.
Для формирования выходного VGA-сигнала используется следующий код:

assign VGA_R = {Y, 2’b00};

assign VGA_G = {Y, 2’b00};

assign VGA_B = {Y, 2’b00};

assign VGA_HS     = ~hsync;

assign VGA_VS     = ~vsync;

assign VGA_BLANK = ~(vblank | hblank);

assign VGA_SYNC     = 1’b1;

assign VGA_CLK     = OSC_27;

6. Задайте назначения контактов ввода/вывода (используя файл DE2.csv в папке с исходными данными).

7. Скомпилируйте проект.

Задание 3

1. Перед запуском программы, к стенду необходимо подключить дополнительные устройства, как показано на рисунке 15.

Рисунок 15. Подключение внешних устройств к стенду DE2.

Аналоговая камера подключается ко входу «Video In», монитор подключается ко входу «VGA Video Port».

2. Загрузите программу в ПЛИС и проверьте ее работу.

Внимание! После компиляции проекта и загрузки файла конфигурации ПЛИС, убедитесь, что переключатель SW17 находится в верхнем положении!

3. Переключатель SW17 выполняет аппаратный сброс системы.

Задание для самостоятельной работы

1. Измените параметры медианного фильтра и фильтра выделения фронтов. Проверьте результат на стенде DE2.