工业视觉系统管理软件设计

通用工业视觉系统管理软件的设计与部署

摘要

计算机视觉系统已成为现代企业的一个关键要素。然而,其实施不仅需要专用硬件组件,还需要能够控制所有这些组件正确运行的软件。本文旨在介绍一款用于管理任何公司不同计算机视觉系统的软件的设计与部署。首先,基于我们在公司流程机械化和工业化方面的经验,提出一个通用的公司规范以及必须满足的主要软件需求。接着,将展示一种由核心、配置模块和具备满足已定义需求功能的用户界面组成的三级模块化设计。特别关注时间限制和组件同步问题。此外,还将展示为确保软件正确运行而进行的各项测试。开发过程最终将得到一款通用、模块化和可扩展的软件,只需修改一组输入参数即可适应不同的工业场景。为了说明该方案的正确运行效果,将呈现其在四家具有不同需求的实际公司中的安装细节。本研究工作在工业领域具有实际应用价值,同时也对实际公司环境中计算机视觉系统所涉及的主要组件及其管理方法提供了详尽的描述。

引言

近年来,计算机视觉系统已成为工业流程的重要组成部分[1]–[5]。此外,其与人工智能策略[6],[7]及其他技术进步的结合,使得许多人工程序得以自动复制,从而实现更高效、更有效的工业流程和结果[8]–[21]。然而,将计算机视觉系统投入生产仍存在困难,因为需要集成各类软件和硬件元件,例如传感器、机械化组件、照明系统以及图像采集设备[22]–[24]。这种复杂性导致计算机视觉系统在大多数情况下均为领域特定的解决方案。系统设计通常基于需自动化的关键程序和流程,并针对特定场景需求开发专用方案。例如,在食品工业[25],中,已有专门方法用于肉类分类[26], 、食品图像识别[27],、动物身体部位分割自动化[28],,或测定初榨橄榄油中的水分和不溶性杂质含量[29]。在汽车行业[30],,已提出一些方法用于识别金属材料上的机械裂纹[31],或评估球墨铸铁的机械性能。有关该领域应用方法的综述见[32]。在制药行业,也提出了用于监控乳剂[33]或预测固化分子固体抗压强度[34]的方法。建筑行业同样受益于自动化流程 [35],,这些流程在保障工人安全[36],[37]方面尤为有效。更多实例还可参见纺织行业[38],、电子元器件制造[39],以及其他众多领域[40]。

无论应用领域如何,在计算机视觉系统的核心中,都有一个软件决定所有连接的组件应如何运行以执行期望的工业任务。粗略地说,该软件可以被描述为一种配置和控制生产线组件以产生期望输出的应用程序。它由不同的模块组成,旨在实现以下功能:1)从生产过程或产品中采集信息,这需要对生产线以及采集和照明设备等进行控制;2)通过图像处理技术和人工智能策略处理所收集的信息,提取出决定所需执行操作的相关信息;3)将这些操作作为输出返回,以控制生产线的组件。显然,所有这些程序必须同步,以确保满足场景的时间限制。由于类似的情况通常需要非常相似的策略,该软件通常能够适应同一案例的不同变体。例如,在质量控制过程中,计算机视觉软件确定何时以及如何采集产品图像。该图像采集过程将根据产品的特征(如尺寸和包装类型)而有所不同。同样,采集的图像的处理也会因产品的具体质量要求而异。因此,为了支持这些变体,计算机视觉软件提供了一个图形用户界面,以便根据产品调整其参数。

工业自动化要求不同的计算机视觉软件系统共存。此外,人们对具备灵活制造能力的工业串行生产系统具有浓厚兴趣,这些系统能够通过调整和设置设备,在同一条生产线上以有限生产批次生产不同类型的产品[42]。因此,除了计算机视觉系统的软件外,还需要一个高层级应用程序来管理所有系统,并随时决定其运行方式。这种新软件将实现对所有系统的整体控制,从而集中所有操作,实现更高效的管理。针对这一问题,目前已有多种现成解决方案可供选择。然而,一些公司更倾向于开发内部解决方案,以避免专有系统的局限性。我们公司正是如此,专注于包装、码垛和搬运机械及自动线的建造,面向全球设计、开发和生产定制化解决方案和交钥匙工程。为了在更短的时间内满足客户的定制需求,采用一种内部产品被认为是合适的,因为它将需要更少的维护以及更低的重新配置成本。考虑到该软件需负责所有计算机视觉系统、传感器与设备的控制,以及根据生产线限制条件处理相关数据,其开发并非易事。此外,所提出的软件还必须具备可扩展性、可重用性、灵活性和可扩展性等特性,以在最小影响源代码的前提下适应客户不断变化的需求。

本文重点介绍该软件的开发,旨在实现多个目标。首先,介绍为确定开发能够管理工业视觉系统的软件所涉及的主要组件而进行的研究。公司不同的计算机视觉系统。为了统一必须支持的可能用例,需要对所有这些组件进行规范。其次,根据所提出的规范,详细描述所开发的软件及其模块,并特别关注通信和同步问题。第三,解释已开展的不同实验,以评估所提出软件在不同实际场景下的效率和适应性。

本文的主要贡献可以总结如下:
1) 在实际工业场景中识别并明确参与开发用于管理不同计算机视觉系统及其关系的主要元素的上下文,特别关注通信和同步细节。
2) 设计并实现一种通用、模块化和可扩展的软件,该软件能够通过简单修改一组输入参数来控制不同的计算机视觉系统,并适应不同的工业场景。
3) 通过考虑不同用例,在多个实际场景中对管理软件进行评估。

需要注意的是,所提出的软件将成为更通用的自适应工业自动化框架中的关键要素,其中输入参数将被自动设定,从而减少用户交互。

方法与材料

为了创建该软件,我们的开发工作由一般性分析和需求收集、软件设计过程、编码与测试以及软件部署所驱动。本节将描述所有这些步骤。

一般分析与需求收集

在项目的第一个阶段,我们利用了在运输线、供应流程和产品管理等公司流程的机械化和工业化方面的经验。为了开发一种灵活、可配置和可互操作的软件,使其能够适应尽可能多的公司,我们提出了一组术语,用于描述需要通过计算机视觉技术进行机械化和控制的一般公司状况。

公司规范:用于描述公司需求的术语

在图1中进行了说明,并在下方列出。上下文是指需要通过计算机视觉技术进行机械化和控制的公司空间。该上下文由一个或多个环境组成,每个环境包含自身的组件,例如传送带和机械臂,以及计算机视觉元素如相机和照明灯,还包括其他用于执行不同操作的元素如传感器和编码器。每个环境可支持不同的场景,这些场景可能取决于其所处理的产品流。在示例中,环境4支持两个场景,即场景1和场景2,二者在每箱产品数量上有所不同。

示意图0

为了确定场景的执行方式,我们引入了项目这一术语。一个项目包含一个环境支持一个场景所需的规格。计算机视觉系统通过个人计算机(PC)处理摄像头的图像,并应用称为分析的图像处理方法。分析具有输入‐输出参数,分别表示所需或返回的信息。这些场景由可编程逻辑控制器(PLC)控制,PLC决定所有组件在通信过程中需要执行的不同操作。

软件需求

在确定了与公司规范相关的所有信息后,我们定义软件需求。特别是,我们的软件必须:
1) 提供从零开始且几乎无需 effort 即可定义上下文、环境、摄像头和通信的功能。需支持不同摄像头型号,具备不同的功能、管理参数和接口。
2) 支持任意上下文的定义,对环境、场景、摄像头和通信的数量不设限制。
3) 独立于通信协议、信息加载资源或计算机视觉技术,以确保其适用于任何场景。
4) 支持项目定义以及在运行时更改项目,以适应变化的场景。
5) 支持实时修改相机配置参数。
6) 支持与可编程逻辑控制器以及其他可能被视为协作工作必要的组件之间进行实时和周期性的输入输出通信。
7) 支持从个人计算机或可编程逻辑控制器实时选择项目,确保两个组件之间的一致性。
8) 提供任何场景的实时信息。
9) 支持离线工作模式,以将实际生产与新项目的开发与测试相结合。不影响生产的功能。此要求包括能够:1)处理相机已采集的图像;2)保存已采集的图像。
10) 优化计算时间,以确保场景工作模式的高效和有效。该应用程序必须实现最短的运行时间以达到最佳工作状态。
11) 控制错误并执行摄像头恢复协议,以在最短时间内从故障中恢复。

需要注意的是,大多数需求中都提到了实时性,而实时性直接取决于响应时间,响应时间包括计算时间。显然,响应时间必须是最优的,即最小化,因为高速操作被要求以提高生产速率。实时系统是指其逻辑正确性不仅基于输出的正确性,还基于输出的及时性[43]。为了满足这些要求,已提出不同的方法来开发实时软件应用,这些应用在动态环境中以时间限制执行一系列进程[44]。此外,由于这一需求也依赖于硬件,因此也提出了高速视觉系统[45],[46]。在我们的上下文中,为应对所有这些问题,并受到诸如杰克逊系统开发(JSD)、实时结构化分析与设计(RTSAD)、实时系统设计方法(DARTSs)和尤尔登结构化方法(YSM)等软件开发方法的启发[44],[47],,我们考虑了一种以并发、实时和面向对象编程为核心要素的软件设计。最后需要考虑的是,该应用必须具备响应性、支持多用户、支持多种语言,并且具有模块化特性,以便于轻松集成新功能。

软件设计

在设计该软件时,我们根据工作流程并结合专家和基础用户的需求,将所有需求进行了分类。专家需要为公司所有场景确定工作模式,这要求对上下文进行规范定义,包括环境、摄像头、通信技术和项目。一旦工作流程确定,基础用户即可通过确定需执行的项目或修改项目参数来控制该流程。综合考虑以上因素,本文提出了如图2所示并下文所述的三层架构。

示意图1

核心

从底层到顶层,第一层是软件的核心,由三个模块组成:环境模块、相机模块和通信模块。

环境模块 包含两个组件:1)环境规范,其中包含一个标识符及其摄像头列表;2)执行模式,通过标识符和当前项目名称(如果处于开启状态)以及上一个项目的标识符来控制环境中的项目。该组件还控制将在后文描述的执行界面中显示的信息。

相机模块 包含三个组件:1)相机规格,其中包含序列号、名称、模型、配置文件以及相机触发类型(内部或外部);2)采集模式,包含可针对每次采集或特定项目实时修改的配置参数、相机每次采集指令需要执行的采集次数,以及相机状态,即开启(启用/禁用)或关闭(注意同一相机可根据不同场景需求采取不同的工作方式);3)执行模式,包括预处理、分析过程和输出模块。预处理模块指明在特殊情况下分析过程之前需执行的操作,例如需要多幅图像来评估单个元素时,或需将一幅图像分割为多幅图像以评估不同特征时。分析过程模块定义了根据输入‐输出参数应应用的图像处理算法。考虑三类参数:图像(包括采集的图像或处理后获得的图像)、图标参数(如形状模型(SMs)或区域等对象、用于机械臂交互的校准文件、用于深度学习策略的神经网络等,或在处理步骤中使用或生成以更好解释结果的标签),以及控制参数(用于控制执行过程的数值或分析后获得的数值)。最后,执行模式组件的最后一个模块是输出,它返回处理后的结果以及警告信息。这些结果表示为一组状态,每个状态指示成功或失败;若失败,状态也同时说明原因。指出错误标识符以访问其描述列表。需要注意的是,执行模式对应于计算机视觉系统的核心,即根据工业应用设定的要求以及从图像处理技术和人工智能策略中获得的结果来确定系统应如何执行的部分。这些技术和策略是专门为该应用设计的,并且对所应用算法的类型没有施加任何限制。该模块可以访问不同的图像处理库,例如Halcon[48],、OpenCV[49],或Cognex[50],等。所有这些库都具备最新的最先进的机器视觉技术,例如全面的3D视觉、深度学习模型和模式匹配[41]。因此,所提出的软件使得现有图像处理和人工智能技术能够轻松集成。关于这些技术如何应用于实际案例的更多细节将在第三节中介绍。

通信模块 包含两个组件:1)通信规范,用于定义通信类型、是否为实时通信,以及互联网协议(IP)地址或端口号等技术信息;2)执行模式,包含有关项目(活跃项目与环境之间的关系)、结果(根据处理情况、错误及最后分析图像的输出控制参数所确定的真/假值)和数据(将在用户界面中显示的信息或输入控制参数)的信息。

配置模块

架构的第二层是配置模块,其中包含三个组件:上下文规范组件、工作模式组件和偏好设置组件。

Context Specification 组件 与核心交互,以提供定义环境、相机和通信模块规格所需的信息。

工作模式 组件 用于控制所提议的软件是离线运行还是在线运行,以及同步细节(如应用程序行为(主控或从属)),以解决与其通信组件之间可能存在的不一致问题。

最后,Preferences组件提供了选择语言的功能;用于获取文件、要加载的元素、相机配置和要执行的程序等资源的目录路径;屏幕特性;以及寄存器文件的细节层次等功能。

用户界面

架构的第三层维护了所有用于访问软件功能的用户界面。这些界面被分为七个部分,分别命名为上下文、项目、分析、生产、选择、执行和工具,可通过名为主页的主界面进行访问。

上下文界面 用于创建上下文或修改已创建的上下文。通常,创建过程仅执行一次,输入的信息会注册到一个很少更改的XML文件中。

Projects界面 允许用户创建或修改项目。输入的信息也会存储在XML文件中。

该界面提供两种可视化模式,第一种(Vis1)供专家创建和修改未运行的项目,第二种(Vis2)用于实时修改当前场景中的活动项目,包括对输入控制参数、相机的配置参数进行更改,或在出现错误时接受或拒绝产品。

分析界面 允许用户创建或修改分析规范,即过程的名称以及输入‐输出参数的属性,例如输出图像的标题、图像中每个图标参数的视觉特征、描述、单位,以及在适用情况下每个输出控制参数的可接受范围。与之前的界面一样,输入的信息将注册到相应的XML文件中。

生产界面 允许用户通过外部应用程序访问上下文中的所有数据,以评估性能。这些数据由我们的软件以及其他与其它生产流程和控制相关的外部来源提供。

选择界面 允许用户查看每个环境模块的所有可能项目以及活跃项目。它还允许从应用程序上传新项目,通过更改执行模块中的活动项目来修改场景工作模式,并将更改信息传递给相关的外部组件。

执行界面 允许用户根据核心中环境模块的可视化模式所定义的规范,实时查看所有上下文信息。它显示各个环境、每个环境的活动项目以及该环境中所有激活的摄像头。此外,对于每个摄像头,它会显示上一次分析的输出结果,包括输出图像(通过标题标识)、图标参数(以选定的颜色和视觉特征显示)以及控制参数及其描述、对应的单位,并在适用情况下用绿色或红色标明这些参数是否处于可接受范围内。该屏幕还显示累计计数器以及正确与错误结果和错误的当前信息。通信模块执行模式中选定的数据也将在此显示。此界面可直接访问项目界面的Vis2屏幕,还可提供通信状态的信息。此外,执行界面提供了检测错误和警告的功能,从而避免可能出现的问题。这些错误和警告可以详细查看,以便采取相应措施。

工具界面 提供了访问项目期间创建或所需信息的功能。这些功能使最终用户无需专家支持即可执行不同操作。

需要注意的是,尽管所有输入的信息都会注册到传输给模块的XML文件中,但系统也支持其他传输方式。系统的设计使得应用新的传输方式时,只需实现用于访问数据并将其传输到相应模块的方法,而不会影响之前的开发或执行模式。

对这些接口提供的功能的访问取决于用户权限。这些权限通过逗号分隔值(CSV)文件进行定义,其中每个用户都有对应的描述、访问代码以及对接口的权限类型。如图2所示,专家可以访问所有接口,而基础用户只能访问主页、执行、选择、生产、项目Vis2界面和工具。

控制类

在一家真实的公司中,每个环境都需要有自己的一套事件序列来控制所有组件如何运行,同时满足规定的时间限制[42],[51]。这些事件范围从简单的相机触发到一系列复杂动作,以控制处理、运动、分拣、光源、编码器等。在我们的软件中,负责控制同步和时间限制的四个类是上下文控制、环境控制、相机控制和结果控制。为了描述它们,我们将首先考虑需要通信的主要组件,然后是涉及时间限制的动作序列,最后是为支持这些功能而设计的类[44]。

示意图2

示意图3

提供了执行界面中要显示的环境、摄像头、结果和图像。

首先,我们将关注为支持基本公司配置而执行的动作序列。该过程从可编程逻辑控制器(PLC)接收到动作指令时开始。随后,它向相机发送采集指令,相机在完成图像采集后会返回一个采集完成消息。采集时间取决于相机模型[45],[46],包括从PLC发出触发信号到相机向PLC发送采集完成消息之间的时间。对于离线场景,此时间不予考虑。PLC通过发送采集就绪消息,通知个人计算机(PC)已有待处理的图像可用。此时,PC可能正在处理其他情况(管理),但仍继续工作,并访问摄像头以加载图像(采集加载),在加载完成后向PLC发送采集加载消息。然后,PC对图像进行处理(处理)并准备要传递给可编程逻辑控制器(PLC)的结果(结果通信),PLC将回复一个结果响应消息。个人计算机(PC)执行所有操作所需的时间(见图5)取决于由采集模式确定的相机采集配置,同时也取决于执行模式中预处理、分析和输出模块的信息,这些信息将决定管理、处理和结果时间。尽管所有这些时间数值对时间性能都很重要,但最后一个来自PLC的消息结果响应仅用于检查系统是否正常工作,并在出现问题时向PC指示故障所在,以便相应地进行处理。

如前所述,可编程逻辑控制器通过确定在每个环境中需要执行的操作来管理事件。它必须同时控制来自不同相机的采集,并实时高效地管理结果。由于工作时间数值很短,重复序列变得并发,而当存在多个环境和多个摄像头时,这些序列进一步变为并行。为了支持所有这些序列,我们的设计依赖于四个主要类,分别用于控制上下文、环境、相机和结果。

上下文控制 是配置模块中上下文规范组件的一个类。它负责上下文管理,并且被实现为技术无关的。如图4所示,它维护了一个由环境控制类组成的数组,其中每个环境类根据环境模块的执行模式组件中的项目控制,维护一个由相机控制类组成的数组。该数组被环境控制的两个执行工作流——管理工作流和结果工作流所使用。管理工作流按照相机模块的信息依次控制所有环境中的摄像头,确定相机操作,包括:1)相机开启和相机配置(根据相机规范);2)在加载资源中进行图标输入参数搜索(根据执行模式的分析输入参数);3)相机采集(根据采集模式);以及4)创建并执行处理工作流。

操作1)和2)针对每个相机和当前活动项目仅执行一次。管理工作流会为每次采集加载创建不同的处理工作流。这些工作流根据核心中相机模块的执行模式组件进行定义并自动调整。每个处理工作流返回一个结果,该结果将通过结果工作流使用Result Control类进行处理(根据相机模块执行模式的输出)。所获得的结果将根据通信模块进行传输,如果用户请求可视化,则结果将被存储在队列数据结构中,以便在执行界面中按正确顺序显示;否则,结果将在最后被删除。

示意图4

在图6中展示了PLC与个人计算机之间消息的两个示例。第一个示例描述了从个人计算机向PLC发送的信息,用于采集加载和结果通信操作。在第一种情况下,消息发送最后加载的采集的标识符和采集状态;在第二种情况下,消息发送最后处理的采集的标识符以及准备好的结果、内部结果的状态、发生错误时的类型错误错误,以及需要通信的输出控制参数。第二个消息描述了从PLC向个人计算机发送的信息,用于采集就绪和结果响应操作。在第一种情况下,消息发送新的采集就绪的标识符以及通信输入控制参数;在第二种情况下,消息发送接收到的上一次结果通信的标识符以及结果状态代码,该代码可以是0(超时)、1(正确)、2(延迟)、3(同步不良)、4(丢失)或5(重叠)。如果代码对应超时、丢失或重叠情况,个人计算机将处理该状况。为了控制相机的正常运行,相机状态会在两条消息中发送。这样,在出现错误的情况下,管理工作流将释放相机控制以提高性能。

示意图5

最终测试

所提出的软件已使用C#实现,并在开发过程中进行了测试。除了开发阶段进行的测试外,我们还定义了一项最终测试,以检查在受控场景中整个软件的性能。这些不同的测试被分为四个主要类别,用于检查通信、不同项目之间的切换、布线和预定义协议。所有这些测试均已记录在一份检查清单中,在将所提出的软件安装到公司之前需对该检查清单进行评估。

通信测试

通过消息实现PLC和PC之间的通信,如图4和图6所示。这些消息的大小可根据上下文不同而变化。为了正确执行,接收和发送的消息必须具有相同的大小。因此,第一个测试是检查消息是否具有相同的大小。一旦通过此测试,将核对核心层通信模块中定义的技术信息,以确保通信以正确的方式进行。随后,在通信成功建立后,检查可能的干扰、线路断开等情况。

不同项目之间的变更

项目之间的变更可以通过PC选择界面或通过PLC进行。无论变更来源如何,PC和PLC必须拥有相同的信息,以正确控制上下文。变更必须与配置模块的工作模式保持一致。如前所述,PC有一个寄存器,其中存储了每个上下文环境的最后一个活跃项目,并将该信息传递给PLC。为了检查正确性能,考虑了三种情况。第一种情况发生在应用启动时(见图7)。已检查可能发生的各种情况,这些情况取决于PC和PLC的活跃项目,以确保正确性能。这些情况包括:1)PC有最后项目而PLC没有活跃项目,此时应用PC的项目;2)PC没有最后项目而PLC有活跃项目,此时应用PLC的项目;3)PC没有最后项目且PLC也没有活跃项目,此时不应用任何项目;4)PC有最后项目且PLC有相同的项目,此时无需同步;5)PC和PLC具有不同的项目,此时必须按照定义的主从策略进行项目同步。第二种情况是当从PLC/PC接收到的项目在PC/PLC中不存在时。在这种情况下,PLC/PC保持其状态,而PC/PLC不会接收任何变更。如果此情况在应用启动时发生且PC为从属,则不会加载任何项目。如果PC为主控或项目变更是通过应用程序完成的,则PC将等待PLC的变更,若无变更,则会通过界面通知。第三种情况发生在项目变更在应用执行期间发生时。此时,采集加载将停止,仅完成在项目变更之前已启动的处理工作流。应用程序必须支持运行时的变更,以高效执行。

接线测试

这些测试旨在验证应用程序对布线问题的响应。已模拟可能的情况以检查应用程序的响应。首先切断并恢复PLC电源,然后切断并恢复个人计算机电源。在电源恢复后,应用程序检查了双方的项目,并按照前述要点中描述的方式进行(不同项目之间的切换)。当个人计算机和PLC的网络电缆断开时,也出现了相同的情况。下一次模拟重点检查相机电源断开时相机重启协议的正确性能。最后一种情况考虑了由于网络断开导致的相机错误。在这种情况下,需检查是否应用超时机制,以拒绝之前可能已发出但未能获取的采集请求。尽管应用了超时机制,但应注意存在一组既未采集也未处理的图像。

预定义协议测试

最后一组测试用于验证预定义协议在控制相机、资源、程序以及执行过程中可能出现的错误时的正确性能。对于每个协议,都会审查其包含的所有步骤,以确保其性能正常。

通用工业视觉系统管理软件的设计与部署

结果

所提出的软件已在三家不同的公司安装,其中两家位于食品行业,一家位于涂料行业。此外,还进行了一次内部测试(见图8)。本节将介绍这些安装的主要细节。

示意图6

食品工业

首个安装已在食品工业的一家公司中实施,用于控制产品包装的质量,并验证其是否符合制造和监管要求。

示意图7

规格,并控制拣选过程。已考虑四种产品(披萨面团、披萨、培根和里脊)。每种产品将被呈现为

示意图8

另一种情况,披萨面团具有最详细的描述。

披萨面团

对于披萨面团的质量控制,由于披萨面团可能来自不同品牌且具有不同的包装特征,机器视觉系统(MVS)被安装在封口机内部,在切割过程之前将上层薄膜与披萨面团包装进行封合(见图9)。该系统检查披萨面团包装,以确保符合制造和法规规范。具体而言,系统会检测屏幕印刷的位置是否正确(丝印测试)、日期和批号是否清晰可见(印刷测试),以及包装的闭合和密封是否正确(密封测试)。在此情况下,存在两个环境,每个环境配备一个线阵彩色相机(CC)用于执行丝印测试和印刷测试,以及一个线阵黑白相机(MC)用于执行密封测试。披萨品牌有多少种,就有多少个场景。图10展示了这两个环境的详细情况。可以看出,上下文的主要特征是视野(FV)中出现的八个产品以及两个摄像头。为了支持不同品牌,相机采集模式需要根据每个活动项目为每台相机设置合适的曝光和增益参数,以适应品牌间膜密度、颜色和成分的变化。两台相机每次采集中均为单次捕获,但在MC上,针对获取图像的每一行,会采集两条不同曝光的线。在相机执行模式方面,对MC执行两个预处理:第一个预处理构建一幅马赛克图像由两个连续的采集指令获取的图像,由于视野无法覆盖待分析的整个空间;第二个指令将马赛克图像分割为两张具有不同曝光的图像。对于相机,无需进行预处理。分析使用Halcon库[48],,并基于作为图标输入参数输入的二维形状匹配和区域,这些参数根据要处理的品牌进行选择(见图11)。每次分析获得八个结果,这些结果需综合考虑。如果所有相机的测试均正确,则结果为真,否则为假。每次分析有八个数值,用于指示在某些测试(丝网印刷、印刷或密封)或子情况(如水平和垂直滚动)中,产品是否出现某种类型错误。在这种情况下,当处于视野内的任一产品不符合规格时,即发生拒绝。

构成丝网印刷和印刷测试以及密封测试的主要步骤如图11所示。针对每个步骤,展示了所应用的图像处理技术的细节,并提供了图像以说明其执行效果。

在此用例中,可编程逻辑控制器与个人计算机之间无需传递额外信息。处理必须在8秒内完成,这对应于封口机连接上层薄膜的可用进给时间。个人计算机执行所有操作所需的时间如图12所示。

定义的项目细节汇总于表I的第二列。

示意图9

示意图10

披萨

此案例展示在表I的第三列中。机器视觉系统安装在洁净室内的封口机之后,该封口机用于将上层薄膜与披萨包装进行密封,且位于其他控制流程之前。传送带运输披萨,系统必须检测披萨并剔除不符合规定质量要求的产品,且披萨之间的最大处理时间为500 ms 。该环境中采用线性主控制器,每个视野内仅有一个披萨。与前一案例相同,根据需要可同时运行多个场景定义为披萨品牌。处理过程不需要从可编程逻辑控制器到个人计算机,也不需要从个人计算机到可编程逻辑控制器的额外信息。项目的主要特性也在表I中列出。针对相机采集模式,参数字段需要定义曝光和增益,以适应活动项目中膜密度、颜色和成分的变化。每次采集聚集单次捕获、单个采集指令,并且每行采集三行不同曝光。获取的图像。针对相机执行模式,会进行预处理,将初始获取的图像分解为三张不同曝光的图像[见图13(a)]。分析基于作为图标输入参数输入的二维形状匹配和区域,这些参数根据品牌定义。分析使用卷积神经网络(CNN),该网络也作为图标输入参数提供。返回一个单一结果,如果封口和密封验证正确,则结果为真,否则为假。该分析由不同的测试组成,在失败情况下可返回特定类型错误。

培根

此案例在表I的第四列中展示。为了处理培根,设置了一个包含一个线性主控制器和一个线性CC的环境。该机器视觉系统已安装在一台封口机内部,用于将上层薄膜与培根包装进行结合,以确保符合制造和法规规范。第一个相机位于内部切割过程之前,第二个相机位于其后。与披萨面团案例类似,定义了三个测试:丝网印刷、印刷和密封测试。前两项测试由第一台相机执行,第三项测试由第二台相机执行。视野中有24个分离的产品[见图13(b)]。如果这24个产品中任何一个不符合规格,则机械臂会将其拾取并剔除。在此过程中,无需可编程逻辑控制器向个人计算机或个人计算机向可编程逻辑控制器提供额外信息。由于这24个产品的位 置变化仅涉及平移,因此可通过传送带的运动来确定其位置,因而机械臂无需额外信息。与之前的情况一样,生产不同品牌的产品,每种品牌需要一个独立的场景。处理必须在6秒内完成,这对应于可用的进给时间。所定义项目的细节如下所述。关于相机采集模式,与之前情况相同,参数字段需要根据活动项目设置每台相机的曝光和增益。每次采集聚集单次捕获,而在主控制器中,对采集图像的每一行均捕获两条不同曝光的线。关于相机执行模式,主控制器需要进行两步预处理:首先利用两张采集的图像构建马赛克图像,然后将其分割为两张具有不同曝光的图像。主控制器的视野未覆盖待分析的整个空间。对于摄像机而言,无需进行任何预处理。第一台相机的分析基于二维形状匹配以及作为图标输入参数输入的区域,这些区域根据品牌而变化。第二台相机的分析使用卷积神经网络(CNN),该网络也作为输入参数提供。每次分析和产品会得到二十四项结果,只有当所有相机的测试都正确时,结果才为真,否则为假。每次分析有24个数值,每个测试有三种可能的类型错误,某些其他考虑的子情况也是如此。

在图8(a)中展示了此案例的执行界面。屏幕显示了两个摄像头最近处理的采集结果,分别标记为相机1和相机2,以及与正确和被拒产品数量相关的信息,包括累计错误数。聚焦于相机图像,在顶部,图像标题指示了执行的测试(相机1的图像1为丝网印刷和印刷,相机2的图像2为密封)。图标参数也在图像中表示出来(第一个图像中用绿色和黄色表示,第二个图像中用红色表示)。在图像底部,出现了24个方块,代表已处理产品的24个结果(绿色方块表示正确结果,红色方块表示假结果)。在屏幕右侧,显示了PC和PLC通信的信息,以及与机器相关的其他信息。需要注意的是,相机2的输出控制参数也已显示:第一个参数表示灰度级,第二个参数表示输入参数的正确性,如果参数正确则以绿色表示,否则以红色表示。

猪排

该食品公司的最后一个案例定义为处理里脊。如表I第五列所述,有一个配备一台三维相机和一条传送带的环境

示意图11

传送带。猪排箱通过传送带运输,机械臂将其清空,逐一拣选猪排。在视野内是一组猪排,它们位于箱内,并会随着机械臂的拣选过程而逐渐减少。仅需一个场景。待拣选猪排的三维位置由个人计算机发送至可编程逻辑控制器。无需从可编程逻辑控制器向个人计算机返回额外信息。处理过程无时间限制,但若能在5秒内清空箱子,则视为时间可接受。所定义项目的细节如下所述。针对相机采集模式,设置字段无需配置,因为相机自身具有内部管理机制,可在每次采集指令下获取一幅二维图像和一幅三维图像。针对相机执行模式,无需预处理。分析基于区域进行,以定位猪排并提取其三维信息,从而确定最佳拣选猪排。若存在可拣选的猪排且其位置已知,则结果为真;否则为假。每个分析步骤均对应一种错误类型。

酸奶公司

第二次安装是在一家生产酸奶的食品公司完成的。这些酸奶尺寸不同、直径不同,并被放置在箱中用于分销。每箱产品数量根据酸奶类型而有所不同。在该公司中,MVS必须剔除不含正确数量酸奶的箱子。此次安装的主要细节如表I第六列所示。如上下文描述行所述,该公司有两个环境,每个环境都有一条传送带和一台CC。MVS安装在传送带上,用于控制剔除过程。在视野FV中,出现单个酸奶箱[见图13(d)]。该上下文可支持多个场景,每个场景均定义为适配特定的酸奶箱分布方式。无需从PLC向PC或从PC向PLC传递与输入或输出控制参数相关的额外信息。处理必须在3秒内完成,这对应于箱子之间的最小可用时间。此上下文描述已注册于图2的核心层和配置模块中。为了确定特定场景应如何进行,必须定义一个项目。其中一个项目的主要细节在表I的项目描述行中给出。该项目定义了需存储在相机模块的采集模式和执行模式以及环境模块的执行模式中的信息。针对相机采集模式,参数字段需要设定曝光值,以适应酸奶的颜色和丝印特征。每次采集中仅进行单次捕获,并且仅有一个采集指令。针对相机执行模式,无需预处理。关于分析部分,其基于二维形状匹配(2‐D SMs),该匹配方式根据酸奶特征变化,并依据活动项目加载。如果酸奶数量正确,则结果为真,否则为假。可能存在两种类型错误:通用错误和匹配过程错误。

涂料工厂

第三次安装是在一家涂料工厂完成的。涂料被分装在不同高度并带有把手的罐子中。如表I第七列所述,该公司有一个环境,配备一条传送带和一个主控制器MC。MVS安装在传送带上,用于检测涂料罐的位置,以便机械臂抓取。在视野FV中,出现单个涂料罐[见图13(e)]。由于涂料罐仅在高度上有所不同,而高度无法通过二维相机检测,因此该上下文仅有一个场景。运行时,PC将涂料罐的二维位置发送给PLC,再由PLC传递给机械臂以执行操作。无需从PLC向PC提供额外信息。处理必须在2秒内完成,这对应于涂料罐之间的最小可用时间。关于项目描述,相机采集参数已预先设置,无需更改。每次采集中仅进行单次捕获,并且仅有一个采集指令。针对相机执行模式,无需预处理。分析基于涂料罐区域定位和位置识别。不需要输入图标参数。如果已知罐子位置,则结果为真,否则为假。也存在一种可能的类型错误。

内部产品

最后一次安装是在开发所提出软件的公司进行的,该公司专注于工厂机械化。机器视觉系统(MVS)评估圆柱体的位置,以识别最高的一个,从而在已知其三维位置后,便于机械臂进行拣选。如表I最后一列所述,该环境配置包含一个三维相机。视野(FV)覆盖若干圆柱体,这些圆柱体数量在拣选过程中逐渐减少。存在两种类型的圆柱体(A型和B型),它们可能随时出现且流量不连续。为避免在考虑两种场景时频繁更改项目,仅定义单一场景,并通过可编程逻辑控制器(PLC)控制圆柱体类型(A或B)的切换,PLC通过适当的输入控制参数通知个人计算机(PC)。PC将把待拣选圆柱体的三维位置信息发送给PLC。处理过程无时间限制。关于项目细节,每次收到采集指令后,在更改相机参数后会进行两次采集(一次二维采集和一次三维采集)[见图13(f)]。其中一组参数用于获取二维图像采集,另一组用于三维图像采集。就相机执行模式而言,无需预处理。分析基于三维形状模型(3‐D SMs),用于定位圆柱体并提取其三维信息,以确定最适合拣选的目标。若存在一个待拣选的圆柱体且其位置已知,则结果为真;否则为假。某些类型错误与分析步骤特定相关。

限制

所评估的用例有助于展示所提出系统的良好性能。不幸的是,没有类似的系统可用于比较以确定其有效性。在我们的案例中,该系统的目标是取代手动流程,同时不增加处理时间。这一目标已经实现,在某些情况下时间甚至有所减少。例如,在食品工业披萨用例中,手动操作的性能达到0.5 m/s,而自动方法达到1.0 m/s。此外,关于评估产品数量,与手动流程不同,所提出的方法确保所有产品始终被评估,且不存在人为偏差,因为整个过程均为自动执行。关注与所提出软件交互所需的时间,如图2所示,支持两种用户类型:负责上下文配置的专家用户和在项目层面进行交互的基础用户。对于前者,需要1小时的课程来学习如何创建软件所需的输入资源,以满足用例的要求;对于后者,现场十五分钟的培训即可掌握该软件。尽管学习曲线可能被视为一种限制,但所需时间被认为是可接受的。

结论与未来工作

计算机视觉系统可以通过减少人工干预来实现更高效和有效的程序,从而在多个层面上使工业受益。然而,在实际上下文中集成这些系统需要合适的软件,以控制不同的过程以及根据已处理产品的特性和要应用的程序可能出现的不同配置。

本文提出了一种用于管理公司计算机视觉系统的软件。在设计该软件时,使用以下术语描述了一家真实公司的主要特征:上下文(由计算机视觉控制的公司全部机械化空间)、环境(上下文的一部分,具有自身的机械、计算机视觉和控制组件,能够处理特定类型的产品)、场景(处理具有自身特性和程序的特定类型产品的环境)以及项目(确定环境组件和过程如何运行以支持某一场景的规格)。这些术语被用来定义所需的软件需求,特别关注组件之间的通信与交互、相机配置以及项目的可变性。为了尽可能适应多家公司,提出了一种三层架构软件。第一层(核心层)是软件的核心,设计用于控制不同的环境、视觉系统以及定义该系统的所有组件,如摄像头及组件间的通信等。第二层(配置层)旨在根据随上下文变化的用户需求来确定核心层的运行方式。配置通过用户界面输入,构成了软件的第三层。

所有组件之间的同步以及时限要求已得到分析,并实现了控制上下文、环境、相机和结果的四个类,这些类已被集成到软件中。因此,获得了一款可配置且可扩展的软件,通过简单修改一组输入参数即可适应不同场景。该软件已在受控场景中进行了测试,以检查通信、不同项目间的切换、布线以及预定义协议。在通过所有测试后,该软件已在四家实际公司中安装,这些公司具有不同的场景和需求。针对每家公司,均描述了软件安装的主要细节,以展示所提出软件的适应性和易用性。这些安装也证明了其良好的性能。

所提出的软件的当前版本涵盖了公司的主要需求。然而,某些模块需要进一步开发以适应更复杂的情况。该软件的模块化设计允许以完全透明的方式集成这些新功能。所提出的软件的细节可作为信息系统开发者的指南,因为已经描述了主要组件和需要考虑的主要元素。

【源码免费下载链接】:https://renmaiwang.cn/s/nhrcw 深度优先搜索(DFS,Depth-First Search)是一种用于遍历或搜索树或图的算法,它选择一个节点并尽可能深地探索其分支。在迷宫生成中,DFS被用来创建复杂的路径结构。以下是对给定内容的详细解释:1. **Python深度优先算法生成迷宫的原理**: 迷宫生成的基本思想是随机地在空白区域添加墙壁,形成一条可以从起点到终点的路径。DFS在这里的作用是从起始点开始,随机选择一个方向进行移动,并将该路径标记为已访问。当遇到障碍(已存在的墙壁)或者到达终点时,算法回溯到上一步,选择其他未尝试过的路径。2. **代码解析**: - 定义矩阵`dfs`来记录迷宫中每个单元格是否已被访问。 - 定义矩阵`maze`来表示最终生成的迷宫,其中`#`代表墙壁,空格代表可通行路径。 - `operation`字典存储了四个可能的方向(上、下、左、右)对应的坐标偏移量。 - `direction`列表包含所有可能的方向,用于随机选择移动方向。 - `stack`用于存储深度优先搜索过程中的路径。3. **函数说明**: - `show(graph)`:打印迷宫矩阵,便于观察迷宫结构。 - `showRouter(stack)`:打印DFS过程中访问的路径,展示从起点到终点的路径。 - `generateMaze(start)`:核心函数,使用DFS生成迷宫。首先将起始点标记为已访问,然后随机排序方向,依次尝试这些方向,如果新位置未被访问且在有效范围内,则打通墙壁并递归调用自身。4. **迷宫生成流程**: - 创建一个全墙的初始迷宫矩阵,奇数行和奇数列的位置代表实际的墙壁,偶数位置代表路径。 - 起点设为`(0, 0)`,调用`generateMaze((0,0))`开始生成迷宫。 - 在递归过程中,每次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值