前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >一文讲透了什么是机器视觉!

一文讲透了什么是机器视觉!

作者头像
AI算法与图像处理
发布于 2021-03-12 06:55:47
发布于 2021-03-12 06:55:47
93800
代码可运行
举报
运行总次数:0
代码可运行

重磅干货,第一时间送达

机器视觉 就是用机器代替人眼来做测量和判断。机器视觉系统是指通过机器视觉产品(即图像摄取装置,分 CMOS 和CCD 两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。

视觉系统组成部分:

1.照明光源

2.镜头

3.工业摄像机

4.图像采集/处理卡

5.图像处理系统

6.其它外部设备

相机篇

工业相机又俗称摄像机,相比于传统的民用相机(摄像机)而言,它具有高的图像稳定性、高传输能力和高抗干扰能力等,目前市面上工业相机大多是基于CCD(Charge Coupled Device)或CMOS(Complementary Metal Oxide Semiconductor)芯片的相机。

其中,CCD是目前机器视觉最为常用的图像传感器。它集光电转换及电荷存贮、电荷转移、信号读取于一体,是典型的固体成像器件。

CCD的突出特点是以电荷作为信号,而不同于其它器件是以电流或者电压为信号。这类成像器件通过光电转换形成电荷包,而后在驱动脉冲的作用下转移、放大输出图像信号。

典型的CCD相机由光学镜头、时序及同步信号发生器、垂直驱动器、模拟/数字信号处理电路组成。CCD作为一种功能器件,与真空管相比,具有无灼伤、无滞后、低电压工作、低功耗等优点。

CMOS图像传感器的开发则最早出现在20世纪70 年代初,90 年代初期,随着超大规模集成电路 (VLSI) 制造工艺技术的发展,CMOS图像传感器得到迅速发展。

CMOS图像传感器将光敏元阵列、图像信号放大器、信号读取电路、模数转换电路、图像信号处理器及控制器集成在一块芯片上,还具有局部像素的编程随机访问的优点。

目前,CMOS图像传感器以其良好的集成性、低功耗、高速传输和宽动态范围等特点在高分辨率和高速场合得到了广泛的应用。

分类:

任何东西一定有它自己的分类标准,工业相机也不例外。

按照芯片类型可以分为CCD相机、CMOS相机

按照传感器的结构特性可以分为线阵相机、面阵相机

按照扫描方式可以分为隔行扫描相机、逐行扫描相机

按照分辨率大小可以分为普通分辨率相机、高分辨率相机

按照输出信号方式可以分为模拟相机、数字相机

按照输出色彩可以分为单色(黑白)相机、彩色相机

按照输出信号速度可以分为普通速度相机、高速相机

按照响应频率范围可以分为可见光(普通)相机、红外相机、紫外相机等。

区别:

1、工业相机的性能稳定可靠易于安装,相机结构紧凑结实不易损坏,连续工作时间长,可在较差的环境下使用,一般的数码相机是做不到这些的。例如:让民用数码相机一天工作24小时或连续工作几天肯定会受不了的。

2、工业相机的快门时间非常短,可以抓拍高速运动的物体。例如,把名片贴在电风扇扇叶上,以最大速度旋转,设置合适的快门时间,用工业相机抓拍一张图像,仍能够清晰辨别名片上的字体。用普通的相机来抓拍,是不可能达到同样效果的。

3、工业相机的图像传感器是逐行扫描的,而普通的相机的图像传感器是隔行扫描的, 逐行扫描的图像传感器生产工艺比较复杂,成品率低,出货量少,世界上只有少数公司能够提供这类产品,例如Dalsa、Sony,而且价格昂贵。

4、工业相机的帧率远远高于普通相机。工业相机每秒可以拍摄十幅到几百幅图片,而普通相机只能拍摄2-3幅图像,相差较大。

5、工业相机输出的是裸数据(raw data),其光谱范围也往往比较宽,比较适合进行高质量的图像处理算法,例如机器视觉(Machine Vision)应用。而普通相机拍摄的图片,其光谱范围只适合人眼视觉,并且经过了mjpeg压缩,图像质量较差,不利于分析处理。

6、工业相机(Industrial Camera)相对普通相机(DSC)来说价格较贵。

如何选择:

1、根据应用的不同分别选用CCD或CMOS相机CCD工业相机主要应用在运动物体的图像提取,如贴片机机器视觉,当然随着CMOS技术的发展,许多贴片机也在选用CMOS工业相机。用在视觉自动检查的方案或行业中一般用CCD工业相机比较多。CMOS工业相机由成本低,功耗低也应用越来越广泛。

2、分辨率的选择首先考虑待观察或待测量物体的精度,根据精度选择分辨率。相机像素精度=单方向视野范围大小/相机单方向分辨率。则相机单方向分辨率=单方向视野范围大小/理论精度。若单视野为5mm长,理论精度为0.02mm,则单方向分辨率=5/0.02=250。然而为增加系统稳定性,不会只用一个像素单位对应一个测量/观察精度值,一般可以选择倍数4或更高。这样该相机需求单方向分辨率为1000,选用130万像素已经足够。

其次看工业相机的输出,若是体式观察或机器软件分析识别 ,分辨率高是有帮助的;若是VGA输出或USB输出,在显示器上观察,则还依赖于显示器的分辨率,工业相机的分辨率再高,显示器分辨率不够,也是没有意义的;利用存储卡或拍照功能,工业相机的分辨率高也是有帮助的。

3、与镜头的匹配传感器芯片尺寸需要小于或等于镜头尺寸,C或CS安装座也要匹配(或者增加转接口)。

4、相机帧数选择当被测物体有运动要求时,要选择帧数高的工业相机。但一般来说分辨率越高,帧数越低。

镜头篇

镜头的基本功能就是实现光束变换(调制),在机器视觉系统中,镜头的主要作用是将成像目标在图像传感器的光敏面上。镜头的质量直影响到机器视觉系统的整体性能,合理地选择和安装镜头,是机器视觉系统设计的重要环节。

基础知识:

镜头匹配

大家如何选择合适镜头,镜头选配时需要选择与摄像机接口和CCD的尺寸相匹配的镜头。镜头C和CS的接口方式占主流。小型的安防用的CS接口摄像机得到普及、FA行业则大部分是C接口的摄像机与镜头的组合。对应的CCD尺寸、市场上一般根据用途使用2/3寸到1/3寸的产品。

互换性

C接口镜头可以与C接口摄像机、CS接口摄像机互用;

CS接口镜头不可以应用在C接口摄像机,只可以应用在CS接口摄像机。

KERARE

摄像机如果使用配备小CCD尺寸的镜头,那么周边没有摄取到图像的部分呈现出黑色,我们称其为KERARE。

镜头的作用:

将折射率不同的各种硝材通过研磨,加工成高精度的曲面、把这些镜头进行组合,就是设计镜头。从伽利略时代开始使用的普遍技术是其基本原理。为得到更清晰的图像,一直在研究开发试制新的硝材和非球面镜片。

光源篇

LED光源、卤素灯(光纤光源)、高频荧光灯。目前LED光源最常用,主要有如下几个特点:

· 可制成各种形状、尺寸及各种照射角度;

· 可根据需要制成各种颜色,并可以随时调节亮度;

· 通过散热装置,散热效果更好,光亮度更稳定;

· 使用寿命长;

· 反应快捷,可在10微秒或更短的时间内达到最大亮度;

· 电源带有外触发,可以通过计算机控制,起动速度快,可以用作频闪灯;

· 运行成本低、寿命长的LED,会在综合成本和性能方面体现出更大的优势;

· 可根据客户的需要,进行特殊设计。

LED光源按形状通常可分为以下几类:

1、环形光源环形光源提供不同照射角度、不同颜色组合,更能突出物体的三维信息;高密度LED阵列,高亮度;多种紧凑设计,节省安装空间;解决对角照射阴影问题;可选配漫射板导光,光线均匀扩散。应用领域:PCB基板检测,IC元件检测,显微镜照明,液晶校正,塑胶容器检测,集成电路印字检查。

2、背光源用高密度LED阵列面提供高强度背光照明,能突出物体。的外形轮廓特征,尤其适合作为显微镜的载物台。红白两用背光源、红蓝多用背光源,能调配出不同颜色,满足不同被测物多色要求。应用领域:机械零件尺寸的测量,电子元件、IC的外型检测,胶片污点检测,透明物体划痕检测等。

3、条形光源条形光源是较大方形结构被测物的首选光源;颜色可根据需求搭配,自由组合;照射角度与安装随意可调。应用领域:金属表面检查,图像扫描,表面裂缝检测,LCD面板检测等。

4、同轴光源同轴光源可以消除物体表面不平整引起的阴影,从而减少干扰;部分采用分光镜设计,减少光损失,提高成像清晰度,均匀照射物体表面。应用领域:系列光源最适宜用于反射度极高的物体,如金属、玻璃、胶片、晶片等表面的划伤检测,芯片和硅晶片的破损检测,Mark点定位,包装条码识别。

5、AOI专用光源不同角度的三色光照明,照射凸显焊锡三维信息;外加漫射板导光,减少反光;不同角度组合;应用领域:用于电路板焊锡检测。

6、球积分光源具有积分效果的半球面内壁,均匀反射从底部360度发射出的光线,使整个图像的照度十分均匀。应用领域:合于曲面,表面凹凸,弧形表面检测,或金属、玻璃表面反光较强的物体表面检测。

7、线形光源超高亮度,采用柱面透镜聚光,适用于各种流水线连续检测场合。应用领域:阵相机照明专用,AOI专用。

8、点光源大功率LED,体积小,发光强度高;光纤卤素灯的替代品,尤其适合作为镜头的同轴光源等;高效散热装置,大大提高光源的使用寿命。应用领域:适合远心镜头使用,用于芯片检测,Mark点定位,晶片及液晶玻璃底基校正。

9、组合条形光源四边配置条形光,每边照明独立可控;可根据被测物要求调整所需照明角度,适用性广。应用案例:CB基板检测,IC元件检测,焊锡检查,Mark点定位,显微镜照明,包装条码照明,球形物体照明等。

10、对位光源对位速度快;视场大;精度高;体积小,便于检测集成;亮度高,可选配辅助环形光源。应用领域:VA系列光源是全自动电路板印刷机对位的专用光源。

光源的选型

一、前提信息

1、检测内容

外观检查、OCR、尺寸测定、定位

2、对象物

①想看什么?(异物、伤痕、缺损、标识、形状等)

②表面状态(镜面、糙面、曲面、平面)

③立体?平面?

④材质、表面颜色

⑤视野范围?

⑥动态还是静态(相机快门速度)

3、限制条件

①工作距离(镜头下端到被测物表面距离)

②设置条件(照明的大小、照明下端到被测物表面的距离、反射型or透射型)

③周围环境(温度、外乱光)

④相机的种类,面阵or线阵

二、简单的预备知识:

1.因材质和厚度不同、对光的透过特性(透明度)各异。

2.光根拠其波长之长短、对物质的穿透能力(穿透率)各异。

3.光的波长越长、对物质的透过力越强,光的波长越短、在物质表面的拡散率越大。

4.透射照明、即是使光线透射对象物、并観察其透过光之照明手法。

三、光源:

1.穏定均匀的光源极其重要

2.目的:将被测物与背景尽量明显区分

3.摂取图像时、最重要之处是如何鲜明地获得:被测物与背景的浓淡差

4.目前、在图像处理领域中最广范的技术手法是:二值化(白黒)处理为了能够突出特征点,将特征图像突出出来,在打光手法上,常用的包括有明视野与暗视野。

明视野:用直射光来観察对象物整体(散乱光呈黒色)

暗视野:用散乱光来観察对象物整体(直射光呈白色)具体的光源选取方法还在于试验的实践经验。

End

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

代码语言:javascript
代码运行次数:0
运行
复制
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spring cloud项目升级java11导致编译卡住排查
实际项目中,一直卡在@lombok.Builder.Default注解的类上,去掉此注解,编译不再卡在。而且项目中使用了生成的Builder类。
崔认知
2023/06/19
3420
spring cloud项目升级java11导致编译卡住排查
【每晚玩转一套ssm项目】大型商场应急预案管理系统
本文章教程手把手带你玩转ssm项目,曾经博主也是小白经过数个日夜终于将ssm玩透彻了。现在博主免费推出了【每晚玩转一套ssm项目】这一系列专栏,带你手把手上手ssm。请大家关注并监督我每晚更新哦~这个过程我也会从新人的角度总结出易错点并写道文章的最后。博主也是一枚在校大学生,现在带学弟学妹们入门ssm项目。在此之前你需要一定的计算机操作基础,现在我将带你,不需要写一行代码,从0到1搭建一个项目。
菜菜有点菜
2025/01/15
790
【每晚玩转一套ssm项目】大型商场应急预案管理系统
线程安全反思录(上):ThreadLocal到底安全不?
之前我有写过关于ThreadLocal的源码解析相关文章:一文带你读懂JDK源码:ThreadLocal类,但其实它不是业务最优解决方案,比如业界有更加先进的TransmittableThreadLocal可供选择。
后台技术汇
2024/10/25
3980
线程安全反思录(上):ThreadLocal到底安全不?
spring4.1.8扩展实战之二:Aware接口揭秘
Aware.java是个没有定义任何方法的接口,拥有众多子接口,在spring源码中有多处都在使用这些子接口完成各种场景下的回调操作,当业务有需要时,我们只需创建类来实现相关接口,再声明为bean,就可以被spring容器主动回调;
程序员欣宸
2022/05/06
3400
spring4.1.8扩展实战之二:Aware接口揭秘
告诉你,Spring Boot 真是个牛逼货!
现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下。
Java技术栈
2018/10/23
5990
告诉你,Spring Boot 真是个牛逼货!
借助 Spring Boot 和 GraalVM 实现原生 Java
作者 | Josh Long 译者 | 张卫滨 策划 | 丁晓昀 本文是“Native Compilations Boosts Java”系列文章的一部分。你可以通过 RSS 订阅接收新文章更新通知。 Java 在主导着企业级应用。但是在云中,采用 Java 的成本要比其竞争者更高。使用 GraalVM 进行原生编译降低了在云中 Java 的成本:它所创建的应用启动更快,使用的内存也更少。 原生编译为 Java 用户带来了很多的问题:原生 Java 会如何改变开发方式?我们在什么情况下该转向
深度学习与Python
2023/04/01
8730
借助 Spring Boot 和 GraalVM 实现原生 Java
《Spring实战》摘录 - 30
Q: #21.1-1 | 在Spring家族中,Spring Boot是令人兴奋(也许我敢说它是改变游戏规则的)的新项目。它提供了四个主要的特性,能够改变开发Spring应用程序的方式
用户1335799
2019/09/10
4510
idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”「建议收藏」
首先声明一下,我用的 Intellij IDEA 2018.3 版本的,springboot的版本是 2.0.5.RELEASE 版本。
全栈程序员站长
2022/11/15
2.4K0
Spring Boot开发之明月千城(一)
最近数据分析的项目也即将告一段落了,中间也积累了很多知识,特此记录一下。其中用的最爽的Web组合开发就是Intellij IDEA + Maven + Spring Boot + Velocity +
我是攻城师
2018/05/11
7020
Springboot从HellWorld开始第三章 从HellWorld开始
https://github.com/LightSwordSpringBoot/lightsword_helloworld
一个会写诗的程序员
2018/08/20
4710
Spring-Boot:6分钟掌握SpringBoot开发
 构建项目 从技术角度来看,我们要用Spring MVC来处理Web请求,用Thymeleaf来定义Web视图,用Spring Data JPA来把阅读列表持久化到数据库里,姑且先用嵌入式的H2数据库。 1、项目搭建 Spring IO 官网搭建 我们可以进入到Spring 的官网:http://start.spring.io/ 进入官网后,可以快速的构建Spring boot 的基础项目,这里可以选择Maven 项目或者Gradle 项目,然后设置项目相关的配置。 在选择Generate Projec
九灵
2018/03/09
1.4K0
Spring-Boot:6分钟掌握SpringBoot开发
java装饰者模式
首次知道装饰者模式还是学生时期,装饰听起来就是被装饰的事物被裹了一层功能,可以动态的给被装饰的事物增加一个或多个功能或当不需要时可以动态的去掉增加的装饰功能。
码农王同学
2020/03/25
4010
使用GraalVM 构建 Spring Boot 3.0 原生可执行文件
既然是VM,那肯定也是一个虚拟机,那它跟JVM有关系吗?有一定关系,GraalVM 可以完全取代上面提到的那几种虚拟机,比如 HotSpot。把你之前运行在 HotSpot 上的代码直接平移到 GraalVM 上,不用做任何的改变,甚至都感知不到,项目可以完美的运行。但是 GraalVM 还有更广泛的用途,不仅支持 Java 语言,还支持其他语言。这些其他语言不仅包括嫡系的 JVM 系语言,例如 Kotlin、Scala,还包括例如 JavaScript、Nodejs、Ruby、Python 等,如图。
阿提说说
2022/12/19
8.2K1
使用GraalVM 构建 Spring Boot 3.0 原生可执行文件
在spring boot3中使用native image
在之前spring boot3文章中我们介绍了,spring boot3的一个重要特性就是支持把spring boot3的应用编译成为GraalVM的Native Image。
程序那些事
2023/01/30
2.4K0
解决通过spring-boot-maven-plugin package失败问题
大概意思就是在spring-boot-maven-plugin:3.0.0-M1这个版本中没有goal这个api了
特特
2022/02/10
14.2K0
Spring Boot Web应用程序中注册 Servlet 的方法实例
本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet
一个会写诗的程序员
2018/08/17
2.7K0
Spring Boot  Web应用程序中注册 Servlet 的方法实例
多线程实例代码(demo)
在介绍多线程的时候,我们首先要知道什么是线程,而要了解线程还要了解进程。 1.进程:一个正在执行中的程序,每个进程执行都有一个执行顺序,该顺序是一个执行路径,或者是一个控制单元。 2.线程:进程中的一个独立控制单元,线程在控制进程的执行。一个进程中至少有一个线程。 3.多线程:一个进程中不只有一个线程。 eg:比如我们开车从北京到上海,进程可以理解为我们在去的上海的路上,坐飞机去相当于一个进程,我们不只只可以坐飞机还可坐高铁,自驾等这便是我们上面说的多线程。
默 语
2024/11/20
860
搭建SpringCloud项目,并实现自动化部署[通俗易懂]
前一阵子一直在忙着做项目,最近有空,把项目中用到的SpringBoot微服务相关架构再梳理一遍。
全栈程序员站长
2022/09/01
3.6K0
搭建SpringCloud项目,并实现自动化部署[通俗易懂]
完整教程:spring-boot-starter-data-elasticsearch整合elasticsearch 6.x
大致意思:Spring boot 2的spring-boot-starter-data-elasticsearch中支持的Elasticsearch 2.X版本,需要转向spring-data-elasticsearch,
程裕强
2019/05/27
9.8K0
springBoot 入门(一)—— 使用idea创建第一个springBoot项目
idea 为 Idea 2017 jdk 采用1.8 maven 采用 3.5.3
MickyInvQ
2020/09/27
1K0
springBoot 入门(一)—— 使用idea创建第一个springBoot项目
推荐阅读
相关推荐
spring cloud项目升级java11导致编译卡住排查
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验