Упражнения
Продолжим работу со свёрткой изображений.
-
Добавьте блоки памяти в режиме "только чтение", в которых будут храниться веса ядер. Предусмотрите возможность использовать одни и те же веса для инициализации нескольких ядер. Создайте примеры файлов для инициализации: веса для размытия по Гауссу (5х5) и для выделения границ (5х5).
-
Сконфигурируйте буфер для хранения одного изображения. Придётся предположить, что работаем с изображениями ограниченного сверху размера. Скажем, 640 на 480. Используйте его для сохранения результатов свёртки.
-
Сконфигурируйте буфер для хранения входной строки. Используйте нужное количество буферов для получения входных данных для свёртки.
Отдельно, в качестве задачи со звёздочкой предлагается запустить свёртку на реальной плате. Более того, предлагается реализовать выделение границ объекта в реальном времени. Задача сложная, поэтому предполагается решать её поэтапно.
-
Изучите примеры
rgb_screen
(проще, использует дисплей на плате, только для Mega 138k) илиhdmi_colorbar_1080
(сложнее, используется HDMI выход) из репозитория с примерами для Mega 138k. -
Модифицируйте их для вывода изображения по вашему выбору.
-
Подключите камеру OV7670 и настройте вывод на дисплей. Вам может помочь данная статья и примеры кода: пример раз и пример два.
-
Реализуйте модуль преобразования входного изображения в чёрно-белое (градации серого, 8 бит).
-
Примените один модуль свёртки (скажем, обнаружение границ) для обработки изображения с камеры. Для этого придётся реализовать модуль, управляющий буферами строк.
-
Соберите последовательность свёрток.
-
Два последовательных размытия (с одинаковыми весами).
-
Обнаружение границ.
-
Обратите внимание на то, что размер изображения на выходе может не совпадать с размером изображения на входе.
-
-
Сделайте последовательность свёрток конфигурируемой.
-
Каждую из свёрток можно независимо включить или отключить.
-
Для управления можно использовать DIP переключатели.
-
Предусмотрите возможность подключения диагностических диодов, которые бы показывали, какие модули активны.
-
Обратите внимание на то, что размер изображения на выходе может не совпадать с размером изображения на входе. При этом, то, на сколько будет не совпадать, зависит от количества ядер.
-