【OpenCV入門教程之十二】OpenCV邊緣檢測:Canny算子, Sobel算子, Laplace算子, Scharr濾波器合輯
OpenCV 中寫代碼時節約時間的小常識。其實OpenCV中,不用namedWindow,直接imshow就可以顯示出窗口。
一、關于邊緣檢測
在具體介紹之前,先來一起看看邊緣檢測的一般步驟吧。
濾波:邊緣檢測的算法主要是基于圖像強度的一階和二階導數,但導數通常對噪聲很敏感,因此必須采用濾波器來改善與噪聲有關的邊緣檢測器的性能。常見的濾波方法主要有高斯濾波,即采用離散化的高斯函數產生一組歸一化的高斯核,然后基于高斯核函數對圖像灰度矩陣的每一點進行加權求和。
增強:增強邊緣的基礎是確定圖像各點鄰域強度的變化值。增強算法可以將圖像灰度點鄰域強度值有顯著變化的點凸顯出來。在具體編程實現時,可通過計算梯度幅值來確定。
檢測:經過增強的圖像,往往鄰域中有很多點的梯度值比較大,而在特定的應用中,這些點并不是我們要找的邊緣點,所以應該采用某種方法來對這些點進行取舍。實際工程中,常用的方法是通過閾值化方法來檢測。