机器视觉运动控制一体机实现图像阈值分割

网友投稿 152 2024-02-12


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

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

机器视觉运动控制一体机实现图像阈值分割

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

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

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

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

背景

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

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

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

01VPLC控制器

(一)VPLC516E构架图

(二)课前准备

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

2.VPLC516E一台

3.24V直流电源一个

4.网线一根

5.WinSCP软件

6.电线若干

02课程主要使用的指令

03软件实现

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

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

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    

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

审核编辑:汤梓红

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:机器视觉中的运动目标检测图像处理及算法
下一篇:机器视觉中的镜头
相关文章

 发表评论

暂时没有评论,来抢沙发吧~