1

我被困在这个单应性问题上。我必须应用单应性然后 2d 双线性插值来渲染图像,以便我看到鸟瞰图。

我成功地计算了单应性(我猜)。我无法弄清楚如何将此单应矩阵应用于源图像以在空白 940x500 图像上生成输出图像。

到目前为止,这是我的代码:

I = imread('image.png');
imshow(I)

% Mark more than 4 input points
[x,y] = getpts

xp = [0; 720; 720; 0;];
yp = [0; 0; 1280; 1280;];

for i=1:4
    A(2*i-1,:) = [x(i), y(i), 1, 0, 0, 0, -x(i)*xp(i), -xp(i)*y(i), -xp(i)];
    A(2*i,:) = [0, 0, 0, x(i), y(i), 1, -x(i)*yp(i), -yp(i)*y(i), -yp(i)];
end

[U,S,V] = svd(A);
h = V(:,9);

H = reshape(h,3,3);

如何将此 H 矩阵应用于源图像?

4

1 回答 1

1

您可以使用projective2dimwarp

tform = projective2d(H);
outputImage = imwarp(I, tform);

我不明白你给出的例子,所以我不能说你是否需要 invert H

可能是我的回答是错误的 - 我无法执行您的代码示例来验证解决方案。

请让我知道它是否解决了您的问题。

于 2020-02-16T21:59:58.473 回答