Boa métrica para comparar qualitativamente amostras de imagens


11

Estou tentando "combinar" pequenas manchas quadradas em uma imagem. À primeira vista, parece razoável simplesmente fazer uma comparação no estilo da distância euclidiana de duas dessas matrizes para obter uma medida de "similaridade". Isso funciona bem em muitos casos (o "melhor" patch (valor mais baixo) de acordo com essa métrica se parece muito com o patch de consulta. No entanto, há muitos casos em que isso produz uma correspondência muito ruim. Por exemplo, considere estes dois pares de patches:

Dois remendos de uma parede de tijolos, pontuação 134 (esta é a soma dos componentes da diferença média absoluta de pixels):

Patch de origem Patch de destino

Um pedaço de uma parede de tijolos, um pedaço de grama, marca 123!

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

Para um humano, "claramente" a grama não corresponde ao tijolo, mas essa métrica diz o contrário. O problema está apenas na variação estatística local.

Se eu usar algo como uma comparação de histograma, perco completamente todas as informações espaciais - por exemplo, se um remendo é grama na parte superior e tijolo na parte inferior, ele corresponderia exatamente a um remendo com grama na parte inferior e tijolo na parte superior (novamente , outra correspondência "obviamente errada").

Existe uma métrica que de alguma forma combine essas duas idéias em um valor razoável que será avaliado como "semelhante" para o par 1 acima, mas também não seja semelhante no meu exemplo de patch e seu espelho vertical?

Todas as sugestões são apreciadas!


1
Ao calcular a soma dos componentes, você perde todas as informações "espaciais" no espaço de cores. Avalie os componentes individualmente, por exemplo, calculando a distância euclidiana nos dois vetores?
Geerten

Respostas:


2

A idéia essencial é: não há nada errado com as informações de cores - elas são insuficientes. Então, o melhor é combinar vários conjuntos de recursos.

Você pode tentar vários recursos para resolver essa ambiguidade. No que diz respeito ao conjunto de recursos, você pode usar o seguinte:

  1. Cor (algo como a cor dominante do MPEG7 ) OU Historograma de cores
  2. Textura (na forma de resposta bancária do filtro) OU
  3. Histogramas de borda

Como comparação primária, eu gostaria de fazer uma distinção entre remendo de tijolo puro e remendo de grama pura. Para isso, a cor é definitivamente o elemento mais potencial.

Combinando recursos para criar uma classificação mais robusta

Eu usaria uma cor dominante (usa, mas não a única) ou uma cor-chave e formaria os clusters. Veja onde estão as cabeças do cluster;

Se os dois cabeçotes do cluster estiverem dentro das áreas esperadas, a classe geralmente é fácil de detectar; se eles caírem na área cinza, a classe pertence a ele. Se cair na área cinza, outro recurso é necessário.

Da mesma forma, você pode classificar independentemente usando a matriz Textura e combinar as duas pontuações para garantir que os resultados façam sentido.

Lidar com problemas espaciais

Especificamente quando você percebe que os remendos podem ter partes dele que são meio tijolo e meia grama. Eu acho que você não precisa de mais recursos adicionais ou matrizes diferentes. Isso pode ser tratado de duas maneiras.

1. Mantenha o patch de associação múltipla como classes diferentes. Por exemplo, além de birck-onlyclasse e grass-onlyclasse, você também pode ter half-brick-half-grass-verticale half-brick-half-grass-horizontalno total quatro classes. Isso pode ser facilmente classificado usando o método de agrupamento discutido anteriormente.

2. Adicionar classificação em várias escalas Por exemplo, considerando que o patch está em uma área cinza, você pode dividir o patch em duas partes, isto é, esquerda versus direita. Da mesma forma, você também pode dividir a parte superior da parte inferior. Agora você pode aplicar uma classificação idêntica para esta "meia parte". Idealmente, o recurso listado acima deve permitir redimensionar a comparação de uma semelhança de recurso entre a peça inteira (por exemplo, a cor dominante pode ser a mesma, independentemente do tamanho) ou você pode precisar redimensioná-la.

Adicionar mais classes (como na parte 1) ou mais níveis (como na parte 2) será direto; o limite superior virá de dois fatores - qualquer divisão adicional não agregará mais valor à classificação ou esse ruído excessivo introduzirá ambiguidade na classificação efetivamente. É aqui que você para.


2

Para começar, 2 imagens e 3 medições não são exatamente suficientes para determinar qualquer tipo de modelo estatístico que, em termos, possa ser usado para definir a métrica de comparação ideal.

Eu acho que você pode começar a dar uma olhada nos papéis de reconhecimento de textura para métodos e pistas. É um campo ativo.

Pelo que vale, fiz alguns testes de funções de hash perceptivas (com base no DCT e na Projeção Aleatória) e fiz um pequeno teste com o chamado descritor SIFT. Essas funções podem separar distâncias inter e intra-classe, embora a partir de 3 imagens seja impossível concluir qualquer coisa.

Código no github .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.