专注机器视觉的开发应用
18028280278
全国咨询热线:

机器视觉与计算机视觉的区别

2022-12-29 10:03

1 机器视觉与计算机视觉的区别

机器视觉(MV machine vision)与计算机视觉(CV computer vision)虽然核心的算法都是图像识别算法,大体一样,但是从实际项目的角度是不一样的。

CV项目一般面临的图像采集环境很复杂,光线的强弱、镜头距离物体的远近等都会导致采集到的图像质量可能不会很高;所以一般CV更多的是做目标物有无或基本轮廓匹配判断,一般不会涉及高精度测量和定位的问题。而MV项目一般用于工业领域,一般是用于高精度测量物体的轮廓尺寸或者精确定位物体的位姿,所以MV项目的相机、镜头、光源都是针对项目专门选定的,有时为了防止环境光干扰专门构建一个局部暗室也很正常。另外,受限于条件CV通常的识别率不会太高,比如人脸识别达到98%(网上有吹自己算法人脸识别率达到99.7%以上的,这种只能呵呵,基于标准图库识别率当然高,实际应用中结合实际复杂的环境因素是不可能的),但是MV识别率无限接近100%很正常。简单说,MV是工业上用的追求确定性的、特殊定制的一套软硬件系统。


机器视觉项目是一个机电一体化的工程,不能只注重视觉算法。机器视觉项目基本流程包括:

a、从最初的根据项目需求对相机、镜头、光源的理论计算选型开始;

b、之后针对被识别物体搭建简易的初步试验,确认选的硬件可以采集到满意的图像(这一步采集到的图像质量的好坏人眼就可以基本判断,可以不用借助算法);

c、然后开始采购相应硬件搭建本项目的开发平台,并开始结合实际工况和被测物开始编写识别算法,并且编写好与整体项目其他环节的通信接口;

d、最后机器视觉识别效果最终用的如何还需要进行现场调试和改进。这一步非常关键,上一步在实验室理想环境开发好的硬件与软件系统在这一步很可能会出各种问题。比如设备整体运行时的震动引起相机震动导致图像模糊、工厂的其他设备的光源投射到本项目中产生了异常的光线阴影等。

识别效果的好坏不仅仅取决于算法的好坏,视觉硬件选型和现场调试很重要。特别是在一些要求高识别精度的项目,视觉硬件取得的图像质量如果不够好,后期算法虽然可以修正,但是这样就相当于让计算机在“猜”尺寸边界,这是不靠谱的。

2 机器视觉入门学习

就像前面说的,机器视觉项目很强调软硬件结合。

机器视觉硬件部分可以参考我的百度文库上的《机器视觉选型计算概述》(这篇文章主要参考了基恩士官网的学习资料,不得不说日本人做事就是仔细,就像MISUMI样本都可以当简单的机械设计手册用了)。当然这篇文章主要是一些纲目性的资料,具体的每一个部分的原理可以根据条目进一步查资料学习。

机器视觉软件一般用编程语言调用算法库的形式,机器视觉算法库有很多包括:halcon、vision pro、opencv、matlab等。halcon是德国MVtec公司的算法库,也是目前市面上用的最多的算法库。vision pro是美国康耐视结合自己的视觉硬件产品推出的,当然也兼容其他硬件产品。OpenCV是开源算法库,本身很大很全,应该算计算机视觉的库,现在也有很多用这个,因为免费开源。Matlab是学校科班教学教图像识别一般都是按照这个教的,但是我看到的实际工业用的并不多。

机器视觉入门我很建议从HALCON开始。主要是我认为机器视觉软件入门第一步最重要的是理解图像采集、blob分析、形态学等一些基本的图像处理手段的作用和机器视觉项目软件整体怎么编写重要的是理解整体框架。在halcon、vision pro、opencv、matlab等不同算法库里面blob分析、形态学分析的具体算子内部编写可能会不一样,但是基本原理和实现的功能是一样的。通过halcon熟悉机器视觉项目的套路和方法,其他的学起来就简单了。halcon比较成熟,网上的破解软件也很多,教程资料也和很多(又从vision pro开始学的,但是这个目前学习资料确实不多)。之所以推荐从halcon入门,还一个重要原因是HDevelop(halcon算法的开发软件,两者关系有点类似微软的office和word的关系)提供了大量辅助工具帮助进行图像分析和软件调试,调试完毕后可以直接点击“插入代码”按钮自动生成程序语句,如下图所示,这样可以帮助我们快速完成程序编写并了解具体该用什么算子。程序编制完成后,HDevelop还可以直接导出C、C++、C#、VB等,以便后续程序的汇总。

机器视觉入门的书籍首选推荐《机器视觉算法与应用》,如下图所示,左侧为第一版,右侧为第二版。这本书基本算是halcon的官方书籍,因为本身作者就是halcon的开发人员,而且最难得的是这是少有的从相机、镜头、光源这些硬件开始写起的机器视觉图书。当然这本书限于篇幅理论讲的不是很细,讲理论还是得经典的冈萨雷斯的《数字图像处理》,但是入门我还是建议《机器视觉算法与应用》,还是说先了解整体架构,了解套路,知道怎么干,然后再深入。第一版是双语版(可以顺便学英语专业词汇),第二版增加了新的摄像机和图像采集接口、三维传感器及技术、三维重建、三维物体识别以及最先进的分类算法等。


机器视觉软件编程我建议最好采用C++,虽然这两年python比较火,但是工业上还是C++用的更多一些。如果像我是从机械转行机器视觉,零基础开始学,图书建议选《C++ Primer Plus》,如下图。虽然《C++ Primer》更经典,但是就像那句话说的“《C++ Primer》一点都不primer”,《C++ Primer》是可以用来当做C++的字典用的一本书,不适合用于C++入门。而且读《C++ Primer Plus》这本书可知直接照着书练习,示例非常完整详细,不需要配合别的视频教程类的资料学习。

如果你以前没有接触过机器视觉,而你想要学习机器视觉,那么你可能就会有第一个疑惑:机器视觉到底好不好学?想要学会机器视觉必须掌握哪些知识?要想学好机器视觉,需要对机器视觉的知识体系有所了解。下面我们就来分享一下各个部分需要掌握的知识点。

1、视觉成像部分

视觉成像又包含几个典型组件: 光源,镜头,CCD工业相机。

光源和镜头都需要我们掌握光学知识,不同的打光方式,可以让相机对物体产生完全不同的成像;而镜头的倍率,焦距,视野等的选择不同直接决定了成像的逼真度。对于一名机器视觉工程师来说,掌握如何选择镜头,如何选择光源,如何确定打光方式是最基本的技能。

工业相机需要我们掌握光电知识,掌握相机传感器的区别,掌握图像成像的基本知识如清晰度,动态范围,视场角等等,这样我们才能根据需求和场景选择正确的相机,最快速的掌握这些知识的方法是买一台入门级单反来研究透这些成像参数和成像的关系。

2、图像处理部分

图像处理我们一般理解是在PC机器上进行的,实际上在工业领域,大部分采用工控机,因为它稳定,加上有成本优势。近些年的发展,嵌入式硬件也在蓬勃发展,很多工厂对于小的需求比如控制几百台仪表盘的开关和状态监控,完全可以利用树莓派等开源硬件实现。对于入门者来说,可以优先掌握PC平台,X86平台的开发,在熟悉之后可以延展到嵌入式平台。在软件部分,大部分应用层采用C#,.net,QT,C++来实现,因此掌握这其中的一门编程语言是必备的;而在图像算法层面,典型的开源算法有opencv,商用的有halcon,visionpro等,建议最开始可以先以halcon入门;如果在算法层面想进一步深入,可以研究一下机器学习,这可能是未来的主要方向。对于理论方面,更多的是掌握图像处理的基本概念,这本书《机器视觉算法与应用》,值得一看。

3、运动控制部分

典型的运动控制卡如固高,可以入手研究一下。更为高级一点的PLC,也可以玩起来,这部分的难点在于,精度的矫正,因为很多场景和需求对精度的要求是非常高的。除了以上三点,整体方案的搭建能力是至关重要的, 因为方案需要把这些部分都串起来,并且能够和现实场景联系起来,满足实际的生产自动化需求。

本文来自于网络!



AOTU-AOTU
东莞市凹凸自动化科技有限公司
联系邮箱:aotu_auto@163.com 联系电话:18028280278 联系地址:广东省东莞市常平镇环常北路43号
18028280278
全国服务热线: