I1 = rgb2gray(imread('viprectification_deskLeft.png'));
I2 = rgb2gray(imread('viprectification_deskRight.png'));
figure;
imshowpair(I1,I2);
title('読み込んだ画像の差分');
points1 = detectHarrisFeatures(I1);
points2 = detectHarrisFeatures(I2);
[features1,valid_points1] = extractFeatures(I1,points1);
[features2,valid_points2] = extractFeatures(I2,points2);
indexPairs = matchFeatures(features1,features2);
matchedPoints1 = valid_points1(indexPairs(:,1),:);
matchedPoints2 = valid_points2(indexPairs(:,2),:);
figure; showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2);
[tform,inlierPts2,inlierPts1] = ...
estimateGeometricTransform(matchedPoints2,matchedPoints1,...
'similarity');
figure;
showMatchedFeatures(I1,I2,...
inlierPts1,inlierPts2);
title('幾何学変換行列で使用された対応点');
outputView = imref2d(size(I1));
Ir = imwarp(I2,tform,'OutputView',outputView);
figure; imshowpair(I1,Ir);
title('画像2を画像1に位置あわせ');
Best Answer