Halcon提取边缘线段lines_gauss 算子

news/2024/7/21 4:28:35 标签: 人工智能, 前端, 算法, 计算机视觉, 图像处理

Halcon提取边缘线段lines_gauss 算子

edges_color_sub_pix和edges_sub_pix两个算子使用边缘滤波器进行边缘检测。还有一个常用的算子lines_gauss算子,也可以用于提取边缘线段,它的鲁棒性非常好,提取出的线段类型是亚像素精度的XLD轮廓。其原型如下:

lines gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth,  LineModel, CompleteJunctions :)

其各参数含义如下。
参数1:Image为输入的单通道图像。
参数2:Lines 为输出的一组亚像素精度的XLD轮廓线条。
参数3:Sigma 为输入的高斯平滑的值。较大的平滑值会使图像平滑的力度更大,但过度平滑也可能导致提取的线条位置有偏差。默认为1.5。在需要提取线条宽度时,Sigma 的值应根据要提取的线条宽度进行调节,最小值应不小于w13(w为线条宽度,即线条直径的一半)。例如,对于宽度为4的线条,Sigma值应不小于2.3。
参数4和5:Low和High 为输入参数,分别表示滞后阈值的低阈值和高阈值。高阈值越低,边缘线条的细节会越丰富。如果Sigma选得比较大,闽值就应选择较低的高阈值和较高的低阈值。因为选择的Sigma越大,二阶导数就越小。低阈值和高阈值也可以根据要提取的线的相应灰度对比度和Sigma参数值进行计算。
参数6:LightDark为输入参数,表示提取较亮的线条还是较暗的线条。默认为light,即提取较亮线条。
参数7:ExtractWidth为输入参数,表示是否需要提取线条的宽度。默认为true,即提取每条线段的宽度值。
参数8:LineModel为输入参数,表示调整线条位置和宽度的线段模型。可选的有 bar-shaped(条型)、gaussian(高斯型)、parabolic(抛物线型)。默认为条型,大多数应用场景都可以选择该选项。如果是背光比较强的情况,可以考虑另外两种模型。其中,当图像中的线条比较清晰明锐时,可以选择抛物线型;如果不是特别清晰,可以选择高斯型。注意,LineModel 仅在ExtractWidth为true时才有意义。
参数9:CompleteJunctions为输入参数,表示是否添加连接,用于边缘线段不连续的情况,默认为true。因为某些非连通线段无法通过边缘提取器进行提取,所以这里设为true,即可使用其他方式尝试对非连续部分进行连接。注意,如果线条的宽度过大,建议先对图像进行一定比例的缩小,以减少过度计算消耗的时间。
图(a)为lines_gauss算子输入的单通道图像,图(b)为使用lines_gauss算子进行边缘检测的结果。这里选用了bar-shaped进行边缘滤波处理,低阈值为1,高阈值为8。
在这里插入图片描述
实现代码如下:

read_image (Image,'data/flower')
rgbl_to_gray (Image, GrayImage)
dev_open_window (0, 512, 512, 512, 'black', WindowHandle1)
*进行边缘检测
lines_gauss(GrayImage,Lines,1.5,1,8,'light','true','bar-shaped','true')
*在窗口中将轮廓线条绘制出来
dev_set_color ('red')
dev_clear_window ()
dev_display (Lines)

本例中使用lines_gauss 算子进行边缘检测。需要注意的是,lines_gauss算子的响应速度不算快,如果边缘的高阈值设置得偏低,会导致需要计算的边缘增多,可能会有明显的卡顿。
也有一个与lines_gauss算子类似的、针对彩色多通道图像的算子,即lines_color算子。该算子的参数与lines_gauss算子相似,用于提取彩色的边缘线条。值得一提的是,如果该算子的ExtractWidth参数设为false,那么返回的线条中将会包含其他属性,如线条的角度、二阶导数的梯度等。


http://www.niftyadmin.cn/n/5331680.html

相关文章

python贪吃蛇游戏

为了实现这个游戏,需要用到Python的pygame模块,它是一个专门用于开发游戏的模块,提供了很多方便的功能,比如窗口、图形、音效、事件处理等。 用pygame来创建一个窗口,设置游戏的背景色,画出蛇和食物&#…

深度解析Java正则表达式

深度解析Java正则表达式 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在今天的文章中,我们将深度解析Java正则表达式,这个在文本处理中强大…

【总结】Linux命令中文帮助手册

1. 为什么要总结Linux命令中文帮助手册 Linux 官方并不提供中文的 help、man 帮助手册。网络上已有的前人翻译过的中文手册版本比较老,且翻译存在误差。从记忆角度来看,Linux 很多命令都不一定记得住详细的用法,易遗忘,缺少经验总…

【Git】任何位置查看git日志

需求 现需要查看指定项目中的某个文件的 Git 日志。如有 项目代码 jflowable ,需要查看其下文件 D:\z_workspace\jflowable\src\main\java\com\xzbd\jflowable\controller\TestController.java 的日志。 分析 一般的思路是,进入 jflowable 项目&#…

HTML中使用less

首先,什么是less? less和css 区别: 1、Less是一门CSS预处理语言,而css是一种用来表现HTML或XML等文件样式的计算机语言; 2、less扩展了CSS语言,增加了css本身没有的变量、函数等特性; 3、css可…

【计算机图形学】习题课:Viewing

【计算机图形学】Viewing 部分问题与解答 CS100433 Computer Graphics Assignment 21 Proof the composed transformations defined in global coordinate frame is equivalent to the composed transformations defined in local coordinate frame but in different composing…

【深度学习】RTX2060 2080如何安装CUDA,如何使用onnx runtime

文章目录 如何在Python环境下配置RTX 2060与CUDA 101. 安装最新的NVIDIA显卡驱动2. 使用conda安装CUDA Toolkit3. 验证onnxruntime与CUDA版本4. 验证ONNX需求版本5. 安装ONNX与onnxruntime6. 编写ONNX推理代码 如何在Python环境下配置RTX 2060与CUDA 10 RTX 2060虽然是一款较早…

C# winform应用

C# winform应用 需求:导入Excel文件时需要执行其他操作,实现如果取消导入就不执行其他操作 C#代码实现 private bool DLimport0(string tablename, string datebasename, string buttonname){string xxx "";string Tag "";stri…