机器视觉一般都要求与现有生产线或测试控制系统配合使用,因此机器视觉项目不仅要提供视觉产品,而且要提供能够与客户的自动化系统集成的完整的解决方案。由于项目的复杂性和协同性,机器视觉项目的顺利完成离不开好的规划和细致的执行,本章将对如何完成机器视觉项目进行过程详述。
本章主要涉及的知识点如下。
●项目的前期准备:包括客户的初步需求分析、项目可行性评估等前期工作。
●项目规划:包括确认客户需求、制订开发计划、确定软硬件方案等。
●详细设计:从技术的角度介绍如何开始做机器视觉项目,以及机器视觉系统的基本框架。
●项目交付:为项目验收所做的准备,主要分为软件功能测试和现场调试两部分。
本章内容不包含具体的硬件选型,这部分内容将在第3章介绍。
好的开始是成功的一半。在机器视觉项目开始之前,应详细了解客户的需求,以进行项目可行性评估和验证。这既是收集信息的过程,也是增强客户信任的一种方式。本节将详细介绍做机器视觉项目之前所需要的准备工作。
在立项之前,首先应与客户沟通,明确项目的基本需求,以便评估项目的可行性。初步沟通主要包括以下5个方面。
(1)项目来源:主要是指项目的意义、前景、市场价值等高层级的内容。
(2)开发内容:包括视觉系统要完成的任务、待实现的主要功能,明白大致要“做什么”。
(3)使用环境:明确客户的使用环境很重要,包括硬件、软件与结构等方面的使用需求。对于机器视觉项目而言,使用环境往往会影响设计方案的选择。例如,客户可能会对设备的结构尺寸等有特别的要求,因此需要根据使用环境选择合适的图像采集设备;又如,有时客户工作的计算机操作系统比较特殊且无法更换,这就需要对软硬件的兼容程度和运行效率进行评估。
(4)开发方式:需要了解客户希望以何种形式完成开发,如共同开发或完全承揽,是否接受外包等;还有项目中双方的工作和责任如何分配,如哪一方负责采购相机等。
(5)交付成果与形式:明确交付产品的内容与形式,如软件、硬件设备和文档等。
明确了基本需求之后,如果条件允许,还应当到客户的工作现场了解被检测样品与设备的工作环境。此外,还需向客户询问了解机器视觉产品的安装空间和安装要求,尽可能地收集关于项目的需求信息,以便进行项目可行性评估和后续开发。
初步的需求收集应尽量引导客户提出需求,这有利于后续的方案设计和可行性评估。
得到初步需求以后,根据被检测样品和检测环境,可以进行方案可行性评估,一般包括以下6个方面。
(1)技术可行性:通俗地说,就是指项目是否能做。承接方应了解自己的技术实力是否能完成该视觉项目的开发任务,同时还要确认能否满足客户对性能指标的要求,包括精度、准确率、速度等。
(2)时间要求:根据客户对项目交付时间的期望,大概评估软件开发和硬件设计所需的时间,同时还要考虑设备采购与运输的时长,评估时间上是否能够满足客户的期望,进度上能否达到要求。
(3)空间要求:了解设备的使用环境,这对于机器视觉项目而言非常重要。考虑到相机焦距,有限的使用空间有时会影响到相机的成像质量。此外,设备的使用空间还可能影响到结构夹具的设计,因此这些都需要在评估时进行确认。
(4)光照环境:确认现场的光照环境是否会影响采集图像的质量,如果光线变化难以控制,就要考虑是否需要设计一些结构来屏蔽光线变化的干扰。
(5)通信接口:需要确认视觉系统与硬件系统的通信方式,如输出的内容及接口类型等。
(6)成本与费用:根据上述信息,还需考虑项目的成本与费用,这些属于商务方面的问题,在此不做展开。
可以通过设计实验来验证评估的结论,这一方面是为了保证项目评估结论的准确性,另一方面也是为了增强客户对项目的信心。确认了客户基本需求以后,即可开始采集样本图像并设计实验,进行关键部分的验证。例如,这一阶段可以利用客户提供的拍摄样图或被检测对象样品,开发检测算法演示程序,模拟客户使用场景中的视觉检测,以证明算法的可用性和有效性。
验证结果应向客户演示,以获得客户的认可和反馈。在客户认可验证结果之后,双方可以在相互协商的基础上制定《技术协议书》。
签订合同时,除了要关注商务部分,还要关注以下技术部分的内容。
项目的范围包括功能点,如待检测的对象、应完成的工作等。该范围可以包含在《技术协议书》中,与合同配套生效。项目范围应尽可能详细,以明确后续的工作。
验收标准包括两方面,一方面是视觉系统的功能的完整度,如哪些功能点需要满足;另一方面是性能的实现标准,如检测的速度和精度等。
其他确认是指与项目验收相关的其他重要信息,例如以下信息。
(1)视觉检测的判定标准,如OK品与NG品的判定标准,能达到的检测准确率与速度等,同时还应包含质量上的一些验收标准。
(2)系统最终交付时间及阶段性安排。
(3)相机、镜头、采集卡等设备由何方采购,以及采购时间与待选择的厂家信息。
(4)其他,如机械结构设计的要求,以及培训和售后的要求等。
相机镜头等设备如果由客户采购,应给客户提出选型方面的建议,同时密切跟进采购进度。
机器视觉项目在合同签订以后即开始进行项目规划,规划阶段的主要工作包括定义客户的详细需求、制订项目管理计划、方案评审等。
签订项目合同后,根据项目的目标和范围要求,进行进一步的需求调研。根据经验,《技术协议书》中往往只是指明了需求的基本层面,而对细节问题并未详述,因此,在开始开发前,需要与客户进一步沟通软件的详细需求。
前期制定一份详细的需求说明,能有效地减少后期项目出现偏差的风险。在实际操作中,许多后期的延误、返工、质量缺陷,常常都是源于初期需求的不明确。有些需求是客户认为显而易见的,但对于开发方来说却容易忽略或遗漏;有些实际使用场景只有客户比较了解,而开发方会因为对操作设备和现场环境的不熟悉而遗漏某些关键需求。因此,需要经常和客户进行沟通,沟通的过程中要和客户针对具体问题进行深入探讨与现场模拟,以挖掘客户的深度需求及其细节。
当客户需求确定以后,应以文档形式记录下来。这样一方面是为了便于进行项目管理,如模块划分、人员安排、制订进度计划等;另一方面是为了防止在开发过程中出现需求随意变更的情况。需求文档(如《产品需求规格说明书》)将成为制订开发计划的依据与项目验收的参考。
以《产品需求规格说明书》和项目合同为依据,可以制订项目管理计划。机器视觉项目的管理计划一般包括范围、时间、成本、人力资源、沟通计划等。
(1)范围:包括开发机器视觉系统的全部工作的详细范围,可以根据《产品需求规格说明书》进行估算。
(2)时间:根据全部工作的范围划分具体的活动,根据每个活动所需的时间估算开发时间表,制订进度管理计划。
(3)成本:根据具体的工作估算所需的人力和物力,进而管理项目的成本。
在进行项目可行性评估的时候,就应对人力资源进行规划。项目开始之后,应根据开发工作的具体内容和成本预算确定团队成员。一般来说,机器视觉项目至少需要配置项目经理、图像算法工程师和软件工程师(可能与图像算法工程师是同一人)。根据项目需求的不同,还可能需要光学工程师、机械设计工程师、电路工程师、测试工程师、采购工程师、质量保证专员等角色。当人力不足的时候,可以考虑从公司内部借调,或者从外部招聘。
与客户保持良好的沟通是保证项目顺利进行的关键之一,尤其是机器视觉项目,需要经常与客户交流信息,汇报项目进度,获取客户对检测效果的反馈。沟通需要注意方式,也要注意频率。
可以在评审会议上与客户商量出一种双方都接受的沟通方式。例如,可以利用即时通信软件进行沟通,或使用邮件进行文件的传输,又或定期举办例会以便客户了解项目的进展和存在的问题。面对面的沟通是最有效的沟通方式,因此在关键问题上,要尽可能地选择当面沟通。此外,还应与客户确认沟通的联系人,应有一个专门跟客户对接的角色(一般是项目经理),使客户与开发人员都能找到信息传输的“接口”。
除了沟通方式,还需要确定沟通频率。例如,项目进度需要多久汇报一次、召开例会的频率等,应征求客户的意见做好日程安排。
方案评审是就软硬件的技术方案及项目管理计划,与客户进行沟通并收集反馈的过程。在项目初期,需要对软硬件开发方案做一个概要设计,包括系统的结构、开发框架与流程、使用的技术、设计方案,并对项目管理计划做一个详细的报告。然后召开项目的评审会议,邀请客户及相关专家到场对方案进行评审。
方案评审一方面是为了确保开发方案的可行性,使开发结果能够满足客户要求;另一方面也是为了与客户沟通,在评审会上收集客户的反馈意见,及时解答客户的疑问,将增强客户对项目的信心。
方案评审完成后,就可以开始进行机器视觉系统的详细设计了。下面将从技术角度介绍如何开始做机器视觉项目,以及机器视觉系统的基本框架,包括软硬件环境的选择与创建、机器视觉系统的基本开发过程等。
在对项目进行初步评估时,就应考虑硬件环境的搭建了。硬件设备主要包括如下几个。
(1)相机:一般选择工业相机。相机主要用于图像采集与成像。
(2)镜头:镜头关系到成像的质量,应根据实际项目的需要选择合适的镜头。
(3)采集卡:采集卡的功能是将数字信号或模拟信号转换后传送给计算机主机。
(4)连接方式:指相机的连接方式。
(5)光源:根据拍摄的需求选择光源或布置光照环境。
(6)结构件:指机器视觉设备所需的机械组件,如夹具、支架、固定装置等。
硬件设备的选型应注意系统的兼容性,如相机和采集卡之间的匹配程度。
机器视觉项目的软件开发工具一般包括所用到的图像库、算法和开发平台,可根据项目需要和开发者的偏好进行选择。
(1)图像库:指图像处理算法包,目前比较主流的适用于机器视觉的算法包有OpenCV、Halcon、Labview等。其中OpenCV的应用最为广泛,但是其在机器视觉中的应用还有很多局限性。而在工业应用中,Halcon以其功能强大、算法集成度高而占有相当大的优势。本书将主要介绍Halcon的应用。
(2)算法:主要指为了检测项目中的具体内容而设计的软件解决方法,如边缘检测、特征匹配、文字识别等,都是为了完成检测步骤中的特定检测任务而设计的。
(3)开发平台:指开发软件的工具,常见的有Visual Studio、Qt等。
机器视觉系统主要采用工业相机采集显示器的工作画面图像,通过由Halcon和C++混合编程开发的智能检测软件对图像进行处理,根据图像处理结果进行数据分析,在得出分析结果后进行判断和输出。机器视觉系统主要由两大部分组成,一部分是算法实现,另一部分是交互实现。
算法实现分为图像输入、中间处理、输出3部分。将用工业相机设备获取的图像作为图像输入,这一步也是图像处理的第一步。Halcon图像处理包括图像预处理、图像增强、图像分割、特征提取、图像理解等,这些是中间处理部分,这部分主要作为算法实现。算法实现以后,将其导出为C++代码,供界面编程调用。
交互实现部分主要是为了方便用户操作与使用软件,这部分不涉及图像处理算法,采用合适的开发工具开发相应的界面即可。例如,用Qt框架开发用户界面就是一种比较高效的方式。图2.1是机器视觉系统的基本框架。
图2.1 机器视觉系统的基本框架
机器视觉系统的开发流程主要包括以下4个步骤。
(1)采集图像:包括从触发相机到捕获图像的整个过程。
(2)图像处理:对获取到的图像进行形态处理等,为后续的分析做好准备。
(3)图像分析:依据一定规则对图像处理的结果进行理解和判断。
(4)结果输出:图像分析结束后,必须将识别的结果和相应的数据发送到软件前端主界面的相应区域进行显示,并且将识别的结果发送给硬件电路或机械控制系统。
软件的交互界面是用户直接看到的内容,也是使用软件进行操作的平台。因此,交互界面的设计水平将直接影响到检测流程的效率,关系到客户对项目的满意度。
交互界面的设计准则为简洁易用,可操作性强,操作流程应尽可能精简。实际工作中的一些并非技术人员的最终用户,他们对软件操作最大的要求是输入简单、方便易用及输出标准化。
本书介绍的机器视觉算法与案例主要基于Halcon视觉算法包。因此,重要的图像处理算法会在Halcon中进行开发。Halcon的应用界面如图2.2所示。
图2.2 Halcon的应用界面
开发平台的选择范围比较广,笔者比较熟悉的如Visual Studio或Qt,在编写软件界面方面的功能都十分强大。因此,开发者可以根据项目需要或自己擅长的开发平台进行选择。
由于机器视觉项目涉及软硬件的开发和搭建等多个环节,因此在交付前需要进行多个环节的测试,以保证能顺利交付。本节提到的测试主要分为软件功能测试和现场调试两部分。在现场调试通过及文档交接完成后,项目交付就基本完成了。
软件功能测试主要是在到达客户现场之前对软件进行调试,是在交付前进行的内部测试,测试目的是检查机器视觉系统的基本功能是否符合《产品需求规格说明书》的要求。软件功能测试的主要内容如下。
(1)采集图像功能:这是极为重要的功能之一,主要是测试采集的图像是否正常。
(2)功能模块测试:逐条核对应有的功能是否完全实现。
(3)交互界面测试:主要是测试用户在与系统进行交互的过程中是否有异常。
(4)通信测试:测试机器视觉系统与外部通信接口的数据传输是否正常。
现场调试(试运行)的目的是检查机器视觉系统在实际工作场景中是否能够正常运转,这一步也是客户对机器视觉系统的验收,将针对合同查看系统是否满足验收标准。这部分工作主要有以下3个部分。
(1)设备安装:将机器视觉设备在现场进行连接搭建,布置好视觉检测的软硬件环境。
(2)系统连调:调试完整的程序,按实际应用场景中的正常使用流程进行检测调试。由于现场调试时的不确定因素比较多,如环境光、机械振动、系统兼容性等都可能导致异常的出现,因此应当在交付之前提前做好充足的准备,对可能出现的异常情况进行模拟和预防,并预留好解决异常的时间与人员。
(3)文档交接:包括合同中指定的文档资料,如用户使用手册、常见问题及解决方法、开发总结报告、验收报告、装箱单、软件光盘等。这些文档应在交付之前准备好。
采集图像的设备应在相机到位之后、项目验收之前就进行现场调试,以保证系统的正常输入。
交付结束后的工作主要有人员培训和设备维护等。
人员培训主要是对客户方的实际使用者和测试者等相关人员进行操作培训。结合用户使用手册进行实际操作的讲解,同时对注意事项和可能出现的异常情况的处理方法进行说明。
设备维护主要是对交付的软硬件设备的后期技术支持。良好的技术支持不仅是专业精神的体现,也能维持与客户的良好关系,为未来的合作建立基础。