Как получить «снимок» из квадратов обнаружения лиц?

Я создаю приложение, которое будет делать снимок всего тела одного человека и создавать для него «mugshot».

] Mugshot означает изображение всего лица, шеи, волос и ушей человека того же размера, что и другой снимок.

В настоящее время я использую
http://askernest.com/archive/2008/05/ 03 / face-detection-in-c.aspx
для реализации OpenCV, и я использую

harrcascade_frontalface_default.xml  
harrcascade_frontalface_alt.xml  
harrcascade_frontalface_alt2.xml  
harrcascade_frontalface_alt_tree.xml

в качестве своих каскадов.

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

Моя проблема состоит из трех частей.

  • Мой текущий процесс довольно медленно. Как я могу ускорить процесс обнаружения?
    Изменить: Я обнаружил, что время обработки напрямую связано с размером фотографии. Уменьшение размера фотографий может оказаться полезным.

  • Один каскад не обнаружит все лица, с которыми я сталкиваюсь, поэтому я использую их все. Это, конечно, дает множество различных квадратов и несколько ложных срабатываний. Какой метод я могу использовать для выявления ложных срабатываний и исключения их из расчета среднего квадрата? напр. SandmanWayne
    Изменить: I ' m реализует среднее значение в пределах стандартного отклонения. Скоро отправлю код.

  • Я не совсем уверен, как лучше всего найти фотографию, учитывая квадратные координаты лица. Где я могу найти соотношение лица и фотографии?
    Редактировать: Решено. Предполагая, что все мои головы - это пропорции их лиц.

     static public Rectangle GetMugshotRectangle (Rectangle rFace)
    {
     int y2, x2, w2, h2;
    
     // настраиваем по мере необходимости
     двойной heightRatio = 2;
    
     y2 = Convert.ToInt32 (rFace.Y - rFace.Height * (heightRatio - 1.0) / 2.0);
     h2 = Convert.ToInt32 (rFace.Height * heightRatio);
     // отношение высоты к ширине на фотографиях 1,25: 1
     w2 = Convert.ToInt32 (h2 * 4/5);
     x2 = Convert.ToInt32 ((rFace.X + rFace.Width / 2) - w2 / 2);
    
     вернуть новый прямоугольник (x2, y2, w2, h2);
    }
    

    Sandman
    Мне просто нужно избавиться от этих ложных срабатываний.

Хорошо, сделайте 4 проблемы.

  • Наша камера, которую мы будем использовать, в настоящее время вышла из строя, поэтому у меня нет метода захвата изображений на момент. Где я могу найти изображения всего тела людей, которые не являются чистыми, как поиск изображений в Google для изображений всего тела?
    Редактировать: «Человек стоящий» Хороший поиск:)

17
задан Biff MaGriff 26 April 2011 в 18:00
поделиться