Update connection between views in a view set
Create an empty image view set.
vSet = imageviewset;
Read two images into the workspace.
imageDir= fullfile(toolboxdir('vision'),'visiondata','structureFromMotion'); I1 = rgb2gray(imread(fullfile(imageDir,'image1.jpg'))); I2 = rgb2gray(imread(fullfile(imageDir,'image2.jpg')));
Detect interest points in each image.
points1 = detectSURFFeatures(I1); points2 = detectSURFFeatures(I2);
Extract feature descriptors from the interest points.
[features1,validPoints1] = extractFeatures(I1,points1); [features2,validPoints2] = extractFeatures(I2,points2);
Add features and the points for the two images to the image view set.
vSet = addView(vSet,1,'Features',features1,'Points',validPoints1); vSet = addView(vSet,2,'Features',features2,'Points',validPoints2);
Match the features between the two images. Then, store the matched features as a connection in the image view set.
indexPairs = matchFeatures(features1,features2); vSet = addConnection(vSet,1,2,'Matches',indexPairs);
Create a relative pose between the views. Then,update the connection in the image view set.
theta = 30; % degrees rot = [ cosd(theta) sind(theta) 0; ... -sind(theta) cosd(theta) 0; ... 0 0 1]; trans = [2 3 4]; tform = rigid3d(rot,trans); vSet = updateConnection(vSet,1,2,tform);
viewId1— View identifier 1
View identifier 1, specified as an integer. View identifiers are unique to a specific view.
viewId2— View identifier 2
View identifier 2, specified as an integer. View identifiers are unique to a specific view.
infoMat— Information matrix
Information matrix associated with the connection, specified as a 6-by-6 numeric matrix.
featureMatches— Indices of matched points between two views
Indices of matched points between two views, specified as an M-b-2 matrix.