2011-05-22 10 views
11

¿Cuál es la forma de cuantificar la textura de una parte de una imagen? Intento detectar áreas con textura similar en una imagen, una especie de medida de "qué tan similares son?"¿Cómo hacer coincidir la similitud de textura en las imágenes?

Así que la pregunta es qué información sobre la imagen (borde, valor de píxel, gradiente, etc.) se puede tomar como que contiene su información de textura.

Tenga en cuenta que esto no se basa en la coincidencia de plantillas.

Wikipedia no dio muchos detalles sobre la implementación real de cualquiera de los análisis de textura.

Respuesta

23

¿Desea encontrar dos áreas distintas en la imagen que tengan el mismo aspecto (la misma textura) o una textura en una imagen con otra? El segundo es más difícil debido a la diferente radiometría.

Aquí hay un esquema básico de cómo medir la similitud de áreas.

  1. Escribe una función que, como entrada, obtiene un área en la imagen y calcula el valor escalar. Como el brillo promedio. Este escalar se llama una función
  2. Usted escribe más de esas funciones para obtener aproximadamente 8 - 30 características. que forman un vector que codifica información sobre el área en la imagen
  3. Calcula dicho vector para ambas áreas que quieras comparar
  4. Define la función de similitud que toma dos vectores y muestra cuánto se parecen.

es necesario centrarse en los pasos 2 y 4.

Paso 2 .: Uso las siguientes características: STD() de brillo, una especie de detector de esquina, filtra entropía, histograma de orientación de los bordes, histograma de frecuencias FFT (direcciones xey). Usa información de color si está disponible.

Paso 4. Puede usar similitud de coseno, min-max o coseno ponderado.

Después de implementar aproximadamente 4-6 de tales características y una función de similitud, comience a ejecutar las pruebas. Mire los resultados y trate de entender por qué o dónde no funciona. A continuación, agregue una función específica para cubrir ese tema. Por ejemplo, si ve que la textura con grandes blobs se considera similar a la textura con pequeños blobs, agregue la densidad calculada del filtro morfológico de los objetos con un tamaño> 20sq pixels.

Itere aproximadamente 5 veces el proceso de identificación de la característica específica del diseño del problema y comenzará a obtener muy buenos resultados.

+0

Gracias esto parece más ligero que la implementación de todas las medidas de textura GLCM en OpenCV. ¿Podría proporcionarnos más información sobre el histograma de FFT, quizás enlaces? Los otros son geniales – AruniRC

+0

¿Qué es "histograma de FFT"? ¿Tiene sentido construir un histograma sobre la transformada de Fourier? Puede ser simplemente elegir de FT algún rango de frecuencia relevante para la noción de textura y usar este rango como una característica de textura – Andrey

+0

Por histograma de FFT me refiero a primero aplicar FFT y luego usar alguna información como características. Usar cada frecuencia como featurer produce demasiada información innecesaria. De modo que puede elegir las siguientes características: relación de suma de alta frecuencia en dirección X dividida por dirección y, relación de altas frecuencias dividida por bajas frecuencias (causion: nunca use frecuencia DC), etc. – DanielHsH

4

Sugiero usar el análisis wavelet. Las wavelets se localizan tanto en tiempo como en frecuencia y proporcionan una mejor representación de la señal utilizando análisis multirresolución que FT.

Thre es un paper explicando un enfoque de wavelete para la descripción de la textura. También hay un método de comparación.

Es posible que deba modificar ligeramente un algoritmo para procesar imágenes de forma arbitraria.

+0

En la sección Haar wavelet, ¿qué significa "tres imágenes de detalle (LH, HL y HH)"? Los niveles de la ondícula están bien, he codificado todo el tiempo que no entendí lo que significan las imágenes LH, HL y HH en el contexto de la transformación de la ondícula Haar. Si quisieras explicar esto un poco. – AruniRC

+0

Son características horizontales, verticales y diagonales de la imagen en un nivel particular L. Puede encontrar fácilmente una explicación de eso en Internet. Por ejemplo, enlace http://www.ceremade.dauphine.fr/~peyre/numerical-tour/tours/wavelet_2_haar2d/ – Andrey

1

Un enfoque interesante para esto es utilizar los Patrones Binarios Locales. Aquí hay un ejemplo básico y algunas explicaciones: http://hanzratech.in/2015/05/30/local-binary-patterns.html

Vea ese método como una de las muchas maneras diferentes de obtener funciones de sus imágenes. Corresponde al segundo paso del método de DanielHsH.

Cuestiones relacionadas