gpt4 book ai didi

opencv - cv2.projectPoints 实际上是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 22:20:09 29 4
gpt4 key购买 nike

我正在尝试编写自己的 cv2.projectPoints 实现只是为了练习,我的实现没有达到预期的效果。

我假设针孔相机没有失真,所以我所做的就是将以下等式应用于我所有的平面物点。

enter image description here

假设在某个世界空间(飞机和相机都存在于其中)中,飞机距离 2 个单位。所以,在世界坐标空间中,平面上的所有点都有z=2。但是,在平面自身的坐标空间中,平面上所有的点都有z=0。因此,矢量 [X Y Z 1] 实际上是 [X Y 0 1] 对于我要投影的所有坐标。假设我发现,在我的姿势估计中,对象在 z 方向上平移了 -2。将这个向量乘以找到的姿势后,我得到向量...

r11X + r12Y  + t1
r21X + r22Y + t2
r31X + r32Y + 2

但是现在,由于 r31r32,投影点不再有 z = 2

最佳答案

项目积分与您描述的公式一样有效。在没有旋转的简单情况下(旋转矩阵是单位矩阵),你会在最后得到类似的东西:

X + t1
Y + t2
2

这正是您所期望的。您正在使用姿势估计,这意味着这种简单的情况几乎永远不会发生,因为您总会有一些错误,但应该很小......这意味着最后 r31X + r32Y 应该导致接近于 0。如果不是这种情况,则姿势估计可能有错误。另外,请考虑这两个值也可以相互抵消。

还有一点,一旦你将整个公式相乘,你将得到一个 3D 向量,你必须将该向量除以最后一个分量以获得 2D 投影点。

最好,如果可能的话,你可以举一个数字的例子来了解你实际有多少错误,看看它是否是由于其他原因......

关于opencv - cv2.projectPoints 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50877759/

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