相机标定原理
来源:互联网 发布:吉利知豆电动车怎么样 编辑:程序博客网 时间:2024/05/21 08:45
由于(u,v)只能表示像素位于数组中的列数与行数,并没有使用物理单位表示该像素在图像中位置,所以需要再建立以物理单位(mm)表示的图像坐标系,(u,v)表示以像素为单位的图像坐标系的坐标,(X,Y)表示以mm为单位的图像坐标系的坐标,在X、Y坐标系中,原点O1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心,但是由于制造原因,很多情况下会有偏移。图像坐标系是一个二维平面,又称为像平面,实际上就是摄像头的CCD传感器的表面。每个CCD传感器都有一定的尺寸,也有一定的分辨率,这个就确定了毫米与像素点之间的转换关系。举个例子,CCD的尺寸是8mm X 6mm,帧画面的分辨率设置为640X480,那么毫米与像素点之间的转换关系就是80pixel/mm。”设CCD传感器每个像素点的物理大小为dx*dy,相应地,就有dx=dy=1/80。
其中,很容易可以知道
alph=f/dx, beta=f/dy,分别代表了以X轴与Y轴方向上的像素为单位表示的等效焦距。
gamma在较高精度的相机模型中引入,表示图像平面中以像素为单位的坐标轴倾斜程度的量度,gamma=alpha*tan(theta) theta是相机CCD阵列v轴的偏斜角度。
由针孔模型我们可以知道,如果一直摄像机的内外参数,就知道投影矩阵M,这时候对任何空间点就可以求出其对应图像坐标,但是如果已知空间某点的像点m位置(u,v)即使已经知道摄像机内外参数,Xw也不能唯一确定,因为在投影过程中消去了Zc的信息。
在上面的式子中M是3x4不可逆矩阵,当已知M与(u,v)时,由公式得到的三个方程中消去z,只可以得关于Xw,Yw与Zw的两个线性方程,这个方程组即为射线OP的方程,也就是说,投影点为m的所有点均在该射线上,所以,该空间是不能唯一确定的。
函数:
calibrateCamera(objectPoints, imagePoints, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs,flag)
objectPoints: 一组世界坐标系中的3D
imagePoints: 超过10张图片的角点集合
imageSize: 每张图片的大小
cameraMatrix: 内参矩阵
distCoeffs: 畸变矩阵(默认获得5个即便参数k1,k2,p1,p2,k3,可修改)
rvecs: 外参:旋转向量
tvecs: 外参:平移向量
flag: 标定时的一些选项:
CV_CALIB_USE_INTRINSIC_GUESS:使用该参数时,在cameraMatrix矩阵中应该有fx,fy,u0,v0的估计值。否则的话,将初始化(u0,v0)图像的中心点,使用最小二乘估算出fx,fy。
CV_CALIB_FIX_PRINCIPAL_POINT:在进行优化时会固定光轴点。当CV_CALIB_USE_INTRINSIC_GUESS参数被设置,光轴点将保持在中心或者某个输入的值。
CV_CALIB_FIX_ASPECT_RATIO:固定fx/fy的比值,只将fy作为可变量,进行优化计算。当CV_CALIB_USE_INTRINSIC_GUESS没有被设置,fx和fy将会被忽略。只有fx/fy的比值在计算中会被用到。
CV_CALIB_ZERO_TANGENT_DIST:设定切向畸变参数(p1,p2)为零。
CV_CALIB_FIX_K1,...,CV_CALIB_FIX_K6:对应的径向畸变在优化中保持不变。
CV_CALIB_RATIONAL_MODEL:计算k4,k5,k6三个畸变参数。如果没有设置,则只计算其它5个畸变参数。
注意:所有分辨率下的畸变(k1,k2,p1,p2)相同,但内参不同(fx,fy,u0,v0),不同分辨率下需要重新标定相机内参
- 相机标定原理
- 相机标定原理
- 相机标定模型原理
- 相机标定原理
- 相机标定的原理
- 相机标定原理
- 相机标定(2)---摄像机标定原理
- 相机标定(2)---摄像机标定原理
- 单目相机标定原理
- 单目相机标定原理
- 单目相机标定原理
- 相机标定与三维重建原理
- 单目相机标定原理
- 单目相机标定原理
- 相机标定原理(1)
- 相机标定原理 (2)
- 相机标定原理(3)
- 相机标定原理:绝对圆锥曲线
- 64位Linux编译C代码,crt1.o文件格式不对的问题
- 菜鸟跑通doppia(一)
- ubuntu双网卡设置:系统的网络服务与此版本的网络管理器不兼容
- 关于protoc触发的关于$PATH中路径先后顺序影响的思考
- CMakeList中两种加载opencv库的方法
- 相机标定原理
- 菜鸟跑通doppia(二)
- 菜鸟跑通doppia(三)
- 菜鸟跑通doppia(四)
- 菜鸟跑通caffe(一)
- 菜鸟跑通caffe(二)
- 关于错误java.util.zip.ZipException: duplicate entry during packageAllDebugClassesForMultiDex
- 每首歌都有一个故事之《你的扣肉》
- 开发自己的Openfire插件