Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Поиск лица на фотографии и сравнение его с базой


Автор: Chilintano 15.3.2009, 23:39
Всем привет!
У меня стоит задача определить, является ли человек на фотографии, полученной с веб-камеры, пользователем системы или нет, сравнив полученный снимок со снимком в БД.
Для этого необходимо найти черты лица на фото, затем отметить основные антропометрические точки лица, но как найти лицо и отметить точки я не знаю.

user posted image

Похожая задача была тут http://forum.vingrad.ru/forum/topic-186484/unread-1/kw-%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BB%D0%B8%D1%86-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%BE%D1%82%D0%BE/hl/%25D1%2580%25D0%25B0%25D1%2581%25D0%25BF%25D0%25BE%25D0%25B7%25D0%25BD%25D0%25B0%25D0%25B2%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5+%25D0%25BB%25D0%25B8%25D1%2586%25D0%25B0/index.html

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

Подскажите, как мне определить на фото лицо и как выделить указанные точки!!!

Автор: leneCaress 18.3.2009, 14:46
вообщем мысль первая - поиск зон где имеет смысл искать лица (во всяком случае в цифромыльницах) осуществляется по цвету (цвет лица штука довольно мало где еще встречающаяся в природе или в интерьере)

мысль вторая - для распознавания некоторых опорных точек можно применять корреляционный метод.

мысль третья - сначала находи глаза возможные положения глаз(корреляционным методом, например... хотя можно и нейросетью), потом находи точки которые лучше всего подходят под геометрическое положение глаз.

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

а вообще - такие штуки - это типа ноу-хау =)
совершенно нормально что их никто не описывает.

Автор: Pavia 19.3.2009, 22:12
Плохо искал. Есть обзорная статья по методам там все расписанно довольно хорошо. Но если копать еще в глубь то можно найти еще больше методов.
Там и твой рисунок.
http://neuroface.narod.ru/files/preprint_neuroface.rar

На сайте доступны также и исходники.
http://neuroface.narod.ru/

Обычно используют skin effect.  Пробуют на изоброжении найти цвета близкии к коже. Алгоритм много где описан и даже реализован в OpenCV.  Есть работы которые ищут лица без привязки к цвету кожы.

Дальше пробуют выдилять особенности. Можно заметить что самым популярным является алгоритм Виоллы Дженнис который легко найти в интернете. И распознование при помощи нейронной сети.
Еще пополярным является разложение Габора и др. 

Я думаю без труда можно нарыть исходники на языке java

Автор: azesmcar 19.3.2009, 22:25
http://www.codeproject.com/KB/audio-video/face_detection.aspx

вот еще..определения месторасположения лица на C++

Автор: dereyly 22.3.2009, 02:09
Цитата(Pavia @ 19.3.2009,  22:12)
 Можно заметить что самым популярным является алгоритм Виоллы Дженнис который легко найти в интернете. 

Интересно, можете дать ссылку или латинское написание

А распознавать чем только не пробовали
- Нейронные сети:
-- LVQ
-- MLP
-- Хопфилд
-- Сверточные НС
- Методы главных компонент и лица фишера
- Марковские модели

Так же некоторые использовали фильтры Габора, Фурье преобразование, представление Собеля

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

Автор: Pavia 22.3.2009, 03:25
Цитата(dereyly @  22.3.2009,  02:09 Найти цитируемый пост)
Интересно, можете дать ссылку или латинское написание

Вот ихняя статья.
http://research.microsoft.com/en-us/um/people/viola/pubs/detect/violajones_ijcv.pdf

Автор: dereyly 22.3.2009, 19:55
Спасибо,
Оказывается я уже читал эту статью =), 
Любопытное использование Хааровских примитивов и алгоритма Адабуст. Вроде бы в OpenCV реализовали этот алгоритм, хоть переобучить его мне там неудалось, а с перепрограммированием зашился =(

Автор: OldMauser 29.4.2009, 04:17
Chilintano, получилось у вас решить поставленную задачу? Я сам работаю над этой задачей, те же проблемы что и у вас..

Автор: k0s 28.5.2009, 20:38
2 Chilintano очень интересная тема, почему вы считаете что нужно найти именно антропометрические точки лица? 

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

Автор: Queuego 5.11.2022, 10:26
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)