Halcon学习笔记之基于分水岭的目标分割


分水岭算法是一种典型的基于边缘的图像分割算法,通过寻找区域之间的分界线,对图像进行分割。传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是地质学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其周边区域称为集水盆地,而集水盆地的边界则形成分水岭。

watersheds

分水岭算法能够较好的适用于复杂背景下的目标分割,特别是具有蜂窝状结构的画面的内容分割。Halcon中使用watersheds算子提取图像的分水岭。原型如下:

watersheds(Image:Basins,Watersheds::)

各参数的含义如下:
(1)Image:输入的图像,一般为单通道图像,这里要注意的是,因为盆地一般指的是灰度值较低的区域,所以如果前景目标比较亮而背景比较暗,可以使用convert_image算子对颜色进行翻转。
(2)Basins:输出的盆地区域
(3)Watersheds:为输出的分水岭区域。一般一幅输入图像对应一个分水岭区域,而输出的Basins则是多个区域的集合。

注意:如果输入图像包含过多噪点或细节,输出的区域数量将非常庞大并影响算法速度。

watersheds_threshold

除了watersheds算子,watersheds_threshold算子也可以进行分水岭分割。二者的区别在于后者比前者多了一步操作,即在得到初步的分水岭分割结果后,将灰度小于阈值的分水岭合并。原型如下:

watersheds_threshold(Image:Basins:Threshold:)

各参数的含义如下:
(1)Image:输入的图像,一般为单通道图像,这里要注意的是,因为盆地一般指的是灰度值较低的区域,所以如果前景目标比较亮而背景比较暗,可以使用convert_image算子对颜色进行翻转。
(2)Basins:输出的盆地区域
(3)Watersheds:设置的灰度阈值。

例程分析

在这里插入图片描述

dev_set_draw ('fill')
dev_set_line_width (2)
dev_set_colored (12)
read_image (ImageLogo, 'mvtec_logo.png')
dev_close_window ()
get_image_size (ImageLogo, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (ImageLogo)
disp_continue_message (WindowHandle, 'black', 'true')
gauss_filter (ImageLogo, ImageGauss, 9)
sobel_amp (ImageGauss, EdgeAmplitude, 'sum_abs', 3)
watersheds (EdgeAmplitude, Basins1, Watersheds)
dev_display (Basins1)
disp_continue_message (WindowHandle, 'black', 'true')
watersheds_threshold (EdgeAmplitude, Basins2, 14)
dev_display (Basins2)

上面这幅图使用sobel_amp提取边缘后得到边缘区域 EdgeAmplitude 如下:
在这里插入图片描述
watersheds 得到的盆地区域为 Basins1:
在这里插入图片描述
watersheds_threshold 得到的盆地区域为 Basins2:
在这里插入图片描述
因为边缘的灰度值大于14,所以小于14的分水岭区域合并,分水岭消失。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon深度学习的语义分割是指使用Halcon软件进行图像处理和分析,通过深度学习算法对图像进行语义分割,即将图像中的每个像素分配到不同的类别中。语义分割可以用于目标检测、图像分割、医学影像分析等领域。 在Halcon中进行深度学习的语义分割,需要进行一系列的预处理操作。预处理的目的是设置图像预处理的参数,并生成语义分割的文件,用于后续的训练。预处理的参数包括图像的宽度、高度、通道数,训练模式(CPU或GPU),训练集与验证集的比例等。预处理的代码量可能较多,但大部分是用于介绍和设置图像信息的,实际上只需要有标注好的文件和设置好的图像信息,就可以完成图像预处理。 具体操作步骤如下: 1. 使用Everything软件或全盘搜索,找到文件segment_pill_defects_deep_learning_1_preprocess.hdev,该文件路径应该在HALCON安装目录下的examples\hdevelop\Deep-Learning\Segmentation文件夹中。 2. 返回到该目录下找到images文件夹,并将生成的test1_images文件夹拷贝到images文件夹下。确保test1_images文件夹与pill在同级目录下。 3. 在images文件夹中找到labels文件夹,并将生成的test1_labels文件夹放入其中。同样,确保test1_labels文件夹与pill在同级目录下。 4. 修改代码中相应的名称,并根据需要注释部分代码。 5. 完成以上步骤后,即可进行Halcon深度学习的语义分割操作。 请注意,以上是一般的操作步骤,具体的操作可能会因个人需求和实际情况而有所不同。如果有任何问题或错误,请及时指正。 #### 引用[.reference_title] - *1* *2* [Halcon 深度学习之语义分割 预处理 案例解析](https://blog.csdn.net/zhuifengyx/article/details/127538927)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Halcon深度学习---语义分割(1)---数据集预处理](https://blog.csdn.net/WDX4092410/article/details/131213087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值