gpt4 book ai didi

opencv - 针孔相机模型坐标系

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

最近一直在研究针孔相机模型,但是对OpenCV提供的模型和《Multiple View geometry in computer vision》教材一头雾水。

我知道下面的照片是一个简化的模型,它切换了图像平面和相机框架的位置。为了更好地说明和理解,并考虑到主要点 (u0,v0),两帧之间的关系是 x=f(X/Z)+u0y=f( Y/Z)+v0.

enter image description here

但是,我真的很困惑,因为通常图像坐标是第四象限坐标的形式,如下所示!

我能否直接将以下定义中的 (x,y) 替换为上述“等效”的针孔模型,这并不是很有说服力?

enter image description here

此外,如果一个物体在相机坐标(当然Z>f)中的(+X,+Y)象限内,在等效模型中,它应该出现在图像的右半平面上协调。然而,这样的物体在普通相机拍摄的图像中,应该位于左半边。因此,对我来说这个模型是不合理的。

最后,我尝试在原模型的基础上推导如下。

enter image description here

结果是 x1=-f(X/Z)y1=-f(Y/Z)

然后,我试图找到 (x2,y2) 坐标和相机坐标之间的关系。结果是 x2=-f(X/Z)+u0y2=-f(Y/Z)+v0

在 (x3,y3) 坐标和相机坐标之间,结果是 x3=-f(X/Z)+u0y3=f(Y/Z)+ v0.

无论我试过哪个坐标系,都不是x=f(X/Z)+u0y=f(Y/Z)+v0的形式,一些简历教材都有提供。

此外,在(x2,y2)-坐标或(x3,y3)-坐标上的投影结果也不合理,原因相同:物体在(+X,+Y,+Z)区域相机坐标应“出现”在相机拍摄的图像的左半平面上。

谁能指出我误解了什么?

最佳答案

我终于弄清楚了这个问题,并通过实现 Z. Zhang 的论文通过从未知方向查看平面来进行灵活的相机校准来证明我的解释是正确的。计算机视觉国际 session (ICCV'99),希腊科孚岛,第 666-673 页,1999 年 9 月。

让我从头开始解释一切。下图是原针孔相机模型和图像传感器上的投影结果。然而,这不是我们应该在“图像”上看到的。

figure1

我们应该看到的是

figure2

比较图 1 和图 2,我们应该注意到这张图片是上下颠倒和左右颠倒的。我在 CMOS 传感器公司工作的 friend 告诉我,有内置功能可以自动翻转感知图像。

既然要对图像坐标与世界坐标的关系进行建模,就应该直接把图像传感器看成一个投影平面。之前让我困惑的是投影总是局限于投影边,这误导了我从几何上理解推导。

现在,我们应该从图像传感器的“背面”看蓝色( View 透视)箭头。

结果如图2,x1-y1坐标现在分别向右和向下,所以方程为

x1=-f(X/Z)
y1=-f(Y/Z)

现在,就 x-y 坐标而言,方程是

x=f(X/Z)+u0
y=f(Y/Z)+v0

这是论文描述的内容。

现在,让我们看一下现实世界中不存在但有助于视觉解释的等效模型。

enter image description here

原理是一样的。从投影中心看向图像平面。结果是

figure 4

其中投影的“F”是右-左。方程是

x1=f(X/Z)
y1=f(Y/Z)

现在,就 x-y 坐标而言,方程是

x=f(X/Z)+u0
y=f(Y/Z)+v0

这是论文描述的内容。

最后但同样重要的是,由于世界坐标的单位是毫米或英寸,而图像坐标的单位是像素,所以有一个比例因子,有些书上描述为

x=a*f(X/Z)+u0 
y=b*f(Y/Z)+v0

x=fx(X/Z)+u0
y=fy(Y/Z)+v0

其中 fx=a*f, fy=b*f

关于opencv - 针孔相机模型坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938455/

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