本文记录机器视觉硬件学习内容,第二部分:工业相机

本文的主要内容为相机的类型、接口类型及主要参数。

1、相机的分类

相机是机器视觉系统的核心部件,广泛应用于各个领域,尤其是用于生产监控、测量任务和质量控制等。工业数字相机通常比常规的标准数字相机更加坚固耐用。这是因为它们必须能够应对各种复杂多变的外部影响,如应用于高温、高湿、粉尘等恶劣环境。工业相机的分类形式有很多,下图是常见的一些分类方式。下文将详细介绍几种常用类型的工业相机。

2、按成像方式分类:面阵相机和线阵相机

刚接触机器视觉的时候,我想当然的以为面阵相机就是把相机组合排列成面阵,线阵相机就是组合排列成一排,闹了笑话。

面阵相机与线阵相机的区别在于前者是以面为单位进行图像采集,可以直接获得完整的二维图像信息,后者的以“线”为单位,虽然也是二维图形,但长度较长,而宽度却只有几个像素。这是因为线阵相机的传感器只有一行感光元素。虽然面阵相机的像元总数较多,但分布到每一行的像素单元却少于线阵相机,因此面阵相机的分辨率和扫描频率一般低于线阵相机。

由于线阵相机的感光元素呈现“线”状,采集到的图像信息也是线状,为了采集完整的图像信息,往往需要配合扫描运动。如采集匀速直线运动金属、纤维等材料的图像。线阵图像传感器以CCD为主,市场上曾经也出现过一些线阵CMOS图像传感器,但是,线阵CCD仍是主流。目前,陷阵CCD加扫描运动获取图像的方案应用广泛,尤其在要求视场范围大、图像分辨率高的情况下。面阵相机可以用于面积、形状、位置测量或表面质量检测等,直接获取二维图形能一定程度上减少图像处理算法的复杂度。在实际的工程应用当中,需要根据工程需求选择。

3、按输出色彩分类:黑白相机和彩色相机

此部分涉及一些图像处理的理论知识,如果对其感兴趣,可以关注公众号:一刻AI,回复:彩色相机,获取相关论文及资料。

黑白相机和彩色相机很容易理解,输出图像是黑白的就是黑白相机,彩色的就是彩色相机。有人说这不是废话么,确实是废话,不过从原理上来看还是比较有意思的。

先来看简单的黑白相机,当光线照射到感光芯片时,光子信号会转换成电子信号。由于光子的数目与电子的数目成比例,主要统计出电子数目就能形成反应光线强弱的黑白图像。经过相机内部的微处理器处理,输出就是一幅数字图像。在黑白相机中,光的颜色信息是没有被保留的。

实际上CCD是无法区分颜色的,只能感受到信号的强弱。在这种情况下为了采集彩色图像,理论上可以使用分光棱镜将光线分成光学三原色(RGB),接着使用三个CCD去分别感知强弱,最好在综合到一起。这种方案理论上可行,但是采用3个CCD加分光棱镜使得成本骤增。最好的办法是仅使用一个CCD也能输出各种彩色分量。

伊士曼·柯达公司科学家Bryce Bayer发明了拜耳列阵,使得仅使用一个CCD也能输出各种彩色分量。Bayer彩色相机的原理为:如下图所示,一行使用蓝绿元素,下一行使用红绿元素,如此交替。每个像素仅包括了光谱的一部分(R or G or B),必须通过色彩空间插值来还原每个像素的RGB值(文献【1】)。

插值算法有很多,这里介绍:临近插值算法。我们采用3X3的滑窗在上图中滑动取样,可以取到下图中的四种分布。

在(a)与(b)中,R和B分别取邻域的平均值;在(c)与(d)中,取领域的4个B或R的均值作为中间像素的值。

但是人眼对绿光的反应比较敏感,对紫光和红光反应较弱。为了更好的还原画质,依据邻近值对进行自适应插值。

在情况(a)中,中间值R由以下公式决定,即G的值将插值到R上。

图中,如果R1和R3之间的差小于R2和R4之间的差,则表明在垂直方向上相关性较强,我们使用垂直邻近值G1和G3的平均值。水平方向也同理。

在情况(b)中,中间值B由以下公式决定,即G的值将插值到B上。

从彩色相机的成像原理可以看出,色彩值主要通过插值的形式来表述。而在实际应用中,即使最成熟的色彩插值算法也会在图片中产生低通效应。文献【2】对比了彩色相机与黑白相机在相同环境下的成像质量,如下图所示。显然,彩色图像的细节处会出现伪彩色,导致精度降低。 在工业应用中如果我们要处理的是与图像颜色有关,那么我们需要采用彩色相机;如果不是,那么最好选用黑白相机,因为在同样分辨率下,黑白相机的精度高于彩色相机。

3、按图像传感器分类:CCD和CMOS

图像传感器是工业相机的核心元件,主要有CCD和CMOS两种。

CMOS(Complementary Metal Oxide Semiconductor)是互补金属氧化物半导体,CMOS 图像传感器阵面中的每一个像元都是由三个部分组合而成,分别是感光二极管、放大器和读出电路,然而由于每个单元独立输出,这也使得每个放大器的输出结果都不尽相同,所以 CMOS 阵列所获取的图像噪声较大,图像的质量也相对降低,但是,对于一般的精度要求,还是可以满足的。在集成电路领域中,CMOS采用的工艺是最基本的工艺,工艺相对来说不复杂,所以成本也不高,光电灵敏度较高等优点。它的一些性能参数也在不断被优化,应用也越来越广,总体来说,CMOS 的性价比还是较高的。

CCD (Charge-coupled Device)的全名是电荷耦合器件。CCD是一种半导体器件,能够把光学影像转化为数字信号,CCD上植入的微小光敏物质称作像素(Pixel),一块CCD上包含的像素数越多,其提供的画面分辨率也就越高。CCD提供很好的图像质量、抗噪能力和相机设计时的灵活性。尽管由于增加了外部电路使得系统的尺寸变大,复杂性提高,但在电路设计时可更加灵活,可以尽可能的提升CCD相机的某些特别关注的性能。CCD更适合于对相机性能要求非常高而对成本控制不太严格的应用领域,如天文,高清晰度的医疗X光影像、和其他需要长时间曝光,对图像噪声要求严格的科学应用。

目前,CCD在性能方面还仍然优于CMOS。不过,随着CMOS图像传感器技术的不断进步,在其本身具备的集成性、低功耗、低成本的优势基础上,噪声与敏感度方面有了很大的提升,与CCD传感器差距不断缩小。

4、相机的主要接口类型

IEEE 1394:

  1. 在工业领域中应用广泛。协议、编码方式都非常不错,传输速度稳定。
  2. 在工业中,常用的是400Mb的1394A和800Mb的1394B接口。超过800Mb以上的也有,如3.2Gb的,但是比较少见。
  3. 接口普及率低,早期由苹果垄断,电脑上通常不包含其接口,因此需要额外的采集卡。
  4. 需要注意一下其PacketSize数据包大小设置。Packet Size是整个1394总线的带宽。
  5. 占用CPU资源少,可多台同时使用,但由于接口的普及率不高,已慢慢被市场淘汰

GIGE千兆网接口:

  1. 千兆网协议稳定,使用方便,连接到千兆网卡上即可工作
  2. 在千兆网卡的属性中,也有与1394中的Packet Size类似的巨帧。设置好此参数,可以达到更理想的效果。(我之前用NI Max的使用因为packet size设置的过大,导致无法软件采集不到图像)
  3. 传输距离远,可传输100米。
  4. 可多台同时使用,CPU占用率小。

USB接口:
  1. 早期的USB2.0接口连接方便,几乎所有电脑都配置USB接口,无需采集卡。
  2. USB2.0接口传输速率慢,传输过程需要CPU参与管理,占用及消耗资源大。
  3. USB2.0接口一般没有固定螺丝,接口不稳定,在运动设备上有松动的风险。
  4. USB3.0在2.0基础上新增了两组数据线,向下兼容,接近了传输速度慢的问题,但传输距离依旧较近。

Camera Link接口:
  1. 需要单独的CameraLink接口,不便携,导致成本过高。
  2. Camera Link接口的相机,实际应用中比较少。
  3. 采用LVDS接口标准,速度较快,抗干扰能力强,功耗低。
  4. 传输距离近。

5、相机的主要参数

  1. 分辨率(Resolution):相机每次采集图像的像素点数(Pixels)。由工业相机所采用的芯片分辨率决定,是芯片靶面排列的像元数量。分辨率影响采集图像的质量,在对同样大的视场(景物范围)成像时,分辨率越高,对细节的展示越明显。
  2. 像素深度(Pixel Depth):每位像素数据的位数,常见的是8bit,10bit,12bit。分辨率和像素深度共同决定了图像的大小。例如对于像素深度为8bit的500万像素,则整张图片应该有500万*8/1024/1024=37M。
  3. 最大帧率(Frame Rate)/行频(Line Rate):相机采集传输图像的速率,对于面阵相机一般为每秒采集的帧数(FPS),对于线阵相机机为每秒采集的行数(Hz)。
  4. 曝光方式(Exposure)和快门速度(Shutter):线阵相机为逐行曝光的方式,可以选择固定行频和外触发同步的采集方式,曝光时间可以与行周期一致,也可以设定一个固定的时间;面阵相机有帧曝光、场曝光和滚动行曝光等几种常见方式,工业数字相机一般都提供外触发采图的功能。快门速度一般可到10微秒,高速相机还可以更快。
  5. 靶面尺寸:图像传感器的感光部分的大小。 常见的靶面有1/4''、1/3''、1/2''、2/3''、1''等几种,当然也有其他规格。靶面尺寸规格见下表。

以basler的acA2500-14gm - Basler ace相机为例,该相机相机配有 ON Semiconductor MT9P031 CMOS 感光芯片帧速率为每秒 14 帧图像(14fps),分辨率为500 万像素,靶面尺寸为1/22.5''。

 在选型时,按照以下步骤进行:

  1. 根据需求和成本选择图像传感器型号:CCD还是CMOS;
  2. 根据目标的要求精度,选择合适的分辨率。对于视野大小为10*10mm的场合,要求精度为0.02mm/pixel,则当方向上分辨率=10/0.02=500。
  3. 若被测物体为运动物体,需要选择帧数较高的工业相机。

参考文献:

【1】Bayer color conversion and processing

【2】Jeon H G, Lee J Y, Im S, et al. Stereo matching with color and monochrome cameras in low-light conditions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 4086-4094.

【3】胡仁伟. 光滑零件表面缺陷检测系统设计与实现[D]. 电子科技大学, 2018.

欢迎关注公众号:一刻AI

【机器视觉硬件】机器视觉硬件学习笔记2——工业相机相关推荐

  1. 《机器视觉与算法》学习笔记(一)——图像的采集

    要搭建一套完整的机器视觉设备,图像的采集的硬件选型显然是必不可少的.这一节笔记将从Illumination(照明).lenses(镜头).cameras(摄像机).cameras-computer i ...

  2. 硬件三人行-开关电源学习笔记-1

    本文为学习课程<硬件三人行课程-开关电源设计>时的整理的笔记 第三讲,开关电源设计步骤 1.需求规格分析 需求信息哪里获得? 客户或产品最终使用方向是哪里? 客户所提的规格是否符合客户的应 ...

  3. Qlu橙果硬件组小白学习笔记

    计算机由运算器.控制器.存储器.输入设备和输出设备等五个逻辑部件组成 计算机主机箱内主要包括CPU.内存.主板.硬盘驱动器.光盘驱动器.各种扩展卡.连接线.电源等;外部设备包括鼠标.键盘等. cpu: ...

  4. 机器学习与知识发现_机器视觉学习之工业镜头--硬件知识扫盲学习

    今天我来介绍一下工业镜头的相关知识.在前些章节,我介绍了关于光源的知识,没看的同学可以前往观看 机器视觉学习之光源--硬件知识扫盲必看 如果工业相机没有镜头,那么Sensor感光就是一片噪点,聚焦不在 ...

  5. java做机器视觉_机器视觉用什么语言开发_机器视觉用什么硬件

    机器视觉用什么语言开发 目前可以开发机器视觉的相关计算机语言有C++,C#,JAVA,PYTHON等,甚至简单的PHP和JAVASCRIPT也可以开发相关的功能. 机器视觉需要用到图像处理库,有很多免 ...

  6. 机器视觉学习笔记(4)——单目摄像机标定参数说明

    机器视觉学习笔记(4)--单目摄像机标定参数说明 标签: 机器视觉 1.针孔摄像机模型 在介绍摄像机标定参数之前,需要先简单说一下针孔摄像机的原理.投影平面到小孔的距离为焦距f,物体到小孔的距离为Z, ...

  7. 软件调试学习笔记(六)—— 硬件断点

    软件调试学习笔记(六)-- 硬件断点 硬件断点 设置硬件断点 触发硬件断点 处理硬件断点 实验:硬件断点的设置与处理 硬件断点 描述: 与软件断点与内存断点不同,硬件断点不依赖被调试程序,而是依赖于C ...

  8. 【学习笔记】硬件设备选型

    --学习笔记摘自阅读学习<IT基础架构:系统运维实践>章节 [序言] 硬件平台是支撑生产系统运行的基础设施.随着企业的不断发展,应用负载和数据量在日益增加,只有搭建一套性能优良.稳定可靠的 ...

  9. AndroidCamera学习笔记一 硬件

    AndroidCamera学习笔记一 硬件 题记 硬件部分 镜头 传感器 ISP.DSP 闪光灯.滤光片等其他部件 摄像头重要参数 分辨率.像素 光圈数 景深 焦距 硬件成像流程![成像流程](htt ...

  10. 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来

    摘要:无论是哪种开发板,要想开发特定的功能,必先从GPIO开始,HaaS100开发也是一样.如果仅仅利用HaaS100的联网功能,那简直是太浪费了.HaaS100拥有其他开发板所具备的所有的功能,比如 ...

最新文章

  1. YOLOv3 训练的各种config文件以及weights文件。
  2. java unlimited_具有无限参数的Java方法(Java method with unlimited arguments)
  3. iOS应用安全之代码混淆实现篇
  4. 计算机数据库技术应用了什么,2018年全国计算机三级数据库技术考试考什么内容...
  5. 数据库优化实例以及优化的小技巧
  6. anconda安装及opencv配置
  7. python用递归方式实现最大公约数_关于python最大递归深度 - 998
  8. java 区块链开发_Java开发人员的区块链入门
  9. postgres复制数据库
  10. Solidworks 课程大纲(虎课网)
  11. android和ios手机换行,ios label中文与数字混合导致换行解决
  12. 小程序picker用法
  13. 这七种职业男人让多少日本女性着迷
  14. 预训练模型-词汇表:bert-base-uncased【vocab.txt;共30522个subword】
  15. mysql5.6只有解压缩_MySQL 5.6 for Windows 解压缩版配置安装
  16. 一行代码搞定Android弧形卫星动画菜单(附Demo)
  17. CPLD个人学习笔记
  18. Linux中用VI/VIM编辑器
  19. 纽约大学计算机博士奖学金如何,斑马博士捷报|纽约大学(NYU) MS Computer Engineering录取+7000美金奖学金!...
  20. 不同局域网ubuntu如何进行ssh穿透登录

热门文章

  1. 图像的均值、均方值、方差、均方差、标准差
  2. ALS推荐算法学习总结
  3. 【每日爬虫】:生产者与消费者模式爬取王者荣耀壁纸
  4. 影片剪辑app android,4款经典的手机影片剪辑App
  5. Word VBA 表格宏处理
  6. 【jdk1.8特性】之Function
  7. html关于圣诞节主题的网页,灵感: 8个以圣诞节为主题的网站欣赏
  8. ICE入门之hello world
  9. Oracle 设置数据库时区
  10. 解决IPOD NANO7无法开机