Aqui está um processo simples:
- Atribua medições de textura a cada região da imagem.
- Use um algoritmo de rotulagem / conectividade de região (ou algoritmo de crescimento de região) para unir regiões adjacentes com a mesma medida de textura.
- Implemente um algoritmo simples de acompanhamento de arestas para rastrear o contorno de cada região.
As Medidas de textura de Law são uma técnica mais antiga, mas ainda útil, para determinar a textura em uma imagem e podem ser suficientes para você distinguir a textura A da textura B em toda a imagem. Veja a seção "Leis sobre medidas de energia de textura" no artigo da Wikipedia:
http://en.wikipedia.org/wiki/Image_texture
Como primeiro passo, calcule todas as medidas de textura e determine qual medida específica (por exemplo, Borda ou Ponto) permite distinguir uma textura da outra com mais facilidade. (Se você publicar algumas fotos, eu poderia ajudá-lo a identificar uma medida de textura.)
Se você tiver apenas duas texturas, A e B, poderá tratá-las como primeiro plano e plano de fundo, e um algoritmo de rotulagem de região padrão funcionará. Para facilitar a visualização do que está acontecendo no processamento, você pode gerar uma nova imagem atribuindo texels A (elementos de textura, pequenos pedaços de textura) à cor branca e texels B à cor preta. A rotulagem de região e / ou algoritmos de seguimento de contorno encontrariam as regiões branca e preta conectadas. A função findContours () no OpenCV funcionará bem.
http://en.wikipedia.org/wiki/Connected-component_labeling
O mesmo artigo da Wikipedia inclui o algoritmo multipass tradicional e também o algoritmo de passagem única. Não implementei o algoritmo de passagem única descrito lá, mas trabalhei com o algoritmo de passagem única descrito no artigo "Algoritmo de rotulagem de componentes usando a técnica de rastreamento de contorno" de Chen e Chang. O artigo de Chen e Chang também descreve um algoritmo padrão de acompanhamento de contornos que pode ser implementado rapidamente.
Se você tiver mais de duas texturas, poderá usar um algoritmo de mudança de bacia ou média para agrupar regiões depois de remapear as texturas para cores. Embora esse remapeamento da textura para a cor não seja necessário, ele facilita o processo de depuração e compreensão.