MATLAB上的摄像机校准

时间:2014-08-23 20:38:58

标签: matlab computer-vision kinect camera-calibration matlab-cvst

我对相机校准非常陌生,我一直在尝试使用MATLAB的计算机视觉工具箱中的相机校准应用程序。

所以我按照他们在网站上建议的步骤进行操作,到目前为止,我能够获得相机的内在参数。

所以现在,我对使用" cameraParameter"我应该怎么做感到困惑。校准完成时创建的对象。

所以我的问题是: (1)我应该如何处理创建的cameraParameter对象? (2)当我使用相机拍摄某些图像时,如何使用此对象? (3)每次为实验拍摄图像时,是否需要检查板? (4)每次相机应该放在同一个地方吗?

我很抱歉,如果这些问题真的是初学者水平,相机校准对我来说是新的,我无法找到答案。

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

我假设您正在使用1只相机,因此游戏中只有相机的内部参数。

(1),(2)。校准完相机后,需要使用此参数不失真图像。由于镜头会使镜头扭曲一点,因此相机不会拍摄实际的图像,校准参数用于修复图像。更多信息wikipedia

关于何时需要重新校准相机(3):如果您设置相机并且不改变其焦距,则可以使用相同的校准参数,但一旦更改焦距,重新校准就会必要的。

(4)只要您不改变焦距并且您没有使用立体相机系统,您就可以自由更换相机。

答案 1 :(得分:1)

您正在寻找的是两个独立的校准步骤:深度图像与彩色图像的对齐以及从深度到点云的转换。这两个函数都是由windows sdk提供的。有些matlab包装器可以调用这些SDK函数。仅当您对Kinect上存储的制造商校准信息不满意时,您可能还想进行自己的校准。通常,误差在2D对齐中在1-2像素内,在3D中为4mm。

答案 2 :(得分:0)

校准单个摄像机时,可以使用生成的cameraParameters对象进行多项操作。首先,您可以使用undistortImage功能消除镜头失真的影响,这需要cameraParameters。还有一个名为extrinsics的功能,您可以使用该功能在相对于某个参考对象(例如棋盘)的世界中定位校准相机。这是example如何使用单个相机测量平面物体的方法。

深度传感器,如Kinect,是一种不同的动物。它已经为您提供了每个像素的实际单位深度。如果您想要比开箱即用的更精确的3D重建,Kinect的额外校准非常有用。

如果你能告诉我们更多关于你试图通过实验完成的事情,通常会有所帮助。