龙空技术网

Halcon机器视觉学习笔记(七)图像分割

小锋一路向前冲冲冲 214

前言:

目前咱们对“分水岭算法自动”可能比较重视,兄弟们都想要分析一些“分水岭算法自动”的相关内容。那么小编同时在网摘上收集了一些对于“分水岭算法自动””的相关资讯,希望大家能喜欢,你们快快来了解一下吧!

halcon中图像分割,主要是对单通道图像进行处理,主要的方法有几种:1、阈值处理;2、区域生长法;3、分水岭算法

一、阈值处理

阈值处理是最简单也是最常用的的区域选择方法,特别适用于目标和背景的灰度有明显的区别情况。阈值处理主要也有几种算子进行处理,全局阈值、基于直方图的自动阈值分割方法、自动全局阈值分割方法等

1、全局阈值处理:在HDevelop上可以使用灰度直方图很方便的进行处理

在读取图像之后打开灰度直方图

打开灰度直方图,在范围筛选及代码生成处选择阈值,然后再在上面的图形灰度直方图上滑动绿色的阈值线,可以在左侧看到图形分割的处理结果。阈值等于227值的效果

勾选阈值之后可以调整阈值,得到不同的效果

阈值等于87的效果,可以把后面的背景处理只剩头条两个区域。

点击插入代码,可以直接生成阈值处理的代码

这就是在halcon里利用灰度直方图很方便就进行阈值分割的方法。

2、基于直方图的自动阈值分割方法

全局阈值处理是我们手动输入的阈值的,除了我们手动输入阈值以外,我们还可以使用程序自动分割阈值的算子,auto_threshold 这个算子是可以自动获取最合适的阈值,其原理是,以灰度直方图中出现的谷底为分割点,对灰度直方图的波峰进行分割。因此有多少个波峰就会分割出多少个区域。

3、自动全局阈值分割方法

除了auto_threshold 这个算子,还常用binary_threshold 算子对直方图波峰图像进行自动阈值分割。binary_threshold同样利用了直方图,但不同的是,该算子是根据直方图中像素分布提供可选的分割方法,如使用最大类间方差法或平滑直方图阀,都可以自动计算出一个灰度级别用于分割区域。

二、区域生长法

regiongrowing算子,它能够将灰度值相近的相邻像素合并成为同一区域。

regiongrowing_mean算子。

三、分水岭算法

分水岭算法是一种典型基于边缘的图像分割算法,通过寻找区域之间的分割线,对图像进行分割。

watersheds()

watersheds_threshlod()

两个算子是分水岭算法的两个算子。

labview调用阈值处理的方法:

第一种最简单的,直接调用hdev引擎运行halcon程序

运行效果

这个和显示图像不一样的是,这次选择的参数的region

第二种就是根据.NET找到对应的方法调用对应的算子

这是两个关键的算子,主要就是查找的方法,方法我在前面的文章已经说过,这里就不再赘述,有兴趣的可以看我之前的文章《labview调用halcon的两种方法》。

这是整个运行效果和labview程序。

标签: #分水岭算法自动 #基于分水岭算法的图像分割 #基于分水岭的图像分割程序设计 #区域生长分割算法