曹洪運,趙宇峰,高佳佳
(1.西安工業大學 計算機科學與工程學院,西安 710021;2.西安工業大學 電子信息工程學院,西安 710021)
計算機視覺,旨在通過圖像和視頻數據的識別、跟蹤和3D重建等任務的算法,增強及其理解視覺世界的能力。這些任務非常復雜,通常不足以簡單地將原始圖像視為訓練示例并應用最新的機器學習算法。在此,主要著重于提取這種結構,將圖像轉換為中間表示,從而為模塊的高級任務(如識別)提供更優越的輸入。本著這一精神,首先關注輪廓邊緣的檢測,它一直是計算機視覺中的一個基本問題。
目前,經典的圖像邊緣檢測方法有Sobel算子、Prewitt算子、Roberts算子、Laplacian 算子、LoG 算子、Canny算子等,這些方法大都是利用圖像梯度的極大值或二階導數過零點來檢測圖像邊緣[1]。利用圖像和微分算子模板進行卷積來完成。然而,經典的圖像邊緣檢測算法抗噪性能比較差,在檢測圖像邊緣的同時又加強了噪聲。故在此提出基于模糊梯度標準差的方法用于檢測圖像邊緣。
基于梯度的一階邊緣算法在圖像處理領域經常其在灰度突變處的導數值也比較大,通過灰度導數的大小來表示灰度變化,從而進行邊緣的檢測。根據模板的大小和權值的不同,出現了很多梯度算子,Roberts算子[2-3],是一種最簡單的2×2模板的梯度算子,由于對于噪聲較敏感,常常會出現孤立點。隨后,由J.Priwit和Sobel分別提出了Priwit算子[4]與Sobel算子[5-6]。這2種算子的方法一樣,均采用2個核對圖像中每個點的卷積最大值作為輸出。Sobel算子比較重視模板中心像素點附近并給其較大的權重;Priwit模板沒有把重心放在接近模板中心的像素點。因此,噪聲結構對這2種算子的影響很大:當圖像的噪聲分布均勻時,Sobel算子效果比較好;當噪聲靠近邊緣時,Priwit算子效果比較好。
由于一階導數的局部有最大值時,對圖像進行二階微分則會形成1個過零點,并且在零點兩邊產生1個波峰和波谷。所以,在圖像邊緣點處有一階導數的峰值時,對應1個二階導數的過零點,于是提出了二階導數邊緣檢測算子。Laplace算子[6]是經典的二階導數算子,它是各向同性的,計算量較小,但對噪聲會比較敏感,并且丟失了邊緣的方向信息。因此,1980年文獻[7]在Laplacian算子的基礎上提出了LoG算子(高斯拉普拉斯算子)。該方法先利用高斯函數平滑圖像后,再用Laplacian算子檢測邊緣,從而降低了圖像的噪聲,實現了邊緣提取前對圖像的預處理。
Canny算子[8]是Canny算法與簡單的基于拉普拉斯算法的。不同點之一是在Canny算法中,首先利用高斯函數對圖像進行卷積以除去噪聲,計算每個像素點的方向和梯度幅值,然后對圖像的梯度幅值進行非極大值抑制,以達到增強邊緣的效果,最后將采用雙閾值確定圖像邊緣,最終得到邊緣圖像。Canny邊緣檢測相比普通的梯度算法大大抑制了噪聲引起的偽邊緣,而且是邊緣細化,易于后續處理。隨后,文獻[9]提出了一種基于改進的Canny邊緣檢測算法。使用平滑濾波代替原本的高斯濾波算法,銳化了圖像邊緣,但是,同時采用了4個方向上的一階梯度模板,提高了算法復雜度,運行效率降低。
在此以之前算子為基礎,提出模糊梯度標準差邊緣檢測算法,把圖像的梯度和標準差作為模糊系統的輸入;然后模糊系統根據模糊規則決定每個像素適當的閾值,從而得到清晰的邊緣輪廓信息。
通過像素值的梯度和標準差這2種不同的方法分別提取邊緣;基于模糊邏輯,決定每個像素是否為邊緣。如果使用每種方法,可以獲得有問題的結果,它可能導致將邊緣像素識別為非邊緣像素,反之亦然。
盡管已經有了不同的邊緣檢測方法,但是其中許多方法仍是基于梯度的。
第1種方法梯度值由Sobel算子計算灰度圖像分別到x和y方向的梯度幅值(Gmag),然后梯度值大于閾值的像素是邊緣候選者。

以示例圖像為基礎,利用Sobel梯度算子分別計算灰度圖像的方向導數,它表明了圖像的灰度在x方向和y方向上有多大的變化,并可以在圖像灰度的水平和垂直分量上通過編碼顯示。通過計算圖像的方向變化,利用上述公式求出圖像的梯度幅值和梯度方向,如圖1所示。
通過組合圖像的偏導數x和y方向,圖像的梯度向量為

使用梯度向量,梯度幅值為



圖1 圖像梯度Fig.1 Image gradient
第2種方法基于灰度標準差SD(standard deviation),即通過相鄰鄰域像素上的3×3掩模(如圖2所示)來計算每個像素的SD。當該像素的標準差大于閾值時,則被記為邊緣候選者,如圖3所示。
然后,找到每個像素在輔助鄰域上的標準差,如圖2所示。

圖2 使用掩模計算標準差Fig.2 Calculate the standard deviation using a mask
在示例圖像中使用標準差,如圖3所示。

圖3 圖像標準差Fig.3 Image standard deviation
在前2個步驟中,定義模糊推理系統的輸入并準備創建模糊集、成員函數、規則和系統的輸出。作為步驟3的輸入,為模糊系統輸入定義適當的隸屬函數。然后,2個映射值都被分類為低、中或高類之一。使用分類值指定并應用規則到系統。模糊系統的輸出解釋了像素的邊緣程度。通過使用模糊規則和質心解模糊方法,該模糊系統的輸出被分為3類,對應于邊緣像素的低、中、高值,模糊推理系統的整體流程如圖4所示。

圖4 模糊推理系統整體流程Fig.4 Fuzzy reasoning system overall flow chart
為了分離不同的SD類,使用4個不同的閾值。因此,如果SD值在[0,40]的范圍內,則相應的像素被分類為SD-LOW;對于[20,80]的范圍,像素被分類為SD-MID;最后對于[60,100]的范圍,像素被分類為SD-HIGH。類似地,梯度幅值也有同樣的分類和隸屬度函數,如圖5所示。

圖5 定義分類與隸屬度函數Fig.5 Define classification and membership functions
模糊系統的輸出解釋了像素的邊緣程度。通過定義的模糊規則,該模糊系統的輸出被歸入3個類別之一:L對應的是像素較低概率屬于邊緣像素集(邊緣為黑色);M對應于中等概率(邊緣為灰色);H對應于高概率(邊緣為白色)。輸出隸屬函數如圖6所示。

圖6 輸出隸屬度函數Fig.6 Output membership function
在指定輸入和輸出之后,必須設計IF-THEN規則。在表1模糊推理系統的規則中,表達了取決于IF-THEN規則的輸入和輸出關系。其中,部分模糊規則如下:
①如果(Gmag為低)和(SD為低)則(邊緣為黑色);
②如果(Gmag為低)和(SD為中等)則(邊緣為黑色);
③如果(Gmag為低)和(SD為高)則(邊緣為灰色);
……

表1 模糊推理系統的規則Tab.1 Rule of the fuzzy decision system
為分析此前研究的邊緣檢測算法與其他算法的區別,使用MatLab 2016開發了一種邊緣檢測算法集成模擬器。模擬器的GUI界面如圖7所示。該模擬器可以使用多種邊緣檢測算法,如Canny,Sobel等,以便準確對比不同算法之間的性能差異。

圖7 模擬器的GUI界面Fig.7 GUI interface of simulator
在MatLab環境下對該算法進行仿真,將其應用于多幅測試圖像(青椒、人物和建筑物),并與Canny,Sobel和Roberts等其他邊緣檢測方法進行比較,如圖 8 所示。 其中,圖 8(a)為原始圖像;圖 8(b)—(g)分別為Canny,Sobel,Prewitt,Roberts,Laplacian及模糊梯度標準差等算法的仿真結果。


圖8 邊緣檢測仿真結果Fig.8 Simulation results of edge detection
在不同的場景中,與傳統的邊緣檢測方法進行對比可以發現,傳統的檢測方法存在噪點像素、邊緣像素不完整、不清晰等問題;而所提出的算法能夠檢測到更清晰和完整的邊緣像素,并能盡可能的還原出原始圖像場景,表現出了該算法的穩定性和優越性。
所提出新的基于模糊的邊緣檢測算法,在原有邊緣檢測方法的基礎上,計算每個像素的梯度和標準差,并將其作為模糊系統的輸入。模糊系統包括適當定義的隸屬函數和模糊規則,將像素劃分為邊緣或非邊緣。試驗結果表明,與Sobel,Robert和Prewitt等其他算法相比,所提取的邊緣具有更高的質量和優越性。在該算法中,為了取得較好的效果,對一些參數和閾值進行了試驗設置,而這些值的自動確定尚待進一步研究。利用不同的輸入、不同的模糊隸屬函數和規則等方法來提高模糊系統的性能,也是后續工作需要研究的問題。