单平面的摄像机校准

时间:2013-11-29 09:53:07

标签: opencv camera-calibration

我的问题陈述非常简单。但我无法让opencv校准工作。我正在使用此处的代码:source code。 我必须以固定的距离拍摄与相机平行的图像。我尝试仅在相机和不同平面上拍摄测试图像(大约20张)。我也改变了大小和方块的数量。

在这种情况下校准的最佳方法是什么? distorted image undistorted image

稍后会裁剪未失真的图像,这就是它看起来更小的原因。

仔细检查图像后,枕形失真似乎已得到纠正。但“梯形”失真仍然存在。由于相机安装在一个封闭的盒子里,我拍摄图像的平面是有限的。

2 个答案:

答案 0 :(得分:0)

将校准问题视为找到投影矩阵P:

image_points = P * 3d_points,其中P =内在*外在

现在跟我说吧: 您基本上对内在部分感兴趣,但校准算法必须找到内在和外在。现在,如果选择无穷远处的3D点,则可以获得每列投影矩阵,例如xInf = [1,0,0,0]。这个点是无限的,因为当你从齐次坐标转换为笛卡儿时,你得到了 [1 / 0,0,0]。如果将投影矩阵与无穷远点相乘,您将获得其相应的列(第1列为Xinf,第2列为yInf,第3列为zInf,第4列为相机中心)。

因此结论很简单 - 要获得投影矩阵(即成功校准),您必须清楚地看到无限远处的点或消失点,这些点来自棋盘装备中的线条的会聚扩展(也就是铁路轨道的末端)地平线)。您的图像不易检测消失点,因为您不会倾斜您的棋盘,也不会通过后退来旋转或缩放它。因此,您的校准将始终失败。

答案 1 :(得分:0)

简化Vlad已经说过的内容:理论上不可能只用与摄像机平行的测试图像来校准您的摄像机。您必须更改校准板的方向。实际上,每个测试图像都应该有不同的方向。

查看以下链接中的前两张图片,了解校准板应如何倾斜(或倾斜): http://www.vision.caltech.edu/bouguetj/calib_doc/

相关问题