0

我在两个不同图像中的点之间有一组对应关系,我想将它们绘制为连接两个原始图像的图像中的线,以显示这些对应关系。我做了以下事情:

function plotInliers(im1, im2, locs1, locs2, corr, inliers)
    l1 = locs1(:, 1:2);
    l1 = l1(corr(:, 1), :);
    l2 = locs2(:, 1:2);
    l2 = l2(corr(:, 2), :);
    l2 = l2 + repmat([0 size(im1, 2)], size(l2, 1), 1);
    im = horzcat(im1, im2);
    figure
    imshow(im)
    hold on

    % plot the correspondences: green inliers, red outliers 
    for ii = 1:size(corr, 1)
        hold on
        % Check if it is an inlier
        if any(ii==inliers), color = 'g'; else color = 'r'; end

        plot([l1(ii, 1) l1(11, 2)], [l2(ii, 1) l2(ii, 2)], ... 
             'Color', color, 'LineWidth', 1)

    end
    hold off

end

im1/im2是两个图像,locs1/locs2是图像中的重要点,corr是包含索引之间对应关系的数组。

然而,结果是绝对错误的,从某种意义上说,索引似乎是完全错误的。这两张图片都有这个尺寸:[388 517 3]

我还尝试在图像上绘制一条线

line([1 1], [300 800])

但是,再一次,结果是错误的,从某种意义上说,线条不是从第一张图像的第一个像素开始,也不是在第二张像素上结束。我得到的结果是这条线从(或多或少)像素 [1 300] 开始,这条线笔直向下。谢谢您的帮助

4

1 回答 1

1

你混淆了你的坐标。语法是line([x1 x2 x3 ...], [y1 y2 y3 ...]),所以当你写的时候,你是在从toline([1 1], [300 800])画一条线(就像你后面说的那样)。(1,300)(1,800)

在这种情况下,您似乎想要绘制的是line([1 300], [1 800]).

于 2013-06-17T13:56:41.653 回答