📢博客主页:/weixin_43197380📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 Loewen丶原创,首发于 CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨
1. 相机成像原理
相机成像原理如图所示:
注:
当物距为无穷远时,像距等于焦距,成像在焦平面上;当物距为无穷无与两倍焦距之间时,像距在焦距与两倍焦距之间,成缩小的实像;当物距等于两倍焦距时,像距与物距相等,此时物像等大;当物距小于两倍焦距并大于焦距时,像距大于两倍焦距,成放大的实像;当物距等于焦距时,像距为无穷大,物上的光线经透镜后为平行光线,不成像;当物距小于焦距时,像距为负值,即在物的同侧成虚像。
2. 相机参数说明
2.1 感光芯片
快门(控制曝光时间)
常见的电子快门的方式有全局快门(Global shutter
)和卷帘快门(rolling shutter
)两种,
全局快门是曝光时,传感器上所有像素在同一时刻开启曝光并在同一时刻曝光结束,将物体某时刻的状态成像,对运动物体而言类似将运动物体冻结了,所以适合拍摄高速运动的物体。卷帘快门是逐行顺序开启曝光,不同行间曝光的开启时刻有个很小的延迟,所以不适合运动物体的拍摄,包括飞拍。
如果相机的曝光时间过长,就会使速度快的运动物体变模糊。对于运动物体来说,快门时间越短,所获取的图像越精确,即越不模糊,但过短的曝光时间会需要光照强度大大提高,给光照技术带来很大的困难,所以应选择合适的快门时间。
曝光
工业相机工作过程中曝光(Exposure)是图像传感器进行感光的过程。在曝光过程中,CCD/CMOS收集光子并转换成电荷,也就是电荷的积累。曝光时间是指相机从快门打开到关闭的时间间隔,曝光时间短,电荷积累的就少;曝光结束后,CCD/CMOS通过一定的方式将电荷移出,从光曝光对照片质量的影响很大,如果曝光过度,则照片过亮,失去图像细节;如果曝光不足,则照片过暗,同样会失去图像细节。控制曝光就是控制总的光通量,也就是曝光过程中到达CCD/CMOS表面的光子的总和。 在不过曝的前提下,增加曝光时间可以增加信噪比,使图像清晰。当然,对于很弱的信号,曝光也不能无限增加,因为随着曝光时间的增加,噪音也会积累, 曝光补偿就是增加拍摄时的曝光量。总之,曝光即曝光时间控制,控制感光元件上总的光通量。曝光越大,光通量越大。
影响曝光的因素有三个:
①光圈。快门速度和光圈大小是互补的。比如,为了获得合适的亮度,需要对两者进行联动调节,可采用高速快门配合大光圈以得到一定亮度,同样也可采用低速快门配合小光圈来获得同样的亮度。
②光圈控制光线进入的通路的大小,光圈越大,则单位时间的光通量越大,光圈越小,则单位时间的光通量越小。
③曝光时间。也就是快门速度。
增益
增益一般只是在信号弱,但不想增加曝光时间的情况下使用,一般相机增益都产生很大噪音。曝光时间短,CCD/CMOS上电荷的积累就少,这时候就需要增益加强;反之,增益要减弱。
总结:增益控制感光灵敏度,高增益代表高灵敏度,对低光照越灵敏,可以增加昏暗图像的亮度和对比度,提高成像质量。但同时也会对噪声进行发大,降低信噪比。
感光芯片类型:CCD芯片和CMOS芯片
CCD(电荷耦合器件)芯片和CMOS(互补金属氧化物半导体)芯片都将光信号(光子)转换成电子信号(电子)。这两种芯片的主要差异在于其底层技术设置。
如果拍摄目标是静态不动的,为了节约成本,可使用考虑CMOS相机,而如果目标是运动的,则优先考虑CCD相机。如果是需要高速采集的,这里指的高速是很高的采集速度,而非指很高的运动速度,可以考虑CMOS相机,因为CMOS的采集速度会优于CCD。如果需要高质量的图像,如进行尺寸测量,可以考虑CCD,在小尺寸的传感器里,CCD的成像质量还是要优于CMOS的。
感光芯片尺寸(靶面尺寸)
描述放大倍率及镜头像面尺寸时,都会涉及到工业相机芯片,通常相机厂商用英寸来计量相机芯片尺寸,但在实际计算过程中,我们需要将芯片各边长度的单位换算成mm
。
因为同样标注的靶面大小,长宽比也可能会不一样,所以我们在看到相机靶面型号时,需要手动计算一下靶面的宽高:
如图,如果我们不手动计算一下,可能就会将该相机的2/3”
靶面按照8.8mm*6.6mm
处理了,但实际上通过:
相机靶面=分辨率∗像元尺寸相机靶面 = 分辨率*像元尺寸相机靶面=分辨率∗像元尺寸
计算得出,该相机靶面为8.45mm*7.1mm
。
在此,列出常见相机芯片尺寸的对应关系,供大家参考。
分辨率
相机的传感器sensor是有许多像素点按照矩阵的形式排列而成,分辨率就是以水平方向和垂直方向的像素来表示的。分辨率越高,成像后的图像像素数就越高,图像就越清晰。
例如:一个相机的分辨率是1280(H) × 1024(V),表示每行的像元数量是1280,每列的像元数量是1024,此相机的分辨率是130万像素。在对同样大小的视场成像时,分辨率越高,对细节的展示越明显。常用的工业面阵相机分辨率有:
640 *480 —— 30万像素;1280 *960 —— 130万像素;1440 *1080 —— 160万像素;
1600 *1200 —— 200万像素;1920 *1080 —— 300万像素;2590 *1940 —— 500万像素等。
对于线阵相机而言,分辨率就是传感器水平方向上的像素数,常见有1K、2K、6K等。
在相机分辨率的选型上,要根据我们的项目需求而定,并不一定是分辨率越高就越好,分辨率高带来的图像数据量就大,后期的算法处理复杂度就高,而且一般分辨率大的相机,帧率一般都不会太高。
像元/像素尺寸:像元尺寸就是每个像素的面积。单个像素面积小,单位面积内的像素数量多,相机的分辨率增加,有利于对细小缺陷的检测和增大检测视场。随着像素面积的缩小,满阱能力(每个像素能够储存的电荷数量)也随之减小,造成相机动态范围的降低。
像元尺寸 = 感光器芯片尺寸 / 像素个数(分辨率)。例如,相机感光芯片尺寸为:5 mm x 3.7 mm,分辨率为1440 px * 1080 px,则相机的像元尺寸为(5/1440) x (3.7/1080)mm = 3.45 µm x 3.45 µm。
帧率
帧率是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数,简称:FPS或“赫兹”(Hz) 。相机的帧率决定着设备的测量效率,如相机的帧率是30FPS,则每秒钟最多拍摄30次。而如果相机的速度是120FPS,如果算法够快,那么每秒钟最多检测120个产品。换句话说也就是相机的帧率影响相机拍照出图的快慢,飞拍高速运行,一般需要高帧率相机。
2.2 相机数据
相机常用接口
GIGE千兆网接口(√):
千兆网接口的工业相机,是近几年市场应用的重点。使用方便,连接到千兆网卡上,即能正常工作。设置好巨型帧参数,可以达到更理想的效果。可多台同时使用,CPU占用率小。
USB3.0接口(√):速度快但距离短,理论速度极限大约为500MB/s,但是其传输距离短,超过3米就要用质量很高的线,超过5米,基本就不能使用了。
USB2.0接口:这个优点也就是成本低了,但是速度慢而且不稳定。之前用过2.0接口的相机,在Linux下运动拍摄时,没有规律的就断了,驱动和软件都检查了挺长时间, 后来猜测是端口供电和传输限制之类的问题,果然换个新配的电脑就没问题了。而且也听专业人士说过2.0相机的稳定性问题,静态拍摄应该会好一点。
Camera Link接口:速度超快,大约是USB3.0的两倍,而且高像素下支持的帧率更快,但是要额外购买图像采集卡,基本要1w左右,成本是个问题。
像素位深/深度
像素深度是指每个像素用多少比特位表示。通常,每个像素的比特位数多,表达图像细节的能力强,这个像素的颜色值更加丰富、分的更细,颜色深度就更深。一般像素深度有1位、8位、16位、24位和32位。
1位像素深度就是有二进制来表示,也叫单色显示。
8位像素深度是最常见的,用8个二进制位来表示颜色,能表示256种颜色,这种就是常说的灰度显示。
16位是用16个二进制位来表示,能表示65536种颜色,这时就可以彩色显示啦。
24位和31位则表达的颜色信息就会更加的丰富。
分辨率和像素深度共同决定了图像的内参大小。例如,对于像素深度为8bit的500万像素,则整张图片应该有500万*8/1024/1024=37M(1024bit=1KB,1024KB=1M)。增加像素深度可以增强测量的精度,但同时也降低了系统的速度,并且提高了系统集成的难度(线缆增加,尺寸变大等)。
和镜头的接口:在选型时一定要考虑相机与镜头的接口对应问题,相机与镜头的接口必须保证一致,不然就无法安装。C型接口的后截距为17.5mm,CS型接口的后截距为12.5mm。因此CS型接口的工业相机使用C口镜头时需要加一个5mm的接圈。C型接口的工业相机不能用CS口的镜头。
F接口镜头是尼康镜头的接口标准,所以又称尼康口,也是工业工业相机中常用的类型,一般工业相机靶面大于1英寸时需用F口的镜头。
V接口镜头是著名的专业镜头品牌Schneider(施奈德)镜头所主要使用的标准,一般也用于工业相机靶面较大或特殊用途的镜头。
白平衡:平衡RGB三个通道的亮度值,使图像达到一个比较好的亮度情况,当打光不太好的时候,使用白平衡,可以改善图像亮度不均匀情况,对应halcon算子是equ_hiso_image——直方图均衡化
拖影:拍摄运动图像时,同一物体,在图片上重复成像的现象。
如何计算曝光时间,保证运动物体不产生拖影:
在拍摄高速运动物体的场合,选择帧曝光的相机后,还需要计算相机的曝光时间,以使图像不产生拖影,理论的计算原则是:运动物体在相机芯片上所成的像,在曝光时间内,移动的距离不超过一个像元尺寸。
例如:物体运动速度是150mm/s,沿芯片水平方向运动,相机是1/2”芯片(6.4mm×4.8mm),分辨率为1280*1024
视场水平方向长度是20mm,像元尺寸是4.8μm,计算成像时不产生拖影的曝光时间。
首先计算出像的运动速度,放大倍数为6.4mm/20mm=0.32,所以像的运动速度是0.32×150 mm/s=48mm/s;
根据计算原则,(曝光时间)×48mm/s=4.8μm,所以曝光时间为0.0001s,曝光时间设置为100µs即可。
相机的触发方式:包括连续采集模式,软件触发(软件控制)、硬件触发(传感器/机械开关控制)。
3. 相机选型
相机的选取是设计机器视觉系统极关键的一步,首先明确需求:①检测精度(有明确要求) ②视野大小(根据待测物体的尺寸估算) ③是否飞拍(有明确要求)
明确需求后要确定相机型号:
1.确定相机的分辨率(通过产品检测精度要求和相机观察的视野大小)
例如,若单视野为5mm长,理论精度为0.02mm,则单方向分辨率=5/0.02=250。然而为增加系统稳定性,特别是测量或者表面划伤检测,一个像素有可能无法凸显特征,所以一般不会只用一个像素单位对应一个测量/观察精度值。情况允许的情况下,一般可以选择倍数4或更高。这样该相机需求单方向分辨率为1000,选用130万像素已经足够
2.相机类型的选择:对于静止检测或者一般低速的检测,优先考虑面阵相机,对于大幅面高速运动或者滚轴等运动的特殊应用考虑使用线阵相机。
3.相机帧率选择
定拍飞拍
根据要检测的速度,选择工业相机的帧率一定要大于或等于检测速度,等于的情况就是你处理图像的时间一定要快,一定要在相机的曝光和传输的时间内完成。根据项目需求,对于拍摄运动物体,建议选取高帧率相机,具体帧率数要根据拍摄精度来确定。一般可以根据相机资料给出的帧率值F,大致可以估计出相机的曝光时间。一般情况下,若我们的相机的帧率为15fps,则表示相机曝光时间为1/15s = 1/15 * 1000ms = 66.7ms,即曝光时间设的越长,帧率自然就下降的越厉害。
根据:最大曝光时间 = 1/满帧频率 = 精度/运动速度,可以推出在确定检测精度的前提下,可以得到相机飞拍时能达到的最大速度。
若要飞拍,一般需要考虑选择高帧率相机,根据检测速度,确定相机帧率
4.相机接口选择:一般用网口或USB3.0。
5.芯片类型选择:CCD工业相机主要应用在运动物体的图像提取,如贴片机机器视觉,当然随着CMOS技术的发展,许多贴片机也在选用CMOS工业相机。用在视觉自动检查的方案或行业中一般用CCD工业相机比较多。CCD采用逐个光敏输出,速度较慢,CMOS芯片的主要优势是实现极高的帧速率及几乎无损的画质。CMOS每个电荷元件都有独立的装换控制器,读出速度很快,FPS在500以上的高速相机大部分使用的都是CMOS。自初开始,官方已确认CMOS技术将在未来成为主流技术。
6.相机色彩选择:如果我们要处理的是与图像颜色有关,那当然是采用彩色相机,否则建议你用黑白的,因为黑白的同样分辨率的相机,精度比彩色高1/3—1/4。假设彩色相机精度12μ,那么使用同规格黑白相机的精度可以提升至:12-12 * 1/3 ~12-12 * 1/4
=8 ~ 9μ
,这是由成像原理造成的。
4. 实战选型
1.已知客户的镜头的尺寸是1/3,接口是CS接口,视野大小为12* 10mm,要求精度0.02mm/pixel,则应该选用多大分辨率相机?
解:
(12/0.02)* (10/0.02)=30万像素,但是如果是缺陷检测通常不会只用一个像素表示一个精度,而是乘以3-4倍,即(12/0.02)3(10/0.02)*3=480万像素。最低不少于480万像素。
注:12/0.02:表示在12这个方向,需要用多少像素表示,才能达到1个像素代表0.02mm的这样一个精度。
10/0.02:同上
通过上面的参数也可求出镜头的焦距(镜头选型参考),但注意:
①镜头的分辨率一定要大于相机的分辨率,否则镜头分辨率低了,相机分辨率是千万像素也没用。
②镜头的靶面尺寸也就是视野范围>=CCD的靶面尺寸,否则会出现黑边。
例:
1)镜头的靶面尺寸也就是视野范围>CCD的靶面尺寸,则显示的图像会是蓝色部分;
2)镜头的靶面尺寸也就是视野范围=CCD的靶面尺寸,则显示的图像会是红色部分;
3)镜头的靶面尺寸也就是视野范围<CCD的靶面尺寸,则显示的图像会是黄色部分(红色部分+黑边);
总结:相机的选型一般需要确定:①精度满足要求;②确定色彩要求;③曝光时间,如何拍摄运动的物体;④帧率\数据接口;⑤芯片尺寸;⑥镜头接口;⑦其他相关