Laboratory of Computer and Information Science
TEXTURE CLASSIFICATION

GENERAL

The main goal of the work is to implement a widely used classification method and test it with fairly simple data. The work is carried out with Matlab software. In this work, the data consist of images of textures.

FILES

As the main purpose of the work is not to learn how to use Matlab but to get more familiar with pattern recognition methods, some of the Matlab code is provided. Your task is to code the recognizer.

Data

The texture images are available here as matrices of the size 257*256. The images have 256 grey levels (eight bits) per pixel. You can have a look on the textures at here.

Matlab functions

You can perform the preprocessing of the images and feature extraction with the following functions: hg, hgeq2, cooc, and cofea. The first function calculates the histogram and the cumulative histogram of the colors used in an image. The second function performs the histogram equalization to an image. The thrid function calculates the co-occurrence matrix of the input image. The last function calculates four features based on a co-occurence matrix, namely energy, inertia, entropy and homogentity.

You can get the functions from here: hg.m, hgeq2.m, cooc.m, and cofea.m.

EXERCISES

Preprocessing methods

Perform a histogram equalization in order to reduce the number of grey levels in the picture. Four grey levels should be enough.

Feature selection

You can either use the values of the co-occurrence matrix calculated for the image as features as such or futher calculate features from it such as energy, inertia, entropy and homogentity. What do these features of the co-occurrence matrix tell about the texture image itself? How should the comparisons involved in the calculation of the the co-occurrence matrix be defined?

Recognition methods

Implement one of the following recognition methods: 1) the k Nearest Neighbors (knn) classifier, 2) Learning Vector Quantization (LVQ) classifier, 3) Bayesian classifier, or 4) Multi-layer perceptron (MLP). In the first two cases, use Euclidean metric. Experiment with different values of k and prototype set sizes. Use linearly decaying learning coefficient for LVQ. In case of Bayesian classifier, assume that the probability distributions are Gaussian. In case MLP, use functions from Matlab Neural Network Toolbox, keep the size of the network reasonable, and start experimenting by using default settings.

As there is only one image presenting each texture, you have to sample the images by using randomly positioned findows. Divide the texture images into two parts and take the learning samples from the other side than the test samples. This is a very unrealistic approach to the classification problem as all the samples of a particular class are taken from the same image. What are the problems which would be present in some realworld classification task? What is a suitable size for a sampling window?

Reporting

In the report, give a brief description of the recognition method applied, justify all the selection you have made, and give the recognition results of the best recognizer (calculate the total error rate and occurrences of all error types). Also, include your Matlab code with comments.


This page is maintained by elia.liitiainen@hut.fi.