2010-11-26 11 views
12

No estoy seguro de si esto es solucionable, pero creo que preguntaré de todos modos.Cómo comprobar si una imagen contiene una cara y es razonablemente visible

En mi empresa trabajamos con campamentos de reclutamiento masivo donde pequeños equipos de 5 a 10 personas van a un pueblo e inscriben personas. La inscripción implica ingresar algunos datos, capturar huellas dactilares y tomar una foto de fondo del usuario final usando una cámara web. Es comprensible que la inscripción sea realizada por proveedores externos a quienes hemos subcontratado la actividad.

Dado que el número de registros es abrumadoramente grande, intentar verificar los registros manualmente hace que todo el proceso sea lento. Así que hemos automatizado tantas cosas como sea posible excepto por una cosa, que es verificar si la foto capturada usando la cámara web es de buena calidad.

Sé que "buena calidad" es un término vago que no se puede traducir a una solución basada en software. Sin embargo, al tratar de definir la buena calidad para mí, encontré esto: http://en.wikipedia.org/wiki/Image_quality

Ahora, finalmente llego a mi pregunta, ¿qué partes de estos controles de calidad de imagen se pueden automatizar?

Nota: Las fotografías se imprimirán en una tarjeta inteligente en tamaño de sello. Apenas serían 100x125 píxeles a 300 DPI.

Saludos, Raghu

+1

Sé que algunas cámaras nuevas tienen "características de reconocimiento facial", por lo que obviamente alguien ha dedicado tiempo a esto. ¡Buena suerte! –

Respuesta

4

La biblioteca openCV tiene un gran código para detectar rostros. Puede manipular algo usando la detección de rostros openCV como un umbral para la calidad de imagen: si detecta una cara con éxito, probablemente sea bastante buena. http://sourceforge.net/projects/opencvlibrary/

+1

En realidad terminé usando esta técnica. Usé EmguCV, un contenedor .NET alrededor de la biblioteca OpenCV y utilicé la detección de rostros basada en HaarCascade. Para eliminar falsos positivos, también trato de buscar otras características faciales como ojos, nariz y boca. Si se encuentran al menos 2 características, concluyo que la foto es de calidad aceptable. El sistema ha estado en funcionamiento durante un par de meses y parece estar funcionando bien, excepto por unas pocas fotografías con poca luz. – Raghu

6
+1

En realidad, esto no es una mala idea, unos 6 meses antes del lanzamiento de Kinnect que estaba haciendo "encontrar las manos izquierda y derecha y marcar la cabeza", y por lo que parecía podía jurar que era la entrada en la Kinnect capturando Creo que MS lo estaba usando para mejorar sus algoritmos de detección de rostros y manos. –

7

El algoritmo de Viola-Jones es un clásico. Here puede encontrar un documento sobre su implementación, pero encontrará muchos recursos disponibles.

Mi imagen preferida:

alt text

Here se puede encontrar un marco para la aplicación de la .Net alg. (es gratis)

Ps: Tenga en cuenta que algunas formas de vida extraterrestres pueden devolver falsos positivos.

+0

Enlace roto para la implementación de .NET Me temo, pero [este] (http://accord-framework.net/) podría estar en el reino ... 'Accord.Vision.Detection.HaarObjectDetector'? – PeterX

2

La detección de rostros es un tema de investigación y documentos muy activos y se publica todo el tiempo en conferencias de visión artificial como ECCV, ICCV. En este año ECCV2010 había incluso un workshop on face detection. Entonces, sí, se puede resolver en un grado razonable.

Si fuera usted, construiría algo bastante simple, pero que puede hacer frente a los elementos esenciales de la iluminación, el color de la piel y la varianza del encuadre. No necesitarás algo sofisticado como Viola-Jones si sabes que las imágenes generalmente serán instantáneas. Debería construir un sistema de verificación de fotografías (¿esta imagen se ve como una foto policial?) En lugar de un sistema de detección de rostros (¿dónde están las caras en esta imagen?).

Primero, simplemente compruebe lo básico en la imagen, por ejemplo, usando un histograma de intensidad para asegurarse de que la iluminación sea correcta (no demasiado brillante, demasiado oscura), que la imagen tenga contraste (diferentes tonos), etc.

Luego, podría construir un sistema de verificación de rostro/ficha: construya un espacio de cara como en el clásico 'Eigenfaces for Recognition', y luego determine si cada ficha policial es suficiente como una ficha policial en este subespacio. (Esta es una técnica bastante simple y hay muchos códigos disponibles en la web para hacerlo).

Cuestiones relacionadas