将单应性应用于图像

问题描述 投票:1回答:1

我被这个单应性问题困扰。我必须应用单应性,然后进行二维双线性插值法来渲染图像,以便看到鸟瞰图。

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

到目前为止是我的代码:

I = imread('basketball-court.ppm');
imshow(I)

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

% Generating a blank 940x500 image
whiteImage = ones(940, 500, 3, 'uint8');

xp = [0; 500; 500; 0;];
yp = [0; 0; 940; 940;];

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矩阵应用于源图像?

matlab computer-vision homography bilinear-interpolation
1个回答
1
投票

您可以使用projective2dimwarp

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

我不理解您所举的示例,因此我无法说是否需要反转H

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

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

© www.soinside.com 2019 - 2024. All rights reserved.