彩色图像配准的matlab程序
时间: 2023-05-27 12:04:19 浏览: 44
以下是一种基于彩色图像的配准matlab程序,通过最小二乘法和互信息相结合的方法实现。
%% 图像读取与显示
I1 = imread('image1.jpg');
I2 = imread('image2.jpg');
figure,imshow(I1);
figure,imshow(I2);
%% 灰度图像转换
I1_g = rgb2gray(I1);
I2_g = rgb2gray(I2);
%% 特征点检测
pts1 = detectSURFFeatures(I1_g);
pts2 = detectSURFFeatures(I2_g);
figure,imshow(I1_g);hold on;
plot(pts1.selectStrongest(50));
figure,imshow(I2_g);hold on;
plot(pts2.selectStrongest(50));
%% 特征点描述
[features1,validpts1] = extractFeatures(I1_g,pts1);
[features2,validpts2] = extractFeatures(I2_g,pts2);
%% 进行匹配
indexPairs = matchFeatures(features1,features2,'Metric','SAD','MatchThreshold',30);
matchedPoints1 = validpts1(indexPairs(:,1));
matchedPoints2 = validpts2(indexPairs(:,2));
figure;
showMatchedFeatures(I1_g,I2_g,matchedPoints1,matchedPoints2,'montage');
%% 计算变换矩阵
[tform,inlierPts1,inlierPts2] = estimateGeometricTransform(matchedPoints1,matchedPoints2,'affine');
%% 互信息匹配
I1_gray = rgb2gray(I1);
I2_gray = rgb2gray(I2);
I1_registered = imwarp(I1_gray,tform,'OutputView',imref2d(size(I2_gray)));
[optimizer, metric] = imregconfig('multimodal');
optimizer.MaximumIterations = 100;
optimizer.InitialRadius = 0.009;
tform_similarity = imregtform(I1_gray,I2_gray,'similarity',optimizer,metric);
I1_registered_similarity = imwarp(I1_gray,tform_similarity,'OutputView',imref2d(size(I2_gray)));
figure, imshowpair(I1_registered,I2_gray,'Scaling','joint');
figure, imshowpair(I1_registered_similarity,I2_gray,'Scaling','joint');