工业相机介绍及相机标定(opencv和matlab)(湘潭大学机甲大师逐曦寒假第3次课程记录)

一、工业相机

1、相机

将光信号转变成有序的电信号的设备。(完成这一过程的部件为CCD/CMOS)

2、工业相机

相比于普通相机:快门时间短、帧率高;光谱范围宽;性能稳定可靠易于安装,工作时间长,可在较差的环境下使用。

3、部分参数

4、相机选择

1.分辨率估算 :相机每次采集图像的像素点数,一般对应于光电传感器靶面排列的像元数:(面阵相机的分辨率有795×596,1024×1024,2048×2048,5320×5320等) 首先考虑待观察或待测量物体的精度,根据精度选择分辨率: 又 相机分辨率=感光芯片尺寸/像元尺寸,即:

根据实际应用即可选出恰当的 传感器尺寸(靶面尺寸) 例:若单视野为5mm长,理论精度为0.02mm,则单方向分辨率=5/0.02=250。然而为增加系统稳定性,不会只用一个像素单位对应一个测量/观察精度值,一般可以选择倍数4或更高。这样该相机需求单方向分辨率为1000,选用130万像素已经足够。

2.相机帧率选择: 1)尽可能选取静止检测,这样整个项目成本都会降低很多,但是会带来检测效率的下降。 2)当被测物体有运动要求时,要选择帧数较高的工业相机, 相机的帧率一定要大于或等于检测速度 ,等于的情况就是你处理图像的时间一定要快,一定要在相机的曝光和传输的时间内完成; 3)选用帧曝光相机,行曝光相机则会引起画面变形,对于具体帧率的选择,不应盲目的选择高速相机,虽然高速相机帧率高,但是一般需要外加强光照射,带来的高成本以及图像处理速度也压力巨大,需要根据相对运动速度来定,只要在检测区域内,能捕捉到被测物即可。 4)一般来说分辨率越高,帧数越低

3.相机接口选择

一般使用USB接口相机。

二、镜头

1、镜头

基本功能就是实现光束变换(调制),主要作用是将目标成像在图像传感器的光敏面上。镜头的质量直影响到机器视觉系统的整体性能 。

2、部分参数

1.焦距(Focal Length) 焦距是从镜头的中心点到胶平面上所形成的清晰影像之间的距离。焦距的大小决定着视角的大小,根据焦距能否调节,可分定焦镜头和变焦镜头两大类。 规律: 焦距越小,视角大,观察范围大,畸变越大,渐晕现象越严重,使像差边缘的照度降低; 焦距越大,视角小,观察范围小,畸变越小,渐晕现象减轻,使像差边缘的照度提升; 2.光圈(Iris)、镜头通光量、光圈系数、相对孔径 1) 光圈 :镜头里用来控制光线透过镜头,进入机身内感光面光量的装置,主要作用是通过控制镜头光量的大小满足成像所需的合适照度(通光量),直接决定图像的亮度。 2. 镜头通光量 :即相机成像过程中镜头的进光量,与通光孔径(D)和焦距(f) 的变化有关。(可用光圈系数表示) 3) 光圈系数(F) :即F值即是用来表征光圈的大小的参数。它等于镜头焦距(f)和通光孔径(D)之比。通光量与F值的平方成反比关系,F值越小,通光量越大。

3. 光学放大倍率(β或PMAG,Magnification) 光学放大倍率=芯片尺寸/视野范围(FOV) 即 PMAG = CCD/FOV (一般 β<=1,放大镜(显微镜)则 β>1) 4. 最大传感器尺寸(Sensor Size)、靶面尺寸 镜头选配时需要选择与摄像机接口和传感器的尺寸相匹配的镜头:镜头成像直径要可覆盖的最大传感器芯片尺寸。主要有:1/2″、2/3″、1″和1″以上,确定了相机分辨率和像素大小,就可以计算出芯片尺寸(Sensor size) 5. 镜头接口(Mount) 镜头与相机的连接方式。常用的包括C、CS、F、V、T2、Leica、M42x1、M75x0.75等。 6. 景深(Depth of Field,DOF) 在景物空间中,在被摄物体聚焦清楚后,在物体前后一定距离内,其影像仍然清晰的范围,也就是能 在实际像平面上获得相对清晰影像的景物空间深度范围 ,称为景深。相反的,对应于确定的物平面,成像面和镜头之间的距离不同,但在一定的范围内图像仍感觉清晰,称为焦深。

3、镜头选择

三、驱动和调用

 1、在Windows下

win需要安装对应厂商提供的驱动,需要驱动只需要联系对应厂商并下载相应驱动到桌面上是自动安装。 在Ubuntu16.04下

2、在Linux下

摄像头驱动是V4L2,而调试摄像头参数的工具一般用qv4l2,它可以在程序运行时调节摄像头曝光 、帧速限制、尺寸、Gamma等。

qv4l2的安装(终端输入) sudo apt install qv4l2 sudo apt install v4l-utils

调用软件 v4l2-ctl

另:需要代码中调用相机一般下载相机提供的SDK,其中有函数可以打开相机。

调用使用opencv操作

四、相机标定

1、坐标系转换

从实物到可以处理的像素画面就是坐标系从世界坐标系的转换。

世界坐标系:由用户定义的三维世界坐标系,描述物体和相机在真实世界中的位置,原点可以任意选择。

相机坐标系:以相机的光心为坐标原点,x轴和y轴平行于图像坐标系的x轴和y轴,z轴为相机的光轴。

图像坐标系:与成像平面重合,以成像平面的中心(光轴与成像平面的交点)为坐标原点,x 轴和 y轴分别平行于成像平面的两条边。

像素坐标系:与成像平面重合,以成像平面的左上角顶点为原点,x 轴和 y 轴分别平行于图像坐标系的x轴和y轴。

 转换过程不需要掌握,最终,想要完成两个坐标系中的转换只需要得到相机的内参矩阵与外参矩阵。内参矩阵取决于相机内部参数,外参矩阵取决于相机坐标系和世界坐标系的位置。而相机标定,就可以帮我们求解出内参矩阵和外参矩阵。

2、相机畸变

径向畸变和切向畸变

 畸变的矫正

3、相机标定

计算相机投影矩阵 M 中的 11 个未知参数 内参有五个,分别是:摄像头拍摄到的物体和实际物体在 x,y 轴上的映射关系(两个参数);摄像头中心和图像中心的偏移关系(两个参数);摄像头和镜头安装非完全垂直,存在一个角度的偏差(一个参数)。 外参有六个,分别是 x,y,z 方向上的平移和旋转) 我们要做的事求出这五个内参,五个未知数五个方程,一张相片提供一个方程,所以需要最低3张照片。

标定方法采用张正友棋盘格标定,利用棋盘格标定板进行标定,将世界坐标系固定在棋盘格上。棋盘格上的每个格子大小都是已知的,即棋盘格每一个角点在世界坐标系下的坐标都可以计算得到。

(1)opencv标定

拍摄不同角度的棋盘格的图像,可以多拍一些,建议最后筛选10-15张进行标定,数目需要自己测试找到效果最好的。

使用 OpenCV 标定的流程是:角点提取 -> 相机标定。 角点提取FindChessboardCorners() 相机标定,用calibrateCamera()实现,原型如下: 3. 我们一般只用输入前三个参数,后面的指定为None,objpoints在前面角度检测获得,imgpoints则根据坐标系定义,imgsize为图像的像素尺寸大小。我们将这些参数输入进函数之后就可以得到相机的内参以及畸变参数。

 

求出的参数

 

(2) matlab标定

matlab有现成的函数和算法,只需要把图片正确上传,具体步骤参考以下文章。

使用Matlab做相机标定(获取相机的内外参数矩阵)_matlab相机标定结束后如何显示图片的平移矩阵-优快云博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值