Local Feature Detection and Extraction

%Display two images.
original = imread('cameraman.tif');
figure;
imshow(original);
%The second image, is the original image rotated and scaled.
scale = 1.3;
J = imresize(original,scale);
theta = 31;
distorted = imrotate(J,theta);%旋转
figure
imshow(distorted);
%Detecting the matching SURF features is the first step in determining the transform needed to correct the distorted image.
ptsOriginal  = detectSURFFeatures(original);
ptsDistorted = detectSURFFeatures(distorted);
%The detection step found several roughly corresponding blob structures in both images. Compare the detected blob features. 
%This process is facilitated by feature extraction, which determines a local patch descriptor
[featuresOriginal,validPtsOriginal] = ...
            extractFeatures(original,ptsOriginal);
[featuresDistorted,validPtsDistorted] = ...
            extractFeatures(distorted,ptsDistorted);
%Find candidate matches.
indexPairs = matchFeatures(featuresOriginal,featuresDistorted);
%Find point locations from both images.
matchedOriginal  = validPtsOriginal(indexPairs(:,1));
matchedDistorted = validPtsDistorted(indexPairs(:,2));
%Display the candidate matches.
figure
showMatchedFeatures(original,distorted,matchedOriginal,matchedDistorted)
title('Candidate matched points (including outliers)');
%Analyze the feature locations.
[tform, inlierDistorted,inlierOriginal] = ...
            estimateGeometricTransform(matchedDistorted,...
                matchedOriginal,'similarity');
%Display the matching points.
figure
showMatchedFeatures(original,distorted,inlierOriginal,inlierDistorted)
title('Matching points (inliers only)')
legend('ptsOriginal','ptsDistorted')
%Apply the computed geometric transform to the distorted image.
outputView = imref2d(size(original));
recovered  = imwarp(distorted,tform,'OutputView',outputView);
%Display the recovered image and the original image.
figure
imshowpair(original,recovered,'montage')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值