傳統(tǒng)的Canny邊緣檢測算法是一種有效而又相對簡單的算法,可以得到很好的結(jié)果(可以參考上一篇Canny邊緣檢測算法的實現(xiàn))。但是Canny算法本身也有一些缺陷,可以有改進的地方。

1. Canny邊緣檢測第一步用高斯模糊來去掉噪聲,但是同時也會平滑邊緣,使得邊緣信息減弱,有可能使得在后面的步驟中漏掉一些需要的邊緣,特別是弱邊緣和孤立的邊緣,可能在雙閥值和聯(lián)通計算中被剔除。很自然地可以預(yù)見,如果加大高斯模糊的半徑,對噪聲的平滑力度加大,但也會使得最后得到的邊緣圖中的邊緣明顯減少。這里依然用Lena圖為例,保持Canny算法中高閥值100,低閥值50不變,高斯半徑分別為2,3,5的Canny邊緣二值圖像如下。可知高斯模糊把很多有用的邊緣信息也模糊掉了,因此如何精確的選擇高斯半徑就相當(dāng)重要。

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)   iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)   iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

                 高斯半徑2                                          高斯半徑3                                          高斯半徑5

2. 在最初的Canny算法中是使用的最小的2x2領(lǐng)域來計算梯度幅值的。這種方法對噪聲很敏感,比較容易檢測到偽邊緣或漏掉真是邊緣。