一.知识梳理

1.1 双目原理

链接1
链接2

二.镜头与相机的选择

同一位博主的两篇非常全面的博文:

镜头:https://www.cnblogs.com/iluzhiyong/p/4458116.html(可惜我做完镜头部分笔记了才看到)

相机:https://www.cnblogs.com/iluzhiyong/p/4458114.html

2.1 相机选择

选型基本原则

当视野大小即检测目标大小一定时(选相机时一般将目标大小视为视野大小),相机分辨率越大,精度越高,图像分辨率也越大;当视野大小不确定时,不同分辨率相机也能达到同样的精度,这时选择大像素相机可以扩大视野范围,减少拍摄次数,提高测试速度。若1个是1百万像素,另1个是3百万像素,当清晰度相同(精度均为20um/pixel),第1个相机的FOV是20mm×20mm=400平方mm,第二个相机的FOV是1200平方mm,拍摄生产线上同样数量的目标,假设第1个相机要拍摄30个图像,第2个相机则只需拍摄10个图像就可以了。

  • 明确检测任务,是拍静态还是动态,拍照的频率是多少,是做缺陷检测还是尺寸测量或定位,产品的大小(视野)是多少,需要达到多少精度现场环境(尤其是光照条件)情况如何,有没有其它的特殊要求等。

  • 根据检测项目的需求和待检目标的特点确定选用面阵摄像机还是线阵摄像机

    线阵摄像机适合于目标物体幅面大,或缺陷尺寸微小的场合,如:印刷质量检测,PCB板检测,布匹或棉花的检测,颗粒(粮食、水果等)检测等。

  • 确定选用彩色摄像机还是单色摄像机。在一些颜色分类的场合,选用单色摄像机配合不同光谱的光源或滤色片,也会使处理简化

  • 定义待检目标的最小特征和检测视场,由此确定摄像机的分辨率

  • 根据目标运动速度和通过率,确定摄像机的帧率(行频)

  • 根据处理需求,选择摄像机的智能特性,如: 平场校正,LUT, binning等。

2.1.1 常见参数

  • 分辨率(Resolution)
    所谓分辨率就是指画面的解析度,摄像头每次采集图像的像素点数(Pixels),对于摄像头一般是直接与传感器的像元数对应。通常所看到的分辨率都以乘法形式表现的,比如1024768,其中的1024表示屏幕上水平方向显示的点数,768表示垂直方向的点数。对于模拟摄像头则是取决于视频制式,PAL制为768576,NTSC制为640*480。

  • 最大帧率(Frame Rate)/行频(Line Rate):
    摄像头采集传输图像的速率,对于面阵摄像头一般为每秒采集的帧数(Frames/Sec.),对于线阵摄像机为每秒采集的行数(Hz)。

  • 曝光方式(Exposure)和快门速度(Shutter)
    对于线阵摄像头都是逐行曝光的方式,可以选择固定行频和外触发同步的采集方式,曝光时间可以与行周期一致,也可以设定一个固定的时间;面阵摄像头帧曝光、场曝光和滚动行曝光等几种常见方式,数字摄像头一般都提供外触发采图的功能。快门速度一般可到10微秒,高速摄像头还可以更快。

  • 像素深度(Pixel Depth):
    即每像素数据的位数,一般常用的是8Bit,对于数字摄像机一般还会有10Bit、12Bit等。

  • 像元尺寸(Pixel Size)
    像元大小和像元数(分辨率)共同决定了摄像头靶面的大小。目前数字摄像头像元尺寸一般为3μm-10μm。

  • 感光区靶面尺寸:
    指摄像头感光芯片大小,分别有1英寸,2/3英寸,1/2英寸,1/3英寸,1/4英寸等等,英寸数越小,所照的视场范围越小。

  • 光谱响应特性(Spectral Range):
    是指该像元传感器对不同光波的敏感特性,一般响应范围是350nm-1000nm,一些摄像头在靶面前加了一个滤镜,滤除红外光线,如果系统需要对红外感光时可去掉该滤镜。

    • 感光谱段

    光学成像图及光的波长及辐射图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x7QPr1b3-1606032182202)(c++笔记/图像/20190525130523454.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YUxqldR-1606032182205)(c++笔记/图像/20190525130649971.PNG)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IuvkLRcg-1606032182206)(c++笔记/图像/20190525130833882.jpg)]

    • 工作波长

    光学镜头都是针对一定波长范围内的光波工作,自物面发出的光波,在此波长范围内的,能够通过镜头在像面上成一清晰像,而且能量衰减较小;而在此范围外的光波,则难以校正像差,成像质量差,分辨率低,而且能量衰减很大,甚至被光学介质材料所吸收,完全不能通过镜头。
    光就其本质来说就是电磁波,按照波长通常将其划分成不同的光谱波段,如下表所示:

波 段 符号 波长(nm)
紫外 (UV) 100~380 真空紫外 VUV 100~200
远紫外 FUV 200~280
中紫外 Middle UV 280~315
近紫外 Near UV 315~380
可见 (VIS) 380~780 Violet 380~424
Blue 424~486
蓝绿 Blue green 486~517
绿 Green 517~527
黄绿 Yellow green 527~575
Yellow 575~585
Orange 585~647
Red 647~780
红外 (IR)780nm~1mm 近红外 NIR 780nm-3mm
中红外 MIR 3mm-50mm
远红外 FIR 50mm-1mm

2.1.2 选型

  • 模拟相机&数字相机
    模拟相机必须带数字采集卡,经数字采集卡转换为数字信号进行传输存储。一般模拟相机分辨率很低,另外帧率也是固定的。模拟信号可能会由于工厂内其他设备(比如电动机或高压电缆)的电磁干扰而造成失真。随着噪声水平的提高,模拟相机的动态范围(原始信号与噪声之比)会降低。动态范围决定了有多少信息能够被从相机传输给计算机。
    数字相机采集到的是数字信号,数字信号不受电噪声影响,因此,数字相机的动态范围更高,能够向计算机传输更精确的信号。这个要根据实际需求来选择。

    选择数字相机还是模拟相机

    1. 图像处理器和采集卡属于相对容易选择的电子装置,它们的主要参数是存储能力和处理速度。
    2. **CCD和CMOS二者在图像质量上没有明显的优劣之分。基于CMOS的工业相机**需要的部件较少,电耗较低,提供数据的速度也比基于CCD的相机快; 但CCD则是更为成熟的技术,能够以较低的噪声提供质量更好的图像,而弱点是数据传输速度较慢,不太灵活,部件较多和电耗较高
    3. 影响相机价格因素
      • 典型情况下,由于传感器尺寸的原因,像素数越高的相机就越昂贵。
      • 在一定的分辨率下,帧速提高,成本也趋向于增加。
      • 时提高帧速和分辨率通常要求相机具有多端口读出,这使系统的复杂程度增加,因而提高了成本。
    4. CCD和CMOS芯片在内部都生成模拟信号,因此,模拟相机和数字相机之间的主要区别在于图像是在哪里被数字化的。数字相机在相机里将信号数字化,并且通过串行总线接口(比如FireWire, USB, Camera Link, Gigabit Ethernet)将信号以数字方式传输给计算机(或图像处理器)。而在另一方面,模拟相机系统并不是在其内部将图像信号数字化(数字化是由计算机完成的),所以,模拟信息是通过同轴电缆而进行传输的。
    5. 尽管两种方法都能够有效地传输信号,**但模拟信号可能会由于工厂内其他设备(比如电动机或高压电缆)的电磁干扰而造成失真。随着噪声水平的提高,模拟相机的动态范围(原始信号与噪声之比)会降低。**动态范围决定了有多少信息能够被从相机传输给计算机。
    6. 典型的模拟相机需要5瓦到10瓦操作功率,而分辨率指标相当的数字相机则不到1瓦
    7. 结论:为机器视觉系统选择相机时要认真考虑工业相机的性能和成本。虽然工业模拟相机远比工业数字相机便宜,但它们的分辨率和图像质量较低,所以可能会被局限在要求不太高的应用中。数字相机比模拟相机昂贵,但它们的高成本可能值得为要求高速度、高准确度和高精度的应用而付出。
  • 分辨率
    分辨率不是越高越好,是要根据系统实际应用需求来选择分辨率的大小。
    应用案例:假设检测一个物体的表面划痕,要求拍摄的物体大小为108mm,要求的检测精度是0.01mm。首先假设我们要拍摄的视野范围在1210mm,那么相机的最低分辨率应该选择在:(12/0.01)(10/0.01)=12001000,约为120万像素的相机,也就是说一个像素对应一个检测的缺陷的话,那么最低分辨率必须不少于120万像素,但市面上常见的是130万像素的相机,因此一般而言是选用130万像素的相机。但实际问题是,如果一个像素对应一个缺陷的话,那么这样的系统一定会极不稳定,因为随便的一个干扰像素点都可能被误认为缺陷,所以我们为了提高系统的精准度和稳定性,最好取缺陷的面积在3到4个像素以上,这样我们选择的相机也就在130万乘3以上,即最低不能少于300万像素,通常采用300万像素的相机为最佳(我见过最多的人抱着亚像素不放说要做到零点几的亚像素,那么就不用这么高分辨率的相机了。比如他们说如果做到0.1个像素,就是一个缺陷对应0.1个像素,缺陷的大小是由像素点个数来计算的,试问0.1个像素的面积怎么来表示?这些人以亚像素来忽悠人,往往说明了他们的没有常识性)。换言之,我们仅仅是用来做测量用,那么采用亚像素算法,130万像素的相机也能基本上满足需求,但有时因为边缘清晰度的影响,在提取边缘的时候,随便偏移一个像素,那么精度就受到了极大的影响。故我们选择300万的相机的话,还可以允许提取的边缘偏离3个像素左右,这就很好的保证了测量的精度。

  • CCD&CMOS

    CCD和CMOS的主要性能比较

    • 满阱容量差异:由于CMOS传感器的每个像素包括一个感光二极管、放大器和读出电路,同时整个传感器还包括寻址电路和A/D,使得每个像素的感光区域远小于像素本身的表面积,因此在像素尺寸相同的情况下,CMOS传感器的满阱能力要低于CCD传感器。
    • 成本差异:由于CMOS传感器采用一般半导体电路最常用的CMOS工艺,可以轻易地将周边电路(如AGC、CDS、时序、或DSP等)集成到传感器芯片中,因此可以节省外围芯片的成本。
    • CMOS 传感器可以随机寻址,能够非常方便地仅将队列中感兴趣地部分读出,提高帧率。
    • 噪声差异:由于CMOS传感器的每个感光二极管都搭配一个放大器,而放大器属于模拟电路,很难让每个放大器所得到的结果保持一致,因此与只有一个放大器在水平寄存器输出端的CCD传感器相比,CMOS传感器的噪声就会增加很多,影响图像品质。
    • 功耗差异:CMOS传感器的功耗低于CCD传感器。

    ​ 如果要求拍摄的物体是运动的,要处理的对象也是实时运动的物体,当然选择迪美捷全帧曝光的CCD芯片相机为最适宜。但有的厂商生产的CMOS相机如果采用帧曝光的方式的话,也可以当作CCD来使用的。又假如物体运动的速度很慢,在我们设定的相机曝光时间范围内,物体运动的距离很小,换算成像素大小也就在一两个像素内,那么选择CMOS相机也是合适的。因为在曝光时间内,一两个像素的偏差人眼根本看不出来(如果不是做测量用的话),但超过2个像素的偏差,物体拍出来的图像就有拖影,这样就不能选择CMOS相机了。

  • **彩色&黑白

    ** 不一定是彩色更好!!!

    如果我们要处理的是与图像颜色有关,那当然是采用彩色相机,否则建议你用黑白的,因为黑白的同样分辨率的相机,精度比彩色高,尤其是在看图像边缘的时候,黑白的效果更好。

  • 帧率
    根据要检测的速度,选择相机的帧率一定要大于或等于检测速度,等于的情况就是你处理图像的时间一定要快,一定要在相机的曝光和传输的时间内完成。

  • 线阵&面阵 对于检测精度要求很高,面阵相机的分辨率达不到要求的情况下,当然线阵相机是必然的一个选择;择线阵摄像机适合于目标物体幅面大,或缺陷尺寸微小的场合,如:印刷质量检测,PCB板检测,布匹或棉花的检测,颗粒(粮食、水果等)检测等。

  • CCD靶面
    靶面尺寸的大小会影响到镜头焦距的长短,在相同视角下,靶面尺寸越大,焦距越长。在选择相机时,特别是对拍摄角度有比较严格要求的时候,CCD靶面的大小,CCD与镜头的配合情况将直接影响视场角的大小和图像的清晰度。因此在选择CCD尺寸时,要结合镜头的焦距、视场角一起选择,一般而言,选择CCD靶面要结合物理安装的空间来决定镜头的工作距离是否在安装空间范围内,要求镜头的尺寸一定要大于或等于相机的靶面尺寸。

  • 速度和曝光

    在选择一款工业数字相机时,物体成像的速度必须充分考虑好。例如,假设在拍摄过程中,物体在曝光中没有移动,可用相对简单和便宜的工业相机;**对于静止或缓慢移动的物体,面阵工业相机最适合于对静止或移动缓慢的物体成像。**因为整个面阵区域必须一次曝光,在曝光时间当中任何的移动会导致图像的模糊,但是,运动模糊可以通过减少曝光时间或使用闪光灯来控制;**对于快速移动的物体,当对运动的物体使用一个面阵工业相机时,需要考虑在曝光时间当中处于工业相机当中的运动对象数量,还需要考虑物体上能用一个像素表征的最小特征,也就是对象分辨率,在采集运动物体的图像的拇指规则就是曝光必须发生在采集物体移动量小于一个像素的时间内。**如果你采集的物体是在以1厘米/秒的速度匀速移动,而且物体分辨率已经设置为1 pixel/mm,那么需要的最大曝光时间是1/10每秒。因为物体移动一个距离恰好等于相机传感器中的一个像素,当使用最大曝光时间时这里会有一定数量的模糊。在这种情况下,一般倾向于将曝光时间设置的比最大值要快,比如1/20每秒,就能保持物体在移动半个像素内成像。如果同样的物体以1厘米/秒的速度移动,物体分辨率为1 pixel/微米,那么一秒中所需要的最大曝光是1/10000.曝光设置的对快取决于所采用的相机,还有你是否能够给物体足够的光来获得一幅好的图像。

  • **传输接口:工业相机的前面就是用来接镜头,都是有专业的标准接口。它的后面,一般有两个接口,一个是电源接口,一个是数据接口。根据传输的距离、稳定性、传输的数据大小(带宽)**选择USB、1394、Camerlink、百兆/千兆网接口的相机。

    1. USB接口:支持热拔热插、使用便捷、标准统一、可连接多个设备、相机可通过USB线缆供电。但没有标准的协议、主从结构,CPU占用率高、带宽没有保证。usb3.0的接口一般都是可以自供电。但是也可以再接一个电源,假如usb接口供电不稳定的话,那么就可以选择外接电源来进行供电。
    2. Gige千兆以太网接口:是一种基于千兆以太网通信协议开发的相机接口标准;适用于工业成像应用,通过网络传输无压缩视频信号;拓展性好,传输数据长度最长可伸展至100m(转播设备上可无限延长);带宽达1Gbit,因此大量的数据可即时得到传输; 可使用标准的NIC卡(或PC上已默认安装);经济性好,可使用廉价电缆(可使用通用的Ethernet电缆(CAT-6)和标准的连接器**;可以很容易集成,且集成费用低;**可管理维护性及广泛应用性。
    3. Camerlink接口:是一种串行通讯协议。采用LVDS接口标准,具有速度快、抗干扰能力强、功耗低。从Channel link技术上发展而来的,在Channel link技术基础上增加了一些传输控制信号,并定义了一些相关传输标准。协议采用MDR-26针连接器。高速率,带宽可达6400Mbps、抗干扰能力强、功耗低。
    4. 1394**接口相机:系统用到多个相机的时候可先择,要求高速的时候可先择。优点:不占系统CPU,帧频高; 缺点:占PCI插槽,价格昂贵。

2.1.3 示例

举例说明工业相机的选择原则:如检测任务是尺寸测量,产品大小是18mm*10mm,精度要求是0.01mm,流水线作业,检测速度是10件/秒,现场环境是普通工业环境,不考虑干扰问题。首先知道是流水线作业,速度比较快,因此选用逐行扫描相机;视野大小我们可以设定为20mm*12mm(考虑每次机械定位的误差,将视野比物体适当放大),假如能够取到很好的图像(比如可以打背光),而且我们软件的测量精度可以考虑1/2亚像素精度,那么我们需要的相机分辨率就是20/0.01/2=1000pixcel(像素),另一方向是12/0.01/2=600pixcel,也就是说我们相机的分辨率至少需要1000*600pixcel,桢率在10桢/秒,因此选择1024*768像素(软件性能和机械精度不能精确的情况下也可以考虑1280*1024pixcel),帧率在10桢/秒以上的即可。

2.2 镜头选择

2.2.1 常见参数