gpt4 book ai didi

matlab - 计算将一个四边形转换为另一个二维四边形的矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:00 25 4
gpt4 key购买 nike

在下图中,目标是计算将点 a1 a2 a3 a4 转换为对应点 b1 b2 b3 b4 的单应矩阵 H。即:

[b1 b2 b3 b4] = H * [a1 a2 a3 a4]

您建议哪种方法是计算 H(3x3) 的最佳方法。 a1...b4 是二维中的点,在齐次坐标系中表示(即 [a1_x a1_y 1]', ...)。编辑:对于这些类型的问题,我们使用 SVD,所以我想看看如何在 Matlab 中简单地完成。

编辑:

这是我最初尝试在 Maltlab 中使用 svd (H=Q/P) 解决它的方法。考虑给定示例的以下代码

px=[0 1 1 0];  % a square
py=[1 1 0 0];

qx=[18 18 80 80]; % a random quadrangle
qy=[-20 20 60 -60];
if (DEBUG)
fill(px,py,'r');
fill(qx,qy,'r');
end

Q=[qx;qy;ones(size(qx))];
P=[px;py;ones(size(px))];
H=Q/P;
H*P-Q
answer:
-0.0000 0 0 0 0
-20.0000 20.0000 -20.0000 20.0000 0.0000
-0.0000 0 0 0 -0.0000

我希望答案是空矩阵,但事实并非如此!...这就是我在 StackOverflow 中提出这个问题的原因。现在,我们都知道这是一个射影变换,显然不是欧几里得。但是,最好知道在一般情况下是否可以仅使用 4 个点来计算此类矩阵。

matrix computation

最佳答案

您可以尝试使用 cp2tform 函数,它从控制点对推断空间变换。由于在您的情况下不保留并行,因此您应该将 transformtype 设置为“projective”。更多信息是 here

关于matlab - 计算将一个四边形转换为另一个二维四边形的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com