Búsqueda de patrones. La búsqueda de patrones es una técnica de análisis que se puede aplicar en detección de objetos, reconocimiento, seguimiento y correspondencia. Idea de la técnica: dada una imagen (un patrón o modelo) encontrar sus apariciones dentro de otra imagen mayor. No se buscan sólo las apariciones “exactas”, sino permitiendo cierto grado de variación respecto al patrón. Ejemplo. Buscar el patrón:
en la imagen dada. Resultado: nº de aparicio-nes, localización de cada una y “verosimilitud”
Búsqueda de patrones. El método más sencillo de búsqueda de patrones es el template matching (comparación de plantillas). Template matching: sea A una imagen (de tamaño WxH), y sea P un patrón (de wxh), el resultado es una imagen M (de tamaño (W-w+1)x(H-h+1)), donde cada píxel M(x,y) indica la “verosimilitud” (probabilidad) de que el rectángulo [x,y] – [x+w-1, y+h-1] de A contenga el patrón P. La imagen M se define usando alguna función de diferencia (o similitud) entre dos trozos de imagen. M(x,y):= d({A(x,y),…,A(x+w-1,y+h-1)}, {P(0,0),…, P(w-1,h-1)}) Ejemplo. Suma de diferencias al cuadrado: M(x, y):= ? ? (P(a, b) – A(x+a, y+b))2 a= 0..w-1 b= 0..h-1 Es parecido a una convolución (pasar una máscara por toda la imagen)
Búsqueda de patrones. Ejemplo. Template matching con suma de diferencias al cuadrado. Imagen de entrada A (239×156) P – patrón a buscar (68×37) Mapa de matching M Mapa superpuesto 6,58·106 125,3·106
Búsqueda de patrones. Los valores bajos (color oscuro) indican alta probabilidad de que el patrón se encuentre en esa posición (esquina superior izquierda). Los valores altos (color blanco) indican probabilidad baja. ¿Cuánto es alto o bajo? ? Normalizar el resultado. Normalización: dividir el resultado por: sqrt( ? ? P(a, b)2 · ? ? A(x+a, y+b)2) a= 0..w-1 b= 0..h-1 a= 0..w-1 b= 0..h-1
Ejemplo. Diferenciasal cuadradonormalizadas. Mínimo: 0,119 Media: 2,5
Búsqueda de patrones. Se pueden usar también otras medidas de distancia. Ejemplo. Producto escalar de patrones “centrados”. M(x, y):= ? ? (P’(a, b)·A’(x+a, y+b)) a= 0..w-1 b= 0..h-1 donde P’(a,b):= P(a,b) – Media(P). Lo mismo para A’. El valor (normalizado) está entre -1 y +1. Cuanto mayor (más próximo a +1) más probabilidad. Imagen de entrada, A Patrón, P Mapa de matching, M 0,947 Esto es lo que se llama la correlación
Búsqueda de patrones. Una de las principales aplicaciones del template matching es la detección de objetos. Proceso de detección de objetos usando búsqueda de patrones. 1) Conseguir un patrón, P, representativo de la clase de objetos a buscar. 2) Aplicar el template matching a la imagen, obteniendo M. 3) Buscar los máximos (o mínimos) locales de M. 3.1) Buscar el máximo global, (lx, ly)= argmax?x, y M(x, y). 3.2) Si M(lx, ly) es menor que cierto umbral, acabar. 3.3) Añadir la posición (lx, ly) a una lista de localizaciones resultantes del proceso. 3.4) Poner a cero en M el rectángulo [lx-w,ly-h]–[lx+w,ly+h]. 3.5) Volver al paso 3.1.
Búsqueda de patrones. Ejemplo 1. Detección de objetos con template matching. Imagen de entrada, A Patrón, P Resultados: Posición (97, 87) con: 0.947 Posición (93, 10) con: 0.941 Posición (161, 47) con: 0.939 Posición (12, 24) con: 0.906 Posición (20, 121) con: 0.899 Posición (165, 9) con: 0.332 Mapa de matching, M
Búsqueda de patrones. Pero, normalmente, el problema no es tan sencillo. Las clases de objetos presentan mayor variabilidad, y pueden haber variaciones de tamaño y rotación. El umbral debe bajarse, produciendo falsos positivos. Ejemplo 2. Detección de caras humanas. Imagen de entrada, A (640×480) Patrón, P (29×27) Patrón ampliado
Búsqueda de patrones. Ejemplo 2. Detección de caras humanas con template matching. Mapa de matching, M Resultados de la detección Función: producto vectorial. Umbral usado: 0,5 Falsos positivos Falsos negativos
Página siguiente |