张赛昆,李德鑫,马冬宝,崔健,汤晓华
(1.北京电子科技职业学院,北京 102600;2.武汉理工大学,湖北 武汉 430070;3.深圳市物新智能科技有限公司,广东 深圳 518107)
近年来,随着计算机技术和虚拟仿真技术的不断发展,机器视觉技术作为计算机视觉领域的一个重要分支,越来越受到关注。机器视觉技术可以对图像和视频进行分析和处理,从图像中获取有用信息。随着工业自动化程度的提高和智能制造的发展,机器视觉技术在工业领域的应用越来越广泛。同时,机器视觉技术也在教育领域得到了广泛应用,通过实验教学和虚拟仿真技术,可以有效提高学生的实践能力和创新能力。然而,传统的机器视觉课程教学存在一些问题,如缺乏实践操作和难以理解等,因此需要一种能够提高教学效果的新型教学平台。机器视觉虚拟仿真教学平台可以有效地解决这些问题,将虚拟仿真技术与机器视觉技术相结合,使学生能够在虚拟环境中进行实践操作,更好地理解和掌握机器视觉技术。因此,开发一种机器视觉教学平台是十分有意义的研究课题。
机器视觉教学平台的研究目的是为了提高机器视觉算法的学习效率,使学习者可以更加快速地了解和掌握各种机器视觉算法,同时降低机器视觉算法学习的门槛。机器视觉教学平台可以将机器视觉算法的实现过程可视化,使学习者能够通过交互式界面轻松地学习和理解各种机器视觉算法的原理和实现方法。
机器视觉教学平台的意义在于,它可以帮助学习者快速学习和掌握机器视觉算法,从而提高他们在机器视觉领域的研究和开发能力。此外,机器视觉教学平台的开发还可以促进机器视觉技术的普及和推广,从而推动机器视觉技术在各个领域的广泛应用和发展。
本文提出的机器视觉虚拟仿真教学平台主要由控制端和虚拟仿真端2 部分组成。其中,控制端采用WPF 和Prism 框架编写,主要包括图像处理算子,算子序列配置,图像数据处理等模块,可以通过采集虚拟仿真端的图像并使用机器视觉算子对图像进行机器视觉处理,将处理结果展示给学生,以达到教学效果。虚拟仿真端则采用Unity 搭建,包括虚拟相机、虚拟物件、虚拟光源等,可以实现三维场景的模拟并返回渲染的图像数据给控制端。
教学平台的整体架构图如图1 所示。
图1 平台整体架构
图2 算子序列模块
图3 数据绑定显示
图4 图像显示模块
图5 Unity 物体仿真
控制端使用WPF 以及Prism 框架实现,主要包括算子序列模块,数据沟通模块、图像显示模块等。算子序列模块允许用户选择算子并将其组合成一个算子序列,以实现对虚拟仿真端图像的序列化机器视觉处理;数据沟通模块是算子序列模块的底层支撑,实现了算子之间的数据共享和数据流转;图像显示模块是控制端的重要组成部分之一,它主要负责对经过机器视觉处理后的图像进行展示和可视化。
2.2.1WPF 和Prism 框架
WPF 是一种强大的图形化用户界面开发工具,它是由微软推出的基于.NET Framework 的框架。WPF 提供了各种强大的工具和控件,使得开发者可以快速、高效地构建出具有良好可扩展性和可重用性的应用程序。
Prism 是一种基于WPF 的开发框架,它提供了一种优雅的方式来构建具有良好结构和可测试性的应用程序。Prism 基于MVVM 模式,使用依赖注入和事件聚合等技术,使得应用程序的不同模块之间可以松耦合、高内聚地协作,从而实现更好的可维护性和可扩展性。
本文采用WPF 和Prism 框架,实现了控制端的开发,具有良好的用户界面和代码结构,便于维护和扩展。
2.2.2算子序列模块
在虚拟仿真教学平台的控制端中,算子序列模块是十分重要的模块。该模块的主要功能是允许用户选择算子并将其组合成算子序列,以实现对图像的自定义机器视觉处理。算子序列模块的实现基于WPF 框架中的数据绑定机制。通过使用数据绑定,实现了算子序列的实时更新。
算子序列模块还提供了运行功能。当用户编辑完算子序列后,可以一键运行或者停止运行整个算子序列。在运行时,算子序列模块会按照用户定义的算子顺序依次执行每一个算子,并将上一个算子的输出作为下一个算子的输入。通过这种方式,用户可以更加直观地理解算子之间的依赖关系和数据流动。
通过结合图像显示模块,在序列运行时,用户可以实时观察到虚拟仿真端图像的变化,进而更好地完成教学任务。
2.2.3数据沟通模块
为了实现算子之间的数据共享和数据流转,我们在控制端中实现了数据沟通模块。数据沟通模块引入了一个全局的数据仓库,用于存储算子序列中的数据,并且为各个算子之间提供数据传递的通道。当一个算子处理完数据之后,可以将处理结果保存到数据仓库中,而其他算子可以从数据仓库中读取数据进行后续的处理,从而实现数据的共享和流转。
为了更好地管理数据仓库中的数据,我们还为部分数据类引入了一些数据管理和访问的方法。通过这些技术的支持,我们可以方便地将数据仓库中部分类型的数据绑定到部分算子控件中进行展示,或者在算子之间进行数据的传递和共享。同时,数据沟通模块还提供了一些数据转换和处理的功能,以保证数据在不同的算子之间传递时的正确性和有效性。
通过引入数据沟通模块,我们实现了控制端中算子之间的高效数据共享和传递,为虚拟仿真教学平台的机器视觉处理流程提供了良好的底层支撑。
2.2.4图像显示模块
图像显示模块是控制端中非常重要的一个模块,它负责将经过机器视觉处理后的图像进行展示和可视化。在教学平台中,图像显示模块可以将机器视觉算法处理后得到的图像数据进行展示,并且支持用户进行实时的交互。
图像显示模块通过数据绑定和数据上下文等技术,将经过处理的图像数据和控件进行绑定,实现图像的实时显示和更新。为了方便用户使用,图像显示模块还引入了一些交互式控件,用户可以通过这些控件进行图像的放大、缩小等操作,此外,当用户在图像上滑动鼠标时,图像显示模块会根据鼠标位置计算出对应像素的RGB 值,并在界面上实时显示出来,方便用户对图像进行更精细的观察和分析。
综上,图像显示模块为虚拟仿真教学平台中的机器视觉算法处理提供了良好的图像展示和可视化支持。
Unity 是一种跨平台的游戏引擎,也被广泛应用于虚拟仿真领域。在本研究中,我们使用Unity 搭建虚拟仿真端,为控制端提供虚拟场景和图像。
2.3.1使用Unity 搭建虚拟物件
我们使用Unity 中的模型编辑器来创建虚拟物件,包括教学实验所需的各种仪器、器材和实验场景。通过设置不同的材质、纹理、大小和形状等参数,我们可以创建逼真的虚拟物件,使学生可以在虚拟环境下进行实践操作和学习。
此外,我们还将搭建虚拟桌台,用于展示虚拟物件。
2.3.2使用Unity 搭建虚拟光源
为了增加虚拟环境的真实感和逼真度,我们在Unity中添加虚拟光源。我们可以根据实验需求,设置不同的光源类型、颜色、亮度和阴影等参数,使虚拟物件在不同的光照下呈现出不同的效果。
2.3.3生成虚拟场景图像
我们使用Unity 中的渲染器来生成虚拟场景图像。通过将虚拟场景中的物件、光源和相机等元素组合在一起,并设置不同的摄像机参数,我们可以生成逼真的虚拟场景图像,并将其传输给控制端进行处理和分析。
通过使用Unity 搭建虚拟仿真端,我们可以为控制端提供生动、逼真的虚拟场景和图像,从而提高虚拟仿真教学的交互性和实时性。
为了实现控制端和虚拟仿真端之间的数据传输,本文采用Socket 进行通讯。Socket 是一种网络编程接口,可以实现2 个应用程序之间的数据传输。控制端与虚拟仿真端先建立本地TCP 连接,确认连接状态后,控制端发送采图指令,虚拟仿真端返回仿真的图片。采用Socket通讯可以实现快速、稳定的数据传输,是整个平台实现的关键技术。
控制端发送采图指令,具体如下:控制端与虚拟端通过规范的指令进行数据的传输和沟通,指令的定义是通过指令类来完成的。在控制端中,我们使用JSON 库将指令类对象转换为string 字符串,并将其通过Socket连接发送到虚拟端。虚拟端接收到string 字符串后,通过JSON 库将其转换为JSON 类,进而进行指令要求的操作。通过这种方式,我们实现了控制端对虚拟端的指令控制,并能够准确地传输和接收指令信息,保证了控制的准确性和可靠性。
控制端的视觉处理算子和工具算子共同组成了一个完整的视觉算法库,其中视觉处理算子主要包括形态学、高斯模糊、中值滤波、阈值化、通道分离、颜色提取等常用的图像处理算子,这些算子的实现主要基于OpenCVSharp 库。此外,控制端还实现了一些工具算子,包括找线、找圆、形状匹配、线夹角、线间距、XY 标定、N 点标定等算子,这些算子可以帮助用户更方便地进行视觉算法的调试和优化。
算子的设计和实现主要分为前端控制界面和后台算法处理部分。用户可以在控制界面中根据实际需求对算子参数进行调整,例如,对形态学算子的内核大小、高斯模糊算子的卷积核大小、阈值化算子的阈值等进行设置,同时,用户还可以通过设定ROI 来实现对图像中目标的识别和测量等功能。而算子后台的算法处理部分则会根据用户设定的参数对图像进行处理,并返回处理结果,以便用户进行下一步的操作。
控制端算子的设计和实现为教学平台的开发提供了强有力的支持。
本平台的图像处理算子在教学中有着广泛的应用,可以帮助教师在课堂上更好地辅助学生理解教学内容。以下是算子的部分应用举例。
(1)形态学:形态学是对图像形状进行处理的方法,常用于图像分割、形状匹配、轮廓提取等方面。在机器视觉教学中,形态学算子可用于物体检测和识别,例如,可以用开运算去除噪声,闭运算填充物体内部的空洞等。
(2)高斯模糊:高斯模糊是一种线性平滑滤波器,可以减少图像噪声和细节,平滑图像。在机器视觉教学中,高斯模糊算子可以用于去除噪声,使学生更好地观察图像特征。
(3)中值滤波:中值滤波是一种非线性滤波器,通过取邻域像素的中值来消除噪声。在机器视觉教学中,中值滤波算子可以用于去除椒盐噪声等,使学生更好地理解图像滤波的作用。
本平台的图像处理算子在机器视觉教学中有着广泛的应用,可以帮助学生更好地理解和掌握机器视觉的基本概念和算法。
在本章节,我们将在物体测量精度验证和用户友好度调查2 个方面,来评估机器视觉教学平台的性能表现和使用体验。
我们使用机器视觉教学平台来测量不同大小和形状的物体,以验证其测量精度。具体步骤如下:
(1)使用“相机”算子采图,获得标定板图像。
(2)在平台上选择“找圆”算子,在标定板上获得圆的直径长度。
(3)通过“XY 标定”算子获得像素距离与实际距离之间的映射。
(4)使用“相机算子”,并应用先前生成的XY 标定数据,采图,获得待测量图像。
对于不同的测量目标,我们采用了不同的算子进行距离测量。如下:
(1)对于直线长度值,我们在平台上选择“边缘点”算子,在目标图像上找到待测量的点。使用“点间距算子”,获得两点之间的实际距离并记录测量结果。
(2)对于圆形目标,我们采用了“找圆”算子和“形状匹配”算子,获得测量结果。
我们对不同大小和形状的物体进行了多次测量,并计算了测量结果的平均值。接下来,我们将测量结果与真实结果进行了比较,测量结果如表1 所示。
表1 测量结果
结果显示,本平台的测量平均误差为0.1cm,较为接近真实值。
为了验证软件的用户友好度,我们进行了一项用户调查。在调查中,我们邀请了30 名机器视觉教学领域的学生使用我们的软件,并填写了一份问卷调查。
问卷调查主要包括以下2 个方面:
(1)软件界面是否简洁易懂,操作是否便捷。
(2)使用软件进行机器视觉算法处理的效果和速度是否满意。
针对第一方面的问题,90%以上的受访者认为软件界面简洁易懂,操作便捷。学生表示,在软件使用过程中,能够很快地找到需要使用的功能,并且软件的界面设计非常直观,方便学习和使用。
针对第二方面的问题,85%以上的受访者对软件的处理效果和速度表示满意。学生认为软件中的机器视觉算法处理能够满足他们的需求。
调查结果表明:本软件在用户友好度方面表现良好,能够满足学生学习的需求,并且学生对软件的使用体验表示满意。
机器视觉虚拟仿真教学平台在计算机视觉领域的教学应用中具有如下的优势:
(1)安全性高:由于使用虚拟仿真技术,学生可以在安全的环境下进行实验和演示,避免了物理实验可能出现的安全问题。
(2)可重复性好:在实验中,由于使用的是虚拟仿真技术,实验过程可以随时重复,可以让学生更好地掌握实验流程和技巧。
(3)灵活性强:虚拟仿真教学平台可以随时更新和升级,让学生随时了解最新的计算机视觉技术,保持教学内容的时效性。
(4)互动性好:机器视觉虚拟仿真教学平台可以提供一个互动性很强的教学环境,学生可以在控制端和虚拟仿真端之间进行多次交互,从而更好地掌握计算机视觉技术。
然而,本平台也存在一些局限性:
(1)仿真结果可能不准确:由于虚拟仿真的结果是通过计算机模拟实现的,实验结果可能会受到虚拟仿真环境中的因素影响,可能与实际结果存在一定的误差。
(2)学生需要一定的计算机基础:由于本平台涉及计算机视觉技术和虚拟仿真技术,学生需要具备一定的计算机基础才能更好地理解和掌握。
(3)需要高性能计算机支持:虚拟仿真需要消耗大量的计算资源,所以需要一台高性能计算机才能满足平台的运行需求。
综上所述,虚拟仿真教学平台在教学中具有明显的优势,但同时也存在一些局限性。为了更好地发挥虚拟仿真教学平台的作用,需要在平台建设和教学过程中不断完善和改进。
虚拟仿真教学平台在教学中具有广阔的应用前景。未来,我们可以通过不断完善和改进平台,提高虚拟仿真技术的准确性和稳定性,增强学生对计算机视觉技术的理解和掌握。我们也可以通过增加教学内容和实验项目,使得学生可以更全面地了解计算机视觉的应用场景和发展趋势。同时,我们还可以通过虚拟仿真教学平台的在线化和智能化,提高教学效果和学生参与度,为计算机视觉的发展和应用培养更多的人才。