Eu tenho um problema interessante que estou tentando resolver. Por exemplo, se tivermos uma imagem em preto e branco contendo duas texturas (A e B), estou interessado em conhecer os valores de pixel dos limites que cobririam completamente as texturas individuais.
Pensei em usar correlação cruzada, o que me daria um conjunto de posições, do modelo (legendas) na imagem, mas existe uma maneira de usar isso para obter os valores de pixel dos limites (normalmente são irregulares)? Além disso, existe outra maneira melhor de fazer isso?
Um exemplo real disso seria detectar as regiões de precipitação em um mapa mostrando três níveis de precipitação em um ano. A cada nível é atribuída uma textura presente na legenda, que é usada para a correspondência de texturas na mesma imagem.
fonte
Respostas:
Aqui está um processo simples:
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.
fonte