Aquí hay un proceso simple:
- Asigne medidas de textura a cada región de la imagen.
- Use un algoritmo de etiquetado / conectividad de región (o algoritmo de crecimiento de región) para unir regiones adyacentes que tengan la misma medida de textura.
- Implemente un algoritmo simple de seguimiento de bordes para trazar el contorno de cada región.
Las medidas de textura de Law son una técnica más antigua pero útil para determinar la textura de una imagen, y pueden ser suficientes para distinguir la textura A de la textura B en toda la imagen. Consulte la sección "Leyes de medidas de energía de textura" en el artículo de Wikipedia:
http://en.wikipedia.org/wiki/Image_texture
Como primer paso, calcule todas las medidas de textura y determine qué medida particular (por ejemplo, Borde o Punto) le permite distinguir una textura de la otra más fácilmente. (Si publicas algunas fotos, podría ayudarte a identificar una medida de textura).
Si solo tiene dos texturas, A y B, puede tratarlas como primer plano y fondo, y un algoritmo de etiquetado de región estándar funcionará. Para que sea más fácil ver lo que está sucediendo en el procesamiento, puede generar una nueva imagen asignando elementos de textura A (elementos de textura, pequeños fragmentos de textura) al color blanco y elementos de textura B al color negro. Los algoritmos de etiquetado de región y / o seguimiento de contorno encontrarían las regiones blancas y negras conectadas. La función findContours () en OpenCV funcionará bien.
http://en.wikipedia.org/wiki/Connected-component_labeling
El mismo artículo de Wikipedia incluye tanto el algoritmo multipass tradicional como un algoritmo de un solo paso. No he implementado el algoritmo de un solo paso descrito allí, pero he trabajado con el algoritmo de un solo paso descrito en el documento "Algoritmo de etiquetado de componentes usando la técnica de trazado de contorno" de Chen y Chang. El documento de Chen y Chang también describe un algoritmo estándar de seguimiento de contornos que se puede implementar rápidamente.
Si tiene más de dos texturas, puede usar un algoritmo de cambio de agua o de cambio medio para agrupar regiones después de reasignar las texturas a colores. Aunque esta reasignación de textura a color no es necesaria, hace que el proceso sea más fácil de depurar y comprender.