ipadair2相机不清楚老是校对不清楚

双目相机的畸变校正以及平行校正(极线校正)的入门问题总结
做相机标定对于刚入手的人来说有很多疑惑的点,我总结个人的入手的方法和需要弄明白的问题:
一、相机标定是干什么的,需要什么器材才能做?双目校正目标是什么,又需要什么设备?
二、相机(针孔)模型是什么样的?世界坐标系,相机坐标系,图像物理坐标系,图像像素坐标系,这四个坐标系到底是什么?从世界坐标系到图像坐标系到底是怎么转换的?
三、Opencv中用到的相机标定函数,对应的算法具体是谁的,什么算法?获得的各矩阵数据的含义指的是什么?
四、获得单个相机的内参矩阵和畸变系数后,怎么对相机进行畸变校正?
五、分别获得两个相机的内参矩阵和畸变系数,以及两相机之间的相对旋转平移矩阵后。怎样进行双目平行校正?校正的结果和流程应该是怎样的?
这些问题如果搞清楚了,那么相机的畸变和平行校正的方法你一定也就明白了。
对于上述问题,我目前的理解如下:
& & &一、相机标定就是要通过一定的方法对特定图像(棋盘格角点检测)计算出这个相机本身的一些参数,包扩:内参矩阵A,外参矩阵[R|T]、畸变系数[k1,k2,k3,~,p1,p2,~]。内参矩阵各元素意义:一个像素的物理尺寸dx和dy,焦距f,图像物理坐标的扭曲因子gama,图像原点的纵横偏移量cx和cy。外参矩阵:世界坐标系转换到相机坐标系的旋转R和平移T矩阵。畸变系数:包括相机的径向畸变系数k1,k2,k3,~和相机的切向畸变系数p1,p2,~。需要的器材:一个黑白棋盘格的标定板,一个相机拍摄的不同角度或距离的棋盘格图像至少三张以上。
双目校正就是通过一定的方法将两个摄像头拍摄同一个物体的图像进行处理,使得两幅图像最终达到下面的目标,同一个物体在两幅图像中的大小一样,且水平在一条直线上。需要的设备:双目摄像头(即两个同规格的摄像头水平放置左右摄像头),拍摄同一个物理的左右图像对,需要已知左右相机的内参矩阵、畸变系数、右相机相对于左相机的旋转矩阵R(通过一定的方法可将此矩阵分解成两个矩阵R1和R2,即左右相机各旋转一半达到水平)。
二、针孔相机的模型:三维世界中的物体,经过相机成像系统,变成二维图像过程如下所示。
世界坐标系:就是物体在真实世界中的坐标,比如黑白棋盘格的世界坐标系定在第一个棋盘格的顶点,Zw就是垂直于棋盘格的方向。可见世界坐标系是随着物体的大小和位置变化的,单位是长度单位。
相机坐标系:以光心为相机坐标系的原点,以平行于图像的x和y方向为Xc轴和Yc轴,Zc轴和光轴平行,Xc,Yc,Zc互相垂直,单位是长度单位。
图像物理坐标系:以主光轴和图像平面交点为坐标原点,x和y方向如图所示,单位是长度单位。
图像像素坐标系:以图像的顶点为坐标原点,u和v方向平行于x和y方向,单位是以像素计。
& & &从世界坐标系到图像坐标系的转换过程如下:世界坐标系通过外参矩阵转换到相机坐标系,相机坐标系通过内参矩阵转换到图像像素坐标系(这一步是通过两步完成的,一,相机坐标系通过焦距对角矩阵和畸变系数转换到图像物理坐标系,二图像物理坐标系通过像素转换矩阵转换到像素坐标系中)。转换过程和公式如下(将在接下来的文章里详细说明):
& & & 三、opencv标定中用到的重要函数和算法以及获取矩阵的含义:
findChessboardCorners()用来发现棋盘格的角点位置,这里用的是haaris角点检测方法。cornerSubPix()角点位置精确到亚像素级。
stereoCalibrate()通过角点推算出两个相机的内参矩阵M1,M2和畸变系数D1,D2,当然外参矩阵随之也就计算出来了(在图像校正中还没有用到外参),这里用到的是张正友相机标定算法。
stereoRectify()根据内参矩阵和畸变系数计算右相机相对于左相机的旋转R和平移矩阵T,并将这个旋转和平移矩阵分解成左、右相机各旋转一半的旋转R1,R2和平移矩阵T1,T2,这里用到的是bouguet极线校正的方法。
initUndistortRectifyMap()和remap()对左右相机拍摄的图像进行校正(在今后的文章中将会详细介绍实现方法和步骤)。
& & & &四、获取了内参矩阵和畸变系数对图像进行畸变校正时,就是解决图像的畸变问题(径向畸变是因为透镜本身工艺的问题,切向畸变是由于安装问题带来的)。畸变校正的过程是这样的,将源图像像素坐标系通过内参矩阵转化成相机坐标系(和图像物理坐标系比较多了缩放和Z轴),通过畸变系数校正图像的相机坐标,校正后通过内参矩阵将相机坐标系转换成图像像素坐标系,并根据源图像坐标的像素值赋值给新的图像坐标(用插值的方法,将在后面的文章中叙述)。
& & & &五、双目平行校正,是针对图像对应的相机坐标系进行的,那么极线校正的时候应该注意就是在四中叙述的畸变校正过程中,在转换到相机坐标系后,左右图像对应的相机坐标系分别通过旋转矩阵R1和R2进行平行极线校正。步骤如下:将源图像像素坐标系通过内参矩阵转化成相机坐标系(和图像物理坐标系比较多了缩放和Z轴),通过旋转矩阵R1和R2进行平行极线校正,然后通过畸变系数校正图像的相机坐标,校正后通过内参矩阵将相机坐标系转换成图像像素坐标系,并根据源图像坐标的像素值赋值给新的图像坐标
您好!请问一下,我用标定程序对相机进行了标定,得到了相机内参数矩阵和畸变系数,但是怎么计算一个像素点的物理距离?我的到内参数矩阵是{2857.8
1}棋盘格每个长度为1.82CM
wangxiaokun671903
[reply]jun[/reply]我的理解,内参矩阵里面的第一个参数是fx=f/dx单位是pixel/mm,你的焦距知道了,就知道一个像素点的的物理距离dx了
[reply]wangxiaokun671903[/reply]看了你的博文之后,我也是这样想的,因为不知道焦距,所以先测一个物体高度,反推计算焦距,结果得到的焦距竟然是60mm,明显有问题。
[reply]wangxiaokun671903[/reply]如果可以的话,求博主把您单目标定的代码发给我借鉴一下,谢谢了!邮箱,感激不尽!
wangxiaokun671903
[reply]jun[/reply]发了,你试一下吧
[reply]wangxiaokun671903[/reply]收到了,谢谢,但是跟我之前用的代码基本上没什么区别。我发现内参数矩阵跟我设定的棋盘格宽度无关,所以感觉应该不是这样算的,然后我在想是不是要先转换成世界坐标后,再求两个点的距离?
wangxiaokun671903
我现在也只是做了双目相机的校正,离三维重建什么的还有很远的距离。希望共同交流学习。对你的想法,我觉得:1、内参矩阵本来就和棋盘格大小无关的,它只是f和dx的关系,是相机本身的性质,和世界坐标系是无关的。2、如果你要计算f的话,dx是ccd相机的像素尺寸一般是已知的。如果你要计算dx的话f一般也是知道的能计算。如果两个都重新计算的话,再找资料看看吧,我也没做过。3、计算的焦距为60mm会不会是你计算时少除以了一个10
[reply]wangxiaokun671903[/reply]博主能加你QQ吗?方便交流点。
本分类共有文章2篇,更多信息详见
& 2012 - 2014 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";
/*爱悠闲底部960*75*/
var cpro_id = "u1888128";了解相机 机器视觉像素校准的原理 | 凝固的影像小组 | 果壳网 科技有意思
505547人加入此小组
  随着如今工业自动化程度的提高,越来越多的机器视觉被用在工业生产之中,可以说近二十年里,机器视觉得到了飞速的发展。在机器视觉的使用中,尺寸或者形状的测量会被大量应用到,和普通测量工具一样,此类机器视觉在使用前需要进行像素校准。  机器视觉的像素校准,是指由把由相机拍摄的图片和实物进行比较计算,获得两者之间的数学关系,并可通过此关系来矫正图片,以此消除图片拍摄时由多种误差产生的形变。对于用来测量的机器视觉,尤其是高精度测量的视觉系统,像素校验是必不可少的一环。  来自苏州大学机电学院的李冬、张茂青2014年5月在汉斯《》学术期刊发表的文章中,描述了一种机器视觉校准的方法。在基于小孔成像相机模型的基础上,使用平板拍取若干张照片进行校验。采用几何坐标变换,并且结合齐次图形学,考虑相机镜头畸变的情况下,计算出相机的内参和外参。此类方法可以广泛御用使用于机器视觉的相机的校准。  以下是机器视觉的像素校准的步骤(如图):1)制作带圆点的长方形校准板,其中板的颜色为白色,圆点颜色为黑色。2)使用相机拍摄校准版,可以得到形变后的图像。3)使用数学方法,得到两个图像的映射关系。  通过比较图片和实物,圆点中心点的水平差值dx和垂直差值dy。计算方式分为基于物理特性的数学映射方法和畸变的影响这两种情况。其中,常见的畸变分为辐射畸变和正切畸变。其中,辐射畸变,是由于镜片的偏差产生的。正切畸变,是由于CCD或者CMOS安装偏差导致的。公式如图所示。基于上述理论知识,可以配合视觉软件中开源软件OpenCV进行校验,详细见原文描述。【源自尔湾阅读】
+ 加入我的果篮
(C)2015果壳网&京ICP备号-2&京公网安备}

我要回帖

更多关于 单反相机拍摄不清楚 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信