我在OpenCV论坛上发布了这个,但到目前为止还没有回复,所以在这里尝试。
2.4.0参考手册的第352页有此注释:
注意:如果使用非方形(=非NxN)网格和 findChessboardCorners()用于校准,并且calibrateCamera返回 坏值(零失真系数,图像中心很远 从(w / 2-0.5,h / 2-0.5),和/或fx和fy之间的巨大差异 (比例为10:1或更高)),那么你可能已经使用过了 patternSize = cvSize(rows,cols)而不是使用 patternSize = cvSize(cols,rows)infindChessboardCorners()。
这让我很困惑。什么定义棋盘上的行与列? 毕竟,棋盘旋转并移动,同时收集 与calibrateCamera一起使用的数据。
什么是远?我有一个非方形棋盘,1292x964,1 / 3格式 使用4毫米非球面镜头;在全宽范围内,我得到:cx = 639和cy = 550。 理想情况下,那些应该是1292/2 = 646和964/2 = 457;
我是否已经获得了550而预期的457是“大差异”?
我应该在patternSize中交换宽度/高度吗?如果是这样,那是否意味着我 应该在校准期间限制棋盘的旋转 保持棋盘行与列相对于列的概念 相机的成像器?
谢谢, 戴夫托马斯