傳統(tǒng)的Canny邊緣檢測算法是一種有效而又相對簡單的算法,可以得到很好的結(jié)果(可以參考上一篇Canny邊緣檢測算法的實現(xiàn))。但是Canny算法本身也有一些缺陷,可以有改進的地方。
1. Canny邊緣檢測第一步用高斯模糊來去掉噪聲,但是同時也會平滑邊緣,使得邊緣信息減弱,有可能使得在后面的步驟中漏掉一些需要的邊緣,特別是弱邊緣和孤立的邊緣,可能在雙閥值和聯(lián)通計算中被剔除。很自然地可以預(yù)見,如果加大高斯模糊的半徑,對噪聲的平滑力度加大,但也會使得最后得到的邊緣圖中的邊緣明顯減少。這里依然用Lena圖為例,保持Canny算法中高閥值100,低閥值50不變,高斯半徑分別為2,3,5的Canny邊緣二值圖像如下。可知高斯模糊把很多有用的邊緣信息也模糊掉了,因此如何精確的選擇高斯半徑就相當(dāng)重要。
高斯半徑2 高斯半徑3 高斯半徑5
2. 在最初的Canny算法中是使用的最小的2x2領(lǐng)域來計算梯度幅值的。這種方法對噪聲很敏感,比較容易檢測到偽邊緣或漏掉真是邊緣。