相机校准/针孔相机型号和3D位置计算


10

我有一台经过校准的相机,并且具有固有参数。我还具有相对于现实世界中平面上的点(世界原点)的外部参数。我已将这一点设置为法线为[0,0,1]的真实世界坐标[0,0,0]中的原点。

通过这些外部参数,我可以在此处使用以下方法计算出相机在世界平面3d坐标中的位置和旋转:http : //en.wikipedia.org/wiki/Camera_resectioning

现在我有第二点,我已经提取了[x,y]的图像坐标。现在如何获得该点在世界坐标系中的3d位置?

我认为这里的直觉是我必须追踪从相机光学中心(如上所述,我现在具有3D位置)的光线穿过相机的像平面[x,y],然后再追踪通过我在顶部定义的现实世界飞机。

现在,我可以将世界坐标3d射线与已知的法线相交并指向该平面。我没有得到的是我如何找出3d位置和方向通过像素离开图像平面时的情况。通过不同坐标系进行的转换使我感到困惑。


检查此答案,可能会有所帮助。如果您认为任何事情可以/可能完成,请告诉我。dsp.stackexchange.com/a/2737/1473
Jav_Rock 2012年

Answers:


6

如果您有外部知识,那么这很容易。具有外部性与具有“相机姿势”相同,并且具有单应性。在stackoverflow中检查此帖子

您具有外部特性,也称为相机姿势,它被描述为平移和旋转:

PØsË=[[R|Ť]=[[R11[R12[R13ŤX[R21[R22[R23Ťÿ[R31[R32[R33Ťž]

你可以得到单应姿势是这样的:

H=1个Ťž[[R1个X[R2XŤX[R1个ÿ[R2ÿŤÿ[R1个ž[R2žŤž]

然后,可以通过将Homography乘以点,将2D点投影到相应的3D点中:

p2d=[Xÿ1个]ž=1个 使它们均匀

p3d=Hp2d

p=p/pž 归一化点


这里的p(z)是什么意思?
Belal Homaidan

3

您有两个选择,可以使用向后投影或在两个平面之间投影(单应性)。

使用背投影,您可以对相机矩阵进行伪逆运算,然后将结果乘以均匀表示的像点:P

P=ķ[[R-[RC]X[RËp[RØĴËCŤËd=P+X

现在您有了一条3D线,该线穿过相机中心X点。如果需要,可以将其转换为更易于处理的演示文稿。例如,使用一个点和方向矢量(在实际计算之前,请记住对均一坐标V = ω [ X Y Z 1 ] T进行归一化,以便比例因子ω = 1):CXV=ω[Xÿž1个]Ťω=1个

ü=X[RËp[RØĴËCŤËd-Cv=üü大号Ť=C+Ťv

Π=[π1个π2π3π4]Ťπ1个X+π2ÿ+π3ž+π4=0大号Ť=ΠŤ

3×3H

Xp一个ñË=[Xÿ01个]ŤX=PXp一个ñË=H[Xÿ1个]Ť

X

Xp一个ñË=H-1个X

H

H=[R+1个dŤñŤ

dŤ=-[RC


2

您无法知道第二点的3d位置。它可以是从相机中心到无限远的任何光线点。

您可以执行以下操作:

  • 创建一个类似于现实生活场景的预定义3d空间
  • 从不同角度获取更多点的图像,使用不同角度的光线的交点,您可以获得3d点的近似值。

不挂断。我可以找到3d射线与平面相交的3d世界点吗?据我所知,该平面的3d世界坐标和3d世界法线.....我试图找到的3d点是与平面相交的点!(对不起,我觉得我的解释不够好)
猎豹

平面是什么意思?图像平面还是零世界坐标平面?对于后者,您可以计算交点,但这意味着您的3d场景不是3d,而是2d:)(因为它是一个平面)。
盖尔滕2012年

是的,对不起,我只是没有想到。我了解您在说什么,从视觉上来说对我来说真的没有任何意义。因此,是的,我的场景实际上是“ 2d”,因为我有图像平面,也有真实世界平面,真实世界原点[0,0,0]位于该平面上,并且真实世界法线为[0,0, 1],因此位于此现实世界平面上的每个点的形式均为[x,y,0]。我知道我可以通过ax + by + cz + d = 0计算交点,但这就是我遇到的问题。(将在下
猎豹

我有一条光线从相机中心/原点开始,有真实世界[x,y,z]和真实世界法线[nx,ny,nz]。我需要从这一点发射一条光线,该光线在[u,v]处与图像平面相交,然后在[x,y,0]处与真实世界平面相交(我想得到的是x,y)。我遇到的麻烦是第一点,即与图像平面的交点。我看不到我该怎么做?
猎豹2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.