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

今日头条

1097人已加入

描述

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

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    

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

审核编辑:汤梓红

 


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分