曹洪運,趙宇峰,高佳佳
(1.西安工業(yè)大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,西安 710021;2.西安工業(yè)大學(xué) 電子信息工程學(xué)院,西安 710021)
計算機(jī)視覺,旨在通過圖像和視頻數(shù)據(jù)的識別、跟蹤和3D重建等任務(wù)的算法,增強(qiáng)及其理解視覺世界的能力。這些任務(wù)非常復(fù)雜,通常不足以簡單地將原始圖像視為訓(xùn)練示例并應(yīng)用最新的機(jī)器學(xué)習(xí)算法。在此,主要著重于提取這種結(jié)構(gòu),將圖像轉(zhuǎn)換為中間表示,從而為模塊的高級任務(wù)(如識別)提供更優(yōu)越的輸入。本著這一精神,首先關(guān)注輪廓邊緣的檢測,它一直是計算機(jī)視覺中的一個基本問題。
目前,經(jīng)典的圖像邊緣檢測方法有Sobel算子、Prewitt算子、Roberts算子、Laplacian 算子、LoG 算子、Canny算子等,這些方法大都是利用圖像梯度的極大值或二階導(dǎo)數(shù)過零點來檢測圖像邊緣[1]。利用圖像和微分算子模板進(jìn)行卷積來完成。然而,經(jīng)典的圖像邊緣檢測算法抗噪性能比較差,在檢測圖像邊緣的同時又加強(qiáng)了噪聲。故在此提出基于模糊梯度標(biāo)準(zhǔn)差的方法用于檢測圖像邊緣。
基于梯度的一階邊緣算法在圖像處理領(lǐng)域經(jīng)常其在灰度突變處的導(dǎo)數(shù)值也比較大,通過灰度導(dǎo)數(shù)的大小來表示灰度變化,從而進(jìn)行邊緣的檢測。根據(jù)模板的大小和權(quán)值的不同,出現(xiàn)了很多梯度算子,Roberts算子[2-3],是一種最簡單的2×2模板的梯度算子,由于對于噪聲較敏感,常常會出現(xiàn)孤立點。隨后,由J.Priwit和Sobel分別提出了Priwit算子[4]與Sobel算子[5-6]。這2種算子的方法一樣,均采用2個核對圖像中每個點的卷積最大值作為輸出。Sobel算子比較重視模板中心像素點附近并給其較大的權(quán)重;Priwit模板沒有把重心放在接近模板中心的像素點。因此,噪聲結(jié)構(gòu)對這2種算子的影響很大:當(dāng)圖像的噪聲分布均勻時,Sobel算子效果比較好;當(dāng)噪聲靠近邊緣時,Priwit算子效果比較好。
由于一階導(dǎo)數(shù)的局部有最大值時,對圖像進(jìn)行二階微分則會形成1個過零點,并且在零點兩邊產(chǎn)生1個波峰和波谷。所以,在圖像邊緣點處有一階導(dǎo)數(shù)的峰值時,對應(yīng)1個二階導(dǎo)數(shù)的過零點,于是提出了二階導(dǎo)數(shù)邊緣檢測算子。Laplace算子[6]是經(jīng)典的二階導(dǎo)數(shù)算子,它是各向同性的,計算量較小,但對噪聲會比較敏感,并且丟失了邊緣的方向信息。因此,1980年文獻(xiàn)[7]在Laplacian算子的基礎(chǔ)上提出了LoG算子(高斯拉普拉斯算子)。該方法先利用高斯函數(shù)平滑圖像后,再用Laplacian算子檢測邊緣,從而降低了圖像的噪聲,實現(xiàn)了邊緣提取前對圖像的預(yù)處理。
Canny算子[8]是Canny算法與簡單的基于拉普拉斯算法的。不同點之一是在Canny算法中,首先利用高斯函數(shù)對圖像進(jìn)行卷積以除去噪聲,計算每個像素點的方向和梯度幅值,然后對圖像的梯度幅值進(jìn)行非極大值抑制,以達(dá)到增強(qiáng)邊緣的效果,最后將采用雙閾值確定圖像邊緣,最終得到邊緣圖像。Canny邊緣檢測相比普通的梯度算法大大抑制了噪聲引起的偽邊緣,而且是邊緣細(xì)化,易于后續(xù)處理。隨后,文獻(xiàn)[9]提出了一種基于改進(jìn)的Canny邊緣檢測算法。使用平滑濾波代替原本的高斯濾波算法,銳化了圖像邊緣,但是,同時采用了4個方向上的一階梯度模板,提高了算法復(fù)雜度,運行效率降低。
在此以之前算子為基礎(chǔ),提出模糊梯度標(biāo)準(zhǔn)差邊緣檢測算法,把圖像的梯度和標(biāo)準(zhǔn)差作為模糊系統(tǒng)的輸入;然后模糊系統(tǒng)根據(jù)模糊規(guī)則決定每個像素適當(dāng)?shù)拈撝?,從而得到清晰的邊緣輪廓信息?/p>
通過像素值的梯度和標(biāo)準(zhǔn)差這2種不同的方法分別提取邊緣;基于模糊邏輯,決定每個像素是否為邊緣。如果使用每種方法,可以獲得有問題的結(jié)果,它可能導(dǎo)致將邊緣像素識別為非邊緣像素,反之亦然。
盡管已經(jīng)有了不同的邊緣檢測方法,但是其中許多方法仍是基于梯度的。
第1種方法梯度值由Sobel算子計算灰度圖像分別到x和y方向的梯度幅值(Gmag),然后梯度值大于閾值的像素是邊緣候選者。
以示例圖像為基礎(chǔ),利用Sobel梯度算子分別計算灰度圖像的方向?qū)?shù),它表明了圖像的灰度在x方向和y方向上有多大的變化,并可以在圖像灰度的水平和垂直分量上通過編碼顯示。通過計算圖像的方向變化,利用上述公式求出圖像的梯度幅值和梯度方向,如圖1所示。
通過組合圖像的偏導(dǎo)數(shù)x和y方向,圖像的梯度向量為
使用梯度向量,梯度幅值為
圖1 圖像梯度Fig.1 Image gradient
第2種方法基于灰度標(biāo)準(zhǔn)差SD(standard deviation),即通過相鄰鄰域像素上的3×3掩模(如圖2所示)來計算每個像素的SD。當(dāng)該像素的標(biāo)準(zhǔn)差大于閾值時,則被記為邊緣候選者,如圖3所示。
然后,找到每個像素在輔助鄰域上的標(biāo)準(zhǔn)差,如圖2所示。
圖2 使用掩模計算標(biāo)準(zhǔn)差Fig.2 Calculate the standard deviation using a mask
在示例圖像中使用標(biāo)準(zhǔn)差,如圖3所示。
圖3 圖像標(biāo)準(zhǔn)差Fig.3 Image standard deviation
在前2個步驟中,定義模糊推理系統(tǒng)的輸入并準(zhǔn)備創(chuàng)建模糊集、成員函數(shù)、規(guī)則和系統(tǒng)的輸出。作為步驟3的輸入,為模糊系統(tǒng)輸入定義適當(dāng)?shù)碾`屬函數(shù)。然后,2個映射值都被分類為低、中或高類之一。使用分類值指定并應(yīng)用規(guī)則到系統(tǒng)。模糊系統(tǒng)的輸出解釋了像素的邊緣程度。通過使用模糊規(guī)則和質(zhì)心解模糊方法,該模糊系統(tǒng)的輸出被分為3類,對應(yīng)于邊緣像素的低、中、高值,模糊推理系統(tǒng)的整體流程如圖4所示。
圖4 模糊推理系統(tǒng)整體流程Fig.4 Fuzzy reasoning system overall flow chart
為了分離不同的SD類,使用4個不同的閾值。因此,如果SD值在[0,40]的范圍內(nèi),則相應(yīng)的像素被分類為SD-LOW;對于[20,80]的范圍,像素被分類為SD-MID;最后對于[60,100]的范圍,像素被分類為SD-HIGH。類似地,梯度幅值也有同樣的分類和隸屬度函數(shù),如圖5所示。
圖5 定義分類與隸屬度函數(shù)Fig.5 Define classification and membership functions
模糊系統(tǒng)的輸出解釋了像素的邊緣程度。通過定義的模糊規(guī)則,該模糊系統(tǒng)的輸出被歸入3個類別之一:L對應(yīng)的是像素較低概率屬于邊緣像素集(邊緣為黑色);M對應(yīng)于中等概率(邊緣為灰色);H對應(yīng)于高概率(邊緣為白色)。輸出隸屬函數(shù)如圖6所示。
圖6 輸出隸屬度函數(shù)Fig.6 Output membership function
在指定輸入和輸出之后,必須設(shè)計IF-THEN規(guī)則。在表1模糊推理系統(tǒng)的規(guī)則中,表達(dá)了取決于IF-THEN規(guī)則的輸入和輸出關(guān)系。其中,部分模糊規(guī)則如下:
①如果(Gmag為低)和(SD為低)則(邊緣為黑色);
②如果(Gmag為低)和(SD為中等)則(邊緣為黑色);
③如果(Gmag為低)和(SD為高)則(邊緣為灰色);
……
表1 模糊推理系統(tǒng)的規(guī)則Tab.1 Rule of the fuzzy decision system
為分析此前研究的邊緣檢測算法與其他算法的區(qū)別,使用MatLab 2016開發(fā)了一種邊緣檢測算法集成模擬器。模擬器的GUI界面如圖7所示。該模擬器可以使用多種邊緣檢測算法,如Canny,Sobel等,以便準(zhǔn)確對比不同算法之間的性能差異。
圖7 模擬器的GUI界面Fig.7 GUI interface of simulator
在MatLab環(huán)境下對該算法進(jìn)行仿真,將其應(yīng)用于多幅測試圖像(青椒、人物和建筑物),并與Canny,Sobel和Roberts等其他邊緣檢測方法進(jìn)行比較,如圖 8 所示。 其中,圖 8(a)為原始圖像;圖 8(b)—(g)分別為Canny,Sobel,Prewitt,Roberts,Laplacian及模糊梯度標(biāo)準(zhǔn)差等算法的仿真結(jié)果。
圖8 邊緣檢測仿真結(jié)果Fig.8 Simulation results of edge detection
在不同的場景中,與傳統(tǒng)的邊緣檢測方法進(jìn)行對比可以發(fā)現(xiàn),傳統(tǒng)的檢測方法存在噪點像素、邊緣像素不完整、不清晰等問題;而所提出的算法能夠檢測到更清晰和完整的邊緣像素,并能盡可能的還原出原始圖像場景,表現(xiàn)出了該算法的穩(wěn)定性和優(yōu)越性。
所提出新的基于模糊的邊緣檢測算法,在原有邊緣檢測方法的基礎(chǔ)上,計算每個像素的梯度和標(biāo)準(zhǔn)差,并將其作為模糊系統(tǒng)的輸入。模糊系統(tǒng)包括適當(dāng)定義的隸屬函數(shù)和模糊規(guī)則,將像素劃分為邊緣或非邊緣。試驗結(jié)果表明,與Sobel,Robert和Prewitt等其他算法相比,所提取的邊緣具有更高的質(zhì)量和優(yōu)越性。在該算法中,為了取得較好的效果,對一些參數(shù)和閾值進(jìn)行了試驗設(shè)置,而這些值的自動確定尚待進(jìn)一步研究。利用不同的輸入、不同的模糊隸屬函數(shù)和規(guī)則等方法來提高模糊系統(tǒng)的性能,也是后續(xù)工作需要研究的問題。