Статья опубликована в рамках: XLVII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 28 ноября 2016 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
GFR КАК ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ ПО РАСПОЗНАВАНИЮ ПРЕДЗАДАННОГО ЛИЦА В LABVIEW
Целью данной работы является раскрытие возможности использования среды разработки LabVIEW в относительно простых системах технического зрения. Создаётся приложение LabVIEW, которое, получая информацию с веб-камеры, выводит изображение на экран в реальном времени и выделяет (распознает) предзаданное лицо.
1 Структура проекта
Проект LabVIEW, главной точкой входа которого будет являться приложение, удовлетворяющее условиям задания (верхний уровень), должен быть разбит на виртуальные приборы нижнего уровня и исходные графические файлы черт распознаваемого человеческого лица (рис. 1.).
Рисунок 1. Структура проекта.
Файл general_face_recognition.vi – это виртуальный прибор LabVIEW, фронтальная панель которого являет собой пользовательский интерфейс приложения по распознаванию лиц. Папка lineaments содержит файлы изображений черт распознаваемого лица: носа, губ и одного глаза; subunits – файлы виртуальных приборов нижнего уровня. Dependencies – автоматически создаваемая папка с библиотеками используемых в виртуальных приборах функций и с библиотеками динамической компоновки.
2 General_face_recognition.vi
В этом виртуальном приборе расположена основная программа, объединяющая все приборы нижнего уровня; его блок-диаграмма представлена на рисунке 2:
Рисунок 2. Блок-диаграмма general_face_recognition.
Вышеназванную диаграмму можно разбить на три составные части, которые представляют собой логически изолированные процессы, для удобства описания. Первая часть представлена рисунке 3, её задачей являются захват видео с веб-камеры, поиск совпадений зон обрабатываемого изображения с чертами лица (lineaments), ответ на вопрос: «есть ли лицо на изображении?», выделение лица белым квадратом [1, с. 135].
Рисунок 3. Первая часть диаграммы.
Слева от структуры цикла while расположены блоки старта видео-сессии, объявления изображения на показ с небольшим количеством настроек: порт камеры, имя изображения, его формат (выбран RGB (U32) для более точной работы последующих блоков обработки), установочный блок для внутрицикловых элементов поиска совпадений областей обрабатываемого изображения с шаблонами (установлены низкая чувствительность к цвету, поиск по цвету и форме, независимость от сдвига, т.е. в расчет идет даже часть шаблона и поворот не более 4 градусов, агрессивная стратегия поиска сравнений по всему спектру по сложным алгоритмам, пиксельная точность), а также блок прибора нижнего уровня connect_lineaments, который подключает к проекту файлы изображений черт распознаваемого лица.
Внутри цикла расположены четко различимые три повторяющиеся группы элементов – это блоки поиска совпадений и приборы нижнего уровня framer.vi, задачей которых является обводка найденного совпадения в соответствующий цвет (рис. 4), используемая лишь во время отладки приложения. Каждый блок имеет свои константы: для блоков поиска совпадений это минимальное их количество, равное единице, и коэффициент равенства, равный 700 для губ, 650 для носа и 575 для глаза, способный принимать значения от 1 до 1000 и являющий собой меру совпадения по цвету и форме. Для блоков обрисовки внешней константой является цвет.
Рисунок 4. Разноцветная обводка черт лица
Пройдя все эти группы элементов обработки, изображение попадает в блок очистки от всех наложений, где вся обводка стирается. Далее изображение попадает в прибор нижнего уровня final_framer, в котором на изображении рисуется квадрат (белый), выделяющий лицо.
Подробнее обо всех элементах нижнего уровня будет сказано в следующих разделах отчёта.
После final_framer изображение попадает в индикатор вывода на экран.
Также в этой составной части блок-диаграммы general_face_recognition имеется элемент нижнего уровня face_verify, его главной задачей является выдача логического ответа на вопрос «найдено ли лицо?», который будет использован во второй составной части.
Выход из цикла while и последующее завершение программы осуществляется по нажатию контроллера stop и при приходе положительного логического сигнала, связанного с наличием ошибок, канал которых пронизывает практически все блоки диаграммы.
На рисунке 5 представлена вторая составная часть блок-диаграммы general_face_recognition:
Рисунок 5. Вторая часть диаграммы
Данная часть программы нацелена на выдачу координат для обрамления (белым квадратов в элементе final_framer первой части диаграммы) того участка изображения, где кадр назад было лицо, а сейчас ответ на вопрос «найдено ли лицо?» отрицателен, то есть здесь осуществляется слежка за той частью изображения, которая до этого была лицом. Это позволяет решить проблему с перебоями распознавания черт лица [2, с. 201].
Далее следует описание блоков и процессов второй части диаграммы.
Слева от цикла while расположены два блока объявления изображений для видео-сессии: первый – текущее изображение, второй – предыдущее. Изображение в памяти последнего обновляется после каждого прохода цикла посредством присваивания информации из обработанного текущего по «регистру сдвига». Также по собственному «регистру сдвига» обновляются координаты точки слежения, находящиеся в массиве и изначально неопределенные.
Внутри цикла после блока захвата изображения по видео-сессии находится блок, выделяющий из захваченного изображения лишь спектральный уровень красного цвета, который необходим «сердцу» данной части диаграммы – IMAQ Optical Flow (LKP) VI. Этот виртуальный прибор следит за изменением в расположении группы точек между двумя кадрами (которые были объявлены ранее), используя алгоритм Лукаса и Канаде; он помещен в структуру Case и выполняется лишь при отрицательном логическом сигнале из элемента face_verify, т. е. тогда, когда лицо не найдено. Также слежка не имеет право начаться при запуске программы, когда еще неизвестно, что отслеживать, т.е. массив координат для отслеживания пуст, хотя лицо может быть и найдено (первая итерация цикла); для этого ограничения имеется логический блок по связке «ИЛИ» first call. Алгоритм Лукаса и Канаде требует константы настройки: число «уровней» исчисления равное 4, максимальное количество итераций алгоритма на каждом уровне – 20, окрестность пикселя из группы слежения – 20, минимальная окрестность сдвига, финальная для слежения – 1 (все эти константы были выставлены методом проб и ошибок, а также основываясь на логичности и компромиссе с быстродействием).
Если же лицо найдено, то алгоритм Лукаса и Канаде не применяется, и «вариант правды» в структуре case представляет собой лишь преобразование массивов (рис. 6).
Рисунок 6. True вариант структуры case
После case изображение копируется в повторную обработку и по регистру сдвига передается в канал «предыдущего» изображения, о чём было сказано ранее.
Выходные точки из алгоритма Лукаса и Канаде (они же конкатенированный массив по True) поступают в элемент final_framer, чьи функции были описаны выше.
Третья составная часть блок-диаграммы general_face_recognition представлена на рисунке 7:
Рисунок 7. Третья часть диаграммы
Вообще, к третьей части диаграммы следует отнести ещё и все каналы ошибок, объединенные посредством кластера. Здесь имеются блок завершения видео-сессии, блок, удаляющий все изображения и освобождающий из-под них память, а также блок вывода ошибок.
Список литературы:
1. Гридин В.Н., Титов В.С., Труфанов М.И. Адаптивные системы технического зрения: науч. отд. изд., – М: 2009 – 442 с.
2. Мошкин В. И., Петров А. А., Титов В. С., Якушенков Ю. Г. Техническое зрение роботов: учебник. отд. изд., стер. – М.: 1990 – 272 с.
дипломов
Оставить комментарий