汪宗洋 王煜 朱碩
(1. 江蘇集萃深度感知技術(shù)研究所有限公司 無(wú)錫 214000;2.南京信息工程大學(xué)電子與信息工程學(xué)院,南京 210044;3. 無(wú)錫學(xué)院電子信息工程學(xué)院,無(wú)錫 214105)
邊緣檢測(cè)是圖像處理、計(jì)算機(jī)視覺(jué)等領(lǐng)域中的基礎(chǔ)性研究問(wèn)題之一,主要通過(guò)提取圖像中梯度變化較大的像素點(diǎn)來(lái)確定圖像邊緣,并將亮度變化由亮變暗、由暗變亮的點(diǎn)集標(biāo)識(shí)出來(lái),最終形成輪廓。作為數(shù)字圖像處理技術(shù)中最基本的研究?jī)?nèi)容,圖像邊緣檢測(cè)技術(shù)可以更加直觀地展示物體邊緣或結(jié)構(gòu),在圖像分割、工業(yè)、醫(yī)學(xué)以及智能交通等方面有著廣泛應(yīng)用。
隨著計(jì)算機(jī)視覺(jué)的不斷發(fā)展與進(jìn)步,邊緣檢測(cè)算法不斷被優(yōu)化與更新。目前,邊緣檢測(cè)算法主要分為一階微分算法(包括Sobel算法、Roberts算法、Prewitt算法)和二階微分算法(包括Laplacian算法、LOG算法、Canny算法等)。不同邊緣檢測(cè)算法的出現(xiàn),使圖像邊緣檢測(cè)技術(shù)得到了更好的發(fā)展。其中Sobel、Roberts等算法雖形式靈活、檢測(cè)精度高,處理被椒鹽噪聲污染過(guò)的圖像時(shí),對(duì)灰度變化明顯且受噪聲影響較小的圖像處理效果較好,但在處理邊緣復(fù)雜、噪聲較大的圖像時(shí),有時(shí)會(huì)將噪聲和邊緣上的信息一起過(guò)濾掉,從而遺失重要的邊緣信息,使得圖像處理效果并不理想,在實(shí)際應(yīng)用中仍存在一定局限性。
基于上述問(wèn)題,Canny于1986年提出了Canny算法,Canny算法是多級(jí)邊緣檢測(cè)算法,可以根據(jù)實(shí)際需求改變雙閾值從而應(yīng)用于不同場(chǎng)景,同時(shí)不易受到噪聲的干擾,也能夠檢測(cè)弱邊緣。相較于其他邊緣檢測(cè)算法,傳統(tǒng)Canny算法因其顯著的優(yōu)勢(shì)被普遍應(yīng)用,并且隨著圖像邊緣檢測(cè)技術(shù)的發(fā)展,諸多學(xué)者在傳統(tǒng)Canny算法的基礎(chǔ)上,針對(duì)使用過(guò)程中因?yàn)V波、檢測(cè)、定位等因素導(dǎo)致邊緣檢測(cè)精度降低的情況,開(kāi)展了Canny算法的改進(jìn)研究。Canny算法經(jīng)有效改進(jìn),可快速、高效地完成對(duì)圖像邊緣位置的準(zhǔn)確識(shí)別,有利于開(kāi)展圖像邊緣檢測(cè)工作,使該技術(shù)在工業(yè)制造、工件分揀、醫(yī)學(xué)圖像融合、通信及地質(zhì)圖像領(lǐng)域中得到廣泛應(yīng)用。
傳統(tǒng)Canny算法的邊緣檢測(cè)步驟如圖1所示。首先選擇高斯濾波器對(duì)待處理圖像進(jìn)行平滑濾波,利用一階偏導(dǎo)有限差分求得每個(gè)像素點(diǎn)的梯度幅值與方向,然后采用非極大值抑制技術(shù)對(duì)平滑后的圖像進(jìn)行處理,最后采用雙閾值方法檢測(cè)和連接邊緣,獲得最終的邊緣圖像。
圖1 傳統(tǒng)Canny算法的檢測(cè)步驟
(1)高斯濾波去噪
使用高斯濾波器濾除圖像噪聲,選取的高斯函數(shù)表達(dá)式為:
(1)
平滑后的圖像表達(dá)式M(x,y)為:
M(x,y)=G(x,y)×f(x,y)
(2)
其中(x,y)是坐標(biāo),σ是標(biāo)準(zhǔn)差,f(x,y)表示原圖像的函數(shù)。高斯卷積核的大小將影響Canny檢測(cè)器的性能,卷積核尺寸越大,檢測(cè)器對(duì)噪聲的敏感度越低,但是邊緣檢測(cè)的定位誤差也將略有增加。
(2)圖像梯度計(jì)算
計(jì)算平滑后的數(shù)據(jù)陣列M(x,y)的梯度幅值和梯度方向時(shí),傳統(tǒng)Canny算法通常采用2×2領(lǐng)域一階偏導(dǎo)有限差分。其中,x方向和y方向偏導(dǎo)數(shù)的兩個(gè)陣列Ex和Ey分別為:
(3)
(4)
(5)
(6)
(3)非極大值抑制
非極大值抑制用于保留梯度方向上的局部最大值,抑制其他像素點(diǎn)。具體實(shí)現(xiàn)方法是計(jì)算每個(gè)像素點(diǎn)的梯度方向,將其梯度方向量化為四個(gè)區(qū)間,然后比較該像素點(diǎn)在梯度方向上與其兩側(cè)像素點(diǎn)的梯度幅值,如果該像素點(diǎn)的梯度幅值最大,則保留該像素點(diǎn),否則將其梯度值抑制為0。此種方式可以將邊緣細(xì)化和清晰化。
(4)高低閾值的選取
上述三個(gè)步驟之后,還需通過(guò)選擇高低閾值來(lái)減少假陽(yáng)性的數(shù)量,將像素點(diǎn)按照梯度幅值的大小分為強(qiáng)邊緣、弱邊緣和非邊緣3類,然后根據(jù)設(shè)定的高低閾值對(duì)弱邊緣進(jìn)行處理。其中高低閾值的選擇需要根據(jù)輸入圖像具體分析,若弱邊緣與強(qiáng)邊緣相連,則將其歸為強(qiáng)邊緣,否則將其抑制。
圖2為傳統(tǒng)Canny算法運(yùn)行各個(gè)步驟后的結(jié)果,圖2(a)為輸入原圖(來(lái)源于邊緣檢測(cè)公用測(cè)試圖像);圖2(b)為灰度化后的運(yùn)行結(jié)果;圖2(c)為高斯濾波后的運(yùn)行結(jié)果;圖2(d)為梯度計(jì)算后的運(yùn)行結(jié)果;圖2(e)為非極大值抑制后的運(yùn)行結(jié)果;圖2(f)為設(shè)定雙閾值后的運(yùn)行結(jié)果,即最終輸出效果圖。其中,圖2(c)與圖2(b)相比明顯變得模糊,這是由于高斯濾波造成的過(guò)度平滑現(xiàn)象。
圖2 傳統(tǒng)Canny算法的運(yùn)行結(jié)果
Canny算法具有信噪比高、定位精度高以及單邊緣響應(yīng)能力強(qiáng)等優(yōu)點(diǎn),并且處理過(guò)程簡(jiǎn)單、時(shí)間復(fù)雜度低,但也存在一些不足之處,例如高斯濾波會(huì)對(duì)圖像過(guò)度平滑,不能完全去除噪聲;高低閾值需要人為設(shè)置,自適應(yīng)性較差。眾多研究機(jī)構(gòu)針對(duì)這些問(wèn)題以及實(shí)際的測(cè)試需求對(duì)算法進(jìn)行了相應(yīng)的改進(jìn)。
目前,改進(jìn)Canny算法的研究主要集中在兩個(gè)方面。一方面是在原有Canny算法基礎(chǔ)上增加預(yù)處理或后續(xù)處理;另一方面是對(duì)Canny算法的濾波方式或高低閾值選擇與設(shè)定方法進(jìn)行改進(jìn)、優(yōu)化。
1.2.1 增加預(yù)處理或后續(xù)處理
在采用傳統(tǒng)邊緣檢測(cè)之前,先對(duì)圖像進(jìn)行預(yù)處理,這種方式會(huì)在一定程度上提高檢測(cè)效率。例如,商景輝[1]采用的直方圖均衡化方法,增大了圖片之間的對(duì)比度;王弘毅[2]等提出利用數(shù)學(xué)形態(tài)學(xué)進(jìn)行預(yù)處理,不僅保留了邊緣信息,而且抑制了噪聲,但邊緣的細(xì)節(jié)信息還有待改進(jìn);石煒[3]等提出的預(yù)處理方式是將二值化的圖像進(jìn)行形態(tài)學(xué)閉運(yùn)算處理,增強(qiáng)了改進(jìn)算法的抗噪性,并準(zhǔn)確保留了圖像的邊緣特征。
傳統(tǒng)Canny算法進(jìn)行圖像預(yù)處理時(shí),顏色空間多采用RGB格式。而徐衍魯[4]等提出將圖像的顏色空間從RGB格式轉(zhuǎn)換到HSV格式,并將V分量圖像提取出來(lái),然后用雙邊濾波對(duì)預(yù)處理后的圖像進(jìn)行濾波去噪。
除增加預(yù)處理外,一些研究人員在完成邊緣檢測(cè)后,對(duì)結(jié)果進(jìn)行了后續(xù)處理。卞桂平[5]等運(yùn)用復(fù)合形態(tài)學(xué)濾波取代高斯濾波,最后運(yùn)用數(shù)學(xué)形態(tài)學(xué)對(duì)邊緣進(jìn)行細(xì)化。姜恒[6]等利用分區(qū)思想將圖像劃分為若干相互重疊的區(qū)域,最后將Canny算法處理后的子區(qū)域拼成一幅完整圖像。改進(jìn)Canny算法雖然提高了抗噪性,但是形態(tài)學(xué)算法的處理速度較慢。
1.2.2 針對(duì)圖像濾波去噪的改進(jìn)
由于傳統(tǒng)Canny算法的高斯濾波并不能將噪聲全部濾除,針對(duì)此問(wèn)題,陸華才[7]等提出利用混合濾波器代替高斯濾波器,并通過(guò)最大類間方差法(即Otsu算法)獲得高低閾值,再利用隔幀處理的四幀差分法對(duì)高斯混合模型進(jìn)行改進(jìn),將其應(yīng)用于運(yùn)動(dòng)目標(biāo)的檢測(cè);張加朋[8]等使用開(kāi)關(guān)中值濾波代替高斯濾波,同時(shí)采用K均值聚類(K-means)算法與Otsu算法結(jié)合的方法來(lái)獲得自適應(yīng)的高低閾值,最后采用面積形態(tài)學(xué)方法去除干擾邊緣,改進(jìn)后的方法去除椒鹽噪聲的效果更明顯,但是算法處理時(shí)間過(guò)長(zhǎng)。段鎖林[9]等提出采用改進(jìn)的自適應(yīng)中值濾波,并結(jié)合改進(jìn)的中值濾波(Improved Median Filter,IMF)算法對(duì)高斯噪聲進(jìn)行濾波,利用8鄰域范圍內(nèi)的數(shù)據(jù)計(jì)算梯度幅值和方向,最后利用二分法查找原理改進(jìn)Otsu算法來(lái)計(jì)算高低閾值,取得了較好的檢測(cè)效果。為了達(dá)到高效率、高精度的目的,趙靜[10]等提出使用改進(jìn)的快速中值濾波算法代替經(jīng)典的高斯濾波。杜緒偉[11]等用雙邊濾波代替高斯濾波,改進(jìn)后的Canny算法減少了假邊緣數(shù)量,提高了去噪效果。
張鵬帆[12]等提出用K-近鄰均值濾波代替高斯濾波,并用Scharr算法代替Sobel算法進(jìn)行梯度計(jì)算,最后使用Otsu算法計(jì)算雙閾值。田貝樂(lè)[13]等提出了一種改進(jìn)的小波變換法(Wavelet Transform,WT)對(duì)圖像進(jìn)行濾波,此算法有效消除了噪聲,能夠保留更多的原圖像信息;巨志勇[14]等提出將梯度倒數(shù)加權(quán)法進(jìn)行改進(jìn),并對(duì)圖像進(jìn)行濾波去噪,可以很好地去除噪聲,同時(shí)極大提升了邊緣細(xì)節(jié),但是面對(duì)復(fù)雜圖像的邊緣檢測(cè)會(huì)有連接不佳的情況。為改善上述情況并有效提高檢測(cè)精度,程聃[15]等還提出使用結(jié)合小波變換的同態(tài)濾波算法對(duì)圖像進(jìn)行處理。
1.2.3 針對(duì)高低閾值設(shè)置方法的改進(jìn)
由于高低閾值的設(shè)定需要依靠人工選取,邊緣檢測(cè)算法在確定高低閾值方面自適應(yīng)性差,劉宇涵[16]等首先采用自適應(yīng)模糊中值濾波對(duì)圖像濾波,改進(jìn)8方向的梯度幅值計(jì)算方法,最后將自適應(yīng)迭代法閾值與Otsu算法結(jié)合來(lái)確定雙閾值,改進(jìn)后的方法有效保留了圖像的邊緣細(xì)節(jié)。李慶忠[17]等利用改進(jìn)梯度倒數(shù)加權(quán)濾波的方法濾除圖像噪聲,最后采用分塊自適應(yīng)雙閾值對(duì)高低閾值連接進(jìn)行改進(jìn),此算法能夠提取傳統(tǒng)算法無(wú)法檢測(cè)的弱邊緣,具有較高的邊緣檢測(cè)率。宋人杰[18]等利用混合濾波器代替固有濾波器,并將線性邊緣增強(qiáng)與Otsu算法相結(jié)合獲取雙閾值。
宋大成[19]等則提出在閾值選取時(shí)采用動(dòng)態(tài)單閾值,這種改進(jìn)方法不僅增強(qiáng)去噪性,而且更加簡(jiǎn)潔。董宏亮[20]等提出使用兩次Otsu算法,這種改進(jìn)可以完全自適應(yīng)地得到最佳閾值,避免了人工設(shè)置閾值的局限性。李磊[21]等提出結(jié)合了截距法和人工蜂群(Artificial Bee Colony,ABC)算法的Otsu算法的自適應(yīng)閾值選取方法,減少了人工干預(yù),增強(qiáng)了自適應(yīng)性。何育欣[22]等采用局部高低閾值矩陣的方法,檢測(cè)精度有明顯提升,但是計(jì)算的時(shí)間復(fù)雜度變大。由于弱邊緣很難被檢測(cè)出來(lái),王保軍[23]等提出設(shè)置高閾值得到強(qiáng)邊緣圖像,以強(qiáng)邊緣端點(diǎn)的邊緣方向?yàn)橐龑?dǎo),然后利用霍夫變換(Hough Transform)代替?zhèn)鹘y(tǒng)雙閾值法檢測(cè)連接邊緣。圖3為使用不同算法和高低閾值時(shí)的檢測(cè)結(jié)果對(duì)比圖,圖3(a)和圖3(b)均采用傳統(tǒng)Canny算法,其中圖3(a)是高低閾值設(shè)置為(100,40)時(shí)對(duì)圖像進(jìn)行邊緣檢測(cè)的最終輸出結(jié)果;圖3(b)是高低閾值設(shè)置為(160,50)時(shí)的最終運(yùn)行結(jié)果;圖3(c)是采用Otsu算法自適應(yīng)高低閾值的運(yùn)行結(jié)果,可以看出其運(yùn)行效果更佳,與圖3(a)(b)相比,保留了更多細(xì)節(jié),這主要由于傳統(tǒng)算法中高低閾值的選取具有一定的不確定性,并且易受人為因素的干擾。
圖3 傳統(tǒng)Canny算法與改進(jìn)Canny算法的檢測(cè)結(jié)果對(duì)比
1.2.4 其他改進(jìn)方法
除上述改進(jìn)方法外,王海龍[24]等提出對(duì)非極大值抑制的插值方法進(jìn)行改進(jìn),并利用最優(yōu)迭代和擇優(yōu)選取方法自適應(yīng)選取高低閾值。王文豪[25]等提出使用自適應(yīng)中值濾波代替高斯濾波對(duì)圖像進(jìn)行濾波,并采用類間方差最大法自動(dòng)選取閾值,最后采用多特征融合技術(shù)修復(fù)斷裂的邊緣,該方法可以很好地控制斷裂邊緣的錯(cuò)誤連接。閆河[26]等提出了利用像素均值的方法,將非邊緣點(diǎn)的像素點(diǎn)排除在外,具有較好的修復(fù)性,減少了偽邊緣的依賴性,但同時(shí)也增加了對(duì)初始點(diǎn)選取的依賴性。Hou Shou-Ming[27]等提出將直方圖均衡化用于增強(qiáng)圖像對(duì)比度,在改進(jìn)Canny算法中,用中值濾波器代替高斯濾波器來(lái)去除孤立的噪聲點(diǎn),采用K-means算法分離圖像背景和邊緣,并結(jié)合數(shù)學(xué)形態(tài)學(xué)和Otsu算法對(duì)Canny算法進(jìn)行不斷改進(jìn),該方法能夠有效檢測(cè)出弱邊緣。為了解決傳統(tǒng)算法對(duì)噪聲敏感的問(wèn)題,鄭子華[28]等提出在對(duì)圖像進(jìn)行邊緣檢測(cè)的過(guò)程中加入邊緣曲度算法,可以在盡可能抑制噪聲的同時(shí)保留邊緣細(xì)節(jié),但是該算法不具有自適應(yīng)性且時(shí)間復(fù)雜度高。
王昊[29]等通過(guò)圖像灰度化處理、直方圖均衡化及海森(Hessian)矩陣實(shí)現(xiàn)了圖像預(yù)處理,并提出一種CannyPF(Canny Parameter Free)算法來(lái)提取邊緣、連接邊緣點(diǎn),以及利用K-means聚類方法合并邊緣線段,最終實(shí)現(xiàn)輸電導(dǎo)線的目標(biāo)提取。孫浩然[30]等提出利用拓?fù)浣Y(jié)構(gòu)首先對(duì)圖像進(jìn)行預(yù)處理,然后使用雙邊濾波去噪,多尺度對(duì)圖像邊緣細(xì)節(jié)信息進(jìn)行增強(qiáng),并使用4方向的Sobel算法計(jì)算梯度幅值和方向,最大熵法自適應(yīng)計(jì)算雙閾值,最后使用形態(tài)學(xué)處理完善邊緣,將改進(jìn)后的算法應(yīng)用于電池電極的缺陷檢測(cè),具有一定使用價(jià)值。
從上述Canny算法的改進(jìn)及應(yīng)用中可以看到,目前利用Canny算法實(shí)現(xiàn)邊緣檢測(cè)的技術(shù)已相對(duì)成熟,改進(jìn)Canny算法在檢測(cè)效果和檢測(cè)精度方面得到了明顯改善,并廣泛應(yīng)用于不同領(lǐng)域。例如,將對(duì)比度增強(qiáng)Canny邊緣檢測(cè)方法與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,用于數(shù)字X射線圖像的普通肺炎和新型冠狀病毒肺炎(Corona Virus Disease 2019,COVID-19)檢測(cè)中,此方法可以快速區(qū)分正常肺、肺炎與COVID-19,具有較高的準(zhǔn)確性、敏感性和特異性,為醫(yī)學(xué)研究帶來(lái)了極大便利[31];改進(jìn)Canny算法還可與Sobel算法結(jié)合,應(yīng)用于虹膜圖像的檢測(cè),該方法不僅可以抑制噪聲,還可以準(zhǔn)確檢測(cè)到虹膜的邊緣信息,抑制虛假邊緣,有助于虹膜圖像的進(jìn)一步研究[32];同時(shí),改進(jìn)Canny算法還可用在絕緣子串的邊緣檢測(cè)中,可有效提高檢測(cè)精度[33]。此外,Canny算法用于零件上螺紋缺陷的邊緣檢測(cè),有助于提高螺紋缺陷的檢測(cè)精度[34]。
綜上所述,Canny算法要想在新的技術(shù)領(lǐng)域獲得更加廣泛的應(yīng)用,需在原有的理論基礎(chǔ)上,進(jìn)一步引入其他相關(guān)測(cè)試思想并加以改進(jìn)。邊緣檢測(cè)精度與抗噪性能、時(shí)間復(fù)雜度之間是相互制衡的關(guān)系,尋求更為精確的改進(jìn)算法,是邊緣檢測(cè)技術(shù)的發(fā)展趨勢(shì),同時(shí)將更多的新方法、新概念引入到邊緣檢測(cè)領(lǐng)域中,使邊緣檢測(cè)技術(shù)具有更為廣闊的發(fā)展與應(yīng)用前景。
本文通過(guò)分析Canny算法在邊緣檢測(cè)中的重要作用,對(duì)基于邊緣檢測(cè)的改進(jìn)Canny算法進(jìn)行了梳理、比較及總結(jié)。闡述了改進(jìn)Canny算法的應(yīng)用與發(fā)展趨勢(shì);Canny算法相較于早期其他類型的邊緣檢測(cè)算法,具有錯(cuò)誤率低、去噪聲性能強(qiáng)等優(yōu)點(diǎn),但也存在過(guò)度平滑、自適應(yīng)性低的缺點(diǎn)。因此,通過(guò)在Canny算法基礎(chǔ)上增加預(yù)處理或后續(xù)處理步驟、改變?yōu)V波方式、優(yōu)化閾值設(shè)定方法等,可以有效提升Canny算法的檢測(cè)精度。
但改進(jìn)后的Canny算法會(huì)帶來(lái)時(shí)間復(fù)雜度高的缺點(diǎn),并且面對(duì)不同的處理對(duì)象會(huì)呈現(xiàn)出不同的效果,因此Canny算法要想在新的技術(shù)領(lǐng)域中得到更為廣泛的應(yīng)用,應(yīng)在降低算法的時(shí)間復(fù)雜度、提高算法的檢測(cè)精度方面開(kāi)展進(jìn)一步的研究工作,為邊緣檢測(cè)技術(shù)的發(fā)展提供理論基礎(chǔ)及技術(shù)保證。