Halcon编程笔记-(3) 边缘检测-Prewitt算子、非极大值抑制

read_image (Image, 'C:/Users/ShineZhang/Desktop/img/IMG_20200109_155410.jpg')
prewitt_dir (Image, ImageEdgeAmp, ImageEdgeDir)
nonmax_suppression_dir (ImageEdgeAmp, ImageEdgeAmp, ImageResult, 'nms')
threshold (Image, Regions1, 200, 255)
dev_display (Image)
dev_set_color ('red')
dev_display (Regions1)

prewitt_dir

Prewitt算子

Prewitt算子是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 33 模板对区域内的像素值进行计算,而Robert算子的模板为 22,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像。
在这里插入图片描述
nonmax_suppression_dir

非极大值抑制

(Non-maximum suppression,NMS)是一种去除非极大值的算法,常用于计算机视觉中的边缘检测、物体识别等。

算法流程:

给出一张图片和上面许多物体检测的候选框(即每个框可能都代表某种物体),但是这些框很可能有互相重叠的部分,我们要做的就是只保留最优的框。假设有N个框,每个框被分类器计算得到的分数为Si, 1<=i<=N。

0、建造一个存放待处理候选框的集合H,初始化为包含全部N个框;

 建造一个存放最优框的集合M,初始化为空集。

1、将所有集合 H 中的框进行排序,选出分数最高的框 m,从集合 H 移到集合 M;

2、遍历集合 H 中的框,分别与框 m 计算交并比(Interection-over-union,IoU),如果高于某个阈值(一般为0~0.5),则认为此框与 m 重叠,将此框从集合 H 中去除。

3、回到第1步进行迭代,直到集合 H 为空。集合 M 中的框为我们所需。

参考资料:
非极大值抑制(NMS)讲解
数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)
非极大值抑制(Non-Maximum Suppression,NMS)

原创文章 30 获赞 17 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_32939413/article/details/104147734