Using FLIRT Registration Transformation Matrix in MATLAB

5 次查看(过去 30 天)
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 个)

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by