我被这个单应性问题卡住了。我必须应用单应性,然后二维双线性插值来渲染图像,这样我才能看到鸟瞰图。
我成功地计算了单应性(我想(。我无法弄清楚如何将此单应性矩阵应用于源图像,以在空白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矩阵应用于源图像?
您可以使用projective2d和imwarp:
tform = projective2d(H);
outputImage = imwarp(I, tform);
我不理解你举的例子,所以我不能说你是否需要反转H
。
我的答案可能是错误的——我无法执行您的代码示例来验证解决方案。
如果它能解决你的问题,请告诉我。