基于MATLAB的摄像机标定

基于MATLAB的摄像机标定,matlab,computer-vision,kinect,camera-calibration,matlab-cvst,Matlab,Computer Vision,Kinect,Camera Calibration,Matlab Cvst,我对摄像机校准非常陌生,我一直在尝试使用MATLAB的计算机视觉工具箱中的摄像机校准应用程序 因此,我按照他们在网站上建议的步骤进行操作,到目前为止,我已经能够获得相机的内在参数 所以现在,我有点困惑,我应该如何处理校准完成时创建的“cameraParameter”对象 因此,我的问题是: (1) 我应该如何处理创建的cameraParameter对象? (2) 当我使用相机拍摄某物的图像时,如何使用此对象? (3) 每次我为实验拍摄图像时,是否需要棋盘格? (4) 相机每次都应该放在同一个位置

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

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

所以现在,我有点困惑,我应该如何处理校准完成时创建的“cameraParameter”对象

因此,我的问题是: (1) 我应该如何处理创建的cameraParameter对象? (2) 当我使用相机拍摄某物的图像时,如何使用此对象? (3) 每次我为实验拍摄图像时,是否需要棋盘格? (4) 相机每次都应该放在同一个位置吗

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


非常感谢您的帮助。

我假设您只使用了一个摄像头,所以游戏中只有摄像头的固有参数

(1) ,(2)。校准相机后,您需要使用此参数来取消图像失真。相机不采取的图像,因为他们在现实中的镜头扭曲了一点,校准参数是固定的图像。更多

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


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

校准单个相机时,您可以使用生成的
相机参数对象来执行多项操作。首先,您可以使用
不失真图像
功能消除镜头失真的影响,该功能需要
摄像机参数
。还有一个名为
Exterinsics
的函数,您可以使用它来定位世界上相对于某个参考对象(例如棋盘)的校准相机。下面是如何使用单个摄影机测量平面对象的示例

深度传感器,像Kinect一样,有点不同。它已经为您提供了每个像素的实际深度单位。如果您希望获得比开箱即用的更精确的三维重建,则Kinect的附加校准非常有用


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

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

非常感谢你的回复。我实际使用的设备是Kinect设备。因此,我使用RGB摄像机获取RGB图像并对其进行校准,然后获取红外图像并分别对其进行校准。这是正确的做法吗?我猜Kinect属于立体摄像系统,所以Kinect的位置很重要。我说得对吗?再次感谢你的帮助@user2441667不,对于kineck来说,位置无关紧要,主要是因为重要的是摄像机之间的相对位置。然而,我看到你完全迷失在计算机视觉中,我真的建议你读一本书。你似乎需要一个更广泛的答案,可以在这个论坛适合。非常感谢你的答复。是的,我刚开始学习计算机视觉,我正在尝试一些可以在网上找到的基本例子。你有什么能让我跟上进度的建议吗?Thanks@user2441667不是特别的,但是你可以找到一些计算机视觉书籍。@user2441667另外,接受你喜欢的答案。谢谢你的回复。我正试图追踪一个放在Kinect前面的标记的位置。所以我被告知,我必须首先校准Kinect,以消除镜头扭曲。因此,通过进一步研究,我注意到我需要执行颜色深度映射,以获得我在RGB图像中看到的标记的Z坐标。因此,要做到这一点,我需要在Kinect中执行摄像头的立体校准吗?谢谢