Image registration with PCA
Show older comments
Hi,
I want to detect, and possibly compensate for, motion which happens between acquisition of images (1 image of one slice of the body is taken every 3 seconds) for MRI-data. I am using PCA (principal component analysis). What I have so far is:
-Using a training set of 90 images (160 x 160 pixels) I have used PCA, own implementation but very similar to Matlab's built-in function princomp, I calculate the PC:s (principal components), the variances they account for and the data scores in the PC coordinate system.
-The variances are very good, depending on the ROI I use (I take a subset of the image as data, from some interesting area) and the image set (I have three different cases) I can get about 97% of the variance with just 3 PC:s.
-I have plotted (or rather, created a coloured grid) the load of all the 90 images on the first n (say 7) PC:s, to see which components are influenced the most by which image.
-I have also made images of the PC scores for the first four components.
-Finally, I have calculated a correlation coefficient between each image after the training images and the first four PC:s. I have plotted the index of the component for which this correlation is the largest (1,2,3 or 4) against image number.
Now, what I want to do is to tell in which images after the training set some large motion has occurred, and possibly even compensate for it. My problem is, I can't quite wrap my head around how I compile all the data I have gathered, and use it to motion detection or compensation. Can anyone help me with this? Just to make the most important point clear, the aim is to register the images to a reference image, but since the body is sometimes moving, we can't just use the first slice as reference, so I want to try PCA to get something useful out.
-Mikael
2 Comments
Sean de Wolski
on 3 Oct 2012
Could you give us an idea of how the data is structured? Like small examples of what data you have to work with?
Mikael
on 3 Oct 2012
Answers (1)
Image Analyst
on 3 Oct 2012
0 votes
This looks like you need an algorithm rather than MATLAB coding advice. I don't know which of the approximately 120 MRI registration algorithms listed here: http://iris.usc.edu/Vision-Notes/bibliography/medical879.html#Brain,%20Cortex,%20Registration,%20MRI,%20Other would be the best for you. Maybe PCA is better than all those - I don't know. Perhaps we can help with small chunks of code once you have picked a good algorithm.
Categories
Find more on Dimensionality Reduction and Feature Extraction in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!