2011-06-01 12 views
6

Estoy tratando de hacer procesamiento de imágenes usando NumPy y scipy. Tengo una imagen de plantilla que corresponde a un fondo, y quiero averiguar todos los lugares donde aparece en la imagen de entrada y establecer las posiciones correspondientes de la matriz en la salida a 1, de lo contrario, configúrelos en 0. ¿Cómo puedo hacer esto?NumPy/SciPy: Mueva la máscara sobre la imagen y verifique la igualdad

+0

Se corrigió el error ortográfico en el título de la pregunta. De todos modos, ¿cuán grande es la imagen de su plantilla en relación con la imagen de entrada, como promedio aproximado? ¿Desea realizar el procesamiento de imágenes para las coincidencias exactas, o desea poder detectar versiones escaladas, otras ligeramente diferentes, etc.? – JAB

+0

Mi plantilla no es grande en comparación con la imagen, ~ 100 píxeles. Además de la coincidencia exacta, quiero hacer ± x donde x es una pequeña perturbación de para ajustar las variaciones más pequeñas en la intensidad de la imagen. – Xolve

Respuesta

3

Puede usar scipy.ndimage.correlate para correlacionar su plantilla con la imagen. Luego busca puntos brillantes que te den las cerillas. Ejemplo:

import scipy.ndimage 
from numpy import mean, std 

# a, b contain image and template in numpy arrays 
correlation = scipy.ndimage.correlate(a, b) 
matches = (correlation-mean(correlation)) > 5*std(correlation) # tune depending on level of noise 
+0

"Luego busca puntos brillantes que te den las cerillas". Soy nuevo en usar numpy, ¿cómo lo lograré? – Xolve

+0

@ Xolve esa es la idea de la última línea en el ejemplo: básicamente busca puntos que sean un número de desviaciones estándar por encima del valor medio de la imagen. Puedes usar el comando imshow para echar un vistazo rápido al resultado y ajustar tu caso, o si publicas un enlace a algunas imágenes de muestra, lo intentaré. – so12311

Cuestiones relacionadas