# How to use wavelet decomposition for feature extraction (of fMRI images)?

I have a dataset consisting of fMRI images (from mice) which are divided into 4 groups (different drug dose levels applied). Each fMRI image is 4D, that means each voxel is a time series. For each fMRI image I want to extract one feature vector.

Now I want to use wavelet decomposition for feature extraction. In Matlab there exist no 4D wavelet decomposition, so I turn the 4D images into 3D by taking the average of the time series. Then I could apply 3D wavelet decomposition and taking the LL component as features, that means doing something like that:

WT = wavedec3(fMRI, 4, 'db4');
LL = WT.dec(1);
temp = cell2mat(LL);
feature_vector = temp(:);


Of course afterwards feature selection algorithms (like recursive feature elimination) could be applied to reduce dimensionality.

Another possibility would be to to the 3D wavelet decomposition for each 3D volume and extracting the LL component. This I could do for each time point and then stacking up the LL components to get a big feature vector.

What do you think of this approach? Are there better approaches?

Edit: Here is an image: https://www.dropbox.com/s/50gr2f1c66stcq4/tCut10_4D1c0_iso2238-brain.nii.gz?dl=0 I have found the following approach in a paper:

we decided to use the concatenation of the high-order sub-band coefficients from each decomposition as a feature vector in k-nearest neighbor classification

How can I get the high-order sub-band coefficients in Matlab (using e.g. wavedec3)? And what do they mean with each decomposition?

• The feature to extract depends on how it would be used. What is the next step? Also WT.dec(1) is just the low pass component, i.e. you are not using any of the wavelet responses. – geometrikal Jul 29 '15 at 21:50
• The next step is either feature selection (e.g. principle feature analysis or ANOVA) or directly feeding it to a machine learning classifier. That means in the end I have a matrix where the columns are the features and the rows are the data points (images) and this I feed into my machine learning. – machinery Jul 29 '15 at 22:56
• I did not recognize that WT.dec(1) is the low pass component. Would you recommend to use the high pass component and if so how can I retrieve it with Matlab? I'm not so familiar with wavelets and signal processing, so it would be really nice if you could explain it. – machinery Jul 29 '15 at 22:58
• You might want to google for some tutorials, or find a paper with a similar application and implement their approach to start with. I'm guessing you want to make something that differentiates the four groups? Can you post an image? Try start with something like HOG or BIF or even just the raw image, get your machine learning working, then start mucking around with different features.Also look at the images yourself and see what kind of features are present; the human brain is the best image analysis machine, so whatever you think is a good discriminator will probably be worthwhile as a feature – geometrikal Jul 30 '15 at 2:01
• I have updated my post, please have a look. Yes, I want to train a machine learning classifier which differentiates the four groups. – machinery Jul 30 '15 at 10:27