image registration of two different 3D matrix in different size

8 views (last 30 days)
I have two image matrix. One is from MRI, and another is from PET. And they are in the different size, which means the pixel size and the slice thickness are different. Is there any way for me to do the registration? I try the imregister, but it does not work.
This is the image before the Registration:
This is the image after the registration:
Does anyone any hint to do this?

Answers (1)

JD Peiffer
JD Peiffer on 14 Jun 2019
I've had some good results with this. The imwarp function seems capable of resizing the transformed image. I am not sure how it does so, and would like to know more. This code was done to register SPECT to MRI images, but I think multimodal would be good for your scans also.
%% SET PARAMETERS
[optimizer, metric] = imregconfig('multimodal');
optimizer.InitialRadius = 0.002;
optimizer.Epsilon = 1.0e-6;
optimizer.GrowthFactor = 1.025;
optimizer.MaximumIterations = 500;
%% PERFORM REGISTRATION
tform= imregtform(MOVING, STATIONARY, 'affine', optimizer, metric); %Defines the Transform
movingRegistered = imwarp(MOVING,tform,'OutputView',imref3d(size(STATIONARY))); %Defines the output matrix to be the size of the stationary one and performs the transform.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!