1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| clear all; close all; clc;
%%%% charger les deux images %%%%
ImageColor1=imread ('2.jpg');
ImageColor2=imread ('3.jpg');
%%%% convertir de RGB vers niveau de gris %%%%
ImageGris1=im2double(rgb2gray(ImageColor1));
ImageGris2=im2double(rgb2gray(ImageColor2));
%%%% la taille des images %%%%
taille_image=size (ImageGris1);
%%%% detection des points d'interet %%%%
Corners1=detectSURFFeatures(ImageGris1);
Corners2=detectSURFFeatures(ImageGris2);
[features1, valid_points1] = extractFeatures(ImageGris1, Corners1);
[features2, valid_points2] = extractFeatures(ImageGris2, Corners2);
indexPairs = matchFeatures(features1, features2);
matchedPoints1 = valid_points1(indexPairs(:, 1), :);
matchedPoints2 = valid_points2(indexPairs(:, 2), :);
figure; showMatchedFeatures(ImageGris1, ImageGris2, matchedPoints1, matchedPoints2);
title('Matched SURF points,including outliers');
[tform,inlierPoints1,inlierPoints2] = estimateGeometricTransform(matchedPoints2,matchedPoints1,'similarity');
figure; showMatchedFeatures(ImageGris1,ImageGris2,inlierPoints2,inlierPoints1);
title('Matched inlier points');
% [fRANSAC, epipolarInliers, status] = estimateFundamentalMatrix(...
% matchedPoints1, matchedPoints2, 'Method', 'RANSAC', ...
% 'NumTrials', 10000, 'DistanceThreshold', 0.1, 'Confidence', 99.99);
fRANSAC1 = estimateFundamentalMatrix(inlierPoints1,inlierPoints2,'Method', 'RANSAC', 'NumTrials', 2000, 'DistanceThreshold', 1e-4)
FNorm8Point=estimateFundamentalMatrix(inlierPoints1,inlierPoints2,'Method', 'Norm8Point', 'NumTrials', 2000, 'DistanceThreshold', 1e-4)
load calibrationSessionNew1
cameraParams1=calibrationSession.CameraParameters;
cameraParams2=calibrationSession.CameraParameters;
[R,I]= cameraPose(tform.T,cameraParams1,cameraParams2,matchedPoints1,matchedPoints2) |
Partager