www.gusucode.com > vision 源码程序 matlab案例代码 > vision/EstimateEssentialMatrixFromAPairOfImagesExample.m

    %% Estimate Essential Matrix from A Pair of Images
%
%%
% Load precomputed camera parameters.
load upToScaleReconstructionCameraParameters.mat
%%
% Read and undistort two images.
imageDir = fullfile(toolboxdir('vision'),'visiondata',...
    'upToScaleReconstructionImages');
images = imageDatastore(imageDir);
I1 = undistortImage(readimage(images,1),cameraParams);
I2 = undistortImage(readimage(images,2),cameraParams);
I1gray = rgb2gray(I1);
I2gray = rgb2gray(I2);
%%
% Detect feature points each image.
imagePoints1 = detectSURFFeatures(I1gray);
imagePoints2 = detectSURFFeatures(I2gray);
%%
% Extract feature descriptors from each image.
features1 = extractFeatures(I1gray,imagePoints1,'Upright',true);
features2 = extractFeatures(I2gray,imagePoints2,'Upright',true);
%%
% Match features across the images.
indexPairs = matchFeatures(features1,features2);
matchedPoints1 = imagePoints1(indexPairs(:,1));
matchedPoints2 = imagePoints2(indexPairs(:,2));
figure
showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2);
title('Putative Matches')
%%
% Estimate the essential matrix.
[E,inliers] = estimateEssentialMatrix(matchedPoints1,matchedPoints2,...
 cameraParams);
%%
% Display the inlier matches.
inlierPoints1 = matchedPoints1(inliers);
inlierPoints2 = matchedPoints2(inliers);
figure
showMatchedFeatures(I1,I2,inlierPoints1,inlierPoints2);
title('Inlier Matches')