我正在使用OpenCV的一个项目关于我的论文,我必须校准我的相机重建3d。我有一个关于正方形大小的问题,当我们使用棋盘图案时,我知道它是正方形的大小,但我使用圆形网格或不对称圆形网格。你能给我解释一下这个术语在这种情况下的意思吗?
我认为它没有影响,并且第一组校准没有改变该值,将其固定为50,但我试图改变好奇心,结果发生了变化。特别是改变cx和cy的接近程度,与我想象的理想中心点相比,在图像的中心。如果我设置一个大的值,比如10000,它非常非常接近,但我有更高的K2(径向扭曲)值和类似的重投影误差。
谁能帮我理解一下原因??对于非对称圆形网格图案,正方形的大小为在行或列上圆形中心之间距离的一半。或者,你可以这样想,如果我在圆的中心(row = I, col = j),到第I +1行下一个圆的中心的水平距离(以米或毫米为单位)是多少?
我只是通过做cv:: stereocaliate()然后用卷尺测量两个镜头之间的(近似)间距来验证这一点。我使用了Nerian的图案,并确认打印的是正确的(即,对于美国字母图案,间距是2厘米,而不是4厘米)。
我也在想这个问题。你可能已经明白了,但是为了将来的参考——唯一合乎逻辑的测量将是同一行中两个点中心之间的距离——看看算法实际测量的模式,用颜色突出显示。当您不固定列或行时,两个相邻圆之间的距离会发生变化,因此输入该值没有意义。
该算法基本上将不对称圆形网格视为两个独立的,稍微移位的网格图,其中圆圈的中心是网格顶点。
至于为什么我们应该担心这些参数-就我所理解的校准(我并不是说我是,自从我上次这样做以来已经很长时间了)-正方形大小参数不影响客观校准本身,因此将其保留默认值1对于大多数用例来说是完全可以的。它真正影响的是相机在3D空间中的位置/方向的估计(外在参数),因为相机然后使用圆之间的距离作为计算其在现实世界中的位置的方法,而不是用定义为1的单位作为网格边缘大小。这只是在校准一个固定的相机,应该测量东西或立体相机系统,不是那么多的畸变目的。