使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,第1张

 

背景

膨胀与腐蚀是形态学的基础,在实际的视觉检测项目过程中,常常需要组合运用膨胀与腐蚀对图像进行预处理。而开运算和闭运算用途就是组合使用这两种方法。同时开运算和闭运算不仅能在保留图像目标主体的同时,还能处理图像中出现的各种杂点、小间隙、存在毛糙的边缘等。

所以我们在视觉检测项目过程中相机采集到的图像遇到上述问题时可以合理运用开运算与闭运算,可以简化图像预处理的 *** 作步骤,去除图像上的非目标主体外的干扰,有效的优化目标主体核心区域,使之提取出图像上理想的区域范围。运行效果如下图所示:

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,2.png,第2张

在上期课程中,我们讲述了如何使用VPLC系列机器视觉运动控制一体机使用相机进行图像膨胀腐蚀的课程。本期课程正运动小助手给大家分享一下VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算的课程。

01VPLC控制

(一)VPLC516E构架图

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,3.png,第3张

 

(二)课前准备

1.电脑一台,安装ZDevelop3.10以上版本软件

2.VPLC516E一台

3.24V直流电源一个

4.网线一根

5.WinSCP软件

6.电线若干

 

 

02课程主要使用的指令

 

 

1.ZV_OPENING  -- 开运算

 

ZV_OPENING(src,dst,kw[,kh = 0])

参数说明:

 

src:ZVOBJECT类型,源图像
 

dst:ZVOBJECT类型,开运算后的图像

kw:结构元素宽度,大于0

kh:结构元素高度,大于等于0,若为 0 则 kh = kw

 

2.ZV_CLOSING  -- 闭运算

 

ZV_CLOSING(src,dst,kw[,kh = 0])

参数:

src:ZVOBJECT类型,源图像
 

dst:ZVOBJECT类型,闭运算后的图像

kw:结构元素宽度,大于0

kh:结构元素高度,大于等于0,若为 0 则 kh = kw

3.原理

图像开运算与闭运算与膨胀和腐蚀运算有关,由膨胀和腐蚀两个运算的复合与集合 *** 作(并、交、补等)组合成的运算构成

A.开运算

它是先对图像腐蚀后膨胀。通过腐蚀能够去除小范围内非目标区域,同时也能把阈值范围相近的元素分隔开,最后通过膨胀填补腐蚀过大造成的小间隙。

因此,它可以去除一些孤立、细小的点,平滑毛躁的样品边缘,同时目标区域内的面积也不会有明显的变化,类似于给样品“去毛刺”的处理效果。 所下图所示:

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,4.png,第4张

通过以上对比图可得知,原图经过开运算处理后,可见目标主体边缘的干扰被消除,图像上的目标主体更突出。

B.闭运算

它是先对图像膨胀后腐蚀。它处理图像上目标区域内部的空洞、外部孤立的点、目标区域的外观和面积不会有所明显的变化,简单来说它类似于“填补空隙”。它与之前课程中讲述到单独进行膨胀运算不同的是,它在填补缝隙的同时不会使目标边缘轮廓加粗。下图所示:

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,5.png,第5张

通过以上对比图可得知,原图经过闭运算处理后,可见目标主体边缘与四周引脚没有连接和边缘缺失的部分得到了填充,使图像上的目标主体形状变得更完整。

C.总结

综上所述可知,开运算更适合去除图像上的杂点和噪声等非目标主体的特征元素。而闭运算则是相反,它是用于填补区域中小空隙等目标主体缺失的部分。所以开运算和闭运算与进行膨胀腐蚀相比,它们是不会改变目标主体特征的核心形态。

03 软件实现

1.打开ZDevelop软件:新建名称为“开闭运算.zpj”项目→新建“HMI”文件→新建“main.bas”文件(用于编写界面响应函数、并开启HMI自动运行任务)→新建“图像采集.bas”文件(用于实现相机采集功能)→新建“初始化.bas”文件(用于初始化测量参数)→文件添加到项目。

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,6.png,第6张

2.设计HMI主界面和关联它的控件变量。
 

 

使用VPLC系列机器视觉运动控制一体机进行图像开运算和闭运算,7.png,第7张

 

 

3.编写实现对图像进行开运算和闭运算的执行函数。


 

          GLOBAL sub main()


 

                 ZV_IMGCOPY(GrabImg,tesTImg)    '复制图像  

                 if gv_open_switch=1 THEN

                    ZV_OPENING(tesTImg,tesTImg,ga_open(0),ga_open(1))      '矩形结构的图像开运算

                 endif

                 if gv_clos_switch=1 THEN

                    ZV_CLOSING(tesTImg,testImg,ga_closed(0),ga_closed(1))    '矩形结构的图像闭运算

                 endif

                 ZV_LATCH(testImg,1)

   

         ENDSUB

 

 

本次,正运动技术【机器视觉运动控制一体机小课堂】三分钟实现开运算和闭运算,就分享到这里。
 

 

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

原文地址: https://www.outofmemory.cn/dianzi/2426690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-02
下一篇 2022-08-02

发表评论

登录后才能评论

评论列表(0条)

保存