正运动技术
正运动技术

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

【机器视觉运动控制一体机小课堂】三分钟实现图像阈值分割

1.png

常见的几种图像阈值分割方法

1.全局阈值: 机器视觉需要处理的图像中包括目标特征、目标特征以外的背景和噪声。全局阈值就是在设定的阈值范围内将灰度图像处理成白色像素,灰度图的灰度范围为0~255,此阈值处理方法适用于目标特征和背景对比度大的图像。

2.自动阈值: 使用OTSU算法计算最佳阈值并对图像进行二值化处理。OTSU算法将二值后的白色像素和黑色像素看成是两类,算法的思想则是寻找最佳的阈值使得二值后黑白两类像素的类间方差最大化。

3.局部阈值: 局部阈值可分为局部自动阈值和局部阈值。

A.局部阈值是根据ROI区域进行阈值分割。

B.局部自动阈值则是根据ROI区域内的像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。亮度较高的局部自动阈值的区域二值化阈值通常会较大,而亮度较低的局部自动阈值的区域二值化阈值则会相应地变小。不同亮度、对比度、纹理的局部图像区域将会拥有相对应的局部二值化阈值。

2.png


背景

在实际的机器视觉项目应用当中图像质量效果是视觉处理方案能否准确和稳定运行的关键因素。

图像质量的最佳效果是需要将特征目标突出显示,同时弱化与特征目标无关的背景和干扰噪点。图像阈值分割处理是最简单,也是最常用的图像预处理方法,适用于处理目标特征和背景像素灰度值差异明显的图像。

在上期课程中,我们讲述了如何使用VPLC系列视觉运控一体机使用相机进行相关采集操作的课程。本期课程正运动小助手给大家分享一下VPLC系列视觉运控一体机进行图像阈值分割的课程。




教学视频




01
VPLC控制器


(一)VPLC516E构架图

3.png

(二)课前准备
1.电脑一台,安装ZDevelop3.10以上版本软件
2.VPLC516E一台
3.24V直流电源一个
4.网线一根
5.WinSCP软件
6.电线若干




02
课程主要使用的指令


4.png



03
软件实现


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

5.png

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

6.png

3.编写图像比例缩放和平移的执行函数。

图像分割执行程序

GLOBAL sub main()

   '先采集一张图

   ZV_IMGCOPY(GrabImg,testImg)    '复制图像 

   '全局图像二值化分割

   if img_flag=0 THEN

      if auto_switch=0 THEN '手动阈值  

         ZV_THRESH(testImg,globalImg,ga_binaryzation(0),ga_binaryzation(1))    '阈值化生成二值图像

         ZV_LATCH(globalImg,1)    

      elseif auto_switch=1 THEN  '自动阈值

         ZV_AUTOTHRESH(testImg,globalImg,0)    '自动阈值化生成二值图像

         ZV_LATCH(globalImg,1)

         DMCPY  ga_binaryzation(0),table(0),2      

      endif

   '局部图像二值化分割

   elseif img_flag=1 THEN    

      ZV_IMGCOPY(testImg,localImg)    '复制图像

      ZV_REGENRECT(rect_region,d_roi_rect(0),d_roi_rect(1),d_roi_rect(2)-d_roi_rect(0),d_roi_rect(3)-d_roi_rect(1)) '生成矩形区域    

      if auto_switch=0 THEN '手动阈值       

         ZV_RETHRESH(localImg,rect_region,binaryzation_re,ga_binaryzation(0),ga_binaryzation(1))    '图像二值化生成区域 

         ZV_REGION(localImg,rect_region,0,rgb(0,0,0))    '在img图像中绘制指定区域黑色

         ZV_REGION(localImg,binaryzation_re,0,rgb(255,255,255))    '在img图像中绘制指定区域成白色

         ZV_LATCH(localImg,0)  

      elseif auto_switch=1 THEN '自动阈值     

         ZV_REAUTOTHRESH(localImg,rect_region,binaryzation_re,0)    '图像自动二值化生成区域  

         ZV_REGION(localImg,rect_region,0,rgb(0,0,0))    '在img图像中绘制指定区域黑色

         ZV_REGION(localImg,binaryzation_re,0,rgb(255,255,255))    '在img图像中绘制指定区域成白色

         ZV_LATCH(localImg,0)

         DMCPY  ga_binaryzation(0),table(0),2       

      endif    


4.效果演示。


34.jpg

本次,正运动技术【机器视觉运动控制一体机小课堂】三分钟实现图像阈值分割,就分享到这里。

更多精彩内容请关注“ 正运动小助手 ”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师: 400-089-8936


本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。


邮箱留言

Copyright © 2013 正运动技术有限公司 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by www.zmotion.com.cn 运动控制器-运动控制卡

在线咨询