• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: Image  stitch  

资源简介

这个代码用于数字图像处理中的图像拼接,几幅具有公共区域的图像可以拼接成一幅全图。

资源截图

代码片段和文件信息

% Load images.
buildingDir = fullfile(toolboxdir(‘vision‘) ‘visiondata‘ ‘building‘);
buildingScene = imageDatastore(buildingDir);

% Display images to be stitched
montage(buildingScene.Files)

% Read the first image from the image set.
I = readimage(buildingScene 1);

% Initialize features for I(1)
grayImage = rgb2gray(I);
points = detectSURFFeatures(grayImage);
[features points] = extractFeatures(grayImage points);

% Initialize all the transforms to the identity matrix. Note that the
% projective transform is used here because the building images are fairly
% close to the camera. Had the scene been captured from a further distance
% an affine transform would suffice.
numImages = numel(buildingScene.Files);
tforms(numImages) = projective2d(eye(3));

% Iterate over remaining image pairs
for n = 2:numImages

    % Store points and features for I(n-1).
    pointsPrevious = points;
    featuresPrevious = features;

    % Read I(n).
    I = readimage(buildingScene n);

    % Detect and extract SURF features for I(n).
    grayImage = rgb2gray(I);
    points = detectSURFFeatures(grayImage);
    [features points] = extractFeatures(grayImage points);

    % Find correspondences between I(n) and I(n-1).
    indexPairs = matchFeatures(features featuresPrevious ‘Unique‘ true);

    matchedPoints = points(indexPairs(:1) :);
    matchedPointsPrev = pointsPrevious(indexPairs(:2) :);

    % Estimate the transformation between I(n) and I(n-1).
    tforms(n) = estimateGeometricTransform(matchedPoints matchedPointsPrev...
        ‘projective‘ ‘Confidence‘ 99.9 ‘MaxNumTrials‘ 2000);

    % Compute T(1) * ... * T(n-1) * T(n)
    tforms(n).T = tforms(n-1)

评论

共有 条评论