tutorial recognition net libreria for emgu code c# face-detection

c# - recognition - ¿Cómo obtener una "foto" de los cuadrados de detección de rostros?



libreria opencv c# (3)

Le sugiero que utilice el archivo de cascada Haar del cuerpo superior que le devolverá el rectángulo hasta el hombro. Por favor, encuentre el archivo en cascada de Cabeza y hombros en " http://alereimondo.no-ip.org/OpenCV/34 "

Estoy creando una aplicación que tomará una imagen del cuerpo entero de una sola persona y producirá una "foto policial" para esa persona.

Mugshot significa una imagen de toda la cara, cuello, cabello y orejas de la persona con el mismo tamaño general de otro mugshot.

Actualmente estoy usando
http://askernest.com/archive/2008/05/03/face-detection-in-c.aspx
para implementar OpenCV y estoy usando

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

como mis cascadas.

Uso todas las cascadas porque una sola no detectará todas mis caras. Después de que me detecten todas las caras detectadas por todas las cascadas, encuentro mi escuadra promedio y la uso para mi estimación final de qué tan alto y ancho debería ser el mugshot.

Mi problema es de 3 partes.

  • Mi proceso actual es bastante lento. ¿Cómo puedo acelerar el proceso de detección?
    Edición: Estoy descubriendo que el tiempo de procesamiento está directamente relacionado con el tamaño de la foto. Reducir el tamaño de las fotos puede resultar útil.

  • Una sola cascada no detectará todas las caras que encuentro, así que las estoy usando todas. Esto, por supuesto, produce muchos cuadrados variados y algunos falsos positivos. ¿Qué método puedo usar para identificar falsos positivos y dejarlos fuera del cálculo del cuadrado promedio? ex.
    Edición: estoy implementando un promedio de valores dentro de la desviación estándar. Publicaré el código pronto.

  • No estoy exactamente seguro de cuál es la mejor manera de encontrar la foto de toma dado las coordenadas cuadradas de la cara. ¿Dónde puedo encontrar proporciones cara a foto?
    Edición: Resuelto este. Suponiendo que todas mis cabezas son proporciones de sus caras.

    static public Rectangle GetMugshotRectangle(Rectangle rFace) { int y2, x2, w2, h2; //adjust as neccessary double heightRatio = 2; y2 = Convert.ToInt32(rFace.Y - rFace.Height * (heightRatio - 1.0) / 2.0); h2 = Convert.ToInt32(rFace.Height * heightRatio); //height to width ratio is 1.25 : 1 in mugshots w2 = Convert.ToInt32(h2 * 4 / 5); x2 = Convert.ToInt32((rFace.X + rFace.Width / 2) - w2 / 2); return new Rectangle(x2, y2, w2, h2); }


    Solo necesito deshacerme de esos falsos positivos.

Ok haz que 4 temas.

  • Nuestra cámara que usaremos actualmente está fuera de servicio, por lo que no tengo un método para capturar imágenes en este momento. ¿Dónde puedo encontrar imágenes de cuerpo completo de personas que no sean pron las palabras puras como la búsqueda de imágenes de google para imágenes de cuerpo completo?
    Edición: "Persona de pie" Hace una buena búsqueda :)

Ok, lo descubrí pero el proyecto está en el hielo por el momento.
No tengo la fuente para pegar ya que la VM tarda una eternidad en cargarse.
Si alguien está realmente interesado, hágamelo saber y lo publicaré.
Si ves algo que parece que podría hacerse mejor, házmelo saber.

Los pasos que tomé fueron los siguientes.

  1. Cargue la imagen, si es mayor de 500 píxeles en altura o ancho, cree una nueva imagen de una versión reducida a un máximo de 500 px de altura o ancho. Guarda la escala.
  2. Ejecute la implementación de C # OpenCV en http://askernest.com/archive/2008/05/03/face-detection-in-c.aspx en todas las caras frontales de Harrcasscades en Harrtraining .
  3. Por alguna razón, los rectángulos producidos por Ask Ernest deben ampliarse 1.3X
  4. Con los rectángulos generados use la desviación estándar para eliminar los falsos positivos. Hice esto para cada esquina del rectángulo, encontrando la distancia a la que cada esquina del rectángulo estaba fuera de la ubicación promedio de la esquina. Tomé nota de cualquier rectángulo que tuviera una esquina fuera de lugar y lo eliminé de la lista de rectángulos candidatos.
  5. Obtenga el rectángulo promedio de los rectángulos restantes y aplique "GetMugshotRectangle" desde arriba en la pregunta.
  6. Escale el rectángulo de la foto instantánea utilizando la escala que guardamos en el paso 1.
  7. Recorte la foto policial de la imagen original y guárdela en su nueva ubicación.

¡Hecho!


Una sola cascada podría hacer lo que todas sus cascadas hacen si se configura de esta manera, y además no le ofrece varios resultados para juzgar. Las cascadas que utiliza pueden ser diferentes en la colección de imágenes de enseñanza de las que están hechas o en algunos parámetros.

Un tutorial sobre cómo construir una cascada propia se puede encontrar here . Sería útil obtener las imágenes utilizadas para entrenar las cuatro cascadas que utiliza, pero no sé si están disponibles públicamente.