www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I2_06_1_registration.m

    %% 婸搙儀乕僗偺帺摦儗僕僗僩儗乕僔儑儞乮埵抲崌偣乯
clear all; close all; clc;

%% 2偮偺夋憸偺撉崬丒昞帵
orig  = dicomread('knee1.dcm');
moving = dicomread('knee2.dcm');
figure; imshowpair(moving, orig, 'montage');    %暲傋偰昞帵
%%
imshowpair(moving, orig);shg;                   %廳偹偰昞帵

%% 婸搙儀乕僗偺儗僕僗僩儗乕僔儑儞幚峴丒昞帵  乮曄姺峴楍偑昁梫側応崌偼丄imregtform 傪巊梡乯
[optimizer,metric] = imregconfig('multimodal'); % 僷儔儊僞愝掕 (暿乆偺僨僶僀僗丗堎側傞婸搙斖埻)
optimizer.MaximumIterations = 150;           % 斀暅夞悢
optimizer.InitialRadius = 0.002;             % 弶婜専嶕斖埻

Registered = imregister(moving, orig, 'affine', optimizer, metric);      %傾僼傿儞曄姺丗奼戝弅彫丒暯峴堏摦丒夞揮
figure, imshowpair(Registered, orig)            % 昞帵

%% [廔椆]
% Copyright 2014 The MathWorks, Inc.




















%% 僔儞僾儖側恾宍1
G1 = zeros([16,20], 'uint8')
G1(5, 3:12) = [10:10:100]
G2 = zeros([16,20], 'uint8')
G2(5, 6:15) = [10:10:100]

[optimizer,metric] = imregconfig('monomodal'); % 僷儔儊僞愝掕
tform = imregtform(G2, G1, 'translation', optimizer, metric)
tform.T
G3 = imwarp(G2, tform, 'OutputView',imref2d(size(G1)));
% 寢壥偺壜帇壔
G1(5,:)
G2(5,:)
G3(3:7,:)

%% 僔儞僾儖側恾宍2 (僒僽僺僋僙儖扨埵偺儗僕僗僩儗乕僔儑儞)
G1 = zeros([16,20], 'uint8')
G1(5, 3:7)  = [10:10:50]
G1(5, 8:11) = [40:-10:10]
G2 = zeros([16,20], 'uint8')
G2(5, 6:10) = [5:10:45]
G2(5, 11:15) = [45:-10:5]

[optimizer,metric] = imregconfig('monomodal'); % 僷儔儊僞愝掕
tform = imregtform(G2, G1, 'translation', optimizer, metric, 'PyramidLevels',1)
tform.T
G3 = imwarp(G2, tform, 'OutputView',imref2d(size(G1)));
% 寢壥偺壜帇壔
G1(5,:)
G2(5,:)
G3(3:7,:)
%%