Texture Segmentation via EM (50 points)
We talked about color segmentation in lecture; images were segmented by clustering together color vectors. For texture segmentation, we use different kinds of vectors, texture descriptors. There are many different kinds of texture descriptors. We are going to use a simple spectral descriptor.
1. Extract 8 x 8 patches around each input pixel. For each patch, compute the 2D spectrum using a 2D Fourier transform (use a windowed Fourier transform to reducing ringing). Remove the DC component. This gives a 63 dimensional feature vector at each pixel. Perform segmentation of the input image by treating this feature vector similar to the color vectors, using the k-means algorithm.
2. As you may notice on some images, applying the k-means algorithm directly gives rise to some pretty rough edges around the different segmented regions. To avoid this, we are going to regularize the segmented region. After each step of the k-means algorithm, after assigning pixels to each of the different regions, perform smoothing of the regions. In order to perform smoothing, convolve the binary mask corresponding to each region with a Gaussian, then threshold the resulting gray level image in such a way that the number of pixels in the resulting smoothed region is the same as in the unsmoothed binary masked.
Find some pictures to evalute and test the performance of your texture segmentation method.