非極大值抑制可當作一種局部極大值搜索,這裏的局部極大值要比他的鄰域值都要大。這裏的鄰域表示有兩個參數:維度和n-鄰域。維度有1-D,2-D,3-D...;至於n值根據具體狀況設置。舉個例子:一維的狀況,某個像素點左右各n個鄰域點(加上該像素點,鄰域區域共有2n+1個像素);二維的狀況以當前像素爲中心以n爲半徑向周圍輻射到的區域均是鄰域。
具體講幾個算法實例可能有助於咱們對算法的理解:
1.一維三鄰域算法
算法僞代碼以下:
1 i ← 1;
2 while i + 1 < W do
3 if I[i] > I[i + 1] then
4 if I[i] >= I[i ? 1] then
5 MaximumAt(i);
Endif
6 else
7 i ← i + 1;
8 while i + 1 < W AND I[i] ≤ I[i + 1] do
9 i ← i + 1;
EndWhile
10 if i + 1 < W then
11 MaximumAt(i);
12 i ← i + 2;
EndWhile
i表示圖像I中像素點下標,W是下標上限。
算法說明:
① 最理想的狀況是當前像素點I[i]比它的左右鄰點都大,那麼當前像素點記爲局部極大值點(Line 3-5)。
② 若是已經肯定像素點i+1比它的左鄰點i小,那麼i+1必不是局部極值點,此時能夠直接將下標加2(Line 12)。PS:該算法添加了一個強制性條件:局部極值點必大於左鄰點.
③ 若是當前像素點i比其右鄰域點小,那麼下標加1(Line 7).算法