图像配准:
%手动选择执行图片(由于程序为分开,此处保存的mat文件为图MRI6的信息,所以请选择图MRI6)
[filename,pathname]=uigetfile({'*.jpg;*.bmp;*.tif;*.png;*.gif','All Image Files';'*.*','All Files'});
image = imread([pathname,filename]);
orthophoto=image(:,:,1);%将三维图像转化为二维图像
% unregistered=imrotate(orthophoto,-40,'bilinear','crop');%双线性法顺时针旋转40°
se=translate(strel(1),[20 40]);%定义se,向下移动40个像素和向右移动100个像素
unregistered=imdilate(orthophoto,se);%将影像I按照se进行变换
subplot(2,2,1),imshow(orthophoto);title('参考图像');
subplot(2,2,2),imshow(unregistered);title('待配准的图像');
cpselect(unregistered,orthophoto);%unregistered未注册的投影。正射影像。orthophoto
load('b.mat');
input_points_corr=cpcorr(a,b,unregistered,orthophoto);%input_points_corr是一个二维数组,它表示两个输入控制点集合a和b之间的相关性。
mytform=cp2tform(input_points_corr,b,'linear conformal');%mytform是一个转换矩阵,它可以将控制点集b从其当前坐标系转换到与控制点集a相同的坐标系。
info=imfinfo([pathname,filename]);
registered=imtransform(unregistered,mytform,'XData',[1 info.Width],'YData',[1 info.Height]);%完成空间变换
subplot(2,2,3),imshow(registered);title('配准后的图像');