分水岭边缘提取和hough提取边缘

分水岭边缘提取

分水岭(Watershed)算法是一种常用于图像分割的技术,尤其适用于处理具有相似灰度值但又需要区分开的区域,例如在二值图像中将前景和背景分开或者在灰度图像中将不同对象分开。在Halcon中实现分水岭算法通常涉及以下几个步骤:

1.加载图片并对图片进行高斯平滑操作:

read_image (Image, 'particle')
gauss_filter (Image, ImageGauss, 9)

Image
ImageGauss
 2.进行灰度值翻转

 invert_image (ImageGauss, ImageInvert)

ImageInvert
 3.分水岭提取边缘

 watersheds (ImageInvert, Basins, Watersheds)

* 参数2 盆地
* 参数3 Watersheds 分水岭

Basins
Watersheds
 4.最后处理使用地形阈值分割

 watersheds_threshold (ImageInvert, Basins1, 30)

Basins1

 Hough进行提取边缘

在使用Halcon进行图像处理时,霍夫变换(Hough Transform)是一种常用的技术,用于检测图像中的直线。霍夫变换特别适用于提取边缘,尤其是在边缘不明显或者噪声较多的情况下。下面将介绍如何在Halcon中利用hough变换来提取边缘。

1.加载图片并裁剪区域

read_image (Image, 'fabrik')
rectangle1_domain (Image, ImageReduced, 170, 280, 310, 360)

Image
ImageReduced
 2.使用sobel_dir提取一个带方向的边缘图

sobel_dir (ImageReduced, EdgeAmplitude, EdgeDirection, 'sum_abs', 3)

EdgeAmplitude
EdgeDirection
 3.设置颜色、过滤阈值并裁剪出来带方向图片

 dev_set_color ('red')

threshold (EdgeAmplitude, Region, 55, 255)
reduce_domain (EdgeDirection, Region, ImageReduced1)

Region
ImageReduced1
 4.使用hough提取边缘

hough_lines_dir (ImageReduced1, HoughImage, Lines, 4, 2, 'mean', 3, 25, 5, 5, 'true', Angle, Dist)

HoughImage
Lines
hough参数介绍: 
  1. 参数1  EdgeDirectionReduced(输入参数):这是一个单通道图像,表示边缘的方向。通常由边缘检测算子(如 sobel_dir 或 edges_dir)生成。
  2. 参数2  HoughImage(输出参数)
  3. 参数3  Lines(输出参数):输出检测到的直线,以 [StartRow, StartCol, EndRow, EndCol] 的形式表示每条线的起点和终点坐标。
  4. 参数4  4(输入参数):Hough 变换的 Rho 分辨率(像素单位):决定霍夫空间的距离分辨率,即直线到原点的距离步长。
  5. 参数5  2(输入参数):  Hough 变换的 Theta 分辨率(角度单位):决定霍夫空间的角度分辨率,即角度步长(通常以度为单位)。
  6. 参数6  'mean'(输入参数):  边缘方向计算模式: 'mean':使用边缘方向的平均值。'all':考虑所有可能的方向。
  7. 参数7  3(输入参数):  平滑窗口大小:用于平滑霍夫空间,减少噪声影响。
  8. 参数8  25(输入参数):  最小投票数(阈值):霍夫空间中,只有投票数超过该值的直线才会被检测出来。值越大,检测到的直线越少(但更可靠)。
  9. 参数9  5(输入参数):线段之间的最小角度;低于此值,将合并一条线
  10. 参数10  5(输入参数):  最大线间隙(像素):允许的线段之间的最大间隙,超过此间隙的两条线段不会被合并为同一条直线。
  11. 参数12 'true'(输入参数):是否考虑边缘方向:'true':仅检测与边缘方向一致的直线。   'false':忽略边缘方向,检测所有可能的直线。
  12. 参数13  Angle(输出参数): 输出检测到的直线的角度(相对于图像坐标系)。
  13. 参数14  Dist(输出参数):输出检测到的直线到图像原点(通常是左上角)的距离(像素单位)。
 5.绘制霍夫变换提取直线

gen_region_hline (Lines, Angle, Dist)

Lines

 最终结果如下:

dev_display (Image)
dev_set_draw ('margin')
dev_display (Lines)

分水岭算法在HALCON中是一种基于拓扑理论的数学形态学的图像分割方法。该算法将图像看作起伏的地形,其中每个像素的灰度值表示地形的高度,极小值代表盆地,极大值代表山脊。分水岭算法通过模拟向地势中灌水的过程,水会从高处往低处流动,先在低洼处汇集,最终形成分水岭线,作为图像的分割线。在HALCON中,可以使用watersheds函数或watersheds_threshold函数来实现分水岭分割。其中,watersheds函数将图像分割为多个区域,watersheds_threshold函数在分割过程中加入了阈值,用于控制分割的粒度。 在HALCON中,使用分水岭算法进行图像分割的具体步骤如下: 1. 读取图像:使用read_image函数读取待分割的图像。 2. 进行分水岭分割:可以使用watersheds函数或watersheds_threshold函数进行分割。这些函数将输入图像分割为坝的边界区域分水岭区域。 3. 可选的降噪处理:可以使用reduce_domain函数对图像进行降噪处理,以去除一些不需要的噪点或区域。 4. 显示结果:使用dev_clear_windowdev_display函数显示分割结果。 总结起来,分水岭算法是一种基于拓扑理论的数学形态学的图像分割方法,在HALCON中可以使用相应的函数实现分割。具体步骤包括读取图像、进行分割、降噪处理显示结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [halcon中的分水岭算法讲解以及作用实例](https://blog.csdn.net/weixin_44490080/article/details/100925535)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [分水岭算法解析[halcon]](https://blog.csdn.net/GaoRichy/article/details/127302706)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值