www.gusucode.com > vision 源码程序 matlab案例代码 > vision/RecoverATransformedImageUsingSURFFeaturePointsExample.m
%% Recover a Transformed Image Using SURF Feature Points % %% % Read and display an image and a transformed image. original = imread('cameraman.tif'); imshow(original); title('Base image'); distorted = imresize(original,0.7); distorted = imrotate(distorted,31); figure; imshow(distorted); title('Transformed image'); %% % Detect and extract features from both images. ptsOriginal = detectSURFFeatures(original); ptsDistorted = detectSURFFeatures(distorted); [featuresOriginal,validPtsOriginal] = ... extractFeatures(original,ptsOriginal); [featuresDistorted,validPtsDistorted] = ... extractFeatures(distorted,ptsDistorted); %% % Match features. index_pairs = matchFeatures(featuresOriginal,featuresDistorted); matchedPtsOriginal = validPtsOriginal(index_pairs(:,1)); matchedPtsDistorted = validPtsDistorted(index_pairs(:,2)); figure; showMatchedFeatures(original,distorted,... matchedPtsOriginal,matchedPtsDistorted); title('Matched SURF points,including outliers'); %% % Exclude the outliers, and compute the transformation matrix. [tform,inlierPtsDistorted,inlierPtsOriginal] = ... estimateGeometricTransform(matchedPtsDistorted,matchedPtsOriginal,... 'similarity'); figure; showMatchedFeatures(original,distorted,... inlierPtsOriginal,inlierPtsDistorted); title('Matched inlier points'); %% % Recover the original image from the distorted image. outputView = imref2d(size(original)); Ir = imwarp(distorted,tform,'OutputView',outputView); figure; imshow(Ir); title('Recovered image');