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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章