Fourier mellin image registration for medical images of brain tumor

조회 수: 6 (최근 30일)
image-pro
image-pro 2022년 4월 26일
편집: Umeshraja 2024년 9월 21일
i am having mri brain tumor image and i want to apply fourier mellin registration on it. anyone have code for this?

답변 (1개)

Umeshraja
Umeshraja 2024년 9월 17일
편집: Umeshraja 2024년 9월 21일
I've found a useful resource for image registration using the Fourier-Mellin Transform:
Below is a demonstration on how to use the 'RegisterFourierMellin' function mentioned in the above link for registering two Brain MRI images.
close all;
% Changes made in Register.m file
% Change 1: Changed the Image used for Analysis
load mri
% The MRI data is stored in a 3D array called 'D'
% Extract the image data from the structure
mriImage = squeeze(D);
% Extract the first slice of the MRI image
Brainmri = mriImage(:,:,1);
I1 = im2single(Brainmri);
[h, w] = size(I1);
h2 = floor(h/2);
w2 = floor(w/2);
% Create a second, rotated/scaled/translated image
It = zeros(size(I1), 'single');
% Change 2: Portion of the image extracted was changed
It(10:60, 50:100) = I1(10:60, 50:100); % Crop and translation
Ir = imrotate(It, -20, 'bicubic', 'crop'); % Rotation
Is = imresize(Ir, 0.9); % Scale
I2 = zeros(size(I1), 'single');
[hs, ws] = size(Is);
hs2 = floor(hs/2);
ws2 = floor(ws/2);
I2(h2-hs2+1:h2+hs-hs2, w2-ws2+1:w2+ws-ws2) = Is; % Ensure scaling is applied relative to the image center
% Registration with Fourier-Mellin
[Theta, Scale, Tx, Ty] = RegisterFourierMellin(I1, I2);
% Transformation matrix (rotation, translation and scaling)
T = [ 1 0 -Tx;
0 1 -Ty;
0 0 1 ];
Thrad = Theta * pi / 180;
R = [ cos(Thrad) -sin(Thrad) 0;
sin(Thrad) cos(Thrad) 0;
0 0 1 ];
S = [Scale 0 0;
0 Scale 0;
0 0 1 ];
A = T * R * S;
% Fill-in pixel coordinates for interp2
% Rotation/scale is relative to the image center
[y, x] = ndgrid(-h2:h-h2-1, -w2:w-w2-1);
xx = (x + A(1,3)) .* A(1,1) + (y + A(2,3)) .* A(2,1);
yy = (x + A(1,3)) .* A(1,2) + (y + A(2,3)) .* A(2,2);
% Align I2 to I1
Ireg = interp2(I2, xx + w2 + 1, yy + h2 + 1);
% Change 3: Plot in different section
% Plot Figures
figure;
subplot(1, 3, 1);
imshow(I1, []);
title('Original Image (I_1)');
subplot(1, 3, 2);
imshow(I2, []);
title('Transformed Image (I_2)');
subplot(1, 3, 3);
imshow(Ireg + I1 / 4, []); % visually compare and overlay the registered image Ireg with the original image I1
title('Registered Image (I_{reg})');
For a comprehensive understanding of the Fourier-Mellin transform-based image registration method, please refer to the research paper by B. S. Reddy and B. N. Chatterji, titled "An FFT-based Technique for Translation, Rotation, and Scale-Invariant Image Registration."
Hope it helps!

카테고리

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