Search code examples
matlabmachine-learningcluster-analysissiftfeature-extraction

My observations are less than the feature vector of each. Any solution to overcome this?


I'm using GMM to fit my data to 256 Gaussians. I'm using Matlab's fitgmdist to achieve this.

gmm{i} = fitgmdist(model_feats, gaussians, 'Options',statset('MaxIter',1000), ...
            'CovType','diagonal', 'SharedCov',false, 'Regularize',0.01, 'Start',cInd);

I am using RootSIFT to extract the features of each image. This produces a vector of 1x128 for each image.

Now I have 45 images maximum for each writer. So after feature extraction and everything the size of my model_feats is 45 x 128.

According to the help file for data arrangement for X is:

The rows of X correspond to observations, and columns correspond to variables.

The problem I have is when I run the above function I am told that:

"X must have more rows than columns."

I have a total of 45 images for each writer. How will I be able to get this function to run? This is a strange limitation for such a function, I mean even if I am able to get 100 images for each writer it will not work.

I will appreciate any workaround to this.

P.S. I've tried the same with VL_Feat's vl_gmm and it works without any problems but I need this to work in Matlab not VL_FEAT.


Solution

  • With SIFT you usually don't compute the feature for the whole image, but literally hundreds of keypoints for each image. Then you won't have this problem anymore.

    Next step then probably is a “bag of visual words” mapping of each image.