Halcon —— 边缘提取、骨骼化(sobel、laplace、prewitt)

在 Halcon 中,边缘提取是图像处理中的关键任务,常用的算子包括 Sobel、Laplace 和 Prewitt。以下是这三种方法的详细说明和实现方式。

Sobel 边缘提取

Sobel 算子通过计算图像的水平方向和垂直方向的梯度来检测边缘。Halcon 中可以使用 sobel_ampsobel_dir 实现。

read_image (Image, 'fabrik')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)

*边缘提取
*参数3 提取边缘的算法
*'sum_abs':水平梯度和竖直梯度绝对值和 + 5 一般检测
* sum_sqrt:水平梯度和竖直梯度平方根和  + 3  精细检测
* sum_abs':水平梯度和竖直梯度绝对值和 + 7  抗噪检测
*参数4 滤波核的大小
*sobel_amp (Image, EdgeAmplitude, 'sum_abs', 5)
  • sobel_amp 输出边缘的幅度。
  • sobel_dir 输出边缘的方向和幅度。
  • 参数 'sum_abs' 表示使用绝对值求和计算梯度。
  • 参数 3 表示 Sobel 核的大小。

Laplace 边缘提取

Laplace 算子通过计算二阶导数来检测边缘,适合检测细小的边缘或噪声。Halcon 中可以使用 laplacelaplace_of_gauss

read_image (Image, 'fabrik')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)


*laplace 计算图像的时候采用的拉普拉斯算子,可以增强边缘细节,主要边缘检测和图像锐化 
*'absolute' 输出图像都是正直 'signed' 保留正负值
*MaskSize:滤波核 尺寸 写成奇数
*'n_4' 4邻域的矩阵 +size5/7 抗噪检测
*'n_8' 8邻域矩阵 + size3 精细检测
laplace (Image, ImageLaplace, 'signed', 5, 'n_8')
  • laplace 直接计算二阶导数。
  • laplace_of_gauss 结合高斯滤波和 Laplace 算子,参数 2.0 是高斯标准差。

 

Prewitt 边缘提取

Prewitt 算子类似于 Sobel,但使用不同的卷积核。Halcon 中可以使用 prewitt_ampprewitt_dir

read_image (Image, 'fabrik')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)



*该算子特点对噪声比较敏感。建议先平滑操作
prewitt_amp (Image, ImageEdgeAmp)
  • prewitt_amp 输出边缘幅度。
  • prewitt_dir 输出边缘方向和幅度。
  • 参数 'sum_abs' 表示使用绝对值求和计算梯度。

halcon骨骼化操作

Halcon中的骨骼化操作通常用于图像处理中的形态学分析,主要目的是提取目标区域的骨架结构。骨骼化可以通过多种算子实现,具体方法如下:

使用skeleton算子

skeleton是Halcon中最直接的骨骼化算子,适用于二值图像处理。该算子通过迭代腐蚀操作保留目标的中心线骨架。

threshold (ImageEdgeAmp, Region, 20, 255)
dev_set_color ('green')
*骨骼化操作:可以将一个区域缩减为单像素宽的骨架进行表示,同时保留原始区域拓扑结构和特征结构
skeleton (Region, Skeleton)
dev_display (Skeleton)

参数调整建议

  • 对于细长目标,建议使用较小的结构元素尺寸
  • 复杂形状目标可能需要多次迭代骨骼化操作
  • 骨骼化前进行适当的平滑处理可以减少分支数量

骨骼化操作的结果可用于后续的特征提取、长度测量或缺陷检测等高级分析任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值