机器视觉行业如何设计机器视觉系统框架

机器视觉行业如何设计机器视觉系统框架,第1张

如何设计机器视觉系统框架 --- 创科黎友在决定一个机器视觉系统的需求及应用时,很多因素需要考虑。机器视觉(或称为自动可视检测系统)一般包含了大量部件,这些部件直接影响系统的性能。为了获得这些子系统的优越性能,并无缝将他们接合在你的生产线上,最好花一些时间来学习视觉系统的组成、应用、以及正确的规划的重要性。 机器视觉的应用在对精度和可靠性都很高的重复性检测任务中,机器视觉广泛应用在这些生尺春产流程中。一些常见的任务:在食物包装中检测数据代码;自动检测部件用于正确的安装;为机器人的捡起(pick)和放置(place)动作提供向导;在制药中效验药品的颜色;读取部件的条形码、以及在产品上的标识;还有更多更多。基于PC的机器视觉系统的基本组成 由于机器视觉应用非常广泛,在不同的系统里使用不同的部件,但是,我们可以将这些部件分成如下几类(见图1)。图1 通常的机器视觉系统的主要组成(附件1) 1. 摄像头和光学部件 –这一类通常含有一个或多个摄像头和镜头(光学部件),用于拍摄被检测的物体。根据应用,摄像头可以基于如下标准,黑白RS-170/CCIR、复**色(Y/C),RGB彩色,非标准黑白(可变扫描),步进扫描(progressive-scan)或线扫描。 2. 灯光 –灯光用于照亮部件,以便从摄像头中拍摄到更好的图像,灯光系统可以在不同形状、尺寸和亮度。一般的灯光形式是高频荧光灯、LED、白炽灯和石英卤(quartz-halogen)光纤。 3. 部件传感器 –通常以光栅或传感器的形式出现。当这个传感器感知到部件靠近,它会桐睁给出一个触发信号。当部件处于正确位置时,这个传感器告诉机器视觉系统去采集图像。 4. 图像采集卡 –也称为视频抓取卡,这个部件通常是一张插在PC上的卡。这张采集卡的作用将摄像头与PC连接起来。它从摄像头中获得数据(模拟信号或数字信号),然后转换成PC能处理的信息。它同时可以提供控制摄像头参数(例如触发、曝光时间、快门速度等等)的信号。图像采集卡形式很多,支持不同类型的摄像头,不同的计算机总线。 5. PC平台 –计算机是机器视觉的关键组成部分。应用在检测方面,通常使用Pentium III或更高的CPU。一般来讲,计算机的速度越快,视觉系统处理每一张图片的时间就越短。由于在制造现场中,经常有振动、灰尘、热辐射等等,所以一般需要工业级的计算机。 6. 检测软件 –机器视觉软件用于创建和执行程序、处理采集回来的图像数据、以及作出“通过/失败(PASS/FAIL)”决定。机器视觉有多种形式(C语言库、 ActiveX控件、点击编程环境等等),可以是单一功能(例如设计只用来检测LCD或BGA、对齐任务等等),也可以是多功能(例如设计一个套件,包含计量、条形码阅读、机器人导航、现场验证等等)。 7. 数字I/O和网络连接 –一旦系统完成这个检测部分,这部分必须能与外界通信,例如需要控制生产流程、将“通过/失败(PASS/FAIL)”的信息送给数据库。通常,使用一张数字I/O板卡和(或)一张网卡来实现机器视觉系统与外界系统和数据库的通信。 配置一个基于PC的机器视觉系统认真的计划和注意细节能帮助你确保你的检测系统符合你的应用需求。如下是你必需考虑的几点: 确定你的目标 –这可能是最重要的一步 棗决定在这个检测任务中你需要实现什么,检测任务通常分为如下几类: 1. 测量或计量 2. 读取字符或编码(条形码)信息。 3. 检测物体的状态 4. 认知和识别特殊的特性棗模式识别 5. 将物体与模板进行对比或匹配 6. 为机器或机器人导航检测流程可以包含只有一个 *** 作或包含多个与检测任务相关的任务。为了确认你的任务,首先你应该明确为了最大限度检测部件你需要做的测试,也就是你能考虑到会出现的缺陷。为了明确什么哪个才是最重要的,最好做一张陵轮耐评估表,列出“必须做”和“可以做”的测试。一旦主要的对测试标准满意,随后可以将更多的测试加进去来改善检测过程,一定要记住,添加测试的同时也会增加检测的时间。确定你需要的速度 –系统检测每一个部件需要多少时间?这个不只是由PC的速度决定,还受生产流水线速度的影响。很多机器视觉包含了时钟/计时器,所以检测 *** 作的每一步所需要的时间都可以准确测量,从这些数据,我们就可以修改我们的程序以满足时间上的要求。通常,一个基于PC的机器视觉系统每一秒可以检测20-25个部件,与检测部件的多少和处理程序以及计算机的速度有密切关系。聪明地选择你的硬件 –一套机器视觉系统的性能与它的部件密切相关。在选择的过程中,有很多捷径棗特别在光学成像上棗可能很大程度降低系统的效率。如下是在选择部件时你必须紧记的几个基本原则。 1. 摄像头摄像头的选择与应用的需求直接相关,通常考虑三点:a)黑白还是彩色;b)部件/目标的运动;c)图像分辨率。在检测应用中大部分使用黑白摄像头,因为黑白图像能提供90%可视数据,并且比彩色便宜。彩色摄像头主要用于一些需要分析彩色图像的场合里。根据部件在检测时是否移动,决定我们选择标准隔行扫描摄像头还是逐行扫描摄像头。另外,图像的分辨率必须足够高,以提供检测任务需要的足够的数据。最后,摄像头必须质量好和可以避免工业现场中的振动、灰尘和热的影响。 2. 光学部件和照明这个至关重要的因素往往被人所忽略。当你使用一个很差的光学部件或照明,就算你使用最好的机器视觉系统,它表现出的性能甚至比不上一个配上良好光学部件和适当照明的低能力系统。光学部件的目标是产生最好和最大可用面积的图像,并且提供最好的图像分辨率。照明的目标是照亮需要测量或检测的部分的关键特征。通常,照明系统的设计由如下因素决定:颜色、纹理、尺寸、外形、反射率等等。 3. 图像采集卡虽然图像采集卡只是完整的机器视觉系统的一个部件,但是它扮演一个非常重要的角色。图像采集卡直接决定了摄像头的接口:黑白、彩色、模拟、数字等等。使用模拟输入的图像采集卡,目标是尽量不变地将摄像头采集的图像转换为数字数据。使用不正确的图像采集卡可能得到错误的数据。工业用的图像采集卡通常用于检测任务,多媒体采集卡由于它通过自动增益控制、边沿增强和颜色增强电路来更改图像数据,所以不用在这个领域里。使用数字输入的图像采集卡的目标是将摄像头输出的数字图像数据转换并输送到PC中作处理。考虑各种变化:人类的眼睛和大脑可以在不同的条件下识别目标,但是机器视觉系统就不是这样多才多艺了,它只能按程序编写的任务来工作。了解你的系统能看到什么和不能看到什么能帮助你避免失败(例如将好的部件认为是坏的)或其它检测错误。一般要考虑的包括部件颜色、周围光线、焦点、部件的位置和方向和背景颜色的大变化。正确选择软件:机器视觉软件是检测系统中的智能部分,也是最核心的部分。软件的选择决定了你编写调试检测程序的时间、检测 *** 作的性能等等。图2 DTVF是一个多功能、图形化编程的机器视觉软件(附件2)机器视觉提供了图形化编程界面 (通常称为“Point &Click”) 通常比其他编程语言(例如Visual C++)容易,但是在你需要一些特殊的特征或功能时有一定的局限性。基于代码的软件包,尽管非常困难和需要编码经验,但在编写复杂的特殊应用检测算法具备更大的灵活性。一些机器视觉软件同时提供了图形化和基于代码的编程环境,提供两方面最好的特征,提供了很多灵活性,满足不同的应用需求。通信和记录数据:机器视觉系统的总的目标是通过区分好和坏的部件来实现质量检测。为了实现这一功能,这个系统需要与生产流水线通信,这样才可以在发现坏的部件是做某种动作。通常这些动作是通过数字I/O板,这些板与制造流水线中的PLC相连,这样坏的部件就可以跟好的部件分离。例外,机器视觉系统可以与网络连接,这样就可以将数据传送给数据库,用于记录数据以及让质量控制员分析为什么会出现废品。在这一步认真考虑将有助于将机器视觉系统无缝与生产流水线结合起来。需要考虑的问题是: 1. 使用了什么类型的PLC,它的接口如何? 2. 需要什么类型的信号? 3. 现在使用或必须使用什么类型的网络? 4. 在网络上传送的文件格式是什么?通常使用RS-232端口与数据库通信,来实现对数据的纪录。为以后做准备:当你为机器视觉系统选择部件时,时刻记住未来的生产所需和有可能发生的变动。这些将直接影响你的机器视觉软硬件是否容易更改来满足以后新的任务。提前的准备将不仅仅节约你的时间,而且通过在将来重用现有的检测任务可以降低整个系统的价格。机器视觉系统的性能由最差的部分决定(就像一个木桶的容量由最短的一个木块决定),精度则由它能获取的信息决定。花时间和精力合理配置系统就可以建造一个零故障和有d性的视觉检测系统。

原尺岁文标题:10 Python image manipulation tools.

作者 | Parul Pandey

翻译 | 安其罗乔尔、JimmyHua

今天,在我们的世界里充满了数据,图像成为构成这些数据的重要组成部分。但无论是用于何种用途,这些图像都需要进行处理。图像处理就是分析和处理数字图像的过程,拍毁主要旨在提高其质量或从中提取一些信息,然后可以将其用于某种用途。

图像处理中的常见任务包括显示图像,基本 *** 作如裁剪、翻转、旋转等,图像分割,分类和特征提取,图像恢复和图像识别。Python成为这种图像处理任务是一个恰当选择,这是因为它作为一种科学编程语言正在日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具供大家使用。

让我们看一下可以用于图像处理任务中的常用 Python 库有哪些吧。

1.scikit-image

scikit-image是一个开源的Python包,适用于numpy数组。它实现了用于研究,教育和工业应用的算法和实用工具。即使是那些刚接触Python生态系统的人,它也是一个相当简单直接的库。此代码是由活跃的志愿者社区编写的,具有高质量和同行评审的性质。

资源

文档里记录了丰富的例子和实际用例,阅读下面的文档:

http://scikit-image.org/docs/stable/user_guide.html

用法

该包作为skimage导入,大多数功能都在子模块中找的到。袭困备下面列举一些skimage的例子:

图像过滤

使用match_template函数进行模板匹配

你可以通过此处查看图库找到更多示例。

2. Numpy

Numpy是Python编程的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准Numpy数组。因此,我们可以通过使用基本的NumPy *** 作,例如切片、掩膜和花式索引,来修改图像的像素值。可以使用skimage加载图像并使用matplotlib显示图像。

资源

Numpy的官方文档页面提供了完整的资源和文档列表:

http://www.numpy.org/

用法

使用Numpy来掩膜图像.

3.Scipy

scipy是Python的另一个类似Numpy的核心科学模块,可用于基本的图像 *** 作和处理任务。特别是子模块scipy.ndimage,提供了在n维NumPy数组上 *** 作的函数。该包目前包括线性和非线性滤波,二值形态学,B样条插值和对象测量等功能函数。

资源

有关scipy.ndimage包提供的完整功能列表,请参阅下面的链接:

https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html#correlation-and-convolution

用法

使用SciPy通过高斯滤波器进行模糊:

4. PIL/ Pillow

PIL( Python图像库 )是Python编程语言的一个免费库,它支持打开、 *** 作和保存许多不同的文件格式的图像。然而, 随着2009年的最后一次发布,它的开发停滞不前。但幸运的是还有有Pillow,一个PIL积极开发的且更容易安装的分支,它能运行在所有主要的 *** 作系统,并支持Python3。这个库包含了基本的图像处理功能,包括点运算、使用一组内置卷积核的滤波和色彩空间的转换。

资源

文档中有安装说明,以及涵盖库的每个模块的示例:

https://pillow.readthedocs.io/en/3.1.x/index.html

用法

在 Pillow 中使用 ImageFilter 增强图像:

5. OpenCV-Python

OpenCV( 开源计算机视觉库 )是计算机视觉应用中应用最广泛的库之一 。OpenCV-Python 是OpenCV的python版API。OpenCV-Python的优点不只有高效,这源于它的内部组成是用C/C++编写的,而且它还容易编写和部署(因为前端是用Python包装的)。这使得它成为执行计算密集型计算机视觉程序的一个很好的选择。

资源

OpenCV-Python-Guide指南可以让你使用OpenCV-Python更容易:

https://github.com/abidrahmank/OpenCV2-Python-Tutorials

用法

下面是一个例子,展示了OpenCV-Python使用金字塔方法创建一个名为“Orapple”的新水果图像融合的功能。

6. SimpleCV

SimpleCV 也是一个用于构建计算机视觉应用程序的开源框架。有了它,你就可以访问几个高性能的计算机视觉库,如OpenCV,而且不需要先学习了解位深度、文件格式、颜色空间等。

它的学习曲线大大小于OpenCV,正如它们的口号所说“计算机视觉变得简单”。一些支持SimpleCV的观点有:

即使是初学者也可以编写简单的机器视觉测试摄像机、视频文件、图像和视频流都是可互 *** 作的资源

官方文档非常容易理解,而且有大量的例子和使用案例去学习:

https://simplecv.readthedocs.io/en/latest/

用法

7. Mahotas

Mahotas 是另一个计算机视觉和图像处理的Python库。它包括了传统的图像处理功能例如滤波和形态学 *** 作以及更现代的计算机视觉功能用于特征计算,包括兴趣点检测和局部描述符。该接口是Python语言,适合于快速开发,但是算法是用C语言实现的,并根据速度进行了调优。Mahotas库速度快,代码简洁,甚至具有最小的依赖性。通过原文阅读它们的官方论文以获得更多的了解。

资源

文档包括安装指导,例子,以及一些教程,可以更好的帮助你开始使用mahotas。

https://mahotas.readthedocs.io/en/latest/install.html

用法

Mahotas库依赖于使用简单的代码来完成任务。关于‘Finding Wally’的问题,Mahotas做的很好并且代码量很少。下面是源码:

https://mahotas.readthedocs.io/en/latest/wally.html

8. SimpleITK

ITK 或者 Insight Segmentation and Registration Toolkit是一个开源的跨平台系统,为开发人员提供了一套广泛的图像分析软件工具 。其中, SimpleITK是建立在ITK之上的简化层,旨在促进其在快速原型设计、教育、解释语言中的应用。SimpleITK 是一个图像分析工具包,包含大量支持一般过滤 *** 作、图像分割和匹配的组件。SimpleITK本身是用C++写的,但是对于包括Python以内的大部分编程语言都是可用的。

资源

大量的Jupyter Notebooks 表明了SimpleITK在教育和研究领域已经被使用。Notebook展示了用Python和R编程语言使用SimpleITK来进行交互式图像分析。

http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/

用法

下面的动画是用SimpleITK和Python创建的刚性CT/MR匹配过程的可视化 。点击此处可查看源码!

9. pgmagick

pgmagick是GraphicsMagick库的一个基于python的包装。 GraphicsMagick图像处理系统有时被称为图像处理的瑞士军刀。它提供了一个具有强大且高效的工具和库集合,支持以88种主要格式(包括重要格式,如DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF)读取、写入和 *** 作图像。

资源

有一个专门用于PgMagick的Github库 ,其中包含安装和需求说明。还有关于这个的一个详细的用户指导:

https://github.com/hhatto/pgmagick

用法

使用pgmagick可以进行的图像处理活动很少,比如:

图像缩放

边缘提取

10. Pycairo

Pycairo是图像处理库cairo的一组Python捆绑。Cairo是一个用于绘制矢量图形的2D图形库。矢量图形很有趣,因为它们在调整大小或转换时不会失去清晰度 。Pycairo是cairo的一组绑定,可用于从Python调用cairo命令。

资源

Pycairo的GitHub库是一个很好的资源,有关于安装和使用的详细说明。还有一个入门指南,其中有一个关于Pycairo的简短教程。

库:https://github.com/pygobject/pycairo指南:https://pycairo.readthedocs.io/en/latest/tutorial.html用法

使用Pycairo绘制线条、基本形状和径向梯度:

总结

有一些有用且免费的Python图像处理库可以使用,有的是众所周知的,有的可能对你来说是新的,试着多去了解它们。

在计算机视觉(Computer Vision)中,深度学习(Deep Learning),所需解决的7个问题:

常见挑战:较少的数据(less data)、不均衡的类别(imbalanced classes)、噪声(noise);

运行设备:云端带滚郑(Cloud)服务器、树莓派(Raspberry Pi)、移动端(蠢颂mobile);

计算机视觉的工业领域:自动驾驶(autonomous driving)、工业检测(industrial inspection)、增强现实(augmented reality);备培

视觉算法的基础类别(图像或视频):分类(classification)、检测(detection)、分割(segmentation)、生成(generation)

机器学习(machine learning) ->人工神经网络(artificial neural network) ->深度学习(deep learning)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12524779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存