使用MATLAB自带的函数进行二维配准,先粗配准再进行精确配准,值得注意的是,使用MATLAB自带函数要求fixed图像和float图像的维度保持一致,如果不一致需要进行预处理。
代码如下:
clc
clear all; close all;
fixed = dicomread('knee1.dcm');
moving = dicomread('knee2.dcm');
figure
imshowpair(moving,fixed,'falsecolor');
title('Unregisterd');
%% 粗配准
[optimizer, metric] = imregconfig('multimodal');
% optimizer.InitialRadius = 0.01;
% optimizer.Epsilon = 1.5e-4;
% optimizer.GrowthFactor = 1.1;
% optimizer.MaximumIterations = 1000;
% metric.NumberOfHistogramBins = 512;
tformSimilarity = imregtform(moving, fixed, 'similarity', optimizer, metric);
Rfixed = imref2d(size(fixed));
movingRegistered = imwarp(moving, tformSimilarity, 'OutputView', Rfixed);
figure
imshowpair(movingRegistered,fixed,'falsecolor');
title('A: initial registerd');
%% 精配准
movingRegisteredAffineWithIC = imregister(moving,fixed,'affine',optimizer,metric,...
'InitialTransformation',tformSimilarity);
figure
imshowpair(movingRegisteredAffineWithIC,fixed);
title('B: Registration from affine model based on similarity initial condition.');
结果如下: