![]() |
|
|
![]()
|
|
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Нужно сравнить 2 фотографии людей, и сделать вывод: одинаковые люди изображены или нет.
Вот ради примера 2 фотографии: ![]() ![]() Это одна и та же актриса. Нужно установить сходство программно. Пока у меня получилось лишь выделить лицо по цвету (OpenGL под C# и Tao):
Вот скрин: ![]() Но теперь нужно изменить ракурс изображения, чтобы можно было сравнить со второй фотографией. Нужно как-то "развернуть" лицо в "фас". Как это сделать пока не знаю. Если кто может - подскажите. Это сообщение отредактировал(а) galileopro - 6.7.2009, 01:18 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
galileopro, я бы сам по этим фоткам затруднился сказать один и тот же ли это человек...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Одна вообще. Просто у меня кроме её портфолио больше нет на примете фотографий, чтобы ракурсы разные были. Если у кого есть, то дайте ссылку, я запущу программу с другими фотками и скину скрин.
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Первая мысль: сделать голову объемной (исходя из теней), наложить текстуру и потом повернуть. Половина объекта будет без текстуры, но по крайней мере будет один ракурс... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
1) Как сделать её объемной исходя из теней сам щас пытаюсь понять.
2) А как вычислять уголповорота? Я не могу никак определить базовые точки на лице, чтобы определить направление вектора нормали к плоскости лица. Есть вот это http://www.iai.dn.ua/public/JournalAI_2004...Tukhtasinov.pdf но там лицо в фас, а у меня нет, и поэтому гикстограмма яркости сильно искажена и по ней трудно определить линии глаз, нос, губы... Это сообщение отредактировал(а) galileopro - 6.7.2009, 01:37 |
|||
|
||||
| NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: нет Всего: 13 |
Трындец. И здесь день эзотерики. Для тебя эта задача неразрешима. Можешь закрывать тему.
-------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
||||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
NightmareZ, а для тебя разрешима?
|
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Насколько я знаю, эта задача вообще пока что неразрешима.
Есть методы, например, путём вычисления собственных значений (алгоритм eigenfaces). Есть и другие. Но, думаю, все эти методы (1) позволяют лишь сравнивать лица в одном ракурсе и (2) требуют обучения программы. В Вашем случае, будут две большие проблемы: 1) нужно восстановить 3-мерную модель лица; для этого нужно найти источник света, вычислить наклон поверхностей, учесть макияж и т.п. Эта задача будет сложна сама по себе, потому что данных наверняка недостаточно. То есть, алгоритм тоже должен быть обучаемый и после обучения он должен "знать" о том, что такое лицо в принципе, чтобы делать правильные предположения о том, как идёт 3d поверхность в неясных случаях. 2) Нужно сравнить две 3-мерные модели Это тоже будет сложная задача, потому что модели не будут одинаковыми. Во-первых, из-за ошибок и искажений, возникших на предыдущем этапе, во-вторых, из-за того, что любое лицо немного меняется естественным образом и, наконец, из-за несоответствия масштабов. То есть, алгоритм тоже должен будет много знать, чтобы правильно отделить важные отличия от второстепенных. |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Поповуду сравнения. Считается чтобы точно сравнить надо вычислить растояния между глазами носом и ртом.
Но в твоем случии придется еще востанавливать 3D. 1) Выделить овал лица. Тут предлогаю применить выделение границ. Советую найти реализацию Canny. В OpenCV уже есть. Хотя тут можно и ручками сделать. Просто локальный максимум. 2) Предлогаю сделать так. При помоще градиента вычисляем наклон и высоту пикселей. Это даст примерную 3D модель. отдаю свою идею. Корреляция с обратной связью. Суть в том задем начальное приблежение. Ввиде поворотной матрицы. Примерно совподали лица после поворота. После считаем корреляцию. Пробуем поворачивать на некотоый угол alfa + и - смотрим где корреляция больше если +alfa то прибовляем Если корреляция больше при в данной позиции в 0. Пробуем поворачивать по другой оси beta. Если и в этом случии максимум при 0 то уменьшаем alfa и beta в неско раз к примеру в 2. И так до тех пор пока alfa и beta не станут очень маленькими. Поповоду соовмещения по координатам, то корреляцию считать не как коэфициент, а как функцию. Думаю будет точнее. Хотя можно поступить по аналогии с глами. Для ускорения рассчета корреляции можно брать не все точки. По поводу начальных приблежений их можно как задать ручками так и вычислить припомощи статестических моментов. Но боюсь тут погрешность будет большая. |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Ясно. Я это и пытаюсь сделать, а именно: построить 2 3-х мерные модели лица. Уже кое что получилось. Выложу скоро код и скрин.
Как раз так я и начал строить. Ты не обижайся, просто нечто похожее я накопал в Интернете. Проблема возникает с шумами, с тем, что изображение иногда подвергают изменениям, после фотографирования (серпия, визуальные эффекты, это все дает большие погрешности). Вообще уже кой чего получилось, но модели очень непохожи за счет случайных факторов. Если лицо в "фас" то 3D модель построить легче. А вот если повернуто, то может кто-то знает, как направить свет в фас, а не так как на фотографии. Я по теням вычислил вектор источника светпа, и он направлен сбоку, а это влечет большие трудности. Задача: Переделать ![]() так, чтобы свет был в лицо актрисе направлен, а не произвольно. Надо позарез. Это сообщение отредактировал(а) galileopro - 6.7.2009, 20:02 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Я думаю, что погрешность будет все равно очень большая. Но она и в жизни такая же (метод: на глаз)... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Придумал:
Надо сначала "отключить" старый источник света, то есть яркость равнораспределить(получится какое-то полутоновое изображение), а потом с помощью OpenGL вроде можно установить новій источник света(по направлени лица, а для єтого енужно вічислить расположение глаз и носа, через 3 точки проводим 2 вектора, и их векторное пр-е - єто направляющий вектор лица(он перпендикулярен плоскости лица). Только как устанавливается источник света в OpenGl - это еще мне надо изучать. Ах да , а потом делаем GetPixels() и вуаля, вот новая фотка, а свет уже в фас. Дело в том, что я хочу по яркости пикселей постороить саму модель. Ведь выпуклые части лица при свете в фас осветятся наилучшим образом, а вогнутые плохо, и тогда яркость пиксела - это характеристика его местоположения в 3D модели Это сообщение отредактировал(а) galileopro - 6.7.2009, 20:15 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
но как уже сказали есть нюансы... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| galileopro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.6.2009 Где: Харьков Репутация: нет Всего: нет |
Вот все думаю, поможет ли моя идея направить свет в "фас". Пока я попробовал просто построить 3D по яркости пикселов и получилось вот єто:
![]() ![]() Жуткий бред. Можно попытаться смоделировать полигонами. Может будет лучше, но вообще что-то плохо. Сделал процедуру для выравнивания яркости вот теперь думаю, если выровнять яркость, потом расположить прямо перед лицом её источник света, то модель улучшится? Судя по предварительному результату - неясно. Это сообщение отредактировал(а) galileopro - 7.7.2009, 10:31 |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |