東北石油大學電子科學學院 苗 瑞 崔敬芳 李修麒 朱禹諾 魏華龍
圖像邊緣檢測是計算機圖像處理中重要的一環(huán)節(jié),傳統(tǒng)的邊緣檢測一般通過微分運算提取圖像高頻分量實現(xiàn)[1]。而現(xiàn)實中的圖像是極其復雜多樣化的,圖像中難以避免的噪聲會大大影響邊緣檢測的效果,對此人們提出了各種算法來提高檢測精度及抗噪聲能力[2]。在MATLAB環(huán)境下可以很方便地驗證各種圖像處理算法,本文針對Canny算法進行改良,并給出了MATLAB下的檢測效果。
圖像邊緣檢測算法眾多,檢測精度及抗噪聲能力也各有優(yōu)劣,這里針對Canny算法進行改良。Canny算法的目標是實現(xiàn)最優(yōu)邊緣檢測,并且最大程度上的消除噪聲干擾。由于這里討論的是二維圖像,可以使用多個方向的高斯平滑模板,對圖像進行有針對性的卷積運算,這樣就消除了單像素的噪聲,再選取最可能的邊緣方向[3]。
假設一個二維圖像使用 f [i, j ]來表示,與高斯平滑模板做卷積,得到平滑濾波后的二維矩陣:
在式(1)中,G [i, j ; σ]實現(xiàn)了高斯平滑濾波,平滑程度取決于參數σ。接下來將矩陣S [i, j ]使用一階導數的有限差分法計算得到兩個偏導數矩陣 P [i, j ]與Q [i, j ]:
通過在2×2正方形內求有限差分均值,為計算圖像中某點x和y的偏導數梯度提供了便利。使用坐標變換,將直角坐標轉換為極坐標,可得到各個點的幅值與方位角:
(4)式中的M [i, j ]表示對應點的邊緣強度,θ [i, j ]是該點的法向矢量,和邊緣方向正交。算子G [i, j ; σ]與f [i, j ]卷積運算后得到邊緣梯度值最大的點即中心邊緣點。
接下來使用MATLAB提供的edge函數,分別對Canny、Sobel、Roberts、Prewitt和Log圖像邊緣檢測算法進行驗證與對比。被測試的灰度圖像為orimg.tig,測試代碼及注釋如下。
T=imread(orimg.tif’);%使用imread函數讀取原始灰度圖像;
figure(1),imshow(T); %使用imshow函數顯示圖像,使用figure避免顯示圖像覆蓋;
TS1=edge(T,’sobel’,0.2);%調用edge函數并使用sobel算子進行邊緣檢測;
figure(2),imshow(TS1)
TS2=edge(T,’roberts’,0.2);%調用edge函數并使用roberts算子進行邊緣檢測;
figure(3),imshow(TS2)
TS3=edge(T,’prewitt’,0.2);%調用edge函數并使用prewitt算子進行邊緣檢測;
figure(4),imshow(TS3)
TS4=edge(T,’log’,0.2);%調用edge函數并使用log算子進行邊緣檢測;
figure(5),imshow(TS4)
TS5=edge(T,’canny’,0.2);%調用edge函數并使用canny算子進行邊緣檢測。
figure(6),imshow(TS5)
測試結果如圖1所示。
圖1 邊緣檢測結果對比
本次測試中,閾值統(tǒng)一設置為0.2。從測試結果可以看出,Canny算法處理得到的圖像邊緣信息更多更完整,連續(xù)性較好,Prewitt次之,Roberts邊緣檢測結果邊緣信息丟失較多。
Canny邊緣檢測算法追求能夠識別圖像中更多的邊緣,且識別結果盡可能與實際邊緣接近,這使得該算法的邊緣檢測信息更多更完整,且連續(xù)性較好,但是圖像中的噪聲會影響檢測結果的準確性[4]。本文提出的先高斯去噪,再進行邊緣檢測,克服了傳統(tǒng)Canny算法的不足,最后通過與其他檢測算法的檢測結果對比,體現(xiàn)出了該方法的優(yōu)點。
[1]王平均.基于MATLAB圖像增強算法的應用[J].遼寧高職學報,2013(7):78-80.
[2]李俊山,馬穎,趙方舟,等.改進的Canny圖像邊緣檢測算法[J].光子學報,2011,40(s1):50-54.
[3]張德豐.MATLAB數字圖像處理(第二版)[M].北京:機械工業(yè)出版社,2012.1
[4]Zhao H,Qin G,Wang X.Improvement of canny algorithm based on pavement edge detection[C]//International Congress on Image and Signal Processing.IEEE,2010:964-967.