AndreyF 0 Жалоба Опубликовано December 17, 2012 Всем привет, задался мыслью сделать прогу по распознаванию человека по лицу. Нарыл в нете кучу всего, в итоге есть рабочий код, на EmguCV и vs10(если тут такое не разбирают, то прошу прощения). Но вот проблема, детектирует прога лица нормально, и даже распознает их нормально, при одном условии, что лица ЕСТЬ в базе. Как можно сделать, чтоб прога распознавала и те лица, которых нет в базе, например "никак" =) если нет совпадений то и ничего не надо выводить (никаких имен). В голове никак не могу уложить, как это реализовать. Камера видит человека, и просто "находит" его лицо, если нужно, нажимаем "сохранить" и изображение попадает в базу и камера возвращается в положение обычного детектора, опять же находит лицо, и если перед ней стоит знакомый, то она говорит типа "ты вася" если незнакомый, то соответственно ничего не говорит. Прикрепил txt-файл с кодом проги, может кто посмотрит. В коде она так же выделяет лицо, сохраняет в базу, если это вася то она пишет ты вася, а если подошел другой человек, то вместо того чтоб сказать я тебя не знаю, говорит ты вася. Тоесть незнакомца она называет именем последнего сохраненного.Face.txt Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 17, 2012 Насколько я понимаю, здесь для идентификации лиц используется метод главных компонент (PCA). Описание метода можно найти на этом форуме и много еще где, повторяться не буду. "Похож - не похож" - определяется расстоянием (обычно используется метрика Махаланобиса) между проекциями лиц на собственный базис, проще всего, если нужно найти самого похожего из имеющихся (просто находим до какого из имеющихся в базе лиц меньше расстояние). Если нужно отсеять "неопознанных", нужно ввести некоторое предельное расстояние (выбирать придется экспериментально), при превышении которого лицо считается неопознанным. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах