趙子潤(rùn),高保祿,郭云云,田 力
(太原理工大學(xué) 軟件學(xué)院,太原 030024)
邊緣檢測(cè)[1-2]是圖像處理的基本操作,邊緣檢測(cè)的質(zhì)量直接決定高級(jí)圖像處理的性能。在過去十幾年中,已經(jīng)提出了數(shù)百種用于數(shù)字圖像中的邊緣檢測(cè)的方法。根據(jù)邊緣檢測(cè)器所基于的原理,可以將其分類為基于分化的方法[3]、統(tǒng)計(jì)方法[4]、機(jī)器學(xué)習(xí)方法[5]、主動(dòng)輪廓法[6]、多尺度方法[7-8],以及各向異性擴(kuò)散方法[9-10]等。Canny算法[11]相比于其他的邊緣檢測(cè)算法具有較高的性能。但是經(jīng)典算法采用線性的高斯濾波器對(duì)圖像進(jìn)行平滑,并從整體上對(duì)圖像進(jìn)行模糊,沒有考慮像素間的相似程度,使得去噪效果不好且精度下降,同時(shí)對(duì)雙閾值的選取是依據(jù)人的經(jīng)驗(yàn)預(yù)先確定,導(dǎo)致檢測(cè)結(jié)果丟失邊緣或者檢測(cè)出虛假邊緣。
針對(duì)Canny算法存在的問題,研究者提出了許多的改進(jìn)算法。文獻(xiàn)[12]提出基于雙邊濾波的Canny算法,該算法同時(shí)考慮了圖像的空間信息和灰度信息,提升了低濃度含噪圖像的邊緣檢測(cè)效果,但對(duì)于較高濃度含噪圖像的檢測(cè)效果不佳。文獻(xiàn)[13]采用了預(yù)定義尺度的各向同性高斯核對(duì)Canny算法進(jìn)行優(yōu)化,但該算法產(chǎn)生了邊緣檢測(cè)和定位精度之間的二重性,導(dǎo)致噪聲無法被有效去除。文獻(xiàn)[14]提出基于偏微分方程的方法,該方法對(duì)含有低濃度噪聲圖像的邊緣檢測(cè)效果清晰,但由于平滑圖像時(shí)進(jìn)行迭代操作比較復(fù)雜,因此隨著噪聲濃度的提高,檢測(cè)到的邊緣很快變得模糊。文獻(xiàn)[15]提出了尺度不變和對(duì)比度不變的多尺度差分邊緣檢測(cè)器,噪聲被過濾為低對(duì)比度特征后能夠準(zhǔn)確地提取邊緣特征,但它只對(duì)幾種退化的真實(shí)世界圖像數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn),缺乏普適性。文獻(xiàn)[16]提出基于曲率估計(jì)的檢測(cè)算法,在小尺度高斯核的Canny算法中引進(jìn)曲度算子對(duì)圖像卷積,然后再利用大尺度高斯核對(duì)卷積圖像進(jìn)行修正,但兩次計(jì)算仍然采用預(yù)定義尺度的高斯濾波器,無法適應(yīng)圖像本身的特征,導(dǎo)致一些噪聲不能有效地剔除。
綜上所述,本文提出了基于改進(jìn)Canny算法的噪聲圖像邊緣檢測(cè)方法,通過構(gòu)建自適應(yīng)高斯濾波器改進(jìn)了曲度算子,使圖像的局部平滑效果達(dá)到最佳,得到優(yōu)化的二值邊緣圖;在雙閾值選取上,基于最大類間方差法,充分考慮圖像的灰度信息與梯度信息構(gòu)造了灰度梯度映射函數(shù),獲得最佳雙閾值,進(jìn)行雙閾值檢測(cè)以及邊緣連接。實(shí)驗(yàn)結(jié)果表明,該算法在有效去噪的同時(shí),所提取的邊緣更加清晰準(zhǔn)確,并且具有自適應(yīng)性強(qiáng)和算法效率高的優(yōu)點(diǎn)。
傳統(tǒng)Canny算法的實(shí)現(xiàn)包括以下4個(gè)步驟:1)對(duì)圖像進(jìn)行高斯平滑濾波;2)對(duì)平滑后的圖像I(x,y)計(jì)算梯度強(qiáng)度和方向;3)使用非極大值抑制操作,保留鄰域內(nèi)最大梯度強(qiáng)度值,且對(duì)其他梯度強(qiáng)度值進(jìn)行抑制。抑制結(jié)果為M;4)使用高低雙閥值(高閥值Thmax和低閥值Thmin)檢測(cè)邊緣像素。
鄭子華等人[16]提出基于曲率估計(jì)的 Canny 邊緣檢測(cè)算法(簡(jiǎn)稱曲率估計(jì)算法),該算法中定義了邊緣曲度算子CURV,算法的處理過程如下:
1)計(jì)算高斯濾波函數(shù),如式(1)所示,取σ=2,得到原始圖像邊緣圖,記為Kmax。
(1)
2)取σ=1,得到原始圖像邊緣圖,記為Kmin。
3)對(duì)Kmin求取CURV,并利用Kmax對(duì)CURV進(jìn)行修正。
4)根據(jù)K=M-CURV得到更新后的邊緣圖K。
5)根據(jù)人工設(shè)置的雙閾值對(duì)K進(jìn)行邊緣判斷,得到邊緣檢測(cè)結(jié)果。
以上的算法流程中分別使用兩個(gè)空間尺度的高斯濾波器得到邊緣圖。但兩次計(jì)算的空間尺度系數(shù)都是根據(jù)經(jīng)驗(yàn)選擇的常用值,沒有根據(jù)圖像局部特征進(jìn)行降噪,使得降噪效果不佳,自適應(yīng)性不好。算法結(jié)果如圖1所示。
圖1 加入椒鹽噪聲的檢測(cè)結(jié)果
本文在鄭等人的基礎(chǔ)上作了兩方面的改進(jìn):1)構(gòu)建自適應(yīng)高斯濾波器,改進(jìn)了曲度算子,對(duì)噪聲圖像進(jìn)行降噪;2)基于最大類間方差法又引入了圖像的梯度信息,進(jìn)而構(gòu)造了灰度梯度映射函數(shù)獲取最佳雙閾值。
2.1.1 構(gòu)建的自適應(yīng)高斯濾波器
(2)
用當(dāng)前像素灰度值與窗口的平均值作差得到σ,計(jì)算以下3種情況的σ值。
1)當(dāng)像素點(diǎn)位于非邊緣區(qū)時(shí),篩選器窗口中的灰度值相差不大,σ值由式(3)所示:
(3)
2)當(dāng)像素點(diǎn)是圖像的邊緣時(shí),根據(jù)邊緣的連續(xù)性,篩選器窗口中至少有3個(gè)點(diǎn)屬于邊緣。設(shè)非邊緣點(diǎn)為f(x-1,y-1)。σ值由式(4)所示:
(4)
計(jì)算得到的σ值仍然是較小的,由于實(shí)際的濾波器窗口中經(jīng)常多于3個(gè)邊緣像素點(diǎn),計(jì)算后得到的σ值會(huì)更小。
3)當(dāng)像素點(diǎn)是圖像中的噪聲點(diǎn)時(shí),σ值由式(5)所示:
abs{f(x,y)-f(x-1,y-1)}
(5)
此時(shí)得到的σ值比較大。
根據(jù)式(6)和式(7)計(jì)算高斯函數(shù)在x和y方向上的一階偏導(dǎo)。
(6)
(7)
用二維的高斯函數(shù)對(duì)整個(gè)圖像濾波,并分析σ值。在非邊緣區(qū)域時(shí),σ值接近0,濾波器只做簡(jiǎn)單平滑處理;在邊緣上時(shí),σ值比較小,邊緣被識(shí)別并保留;對(duì)于噪聲像素點(diǎn),由于它是孤立的,所以σ值很大。經(jīng)過濾波后,σ值很大像素點(diǎn)音被剔除。
通過上述步驟方法實(shí)現(xiàn)自適應(yīng)的高斯濾波,能夠針對(duì)圖像本身特點(diǎn)進(jìn)行平滑和降噪。
2.1.2 計(jì)算邊緣像素的曲度算子CURV
1)梯度方向θ(x,y)對(duì)應(yīng)二值邊緣圖K中的點(diǎn)K(x,y),以K(x,y)為中心中取5×5的鄰域。
2)取x-2≤p≤x+2,y-2≤q≤y+2,遍歷5×5鄰域中的點(diǎn)K(p,q),記α(p,q)為過K(x,y)與過K(p,q)的兩切線的夾角。
當(dāng)K(p,q)=0時(shí),K(p,q)為非邊緣點(diǎn),α(p,q)=0;
當(dāng)K(p,q)=1時(shí),K(p,q)為邊緣點(diǎn),令:
θ1(p,q)=|θ(x,y)-θ(p,q)|
(8)
(9)
其中:梯度方向θ(x,y)是 Canny 算法的中間結(jié)果。
3)計(jì)算CURV(x,y)。
(10)
其中:N是K(x,y)鄰域中邊緣點(diǎn)個(gè)數(shù)。
通過基于改進(jìn)的自適應(yīng)高斯濾波器計(jì)算曲度算子,實(shí)現(xiàn)圖像的降噪工作,但在雙閾值檢測(cè)及連接邊緣的階段中,雙閾值的選取是根據(jù)經(jīng)驗(yàn)設(shè)置的,固定的雙閾值不能充分考慮每幅圖像所特有的像素特征,導(dǎo)致邊緣丟失或虛假邊緣被檢出。對(duì)此,本提出灰度梯度映射函數(shù)的雙閾值選取方法。
在雙閾值的選取上很多研究者引入了最大類間方差法[17],它是一種簡(jiǎn)單便捷的自動(dòng)閾值選取方法。但是最大類間方差法僅采用灰度均值表示閾值,這會(huì)導(dǎo)致有偏的差估計(jì)結(jié)果。而圖像梯度能很好地反映圖像的邊緣信息,因此將梯度引入最大類間方差法中,能彌補(bǔ)單一灰度信息造成的閾值偏差。
本文結(jié)合了圖像的灰度特征與梯度信息,提出基于最大類間方差法的灰度梯度映射函數(shù)獲取最佳閾值的方法。過程如下:
2.2.1 計(jì)算最大類間方差法判別式
設(shè)一幅圖像的L個(gè)灰度級(jí)[1,2,,L]。灰度級(jí)為i的像素?cái)?shù)為ni,則像素總數(shù)為N=n1+n2++nL。根據(jù)閾值t,圖像分為兩部分:背景和目標(biāo),即C0=[1,2,t]和C1=[1,2,,L]。那么每個(gè)灰度級(jí)i出現(xiàn)的概率為:
(11)
總均值為:
(12)
C0和C1的概率和均值為:
(13)
(14)
(15)
(16)
最大類間方差法判別式如下:
(17)
2.2.2 計(jì)算基于Canny算法的梯度函數(shù)
Canny算法的中間結(jié)果包含梯度值,本文用C(x,y)表示該梯度值。梯度函數(shù)由下式得到:
(18)
其中:Ri表示像素的集合Ri={(x,y)|f(x,y)=i},T(i)表示灰度值為i時(shí)對(duì)應(yīng)的平均梯度值。
2.2.3 構(gòu)造灰度梯度映射函數(shù)
兩種函數(shù)進(jìn)行指數(shù)形式的融合調(diào)節(jié)效果最明顯,在此處,即表明對(duì)邊緣的判別和檢出效果更好。
由此,本文構(gòu)造的灰度梯度映射函數(shù)如下:
J1(t)=(J(t))T(i)
(19)
2.2.4 計(jì)算最佳閾值
以此得到的最佳分割閾值為:
(20)
通過以上方法獲得的最佳閾值為高閾值,根據(jù)雙閾值判定的步驟可知,當(dāng)被判別的像素點(diǎn)梯度強(qiáng)度值大于高閥值時(shí),則確定為邊緣點(diǎn),由于這里選取的為最佳閾值,因此僅通過這一次判別,便可在最大范圍內(nèi)判定大部分的邊緣點(diǎn)。高低閾值的設(shè)定,兩者通常為二倍或三倍的關(guān)系,獲得的最佳分割閾值已使大部分邊緣點(diǎn)被確定,因此本文采用二倍關(guān)系選取低閾值。
該算法完整的步驟描述如下:
1)首先根據(jù)第2.1節(jié)自適應(yīng)高斯濾波器運(yùn)算得到優(yōu)化的二值邊緣圖K,并保留梯度值的計(jì)算結(jié)果C(x,y)以及非極大值抑制后的計(jì)算結(jié)果M;
2)根據(jù)第2.1節(jié)改進(jìn)的曲度算子的計(jì)算步驟,對(duì)K求取CURV;
3)更新K值,K=M-CURV;
4)根據(jù)第2.2節(jié)中算法步驟構(gòu)造灰度梯度映射函數(shù),設(shè)置雙閾值;
5)對(duì)K進(jìn)行判斷;
6)進(jìn)行邊緣連接,完成檢測(cè)。
本文詳細(xì)的算法步驟如圖2所示。
圖2 本文算法步驟圖
本文進(jìn)行實(shí)驗(yàn)的平臺(tái)配置為:Intel 2.6 GHz CPU、4 GB 內(nèi)存、Microsoft Windows7 64位操作系統(tǒng),在 Matlab R2017a 軟件下進(jìn)行實(shí)驗(yàn)。選取了BSDS500自然圖像數(shù)據(jù)集,本文在該數(shù)據(jù)集上進(jìn)行了廣泛的實(shí)驗(yàn)和評(píng)估,從定性和定量?jī)蓚€(gè)方面分析對(duì)比了本文算法、傳統(tǒng)Canny算法以及曲率估計(jì)算法的性能。實(shí)驗(yàn)結(jié)果如下。
3.1.1 不同類型噪聲環(huán)境下的邊緣檢測(cè)
圖3中選取了3幅圖片,分別對(duì)原圖像3(a)加入濃度較低的高斯白噪聲,所得噪聲圖如圖3(b)所示。固定空間尺度系數(shù)σ=1,通過傳統(tǒng)Canny算法對(duì)噪聲圖的邊緣檢測(cè)結(jié)果如圖3(c)所示,通過本文的改進(jìn)算法對(duì)噪聲圖進(jìn)行邊緣檢測(cè)的結(jié)果如圖3(d)所示。
圖3 加高斯白噪聲的實(shí)驗(yàn)結(jié)果比較
圖4中選取相同的3幅圖片,分別對(duì)原圖像4(a)加入濃度較低的椒鹽噪聲,所得噪聲圖如圖4(b)所示。固定空間尺度系數(shù)σ=1,通過傳統(tǒng)Canny算法對(duì)噪聲圖的邊緣檢測(cè)結(jié)果如圖4(c)所示,通過本文的改進(jìn)算法對(duì)噪聲圖進(jìn)行邊緣檢測(cè)的結(jié)果如圖4(d)所示。
圖4 加椒鹽噪聲的實(shí)驗(yàn)結(jié)果比較
從圖3和圖4邊緣檢測(cè)結(jié)果觀察得出,本文的改進(jìn)算法對(duì)高斯白噪聲圖和椒鹽噪聲圖,均檢測(cè)出清晰連貫的邊緣,很好地抑制了噪聲。例如圖3(d)和圖4(d)中人物面部的眼窩、嘴巴和手指部分的邊緣被完整保留,建筑物的棱角和圓頂部分的邊緣清晰;而傳統(tǒng)Canny算法對(duì)高斯白噪聲圖和椒鹽噪聲圖的處理,噪聲與圖像的邊緣輪廓混合到一起,邊緣被噪聲淹沒,無法確認(rèn)有效的邊緣。綜上所述,本文算法性能極大的優(yōu)于傳統(tǒng)Canny算法。
3.1.2 同一噪聲在不同濃度下的邊緣檢測(cè)
為進(jìn)一步驗(yàn)證在較高濃度噪聲下本文算法的優(yōu)勢(shì),實(shí)驗(yàn)中選擇椒鹽噪聲,然后設(shè)置不同的濃度加入原圖像,獲得噪聲圖。與曲率估計(jì)算法比較,實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 濃度為0.02椒鹽噪聲環(huán)境下的實(shí)驗(yàn)結(jié)果比較
圖6 濃度為0.1椒鹽噪聲環(huán)境下的實(shí)驗(yàn)結(jié)果比較
圖7 濃度為0.2椒鹽噪聲環(huán)境下的實(shí)驗(yàn)結(jié)果比較
圖5、圖6和圖7依次對(duì)人物圖片加入不同濃度的椒鹽噪聲后,曲率估計(jì)算法與本文算法的實(shí)驗(yàn)結(jié)果比較。圖5(b)為加入濃度0.02的噪聲圖,曲率估計(jì)算法的邊緣檢測(cè)如圖5(c)所示,本文算法的邊緣檢測(cè)如圖5(d)所示。兩者的檢測(cè)結(jié)果均比較理想,但是,曲率估計(jì)算法會(huì)檢測(cè)出錯(cuò)誤的邊緣細(xì)節(jié)信息,并且檢測(cè)出來的線條較粗、不平滑;圖6(b)為加入濃度0.1的噪聲圖,曲率估計(jì)算法檢測(cè)結(jié)果如圖6(c)所示,開始出現(xiàn)了變異,特別是人物袖口和肩部出現(xiàn)噪聲點(diǎn),影響了正確邊緣的檢測(cè),本文算法的檢測(cè)結(jié)果如圖6(d)所示,邊緣的檢測(cè)依舊保持穩(wěn)定,沒有出現(xiàn)噪聲干擾正確邊緣的情況;圖7(b)為加入濃度0.2的噪聲圖,由于噪聲濃度高,曲率估計(jì)算法的檢測(cè)結(jié)果如圖7(c)所示,噪聲點(diǎn)分布密集,與正確邊緣混合在一起,導(dǎo)致邊緣淹沒在噪聲中,很難辨認(rèn)有效邊緣,而本文算法的檢測(cè)結(jié)果如圖7(d)所示,邊緣仍然比較連貫,盡管有噪聲被標(biāo)出,但沒有影響正確邊緣的確認(rèn)。
3.2.1 均方誤差和圖像峰值信噪比的定義
對(duì)于圖像質(zhì)量的量化評(píng)價(jià)指標(biāo)通常是均方誤差(MSE,mean squared error)MSE和峰值信噪比(PSNR,peak signal to noise ratio)PSNR。MSE和PSNR均表示兩幅圖像的相似程度。在本文中MSE的值越小,表示對(duì)噪聲圖像的降噪效果越好。MSE的定義如下:
(21)
PSNR的定義如下:
(22)
3.2.2 各算法MSE值和PSNR值的比較
表1是傳統(tǒng)Canny算法、曲率估計(jì)算法與本文算法的MSE值、PSNR值比較。
表1 各算法檢測(cè)結(jié)果的MSE值、PSNR值比較
從表1中得出,本文算法在三種情況下都有最小的MSE值和最大的PSNR值,相比于曲率估計(jì)的算法,PSNR值平均提高了1.9%,MSE值平均降低了1.6%。
本文算法構(gòu)造自適應(yīng)高斯濾波器改進(jìn)了曲度算子,得到了優(yōu)化的邊緣圖,在雙閾值的選取上,基于最大類間方差法構(gòu)建了灰度梯度映射函數(shù),確定了最佳的雙閾值。比曲率估計(jì)算法中固定的空間尺度系數(shù)和人工選取的雙閾值能更好地適應(yīng)圖像本身特征,因此本文算法降低了MSE值,提高了PSNR值。
3.2.3 各算法運(yùn)行時(shí)間的對(duì)比
表2對(duì)比了傳統(tǒng)Canny算法、曲率估計(jì)算法與本文算法的運(yùn)行時(shí)間。分析表2得到,本文算法在0.02高斯白噪聲、0.02椒鹽噪聲、0.1椒鹽噪聲和0.2椒鹽噪聲4種情況下運(yùn)行的時(shí)間均比曲率估計(jì)算法運(yùn)行時(shí)間短。由于曲率估計(jì)算法在降噪后,又采用大尺度空間系數(shù)的計(jì)算修正小尺度下的結(jié)果,兩次計(jì)算使得運(yùn)行時(shí)間增長(zhǎng)一倍多。由于本文對(duì)雙閾值選取的過程也進(jìn)行了改進(jìn),而其中含有迭代計(jì)算,使得本文算法總運(yùn)行時(shí)間略長(zhǎng)于傳統(tǒng)Canny算法,兩者基本接近,能很好地滿足有實(shí)時(shí)性要求的應(yīng)用場(chǎng)景。綜上所述,定量分析的結(jié)果與定性分析結(jié)果一致,充分表明本文算法的優(yōu)越性。
表2 3種算法在不同情況下的運(yùn)行時(shí)間
本文針對(duì)傳統(tǒng)Canny邊緣檢測(cè)算法對(duì)噪聲圖像的去噪效果不佳,以及雙閾值需要預(yù)先設(shè)定的問題,提出了一種基于改進(jìn)Canny算法的噪聲圖像的邊緣檢測(cè)。首先構(gòu)建自適應(yīng)的高斯濾波器對(duì)曲度算子進(jìn)行改進(jìn),得到優(yōu)化的二值邊緣圖;然后在雙閾值選取上,基于最大類間方差法構(gòu)建了灰度梯度映射函數(shù),確定了最佳的雙閾值;最后對(duì)二值邊緣圖進(jìn)行雙閾值檢測(cè)和邊緣連接,從而實(shí)現(xiàn)對(duì)圖像的邊緣特征提取。
從定性和定量?jī)煞矫娴膶?duì)比實(shí)驗(yàn)表明,本文算法很好地解決了傳統(tǒng)Canny算法對(duì)噪聲圖像的去噪效果不佳,以及固定的雙閾值的問題,保存了連續(xù)完整的輪廓邊緣,算法的運(yùn)行效率也較高。然而,本文算法也存在一些不足,在最大類間方差法的判別式中指數(shù)參數(shù)α的確定是一個(gè)問題,它的選取還可以進(jìn)行更具體化的改進(jìn);另一個(gè)是針對(duì)邊緣提取的細(xì)節(jié)部分,比如圖像中角點(diǎn)部分的連接效果不佳,存在斷裂。今后的工作將在此基礎(chǔ)上進(jìn)一步研究解決這兩個(gè)問題。