Classification des textures via DCT

12

Dans quelle mesure serait-il viable de classer la texture d'une image à l'aide des caractéristiques d'une transformée en cosinus discrète? Googler "texture classification dct" ne trouve qu'un seul article académique sur ce sujet, en utilisant un réseau de neurones.

Pour mon application, j'ai un grand corpus d'images étiquetées, dans lequel l'image entière est une texture cohérente (par exemple des plans rapprochés d'une couverture, d'écorce d'arbre, d'un champ herbeux, etc.).

Inspiré par une réponse à une question précédente , j'envisageais l'approche suivante:

  1. diviser chaque image en NxN blocs de pixels
  2. prendre le DCT de chaque bloc
  3. aplatissez chaque DCT dans une baie 1xM et alimentez-le en un algorithme de clustering K-Means, et obtenez l'étiquette de cluster pour chaque DCT
  4. calculer un histogramme d'étiquettes de regroupement pour chaque image en comptant chaque étiquette par image à partir de # 3
  5. former un classificateur SVM en lui fournissant un ensemble de [(histogramme, étiquette d'image)]

Dans quelle mesure cela fonctionnerait-il? J'ai implémenté un système similaire, en utilisant des fonctionnalités extraites via les algorithmes SIFT / SURF, mais je n'ai pu obtenir qu'une précision d'environ 60%.

De quelles autres manières pourrais-je utiliser le DCT pour classer les textures?

Cerin
la source
1
Cela ressemble presque à l'assignation de réseau de neurones que je venais de faire pour ml-class.org
Ivo Flipse
2
@IvoFlipse: +1 pour ml-class.org. Cependant, cette question concerne les fonctionnalités. En fin de compte, si vos fonctionnalités ne sont pas adaptées au problème, peu importe la qualité de votre algorithme de classification.
Dima
banque de filtres Gabor peut-être très utile pour la classification des textes.
mrgloom

Réponses:

6

Jusqu'à présent, ce que vous proposez semble être une approche raisonnable. Cependant, je ne pense pas que vous saurez à quel point cela fonctionne jusqu'à ce que vous l'essayiez, tout comme vous avez essayé SIFT.

Cependant j'ai une question. Pourquoi vous limitez-vous au DCT? Il existe de nombreuses représentations qui ont été utilisées pour la classification des textures: matrices de cooccurrence, modèles binaires locaux, etc. pour ce problème. Je vous recommande d'élargir votre recherche documentaire pour voir quelles autres fonctionnalités les gens ont utilisées et comment ils ont bien fonctionné.

Dima
la source
4

Si vous ne divisez pas l'image en bloc NxN mais utilisez plutôt une fenêtre coulissante - calculez le DCT pour les blocs centrés à chaque point de l'image, ce serait essentiellement en utilisant l'approche par ondelettes. Votre image divisée en blocs est identique à l'utilisation d'une fenêtre coulissante et d'une image sous-échantillonnée. Donc, vous utilisez essentiellement une forme réduite de segmentation de la texture des ondelettes. Ondelette de Gabor utilisée à la place de DCT généralement parce que: elle a plus de paramètres (+ échelle et + direction) et une atténuation douce (au lieu d'un bord tranchant de la fenêtre).

mirror2image
la source
3

L'une des plus grandes attractions pour lesquelles on voudrait faire une segmentation / classification de texture basée sur DCT (ou toute autre activité) est le fait que la plupart des images JPEG et des vidéos MPEG sont déjà en DCT. D'un autre côté, il est généralement admis que l'approche basée sur Gabor est coûteuse en termes de calcul.

Les coefficients DCT MID aux hautes fréquences et / ou aux fréquences diagonales reflètent une bonne représentation des variations locales dans le domaine des pixels.

Cependant, tout cela peut ne pas être aussi bon qu'il y paraît. Tout d'abord, dans la plupart des blocs DCT standard, la taille est 8x8. Donc, cela implique implicitement que si la scène a un motif qui a une périodicité de 8 points de pixels, cet effet de résonance sera visible en termes de similitude des coefficients correspondants des blocs adjacents cependant, lorsque la périodicité change, cette relation varie.

Comprendre la différence critique entre les blocs purs de DCT et Gabor est que Gabor a une échelle. Donc, si vous modifiez la «périodicité» ou la «finesse / rugosité» de la texture, Gabor découvrira où, en tant qu'évaluation fixe de DCT @ 8x8, la taille du bloc ne pourra pas bien s'adapter.

Cependant, ce qu'il faut réaliser, c'est construire de tels modèles en regardant ensemble plusieurs blocs pour évaluer un tel phénomène d' échelle . Comme approche de base par exemple, demandez si j'aurais eu des blocs 16x16 ou des blocs de taille 32x32, quels auraient été les modèles résultants dans les coefficients? Les coefficients dans les emplacements respectifs auront une relation à exploiter et permettront de découvrir la véritable échelle de la texture.

C'est en effet un bon sujet de recherche à poursuivre.

REMARQUE: Même MPEG7 (qui est très proche des comités qui ont créé MPEG) - ils proposent des fonctionnalités basées sur Gabor pour la texture plutôt que sur DCT.

Dipan Mehta
la source