Using FLIRT Registration Transformation Matrix in MATLAB
5 views (last 30 days)
Show older comments
Hello,
I have registered a 3D image (moving) to another 3D image (reference) using FLIRT. Both of these images are anisotropic with same spacing (voxel size). After registration, FLIRT saves the 4D transformation matrix as a .mat file. When I load it in MATLAB, it looks like this:
[a,b,c,d;
e,f,g,h;
i,j,k,l;
0,0,0,1]
Now, I want to use this transformation matrix in MATLAB, but first I want to make sure that I can load it properly in MATLAB and its coordinate system because the FSL/FLIRT is using a coordinate system in mm not voxel coordinate system. For this purpose, I am applying the same transformation matrix to the moving image in MATLAB to make sure that the MATLAB registered image is the same as the FLRIT registration output. Therefore, I run the following code in MATLAB:
T = load('FLIRTtransformation'); % FLIRT output transformation
T = T';
T(4,1:3)=T(4,1:3)./spacing; % FSL/FLIRT works in mm coordinate space not voxel coordinates
tform = affine3d(T);
R = imref3d(N); % N is image size
img_transformedMATLAB = imwarp(img,tform,'OutputView',R);
However the registered image from MATLAB and FLIRT are different. I tried some other modifications of T matrix, but none of them gave me the same registration result.
I would appreciate any help in this regard.
0 Comments
Answers (0)
See Also
Categories
Find more on Geometric Transformation and Image Registration 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!