Найти лицо на Ч/Б фотографии

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Найти лицо на Ч/Б фотографии

Сообщение SSecurity » 10.12.2008 (Ср) 6:26

Всем привет интересует такой вопрос а как можно найти лицо по ч/б фотке.
Ну или группу лиц ...

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

Т.е. по сути надо найти несколько темных пятен ... которые расположены так ... как нужно :)
Все то это так .... только вот как потом эту матрицу по картинке гонять ... чтобы уж наверняка найти .... лицо ведь может быть и на всю картинку и лишь в малой области :)

какие идеи на этот счет?
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Re: Найти лицо на Ч/Б фотографии

Сообщение Alexanbar » 10.12.2008 (Ср) 12:30

Наверное, надо искать резкий перепад яркости.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Найти лицо на Ч/Б фотографии

Сообщение SSecurity » 10.12.2008 (Ср) 12:35

Alexanbar писал(а):Наверное, надо искать резкий перепад яркости.

в принципе да ... но наверное может возникнуть ситуация ... когда фон ярче ... или например неоднороден (листва деревьев к примеру:))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Re: Найти лицо на Ч/Б фотографии

Сообщение Alexanbar » 10.12.2008 (Ср) 16:27

Боюсь, что в общем виде решить задачу тяжеловато.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Найти лицо на Ч/Б фотографии

Сообщение SSecurity » 10.12.2008 (Ср) 17:36

У меня вот мысль была ...
брать картинку и бить на фрагменты ... начинать с 1 и заканчивать например 100
т.е.
1 итерация - все изображение сводим к матрице 5х5 (можно просто через PaintPicture)
2 итерация - изображение состояит из 2х фрагментов ... оба по отдельности сводим ...
....
100я итерация .... сводим 100 фрагментов изображения в отдельности к маленькой матрице

а матрица 5х5 - маска :) типа такой

x x 0 x x
0 0 0 0 0
0 0 0 0 0
0 x x x 0
0 x x x 0

Где 0-пикселы с яркостью большей чем у ближайших X-пикселов
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Найти лицо на Ч/Б фотографии

Сообщение alibek » 10.12.2008 (Ср) 20:22

Все придумано за нас.
Дети учаться выделять лицо по Т-образной структуре. Именно поэтому все нормальные игрушки для маленьких детей всегда имеют ярко выраженное лицо в виде такой Т-образной фигуры.
Lasciate ogni speranza, voi ch'entrate.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Найти лицо на Ч/Б фотографии

Сообщение SSecurity » 10.12.2008 (Ср) 20:39

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

и ...???
ну дети то да ... я так понимаю предполагается .. подобно зрению человека рандомайзом пройтись по изображению ... оценить его а потом белее детально нужные части сравнить с буквой Т? :lol: :lol: :lol: ?
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Найти лицо на Ч/Б фотографии

Сообщение Debugger » 10.12.2008 (Ср) 21:39

Я бы сделал так. Выделил бы на фейсе самые тёмные участки и сравнивал бы их с тёмными участками на фотографии в БД, или где там. Наврядли у двух разных людей одинаковые фонари под глазами. Темные участки брал бы так - взять каждый пиксель, у которого цвет в 1,5 (2;2,5;3...) раза больше среднего цвета пикселя картинки. Еще фишка в том, что начало координац должно лежать в центре лица (около носа). Тогда если на одной фотографии лицо сидело ровно, а на другой - чуть ниже, значение играть не будет. Темные участки одной фотографии могут не совпадать с другой фотографией, и надо подбирать коэффициент совпадения (где-то 75%) (т.к. лицо может наклониться) , сползти, налепиться на стенку, отправиться в свободное плавание или его вообще может не быть на фотографии. Ну, забыл свое лицо дома. С кем не бывает?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Найти лицо на Ч/Б фотографии

Сообщение SSecurity » 10.12.2008 (Ср) 22:09

Debugger писал(а):Я бы сделал так. Выделил бы на фейсе самые тёмные участки и сравнивал бы их с тёмными участками на фотографии в БД, или где там. Наврядли у двух разных людей одинаковые фонари под глазами. Темные участки брал бы так - взять каждый пиксель, у которого цвет в 1,5 (2;2,5;3...) раза больше среднего цвета пикселя картинки. Еще фишка в том, что начало координац должно лежать в центре лица (около носа). Тогда если на одной фотографии лицо сидело ровно, а на другой - чуть ниже, значение играть не будет. Темные участки одной фотографии могут не совпадать с другой фотографией, и надо подбирать коэффициент совпадения (где-то 75%) (т.к. лицо может наклониться) , сползти, налепиться на стенку, отправиться в свободное плавание или его вообще может не быть на фотографии. Ну, забыл свое лицо дома. С кем не бывает?


проблема в том что на фотке лицо надо найти ... описанное выше больше подпадает под "определить чьё это лицо" :))))

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

можно конечно методом хитрых комбинаций .... сделать примерно следующее. взять шаг к примеру 10пкс и
Код: Выделить всё
for X = 0 to длина Step 10
  For Y = 0 to высота Step 10
   '## . Предположить что точка P(X,Y) является центром лица ...
   '## и проверить а есть ли глаза и рот (по методу буквы Т или буквы Y) проверять тоже циклом ...
   '## с постепенным расширением поля ... например 10 x 10, 20x20 ...
   '## 200x200 пока не будут достигнуты границы изображения ...
   PP = 10
   while (X-PP/2 >0 ) and (Y-PP/2>0) and (X+PP/2 <длина ) and (Y-PP/2 < высота)
     '## берем область X-PP/2, Y-PP/2 ... размером PP на PP и проверяем ...
     IF ПохожеНаЛицо THEN
        '## запоминаем координаты и значение PP например в массив
     END IF
     PP = PP + 10
   wend
  Next Y
Next X


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

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Найти лицо на Ч/Б фотографии

Сообщение SSecurity » 10.12.2008 (Ср) 22:17

а чтоб буквы различить нужно персептрон построить хотябы самый простейший :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Re: Найти лицо на Ч/Б фотографии

Сообщение Amed » 14.12.2008 (Вс) 19:13

Я бы сделал первичный вариант алгоритма с помощью эталонной "матрицы лица".

Берем матрицу (WmxHm), скажем, 10х20 (ШхВ) - она будет представлять собой эталонное "лицо". Заполнить ее надо по данным, скажем, десятка эталонных черно-белых лиц. Получится некоторая усредненная картина лица человека.
Затем начинаем накладывать эту матрицу на тестовую фотографию размером (WpxHp), последовательно накладывая ее левый верхний угол во множестве точек (1..Wp-Wm; 1..Hp-Hm).

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

С учетом того, что лица на фотографии могут быть разного размера, алгоритм надо повторять несколько раз над отмасштабированной в каких-то пределах фотографией (100+% от размера "матрицы лица").

Для пущего эффекта надо:
1) использовать несколько эталонных матриц и коррелировать найденные минимумы
2) дополнительно обрабатывать фотографию (возможно, повышать при необходимости контрастность)

---

Наверняка этот метод в частностях окажется неудачным, но он гарантированно дает дальнейшие пути поиска.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 62

    TopList