Classificação de textura via DCT

12

Quão viável seria classificar a textura de uma imagem usando recursos de uma transformada discreta de cosseno? Ao pesquisar no Google "textura classificação dct", apenas encontramos um único artigo acadêmico sobre esse tópico, usando uma rede neural.

Para minha aplicação, tenho um grande conjunto de imagens rotuladas, nas quais a imagem inteira é uma textura consistente (por exemplo, fotos em close de um cobertor, casca de árvore, campo gramado etc.).

Inspirado por uma resposta a uma pergunta anterior , eu estava considerando a seguinte abordagem:

  1. divida cada imagem em blocos NxN de pixels
  2. tomar o DCT de cada bloco
  3. achatar cada DCT em uma matriz de 1xM e alimentá-lo com um algoritmo de cluster K-Means e obter o rótulo do cluster para cada DCT
  4. calcular um histograma de etiquetas de cluster para cada imagem, contando cada etiqueta por imagem de # 3
  5. treine um classificador SVM, alimentando-o com um conjunto de [(histograma, rótulo da imagem)]

Quão bem isso funcionaria? Eu implementei um sistema semelhante, usando recursos extraídos pelos algoritmos SIFT / SURF, mas só consegui obter cerca de 60% de precisão.

De que outras maneiras eu poderia usar o DCT para classificar texturas?

Cerin
fonte
1
Isso soa quase como a atribuição neural network Eu apenas tive que fazer por ml-class.org
Ivo Flipse
2
@IvoFlipse: +1 para ml-class.org. No entanto, esta pergunta é sobre recursos. No final, se seus recursos não são adequados para o problema, não importa o quão bom é o seu algoritmo de classificação.
Dima
O banco de filtros Gabor talvez seja muito útil para a classificação de textos.
mrgloom

Respostas:

6

Até agora, o que você está propondo parece uma abordagem razoável. No entanto, acho que você não saberá o quão bem funciona até tentar, assim como tentou o SIFT.

Eu tenho uma pergunta embora. Por que você está se restringindo ao DCT? Existem muitas representações que foram usadas para classificação de textura: matrizes de co-ocorrência, padrões binários locais etc. O fato de você ter encontrado apenas um artigo sobre o uso do DCT para classificação de textura sugere que esse não é o recurso mais usado para esse problema. Eu recomendaria que você ampliasse sua pesquisa de literatura para ver quais outros recursos as pessoas usaram e quão bem elas funcionaram.

Dima
fonte
4

Se você não dividir a imagem no bloco NxN, mas usar a janela deslizante - calcule o DCT para blocos centralizados em cada ponto da imagem, essencialmente usando a abordagem wavelets. Sua imagem dividida em blocos é a mesma que usar a janela deslizante e a imagem com downsampling. Então, basicamente, você está usando uma forma reduzida de segmentação de textura de wavelets. A wavelet de Gabor é usada no lugar do DCT geralmente porque: possui mais parâmetros (+ escala e + direção) e atenuação suave (em vez da borda afiada da janela).

mirror2image
fonte
3

Uma das maiores atrações pelas quais alguém gostaria de fazer a segmentação / classificação de textura baseada em DCT (ou qualquer outra atividade) é o fato de a maioria das imagens JPEG e vídeos MPEG já estarem no DCT. Por outro lado, acredita-se que a abordagem baseada em Gabor é computacionalmente cara.

Os coeficientes DCT de MID a altas frequências e / ou frequências diagonais refletem uma boa representação de variações locais no domínio do pixel.

No entanto, tudo isso pode não ser tão bom quanto parece. Primeiro, na maioria dos padrões, os blocos DCT têm tamanho 8x8. Portanto, está implícita que, se a cena tiver um padrão com periodicidade de 8 pontos de pixel, esse efeito ressonante será visível em termos de similaridade dos coeficientes correspondentes dos blocos adjacentes, no entanto, quando a periodicidade muda, essa relação varia.

Entender a diferença crítica entre blocos puros de DCT vs. Gabor é que o Gabor tem uma escala. Portanto, se você alterar a "periodicidade" ou "finura / aspereza" da textura, o Gabor descobrirá onde a avaliação fixa do DCT com tamanho de bloco de 8x8 não será adequada.

No entanto, o que é preciso perceber é construir esses padrões observando vários blocos juntos para avaliar esse fenômeno de escala . Como uma abordagem básica, por exemplo, pergunte se eu teria blocos de 16x16 ou 32x32, quais teriam sido os padrões resultantes nos coeficientes? Os coeficientes nos respectivos locais terão alguma relação a explorar e permitem descobrir a verdadeira escala da textura.

Este é realmente um bom tópico de pesquisa a seguir.

NOTA: Mesmo MPEG7 (que é muito próximo aos comitês que criaram MPEG) - eles propõem recursos baseados em Gabor para textura, em vez de baseados em DCT.

Dipan Mehta
fonte