Помощь в написании студенческих работ
Антистрессовый сервис

Разработка приложения на Java по выделению лица на фотографии

РефератПомощь в написанииУзнать стоимостьмоей работы

Рассмотрим константу CASCADE_FILE. Для программиста это будет файл haarcascade_frontalface_alt.xml, а для компьютера — критерий для того, чтобы находить лица на изображении. Каскады для лиц, носов, ртов, автомобильных номеров и т. д. располагаются в папке с OpenCV. А также возможно организовать их создание с помощью программ, располагающихся в папке bin директории, куда был установлен OpenCV… Читать ещё >

Разработка приложения на Java по выделению лица на фотографии (реферат, курсовая, диплом, контрольная)

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

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

Признаки, применяемые алгоритмом, применяют суммирование пикселей из прямоугольных зон. На рис. 1 показано четыре разнообразных признака. Размер каждого признака подсчитывается как сумма пикселей в белых прямоугольниках, из которой отнимается сумма пикселей в черных зонах. При хранении изображения в интегральном формате, проверка прямоугольного признака на определенной позиции проводится за определенное количество времени, именно здесь проявляется их преимущество перед более точными вариантами. Каждая прямоугольная зона в применяемых признаках всегда смежна с иным прямоугольником, поэтому расчет признака с двумя прямоугольниками заключается в шести обращениях в интегральный массив, для признака с тремя прямоугольниками — в восьми, с четырьмя прямоугольниками — в девяти.

Признаки.

Рис. 1 — Признаки

алгоритм java фотография приложение Р. Гонсалес, Р. Вудс описали этот и другие методы распознавания образов [6]. Создатели метода П. Виола и М. Дж. Джонес описали распознавание образов в режиме реального времени [14]. Л. М. Местецкий рассмотрел методы распознавания лиц с точки зрения математики [10]. P. Sinha, B. Balas, Y. Ostrovsky и R. Russel исследовали распознание образов мозгом [13]. Козлов П. В., Липин Ю. Н., Южаков А. А. описали алгоритм распознавания лица человека [8]. Достоинства и недостатки методов распознавания человека по характеристикам лица описывают А. Б. Щербань и К. С. Тихонова [11]. Концепцию алгоритма распознавания и анализа лица человека исследуют Д. В. Бутенко, А. В. Перепелицын [5]. Я. Ю. Дорогий описывает построение офтальмогеометрического классификатора для задачи распознавания человека по лицу [7]. А. А. Макаренко, В. Т. Калайда рассмотрели применение нейросетевой технологии для систем распознавания лица человека на групповом изображении [9].

OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обрабатывания изображений и численных алгоритмов всеобщего назначения с открытым кодом. Создана на C/C++, также ведется разработка для Python, Java, Ruby, Matlab, Lua и прочих языков. OpenCV — это комплект алгоритмов и библиотек для работы с компьютерным зрением. Поиск объектов на изображениях, распознание символов и все такое прочее. Г. Брадски и А. Каеблер описали основные функции и методы OpenCV [12]. JavaCV является оболочкой для OpenCV для использования OpenCV в Java.

Алгоритм реализуемой программы:

  • 1. Открываем изображение или берем его с камеры методами JavaCV.
  • 2. Программа находит на фотографии лица и вставляет рамки вокруг них.

Создается переменная класса изображения, используемого в JavaCV и окно, в которое будет выводится изображение (рис 2).

Окно создано, теперь в переменную нужно «поместить» изображение. Сначала код, где берется изображение с камеры (рис 3).

Получение изображения с камеры.

Рис. 3. Получение изображения с камеры

Здесь переменная grabber — объект с которого будет происходить захват. 0 — это индекс устройства, он может быть больше нуля, если камер несколько. Значение -1 несет смысл «любая доступная камера». Метод start () запускает камеру, а метод grab () передает текущий кадр с камеры в переменную.

Последняя строка проверяет не пуста ли переменная originalImageи, если это так повторяет предыдущую строку. Загрузить изображение из файла можно, с помощью метода cvLoadImage(рис. 4).

Получение изображения из файла.

Рис. 4. Получение изображения из файла

RGB-изображение, загруженное через cvLoadImage для поиска требуется преобразовать изображение в градации серого. Сначала создается пустое изображение с размерами загруженного, а затем копируется и преобразуется (рис. 5).

Преобразование изображения в градации серого.

Рис. 5. Преобразование изображения в градации серого

В этом моменте написания кода, происходит главное — на основе каскада CASCADE_FILE выводится ряд найденных лиц.

Рассмотрим константу CASCADE_FILE. Для программиста это будет файл haarcascade_frontalface_alt.xml, а для компьютера — критерий для того, чтобы находить лица на изображении. Каскады для лиц, носов, ртов, автомобильных номеров и т. д. располагаются в папке с OpenCV. А также возможно организовать их создание с помощью программ, располагающихся в папке bin директории, куда был установлен OpenCV. Таким образом, можно настроить каскад под определенное лицо, но для настройки понадобится несколько суток и выборка, состоящая из двух — четырех тысяч изображений, ведь чем больше фотографий в каскаде, тем меньше вероятность ошибки (рис. 6).

Подключение каскада.

Рис. 6. Подключение каскада

Теперь нужно выделить лица на основном изображении (originalImage) (рис. 7).

Выделение лиц на изображении.

Рис. 7. Выделение лиц на изображении

Изображение выводится в созданное ранее окно (рис. 8).

Вывод изображения в окно.

Рис. 8. Вывод изображения в окно

Если изображение граббится с камеры, то необходимо завершить ее работу (рис. 9):

Остановка работы камеры.

Рис. 9. Остановка работы камеры

После компиляции приложения требуется провести его тестирование. Запускается приложение через командную строку (рис. 10).

Запуск приложения.

Рис. 10. Запуск приложения

Для того, чтобы загрузить изображение (рис. 12) нужно ввести его имя на диске (рис. 11).

Загрузка изображения.

Рис. 11. Загрузка изображения

Исходное изображение.

Рис. 12 Исходное изображение

В результате, после выполнения, программа выводит обработанное изображение в отдельное окно (рис. 13).

Вывод изображения в окно.

Рис. 13. Вывод изображения в окно

На первой фотографии (рис. 14) из трех в рамки поля зрения программы попало 5 лиц и одно предплечье, что, является ошибкой каскада.

Фото с ошибкой каскада.

Рис. 14. Фото с ошибкой каскада

На второй фотографии (рис. 15) каскад не допустил ошибок, и только лицо девушки программа выделила.

Фото с точным распознанием одного лица.

Рис. 15 Фото с точным распознанием одного лица

Последняя фотография (Рис 16).

Фото с точным распознанием множества лиц.

Рис. 16 Фото с точным распознанием множества лиц

В ходе решения задачи был изучен алгоритм распознавания образов Виолы-Джонса. На основе этого метода на Java было создано приложение, с помощью которого лица на фотографии выделяются рамкой. Данные исследования можно использовать в преподавании [1−4].

  • 1. Баженов Р. И. О применении балльно-рейтинговой системы для оценивания курсовых работ по дисциплине «Интеллектуальные системы и технологии» // Приволжский научный вестник. 2014. № 5 (33). С. 135−138.
  • 2. Баженов Р. И. Об организации деловых игр в курсе «Управление проектами информационных систем» //Научный аспект. 2014. Т. 1. № 1. С. 101−102.
  • 3. Баженов Р. И. Информационная безопасность и защита информации: практикум. Биробиджан: Изд-во ГОУВПО «ДВГСГА», 2011. 140 с.
  • 4. Баженов Р. И. Об организации научно-исследовательской практики магистрантов направления «Информационные системы и технологии» // Современные научные исследования и инновации. 2014. № 9−2 (41). С. 62−69.
  • 5. Бутенко Д. В., Перепелицын А. В. Концепция алгоритма распознавания и анализа лица человека // Программные продукты и системы. 2011. № 1. С. 43.
  • 6. Гонсалес Р., Вудс Р. Цифровая обработка изображений. М.: Техносфера, 2005. 1072 с.
  • 7. Дорогий Я. Ю. Построение офтальмогеометрического классификатора для задачи распознавания человека по лицу // Информационные технологии. Радиоэлектроника. Телекоммуникации. 2012. Т. 2. № 2. С. 24−33.
  • 8. Козлов П. В., Липин Ю. Н., Южаков А. А. Алгоритм распознавания лица человека / /Вопросы защиты информации. 2011. № 1. С. 52−57.
  • 9. Макаренко А. А., Калайда В. Т. Применение нейросетевой технологии для систем распознавания лица человека на групповом изображении // Информационные технологии. 2007. № 9. С. 27−32.
  • 10. Местецкий Л. М. Математические методы распознавания образов. М.: МГУ, 2002. С. 42 -44.
  • 11. Щербань А. Б, Тихонова К. С. Достоинства и недостатки методов распознавания человека по характеристикам лица // Современные информационные технологии. 2010. № 11. С. 196−206.
Показать весь текст
Заполнить форму текущей работой