Operaciones de procesamiento de imagen necesarias antes de la coincidencia de plantillas

13

Bueno, esto puede mostrar que no tomé la clase de procesamiento de imágenes.

Tengo esta plantilla para que coincida con un objeto en las imágenes. Pero el objeto real en las imágenes, por ejemplo, no se ve así, sino la segunda imagen. ¿Qué operaciones debo realizar para que las imágenes como la segunda estén listas para la coincidencia de plantillas? Para su información, la tercera imagen muestra una coincidencia ideal.

En otra idea, ajusto la plantilla a la imagen. Es decir, doy cuatro coordenadas de esquina en la imagen para que coincidan con las de la plantilla. Luego calculará una forma de ajustar la plantilla al área.

ACTUALIZACIÓN: Problema resuelto. Gracias a la respuesta que seleccioné a continuación. Logré aplicar mi plantilla con éxito en la imagen. La última imagen muestra el resultado.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Tae-Sung Shin
fuente
no vas a igualar esa cuadrícula blanca, ¿verdad? Desea hacer coincidir la cuadrícula colorida real en su segunda imagen, ¿verdad?
endolito el
@endolith Creo que de cualquier manera está bien.
Tae-Sung Shin
¿Puedes compartir el concepto básico de tu algoritmo? Necesito hacer lo mismo para un gráfico.
Gilad

Respuestas:

9

La imagen de muestra que publicó tiene una perspectiva relativamente fuerte (no se ve directamente desde la dirección de la superficie normal), lo que puede causar problemas con las técnicas de coincidencia de plantillas que utilizan el procesamiento de bloques. Supongo que debe tomar la imagen con una perspectiva fuerte, por lo que lo primero que queremos hacer es estimar la transformación de la imagen, lo que eliminará la proyección de la perspectiva y dará como resultado una imagen rectificada ("imagen recta").

Corrección de la proyección en perspectiva cuando se conoce la forma

El objetivo final del preprocesamiento es encontrar las esquinas de ese rectángulo gris que es el fondo de la tabla de colores. Comencé simplemente con un umbral con valor constante. La literatura / web tiene mucha información sobre cómo hacer umbrales cuando la imagen tiene iluminación desigual, pero si puede, intente corregir la configuración de imagen de manera que la iluminación sea relativamente uniforme.

Thresholded con valor constante

Supuse que la tabla de colores ocupa una parte bastante grande de la pantalla, por lo que probablemente sea la región continua más grande de la imagen. Existen muchas funciones de etiquetado en blanco y negro (MATLABs bwlabel, IPPs LabelMarkers, OpenCV tiene una biblioteca externa cvblob) que le dará a cada región conectada distinta su propio índice. Después del etiquetado, puede calcular las áreas de los componentes conectados utilizando un histograma y luego elegir el componente con el área más grande.

Encuentra la gota más grande

Por lo general, es una buena idea llenar los componentes de manera que el componente no tenga agujeros, esto reduce la cantidad de píxeles de borde.

Llenar el blob

Ahora podemos usar operadores de búsqueda de bordes (utilicé el método basado en gradiente, pero también puede rastrear el borde siguiendo los píxeles blancos que están conectados a píxeles negros) para obtener los píxeles que pertenecen al huésped.

Encontrar bordes

Como el objeto que nos interesa es el rectángulo, ajusté cuatro líneas a los píxeles del borde usando un ajuste de línea robusto (RANSAC). Después de encontrar una nueva línea, eliminé todos los puntos que estaban cerca de la línea encontrada, esto obliga a las operaciones de ajuste posteriores a devolver otros bordes del objeto. Finalmente, cuando se encontraron todos los bordes, calculé todas las posibles intersecciones entre el conjunto de líneas. Del conjunto de puntos resultantes eliminé todos los puntos fuera de la imagen.

Ahora tenemos las esquinas de la tabla de colores y, como conocemos las dimensiones de la tabla, podemos calcular la matriz de transformación (homografía, proyección entre dos planos. Utilice la transformación lineal directa (DLT) para resolver ) entre las coordenadas milimétricas y Las coordenadas del píxel.HH

x=HX

Esta matriz de transformación se puede usar para transformar la imagen original de modo que la tabla de colores se visualice directamente desde la dirección de la superficie normal.

Ajustar líneas a los bordes

Como puede verse, solo queda distorsión radial. Cuando usamos la transformación para la transformación de la imagen (interpolación 2D), elegimos las coordenadas de interpolación de tal manera que sepamos la resolución precisa de la imagen, lo que significa que ahora sabemos, por ejemplo, el tamaño de las letras.H

Si aún queremos hacer una coincidencia de plantilla, podemos usar cualquier método decente de coincidencia de plantilla. El método no tiene que ser invariante en rotación / escala ya que la imagen ya está rectificada.

Perspectiva correcta

buq2
fuente
1

Comience con la detección de bordes. Luego use la transformación Hough para detectar líneas rectas. Luego, averigua qué líneas son paralelas y cuáles deberían ser perpendiculares. Luego calcule la transformación proyectiva de modo que las líneas que deberían ser perpendiculares sean realmente perpendiculares.

Dima
fuente