Buena métrica para comparar cualitativamente parches de imagen

11

Estoy tratando de "combinar" pequeños parches cuadrados en una imagen. A primera vista, parece razonable simplemente hacer una comparación de estilo de distancia euclidiana de dos de estos conjuntos para obtener una medida de "similitud". Esto funciona bien en muchos casos (el "mejor" parche (valor más bajo) de acuerdo con esta métrica se parece mucho al parche de consulta). Sin embargo, hay muchos casos en los que esto produce una muy mala coincidencia. Por ejemplo, tome estos dos pares de parches:

Dos parches de una pared de ladrillos, puntaje 134 (esta es la suma de los componentes de la diferencia de píxeles absoluta promedio):

Parche de origen Parche objetivo

Un parche de una pared de ladrillos, un parche de hierba, ¡puntaje 123!

https://i.stack.imgur.com/d7lBZ.png https://i.stack.imgur.com/d2TBE.png

Para un humano, "claramente" la hierba no coincide con el ladrillo, pero esta métrica dice lo contrario. El problema está solo en la variación estadística local.

Si uso algo así como una comparación de histograma, pierdo completamente toda la información espacial, por ejemplo, si un parche es hierba en la parte superior y ladrillo en la parte inferior, coincidiría exactamente con un parche con hierba en la parte inferior y ladrillo en la parte superior (nuevamente , otro partido "obviamente equivocado").

¿Existe una métrica que de alguna manera combine ambas ideas en un valor razonable que se evalúe como "similar" para el Par 1 anterior, pero que no sea similar para mi ejemplo de un parche y su espejo vertical?

Cualquier sugerencia es apreciada!

David Doria
fuente
1
Al tomar la suma de los componentes, pierde toda la información "espacial" en el espacio de color ... ¿Evalúa los componentes individualmente, por ejemplo calculando la distancia euclidiana en los dos vectores?
Geerten

Respuestas:

2

La idea esencial es: no hay nada de malo en la información del color, simplemente es insuficiente. Así que lo mejor es combinar múltiples conjuntos de características.

Puede probar varias funciones para resolver esta ambigüedad. En lo que respecta al conjunto de características, puede usar lo siguiente:

  1. Color (algo así como el color dominante de MPEG7 ) O Color Historgram
  2. Textura (en forma de respuesta de filtro de banco) O
  3. Histogramas de borde

Como comparación principal, primero me gustaría hacer una distinción entre el parche de ladrillo puro y el parche de hierba pura. Para esto, el color es definitivamente el elemento más potencial.

Combinando características para hacer una clasificación más robusta

Usaría un color dominante (usa pero no el único) o color clave y formaría los grupos. Vea dónde se encuentran las cabezas del racimo;

Si las dos cabezas de clúster están dentro de las áreas esperadas, la clase generalmente es fácil de detectar, si caen en un área gris, entonces la clase pertenece allí. Si cae en un área gris, se requiere otra característica.

Del mismo modo, puede clasificar de forma independiente utilizando la matriz de textura y luego combinar ambas puntuaciones para garantizar que los resultados tengan sentido.

Manejo de problemas espaciales

Específicamente cuando te das cuenta de que los parches pueden tener partes que son mitad ladrillos y mitad hierba. Creo que no necesita más funciones adicionales o una matriz diferente. Esto se puede manejar de dos maneras.

1. Mantenga un parche de membresía múltiple como clases diferentes. Por ejemplo, aparte de birck-onlyclase y grass-onlyclase, también puede tener half-brick-half-grass-verticaly half-brick-half-grass-horizontalcomo total cuatro clases. Esto se puede clasificar fácilmente utilizando el método de agrupación que discutimos anteriormente.

2. Agregue clasificación de escala múltiple Por ejemplo, dado que el parche está en un área gris, puede dividir el parche en dos partes, es decir, izquierda versus derecha. De la misma manera, también puede dividir arriba contra abajo. Ahora puede aplicar una clasificación idéntica para esta "media parte". Idealmente, la función mencionada anteriormente debería permitirle hacerla escalable para comparar una similitud de función entre la parte completa (por ejemplo, el color dominante puede ser el mismo independientemente del tamaño) o puede que tenga que cambiar su tamaño.

Agregar más clases (como en la parte 1) o más niveles (como en la parte 2) será sencillo; el límite superior vendrá por dos factores: o cualquier división adicional ya no agregará ningún valor a la clasificación o ese ruido excesivo introducirá efectivamente la ambigüedad en la clasificación. Aquí es donde te detienes.

Dipan Mehta
fuente
2

Para empezar, 2 imágenes y 3 mediciones no son exactamente suficientes para determinar cualquier tipo de modelo estadístico que, en términos, se pueda utilizar para definir la métrica de comparación óptima.

Creo que podría comenzar a echar un vistazo a los documentos de reconocimiento de textura para métodos y pistas. Es un campo activo.

Para lo que vale, ejecuté un par de pruebas de funciones de hash perceptuales (basadas en DCT y proyección aleatoria) e hice una pequeña prueba con el llamado descriptor SIFT. Estas funciones pueden separar distancias entre clases y dentro de clase, aunque a partir de 3 imágenes es imposible concluir nada.

Código en github .

Maurits
fuente