分水岭算法

分水岭算法是根据分水岭的构成来考虑图像的分割, 它是—种基于拓扑理论的数学形态学的分割方法。 首先, 把一幅图像看作起伏的地形, 图像的每像素灰度值作为这个地形的高度, 极小值是盆地, 极大值为山脊。如下图为分水岭模型。

向这个地形进行灌水, 水会从高处往低处流, 先在低洼处汇集.水慢慢填满低洼处。 每个盆地进行交融时, 在交融处汇集成坝。 所有的坝即分水岭, 也是图像的分割线。
在HALCON中使用watersheds函数来实现分水岭分割。
watersheds(Image : Basins, Watersheds : : )
第一个参数Image是输入的图像;
第二个参数Basins是坝的边界区域;
第三个参数Watersheds是分水岭区域。
也可以使用watersheds_threshold函数来实现。
watersheds_threshold(Image : Basins : Threshold : )
第一个参数Image是输入的图像;
第二个参数Basins是坝的区域;
第三个参数Threshold是合并阈值
watersheds_threshold函数多了一个阈值Threshold,W为分割两个分水岭的间隔的最小灰度值。B1为一个分水岭的最小灰度值,B2为与B1相邻的另一个分水岭的最小灰度值,当满足:

则B1和B2两区域合并,避免边界不锐利导致的过多区域分割。

实例分析

分水岭算法实例应用,可以用于平面内多种形状不规则产品的分离、计数、定位等。
1)图像的载入和初始化设置
dev_close_window()
read_image (Image, ‘E:/图像处理/halcon学习/练习/images/硬币.jpg’)
get_image_size (Image, Width, Height)
dev_open_window (10, 10, Width2, Height2, ‘black’, WindowHandle)
dev_display (Image)
dev_set_draw (‘margin’)
dev_set_line_width (1)

2)图像预处理:首先要将RGB图像转化为灰度图像,如果图像噪声明显,需要进行平滑降噪。该实例图像背景与前景对比还是比较明显的,因此图像转化后没有滤波,直接进入阈值分割。
rgb1_to_gray (Image, GrayImage)

3)图像处理阶段:
接下来就是重点部分了。首先通过阈值分割,将前景区域提取出来,然后用distance_transform将区域图像转化为距离图像DistanceImage。DistanceImage中,距离区域边缘越大,像素值亮度越大,产品的中心处亮度最大,为山峰;边缘处亮度较低,为山谷;因此需要将图像进行翻转invert。将翻转后的图像进行灰度值拉伸后,用分水岭watersheds算子即可获取每个产品所在区域的Basins和Watersheds。
threshold (GrayImage, Region, 3, 120)
*erosion_circle (Region, RegionErosion, 15.5)
distance_transform (Region, DistanceImage, ‘octagonal’, ‘true’, Width, Height)
convert_image_type (DistanceImage, DistanceImageByte, ‘byte’)
invert_image (DistanceImageByte, DistanceImageInvert)
scale_image_max (DistanceImageInvert, DistanceImageScaleMax)
watersheds (DistanceImageScaleMax, Basins, Watersheds)
dev_display (DistanceImageScaleMax)
dev_display (Basins)

4)结果
通过上述处理,到此每个产品已经得到分离,已经可以得出产品的数量。但如何进一步得到产品的位置。我们往前想,前面我们通过阈值分割已经将所有产品从背景分离出来,不过产品之间有连接成了一个连通域,后边通过分水岭算法,得到了每个产品所在的区域。很明显,两个区域之间的交集即为每个产品的区域。
*结果显示
dev_display (Image)
dev_display (Region)

dev_set_color (‘blue’)
dev_display (Basins)

intersection (Basins, Region, RegionIntersection)

dev_set_colored(12)
dev_set_line_width (3)
dev_display (Image)
dev_display (RegionIntersection)

分水岭算法解析[halcon]相关推荐

  1. halcon中的分水岭算法讲解以及作用和实例

    分水岭,顾名思义由地貌中的视觉形态演变而来.我们用一种场景来说明,想象一个干涩得裂开的农田赶上下雨,最终淹没到只看得见稻苗.它的整个过程先是灌满地势低的土地裂缝然后慢慢淹没整块土地只剩看得到稻苗. 将 ...

  2. 分水岭算法的python实现及解析

    1 算法简介 分水岭算法的原理很容易查到,但是很多文章都是直接用的opencv或matlab函数,看不到具体实现方法,这篇文章希望能对大家有点帮助. 分水岭算法就是往山谷中注水,把不同湖水接触的位置称 ...

  3. <Halcon>分割粘连区域(分水岭算法)

    read_image (Image, 'F:/培训/Halcon培训/2.jpg') rgb1_to_gray (Image, GrayImage)*平滑图片去噪 mean_image (GrayIm ...

  4. Python+Opencv分水岭算法

    目录 一.分水岭算法(Watershed)简介 二.分水岭算法实现步骤 三.阈值和轮廓检测硬币分割代码实现与分析 四.分水岭硬币分割代码实现 五.代码效果展示与分析 参考资料 注意事项 一.分水岭算法 ...

  5. 分水岭算法的理解和应用

    分水岭算法 主要思想 图像的灰度空间很像地球表面的整个地理结构,每个像素的灰度值代表高度.分水岭就是灰度值较大的像素连成的线.二值化阈值可以理解为水平面,比灰度二值化阈值小的像素区域会被淹没. 随着水 ...

  6. 分水岭算法c语言,Opencv分水岭算法学习

    分水岭算法可以将图像中的边缘转化成"山脉",将均匀区域转化为"山谷",这样有助于分割目标. 分水岭算法是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图 ...

  7. 【学习OpenCV4】分水岭算法详解

    本文分享内容来自图书<学习OpenCV 4:基于Python的算法实战>,该书内容如下: 第1章 OpenCV快速入门: 第2章 图像读写模块imgcodecs: 第3章 核心库模块cor ...

  8. 回归算法分类,常用回归算法解析

    回归算法分类,常用回归算法解析 回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学 ...

  9. CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)

    CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...

最新文章

  1. C语言extern关键字定义外部变量--Redis源码extern使用
  2. TensorFlow练习23: “恶作剧”
  3. 基础环境搭建--原始mavenWeb项目
  4. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area
  5. cve-2020-0796_SMBGhost 漏洞 CVE20200796 的PoC 已发布,攻击现身
  6. window.open 实现session隔离_InnoDB存储引擎MVCC实现原理
  7. c++两个vector合并_数据结构——算法初步(4)——合并排序算法
  8. Docker PHP 扩展配置
  9. 供应商禁止供货后,这个城市行动了:社区团购不得低价倾销、排挤对手
  10. 解决js弹窗网页出现白屏
  11. 综合案例-注册页面(HTML)
  12. 安卓系统修改开机LOGO
  13. 联想thinkpad E430C硬盘位换为固态,硬盘放于光驱位(win7+win10+ubuntu三系统安装教程)
  14. 解决微信开发工具卡顿的问题
  15. Bokeh—通过plotting绘制图形
  16. 开篇记(好记性不如烂笔头)
  17. 云脉文档管理系统高效管理海量纸质文档
  18. Cocos Creator 3.61所有工具软件的使用
  19. 开发者选项在哪?4.2及以上系统呼出教程
  20. ps 导出矢量图为svg,并上传iconfont

热门文章

  1. 批量转换nii文件为nii.gz格式
  2. QSPI 几种模式理解
  3. 什么是BlackICE?
  4. 域名信息dns服务器,DNS服务器简介
  5. 使用js解析歌词文件(lrc格式歌词)
  6. java卸载vsftp_Ubuntu下vsftp安装和配置
  7. 485_modbus通信,stm32f4.
  8. 林志玲“情沪魅影”时装片展情缘-中新网
  9. fineui mysql_FineUI配置文件
  10. 【Unity植物大战僵尸】搭建基本场景(一)