Виртуальная доска для рисования на DE2
Статьи по теме

Идея для проекта на базе учебной платы DE2: Виртуальное рисование
Введение
Виртуальное рисование – это система, которая может использовать движения рук и пальцев для рисования цветных картин на любых плоских поверхностях.
Проектирование устройства виртуальной доски
Опишем основные блоки устройства:
CCD_Capture: Модуль, который обрабатывает пиксельные данные, поступающие от датчика CMOS.
RAW2RGB: Модуль используется для преобразование изображения в формат RGB, выделяя для значений R (красного), G (зеленого), B (синего) 10 бит.
Mirror_Col: Модуль используется для отображения кадра в реальном виде, то есть зеркальное его отображение.
SDRAM: Модуль используется в качестве буфера кадра для хранения всех значений RGB для каждого пикселя. Поскольку для RGB формата понадобится 30 бит, то нам нужно две строки памяти в SDRAM для хранения данных для одного адреса пикселя.
Main_ctrl: Модуль который отвечает за распознавание цвета и сегментации. Модуль считывает из буфера SDRAM кадры и вычисляет значения формата RGB каждого пикселя кадра, и на основе интенсивности каждого компонента определяет различные цвета.
M4K: Эта память используется для хранения значения RGB для каждого адреса пикселя. Контроллер VGA считывает значения RGB непосредственно из памяти М4К. При рисовании обеспечивается возможность выбора до трех цветов, для этого выбираются из памяти М4К нужные значения формата RGB. Размерность данных в этой области памяти составляет 2 байта.
VGA: Модуль VGA содержит контроллер VGA и VGA дисплей. Контроллер VGA отвечает за получения данных RGB из памяти и отправки данных RGB для каждого пикселя на VGA дисплей. Кроме того, контроллер VGA также используется для отображения цветовой палитры на экране, для того чтобы выбирать различные цвета во время рисования.
Описание основной части управления системой виртуального рисования
Для рисования на поверхности пользователь использует два пальца руки с цветными накладками (желтый, красный), для того, чтобы контролировать все функциональные возможности приложения.
Желтый цвет используется для рисования и выбора цвета, в то время как красный цвет используется для управления “PenUp” и “PenDown” режимов работы, поэтому, когда красный цвет обнаруживается датчиком, срабатывает “PenUp” режим, и пользователь перестает рисовать.
Для рисования имеется четыре цвета: красный, зеленый, синий и белый цвет – для стирания. Размер ластика составляет 3х3 квадратных пикселя. Адрес каждого значения, который хранится в М4К соответствует адресу пикселя на VGA мониторе.
Когда происходит считывание из памяти М4К, выводится конкретное значение RGB в соответствии с считываемых данных из памяти. Данные, сохраненные в М4К состоят из двух-битного значения выбора цвета. Если пользователь выводит красный цвет (значение 01), зеленый цвет (значение 10), синий цвет (значение 11), и белый (значение 00). Модуль VGA_controller считывает эти значения и выводит на экран.
Проектирование оборудования
Оборудование для виртуального рисования можно разделить на 4 модуля:
-
Счетчик кадров или камера.
-
Блок обработки изображений и блок управления.
-
Блок памяти.
-
Дисплей.
В проекте используется комплект TRDB_DC2 от фирмы Terasic, который служит для захвата кадра. Он состоит из 1,3-мегапиксельного CMOS сенсора и кабеля IDE для подключения к порту DE2.
TRDB_DC2 имеет 40 контактов подключения. В проекте можно использовать один датчик, поэтому это только первые 20 пинов. Ниже на рисунке приведены номера пинов и их предназначения.
Пины 1-10 (DATA1) содержат данные пикселя, которые передает CMOS сенсором. Пин 13 (PIXCLK1) используется для синхронизации входящих пиксельных данных. Пин 14 (MCLK1) проверяет с какой частотой будут поступать пиксельные данные.
Обработка полученных изображений и управление проектом осуществляются на плате Altera DE2 с чипом Altera Cyclone II FPGA. При этом на DE2 используется USB Blaster порт – для программирования FPGA, VGA порт – для подключения VGA устройства, JP1 порт – для подключения TRDB_DC2 комплекта.
Данные поступающие от датчика изображения, которые передаются в модуль CCD_Capture для их обработки. После обработки данные поступают в RAW2RGB модуль для преобразования изображения и RGB формат. Модули CCD_Capture и RAW2RGB входят в комплект TRDB_DC2.
Данные изображения хранятся в SDRAM которые используются через SDRAM контроллер. Основным модулем является распознавания цвета и сегментации, который считывает значения пикселя из буфера изображения (SDRAM) для обработки. Затем соответствующие значения цвета для пикселя сохраняются в блок М4К. Затем контроллер VGA считывает ячейку памяти M4K и отправляет сохраненную информацию цвета в VGA блок дисплея.
Ниже приводится блок-схема интерфейса датчика изображения камеры на DE2 связанная с блоком VGA:
Блок определения цвета и сегментации является основным блоком управления. Его можно разделить на 3 части: блок обнаружения и сегментации цвета, центральный вычислительный блок, и блок выбора цвета.
Для определения цвета и сегментации используется пороговое сравнение и сопоставление интенсивности компонента RGB каждого пикселя. Ниже представлен алгоритм определения цвета:
1 2 3 4 5 |
if (R>128 and R> 2(G) and R > 2(B) and G < 128 and B < 128) then RED color if (R>256and G < 256 and B < 128) then YELLOW color if (R<128 and G > 320 and B < 128) then GREEN color |
Причина, по которой мы выбираем красный и желтый цвет, состоит в том, что у этих цветов высокая интенсивность – они легко отфильтровываются (хорошо выделяются) на фоном шуме.
Основной единицей отсчета является значение счетчика, который подсчитывает количество пикселей обнаруженного цвета, для вычисления использует координаты Х и Y.
Выбор цвета делается при помощи экранной палитры цветов, которые отображаются на экране. Для отображения цветовой палитры через VGA контроллер, используется зарезервированная часть экрана. Это сделано путем присоединения мультиплексора к цветовому входному потоку VGA, где каждый раз адреса VGA пикселей отображаются в определенном диапазоне значений.
Ниже приводится блок-схема основных модулей:
Данные изображения, отправленные CMOS датчиком, хранятся в 8 Мб модуля SDRAM, который работает в качестве буфера кадра. Так же используется блок памяти М4К для хранения цветовой информации соответствующих пиксельных адресов, сгенерированных после цветовой сегментации кадра. DE2 имеет 105 M4K RAM блоков, для определения цвета и хранения информации о двух используемых цветах.
Для отображения поля для рисования используется стандартный VGAпорт, для подключения ЖК-дисплея или проектора.
Результаты работы виртуального художника на ПЛИС
Видео-презентация устройства виртуальной доски для рисования
Такими являются основные принципы работы проекта виртуального рисования. Больше информации про данный проект и ссылки на исходные файлы можно найти по ссылке.
Адаптация материалов: Лаврик Д.А., ДК-22, НТУУ «КПИ», каф. КЭВА.