![]() |
|
|
![]()
|
|
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Я бы выделял отдельные черты лица (глаза, рот, и т.п.) и считал соотношения размеров элементов и расстояний, лежащих в одной плоскости. Например, соотношение между расстоянием между глазами и шириной рта должно быть достаточно надежной характеристикой. Потом сравнивал бы эти характерискики для разных фотографий. По-моему на этом и основывается автоматическое распознавание лиц, а не на моделировании всего лица. Но я не специалист - просто читал где-то-что-то про автоматизацию отлова террористов в аэропортах.
ИМХО если решишь задачу с достоверностью результата близкой к достоверности зрительного сравнения фотографий, то много лет сможешь питаться, разъезжая по миру с лекцией "Как мне удалось это сделать". -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Проблема в том, что если ракурс изменен, то эти осонвные точки уже будут не в одной плоскости. Поэтому я и восстанавливаю 3D. А сравнивать разумеется будем по основным элементам. Спасибо за совет. |
|||
|
||||
| dereyly |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Здравствуй, сложной задачей ты занимаешься, но надеюсь у тебя все получится... Вот есть пару ссылок работы 2х комерческих программ:
1. Демонстрация построения 3D модели лица 2. Сайт faceApi, советую скачать демку для веб камеры |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Мне кажется там хитрость в том, что сравниваются только те характеристические соотношения, которые можно определить на обеих фотографиях. Остальные же просто игнорируются. Ну и, понятно, таких соотношений должно быть много, чтобы статистически исключить шум. Кстати, если человек ни разу не попадал под трактор, линия рта и линия глаз у него параллельны и, соответственно, всегда лежат в одной плоскости -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Я вот еще подумал. Для выбора характеристических признаков можно покопаться в принципах сборки милицейских фотороботов.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| dereyly |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Идея интересная вот только, как их БД вскрыть, так как обычно формат элементов находится во внутреннем представлении. |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
А можно ли попытаться не строить 3 Д с нуля, а сделать базу из 3Д моделей лиц, а потом надожить фото как текстуру? А по фотографии определить какая из доступных моделей подходит лучше всего и еще сделать модели так, чтобы можно было изменять полноту лица, расстояние между бровями и другие параметры?
|
|||
|
||||
| DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
Если при этом правильно организовать хранение этих самых моделей - в виде дерева - то поиск по базе можно будет заметно ускорить... Добавлено через 2 минуты и 33 секунды
А Вы в состоянии написать программу эффективно работающую с изображениями фоторобота? Они сделаны для восприятия человека и заметно избыточны, причем часто с огромной погрешностью в пропорциях... -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Извиняюсь, я, видимо, недостаточно ясно выразил свою мысль. Она не в том, чтобы програмно собирать фоторобота. Я просто предлагал покапаться в принципах его сборки. Для того, чтобы понять какие признаки могут быть характеристическими, а какие нет. А уж описывать эти признаки придется самому и именно в удобной для компьютерной обработки форме. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Вот есть программа, она делает 3Д модель лица по 3-м фотографиям: в фас, левый профиль, правый профиль. Называется FaceGen Modeller 3.1.2. Скачать можно тут, но учтите, что Демо-версия не сохраняет модель(посмотреть можно, а воспользоваться - нет). http://www.facegen.com/
Если есть эти 3 фотки, то можно сделать 3Д по ним, а потом просто развернуть модель в нужный ракурс, наложить текстуру, применить фильтры (ну чтобы 2 сравниваемых изображения обладали более-менее одинаковыми свойствами), а потом сравнить эти 2 фотки (уже в одинаковых ракурсах). Для сравнения проще всего попиксельное, но можно и нейросеть обучить, можно и основные елементы выделить, кому как, я бы использовал нейросеть, так как когда-то я с ними сталкивался, а вот как выделить основные елементы лица если угол поворота более 20-25 градусов я так и не разобрал. Ну это еще можно почитать. Основной неодстаток проги - то, что у меня, по крайней мере, она моделила 3Д но текстуру не наложила, то есть модель сгенерировала очень похожую на фотки, но цвет кожи, волосы, макияж, и все остальное благополучно отбросила, получился этакий Вин Дизель, но черты лица такие, как на фотках. Пришлость экспортировать модель из проги в 3Д макс и там уже наложить текстуру. Потом я по теням определил насколько нужно изменить ракурс (насколько повернуть по Ох Оу Oz) и сравнил попиксельно (дало 86.324% сходства) и методом нейросетей (91.454%). Нейросеть делал сам, пользовался http://depositfiles.com/files/urhq14jpd http://www.basegroup.ru/library/analysis/neural/math/ http://masters.donntu.edu.ua/2007/kita/mik...s/ind/index.htm http://daily.sec.ru/dailypblshow.cfm?rid=5&pid=4425 И еще много чем. Вообще довольно геморно получается, но единственное понятно: по одной фотографии восстановить 3Д не получится. Или получится с большими погрешностями. Думаю нужно попробовать написать прогу, которая хотя бы по 3-м фоткам (фас, левый профиль, правый профиль) восстановила 3Д и изменила нужным образом ракурс, наложила текстуру и сравнила полученные изображения. Причем мне понравился метод FaceGen Modeller 3.1.2 там ты на фотки накладываешь сетку из основных точек - вроде это результативнее, чем тратить машинное время на определение их внутри программы. Хотя можно и так. Итак, господа форумчане, хочу услышать отзыв. Это сообщение отредактировал(а) galileopro - 13.7.2009, 16:28 |
|||
|
||||
| DRUID3 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 20.6.2005 Где: Kyyiv Репутация: 2 Всего: 9 |
galileopro
Ну вобщем-то интересно...Но... Но я думал мы обсуждаем несколько иное. У ментов есть систем где вводится фотка (понятное дело никаких 3-х ракурсов в помине нет) а с телекамер(например в аэропорту) непрерывно сканируется изображение на совпадение. И ежу понятно - масштаб совершенно иной, угол захвата и падения освещения - произвольный... Системы - реальные, "принятые на вооружение", для работы достаточно одноядерного процессора ~3GHz (не знаю правда плавающая точка там или фиксированная)... Вобщем, как верно подметил Dims...
Именно. Причем точно так же придется делать и для эталона(образцовой фотографии) и для сканируемой... Построить модель в виде графа. Причем поиск производить по сильно упрощенной модели(то же расстояние глаза-нос-рот). Если есть вхождение в диапазон совпадений - усложнять модель и снова сканировать и т.д. Если камера будет высокого разрешения - можно будет еще сравнивать расцветку полигонов(образованных ребрами графа) тем же вейвлет-преобразованием Добеши, например... Почему вейвлет? опять же, можно останавливаться на произвольном уровне детализации при несовпадении... Да... с масштабами будет нелегко, и даже не знаю как правильно. Наверное нужно модель в виде графа сводить к какой-то общей величине. Толи общей сумме весов ребер, то ли к общему объему занимаемому 3-D моделью. Что менее ресурсоемко... Добавлено через 6 минут и 59 секунд Да, еще хотел добавить что нестОит сюда пока тянуть никаких нейронных сетей... Блин, это какая-то новая эпидемия... Нейронные сети это основа физической машины нашего мозга, а отнюдь не ИИ вообще, основа искусственного интеллекта - математика... Вот эти самые НС между задачей и ее моделью, как Java между конкретной архитектурой процессора и ленью программиста общим командным интерфейсом... Т.е. можно но быстрее и правильнее без них... Тем более что их смешали уже и с сетями Вольтерии(которые вообще не из этой степи) и мноигим чем еще... Слово очень модное, почти как нанотехнологии... Добавлено через 8 минут и 56 секунд Кстати, достойная задача для CUDA... -------------------- Every time if you use Linux, you are joined to the communism... практика - критерий истины ... отделенной от нас пропастью субъективного восприятия... |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Ясно. Просто хотелось побыстрее получить результат.
Сейчас пытаюсь реализовать такое: 1) Определить местоположение лица. Здесь я пробовал так: Выделяю кожу по цвету if (!((r > g) && (r > b) && (b > 20) && (r > 95) && (b > 20) && (abs(r - g) > 15) && (max(r,g,b)-min(r,g,b) > 15))) беру Лапласиан и выделяю контуры, d2f = 4*z5 - (z2 + z4 + z6 + z8) Здеся как и советуется в http://masters.donntu.edu.ua/2007/kita/mik...s/ind/index.htm с сглаживающей Гаусовской функцией, потом нахожу замкнутый контур, который приближенно имеет форму эллипса или на него можно наложить 2 параболы. 2) Преобразую в бинарное, и определяю расстояние между ушами, потом на линии ушей делая квадратик как сказано в http://www.iai.dn.ua/public/JournalAI_2004...Tukhtasinov.pdf и масштабирую под другой масштаб (оба изображения под один, равный максимальному размеру из 2-х данных) 3) Нахожу источник света по теням и областям высокой яркости (здесь тоже свертки из http://masters.donntu.edu.ua/2007/kita/mik.../ind/index.htm). Тут проблема такая: хотелось бы максимально выровнять яркость по направлению источника света. 4) Наклон поверхностей - метод градиентного спуска, и это действительно, как упоминалось, дает приближенную 3D модель. 5)Построить модель в виде графа. Сейчас это и делаю. Как получится - напишу. Спасибо за помощь. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |