gpt4 book ai didi

opencv - 通过在相机成像中将图像坐标附加1来表示均质坐标吗

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

在相机成像中,点坐标有多个术语。

世界坐标:[X,Y,Z]物理单位

图像坐标:[u,v]以像素为单位。

通过添加1可以使这些坐标变成齐次坐标吗?
有时在书和纸上用[x,y w]表示。什么时候使用w?什么时候使用1?

在函数initUndistortRectifyMap中,http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#void%20initUndistortRectifyMap(InputArray%20cameraMatrix,%20InputArray%20distCoeffs,%20InputArray%20R,%20InputArray%20newCameraMatrix,%20Size%20size,%20int%20m1type,%20OutputArray%20map1,%20OutputArray%20map2)

应用以下过程

enter image description here

坐标[x y 1]有一个术语吗?
我不明白为什么R可以应用于[x y 1]?在我看来,R是3D转换。 [x y 1]是一个2d点还是一个3d点?

[u v]-> [x y]-> [x y 1]-> [X Y W]-> [x'y']
坐标根据上述链进行处理。它的原理是什么?

最佳答案

在二维透视几何中,有两个主要的坐标集;笛卡尔坐标(x,y)homogeneous coordinates,由三重(x,y,z)表示。这个三元组可能令人困惑--这不是笛卡尔(x,y,z)这样的三个维度的要点。因此,一些作者对同质点使用了不同的表示法,例如[x,y,z](x:y:z),由于稍后将要讨论的原因,这种表示法更有意义。

第三个坐标仅出于一个目的而存在,也就是将一些点添加到域中,即无穷大的点。对于double (x,y),没有办法表示无穷大,至少不能用数字表示,而且不能用我们可以轻松操纵的方式来表示。但这对于计算机图形学来说是一个问题,因为平行线当然非常普遍,并且欧几里得几何学的一个公理是平行线在无穷远处相交。平行线很重要,因为计算机图形学中使用的转换是行保留。当我们用单应性或仿射变换使点变形时,我们以将线映射到其他线的方式移动像素。如果这些直线恰好是平行的,就像在欧几里得变换或仿射变换中那样,则我们使用的坐标系必须能够表示出来。

因此,我们仅使用齐次坐标(x,y,z)来包括由三重(x,y,0)表示的无穷大点。而且由于我们可以为每个笛卡尔对在该位置放置一个零,这就好比我们在每个方向上都有一个无穷大的点(该方向由与该点的 Angular 指定)。

但是,既然我们有了第三个值,该值也可以是除零以外的任何其他数字,那么所有这些附加点是什么? (x,y,2)(x,y,3)等有什么区别?如果(x,y,2)(x,y,3)点不是无限点,则它们最好等于其他一些笛卡尔点。幸运的是,有一种非常简单的方法可以很好地将所有这些齐次三元组映射到笛卡尔对:只需除以第三个坐标即可。然后(x,y,3)映射回笛卡尔(x/3, y/3),并且映射(x,y,0)到笛卡尔坐标是不确定的-这是完美的,因为在笛卡尔坐标中不存在无穷大点。

由于比例因子的存在,这意味着可以用无限多种方式表示同构坐标。您可以在齐次坐标中将笛卡尔点(x,y)映射到(x,y,1),但也可以将(x,y)映射到(2x, 2y, 2)。请注意,如果我们将第三个坐标除以返回到笛卡尔坐标,则会以相同的起点结束。通常,当您乘以任何非零标量时,这都是正确的。因此,想法是笛卡尔坐标系由一对值唯一地表示,而齐次坐标系可以用无数种方式表示。这就是为什么有些作者使用[x,y,z](x:y:z)的原因。方括号通常在数学中用于定义等价关系,对于齐次坐标,[x,y,z]~[sx,sy,sz]表示非零s。同样,:通常用作比率,因此三个点的比率将等于任何标量s乘以它们的比率。因此,每当您要从齐次坐标转换为笛卡尔坐标时,只要将最后一个数字除以比例因子就可以了,然后除掉(x,y)值即可。例如,请参阅我的答案here

因此,进入齐次坐标的简单方法是添加1,但实际上可以添加1,然后乘以任何标量。你什么都不会改变。您可以将(x,y)映射到(5x,5y,5),应用转换(sx',sy',s) = H * (5x,5y,5),然后以相同的方式获取笛卡尔点作为(sx',sy')/s = (x',y')

关于opencv - 通过在相机成像中将图像坐标附加1来表示均质坐标吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44872453/

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