How viable would it be to classify the texture of an image using features from a discrete cosine transform? Googling "texture classification dct" only finds a single academic paper on this topic, using a neural network.

For my application, I have a large corpus of labeled images, in which the entire image is a consistent texture (e.g. close-up shots of a blanket, tree bark, a grassy field, etc).

Inspired by a response to a previous question, I was considering the following approach:

  1. split up each image into NxN blocks of pixels
  2. take the DCT of each block
  3. flatten each DCT into a 1xM array and feed it to a K-Means clustering algorithm, and get the cluster label for each DCT
  4. calculate a histogram of clustering labels for each image by counting each label per image from #3
  5. train a SVM classifier by feeding it a set of [(histogram,image label)]

How well would this work? I implemented a similar system, using features extracted via the SIFT/SURF algorithms, but I was only able to get about 60% accuracy.

In what other ways could I use the DCT to classify textures?

  • 1
    $\begingroup$ This almost sounds like the neural network assignment I just had to do for ml-class.org $\endgroup$ – Ivo Flipse Nov 15 '11 at 13:52
  • 2
    $\begingroup$ @IvoFlipse: +1 for ml-class.org. However, this question is about features. In the end, if your features are not appropriate for the problem, it doesn't matter how good your classification algorithm is. $\endgroup$ – Dima Nov 15 '11 at 15:07
  • $\begingroup$ bank of Gabor filters maybe very usefull for textute classification. $\endgroup$ – mrgloom Aug 7 '12 at 12:44

So far what you are proposing sounds like a reasonable approach. However, I don't think you will know how well it works until you try it, just like you have tried SIFT.

I have a question though. Why are you restricting yourself to DCT? There are lots of representations that have been used for texture classification: co-occurrence matrices, local binary patterns, etc. The fact that you have only found one paper on using DCT for texture classification would suggest that this is not the most commonly used feature for this problem. I would recommend that you widen your literature search to see what other features people have used, and how well they have worked.

| improve this answer | |

If you would not split image into NxN block but instead use sliding window - calculate DCT for blocks centered at each point of the image it would be essentially using wavelets approach. Your splitting image into blocks is the same as using sliding window and downsampling image. So essentially you are using reduced form of wavelets texture segmentation. Gabor wavelet used instead of DCT usually because: it has more parameters (+scale and +direction) and smooth attenuation (instead of sharp edge of the window).

| improve this answer | |

One of the biggest attraction why one would want to do DCT based texture segmentation/classification (or any other activity) is the fact that most JPEG images and MPEG videos are already in DCT. On the other hand, it is generally believed that Gabor based approach is computationally costly.

DCT co-efficients MID to high frequencies and or diagonal frequencies reflect a good representation of local variations in the pixel domain.

However, all this may not be as good as it sounds. First off, in most standards DCT blocks are 8x8 size. So it's implied implication is that if the scene has pattern which has periodicity of 8 pixel points, this resonating effect will be visible in terms of similarity of the corresponding co-efficients of adjoining blocks however, when the periodicity changes this relationship varies.

Understand the critical difference between pure blocks of DCT vs. Gabor is that Gabor has a scale. So if you change the "periodicity" or "fineness/roughness" of the texture, Gabor will discover it where as DCT's fixed evaluation @ 8x8 block size won't be able to fit well.

However, what one needs to realize is to build such patterns by looking at multiple blocks together to evaluate such scale phenomenon. As a basic approach for example, ask if i would have had 16x16 blocks or 32x32 size blocks, what would have been the resultant patterns in the co-efficients? The co-efficients in respective locations will have some relationship to exploit and allows one to discover true scale of the texture.

This indeed is a good research topic to pursue.

NOTE: Even MPEG7 (who is very close to committees who created MPEG) - they propose Gabor based features for texture rather than DCT based.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.