我正在使用openCV的calibrateCamera功能来校准我的相机。我从教程implementation开始,但似乎有些不对劲。
相机俯视桌子,我使用的棋盘面积约占我总图像的1/2或1/4。因为我的目标是跟踪在这张桌子上滑动的扁平物体,所以我也将棋盘滑过这张桌子。
所以我的第一个问题是:我可以将棋盘移到这张桌子上吗?或者我是否必须进行一些3D动作以获得一些好的结果? 因为我想知道:该功能如何猜测桌子和相机之间的距离?他只有一个猜测他的焦点,他只有一个“眼睛”,所以没有深度视觉。
我的第二个问题:血腥的东西是如何起作用的? :p有人能告诉我这个函数的一些实现吗?
THX!
答案 0 :(得分:4)
相机校准需要点种子来计算相机矩阵和相机中心点的位置,以及失真矩阵,如果你想使用棋盘,你必须考虑它的尺寸(I从未使用过圆圈功能,因为棋盘的检测更容易),棋盘的尺寸应该是X对非对数,这样你就可以获得正确的旋转矩阵!校准功能需要最少8x的棋盘角度和(我用30分50)它取决于你想要的精度。校准函数的返回值是重新投影误差,如果校准是这个应该接近于零好。
cameraCalibration使用二手棋盘的大小(您可以使用不同的chessboardSize)和尺寸(以mm或cm或甚至m等为单位)。您的结果将取决于您给定的尺寸。
在获得chessboardCorners之后,您必须使用函数CornerSubPix
来细化它们,您可以设置函数参数中的细化程度。
在互联网上,你可以找到很多关于这个主题的文档。
http://www.ics.uci.edu/~majumder/vispercep/cameracalib.pdf
我希望它有所帮助!
答案 1 :(得分:1)
关于棋盘位置,我得到了25-30张图像的最佳结果 首先,我做了3-4张图像,显示了不同距离的棋盘全帧半1/3 1/4 然后我确保去每个角落,每个边缘的每个中心加上每个轴XYZ上的4个旋转。当使用640x480传感器时,我的重投影误差大多在0.1或甚至更好
这里有一些链接让我朝着正确的方向前进: How to verify the correctness of calibration of a webcam?