Halcon 算子 edges_image

edges_image (Operator)

edges_image — Extract edges using Deriche, Lanser, Shen, or Canny filters.

作用:利用过滤器提取图片边缘;

edges_image(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )

参数翻译(顺序对应以上参数顺序):

输入图像、

输出梯度图像、

输出边缘直方图、

输入滤波器(常用'canny', 'sobel_fast')、

输入平滑系数(0.2 ≤ Alpha ≤ 50.0)、

输入非极大值抑制('hvnms', 'inms', 'nms', 'none')、

输入滞后阈值下限、

输入滞后阈值上限

 

滞后性阈值的描述:

 使用边缘滤波,得到的边缘都是大于一个像素的轮廓,因此要对所得到的图像进行骨架化,从而得到比较清晰的边缘轮廓。有时候还需要进行非最大抑制处理

 这样,经过先对边缘幅度进行阈值分割,然后对分割出的区域进行骨架化处理,再进行非最大抑制处理,一般就可得到清晰的边缘。但是,有时候我们选择高的阈值以保证只将相关边缘选出时,边缘通常被割裂成诺干段;另一方面,如果选择低的阈值以保证边缘不会断裂成一段一段时,我们最终的分割结果中又会包含很多不相关边缘。针对这种情况,Canny提出来一种特殊的阈值分割算法来分割边缘:滞后阈值分割。

       滞后阈值分割使用两个阈值----高阈值和低阈值。边缘幅度比高阈值大的那些点立即作为安全边缘点被接受。边缘幅度比低阈值小的那些点被立即剔除。边缘幅度在高阈值和低阈值之间的那些点按如下原则处理:只有在这些点能按某一路径和安全边缘点相连时,他们才作为边缘点被接受。组成这一路径的所有点的边缘幅度都比低阈值要大。我们也能把这个过程理解为,首先边缘幅度大于高阈值的所有边缘点,然后在边缘幅度大于低阈值的情况下尽可能延长边缘。

 

描述:

1、edges_image使用递归滤波器(例如Deriche,Lanser,Shen)来检测步长边缘,或者使用传统的高斯滤波器(例如canny);

2、梯度图返回在参数ImaAmp中;

3、除了滤波器sobel_fast外,边缘直方图返回在参数ImaDir中,sobel_fast不计算边缘方向来达到加速过滤器的作用;

4、除了‘sobel_fast’(其中滤波器宽度为3x3, Alpha被忽略),可以任意选择“滤波器宽度”(即平滑的数量),并可以通过调用info_edges来估计参数Alpha的具体值;

5、对于Deriche、Lanser和Shen滤波器,它随着参数Alpha的值的增加而减小,而对于Canny滤波器则增大;

6、宽”滤波器对噪声表现出较大的不变性,但也降低了检测小细节的能力;

7、非递归滤波器,如Canny滤波器,是使用滤波器掩码来实现的,因此,随着滤波器宽度的增加,执行时间也随之增加;相反,递归过滤器的执行时间不依赖于过滤器的宽度。因此,使用Deriche、Lanser和Shen滤波器可以实现任意的滤波器宽度,而不会增加运算符的运行时间;与Canny算子相比,随着滤波器宽度的增大,速度上的优势自然增大。

8、在边界处理中,递归滤波器假设在图像外部的像素的灰度值为零,而Canny算子则在图像边界处重复灰度值;

9、对于'sobel_fast',除了'none'之外,对NMS的所有值执行相同的非最大值抑制。此外,迟滞阈值操作总是执行。另外,对于“sobel_fast”,产生的边缘会变薄到一个像素的宽度。

10、如果不使用滞后阈值,则直接设成负值即可;

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`edges_sub_pix()`是Halcon中的一个算子,用于对图像进行亚像素级别的边缘检测。该算子会根据指定的边缘算法在图像中检测出边缘,并精确定位边缘的位置,从而获得亚像素级别的边缘信息。 `edges_sub_pix()`算子的语法如下: ``` edges_sub_pix(Image : Edges, EdgesAmplitude, EdgesDirection, EdgesRow, EdgesColumn, MaxNumEdges, DetectionMode, Sigma, Threshold, Transition, EdgeWidth, Interpolation, SubPixel, PointsPerPixel, GenParamName, GenParamValue) ``` 其中,`Image`为输入的图像,`Edges`为输出的边缘信息,`EdgesAmplitude`为输出的边缘幅度信息,`EdgesDirection`为输出的边缘方向信息,`EdgesRow`和`EdgesColumn`为输出的边缘位置信息,`MaxNumEdges`为最大边缘数量,`DetectionMode`为边缘检测模式,`Sigma`为高斯滤波器的标准差,`Threshold`为边缘幅度的阈值,`Transition`为边缘的极性(上升沿/下降沿),`EdgeWidth`为边缘宽度,`Interpolation`为插值方式,`SubPixel`为是否计算亚像素级别的边缘位置,`PointsPerPixel`为每个像素点的采样点数,`GenParamName`和`GenParamValue`为其他参数。 例如,对一个灰度图像进行Canny边缘检测并计算亚像素级别的边缘位置: ``` read_image(Image, 'test.jpg') edges_sub_pix(Image, Edges, EdgesAmplitude, EdgesDirection, EdgesRow, EdgesColumn, 100, 'canny', 1.0, 20, 'positive', 3, 'bilinear', 'true', 1, [], []) ``` 这里,`MaxNumEdges`取100,表示最多检测100个边缘;`DetectionMode`取`'canny'`,表示使用Canny边缘检测算法;`Sigma`取1.0,表示高斯滤波器的标准差为1.0;`Threshold`取20,表示较低的边缘幅度阈值;`Transition`取`'positive'`,表示检测上升沿的边缘;`EdgeWidth`取3,表示边缘宽度为3个像素;`Interpolation`取`'bilinear'`,表示使用双线性插值计算边缘位置;`SubPixel`取`'true'`,表示计算亚像素级别的边缘位置;`PointsPerPixel`取1,表示每个像素点只采样一个点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无锡伶俐科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值