朱曉臨, 鄧祥龍, 胡德敏
(合肥工業(yè)大學(xué)數(shù)學(xué)學(xué)院,安徽 合肥 230009)
圖像是人眼最直接接收到的事物的最原始的信息,圖像中最重要的信息是由圖像中邊緣和輪廓提供的,所以對(duì)圖像中目標(biāo)物體邊緣的研究是非常必要的。在醫(yī)學(xué)圖像處理中,邊緣檢測(cè)是非常關(guān)鍵的技術(shù)之一,目的是更好地將目標(biāo)物體的邊緣標(biāo)記出來(lái)。例如在腫瘤病灶確定、椎間盤(pán)邊緣位置確定、冠心病診斷、左心室邊緣抽取、腦腔血塊大小檢測(cè)等方面占有舉足輕重的地位。
在圖像處理中,邊緣是指圖像中其周?chē)袼鼗叶戎涤须A跳性變化和屋頂狀(灰度值由增加到減少的變化轉(zhuǎn)折點(diǎn))變化的那些像素的集合。因?yàn)閳D像采集過(guò)程中存在一些不確定的因素,干擾了圖像的清晰度,會(huì)產(chǎn)生噪聲、對(duì)比度不強(qiáng)、圖像模糊等等問(wèn)題,從而影響對(duì)圖像關(guān)鍵信息——邊緣的提取或強(qiáng)化,所以人們一直致力于研究和解決如何構(gòu)造具有良好性質(zhì)和檢測(cè)效果的邊緣檢測(cè)方法?,F(xiàn)階段比較成熟的是傳統(tǒng)的圖像邊緣檢測(cè)方法,微分運(yùn)算是傳統(tǒng)邊緣檢測(cè)與提取的主要手段。根據(jù)邊緣具有階跳性變化或屋頂狀變化的特點(diǎn),邊緣點(diǎn)對(duì)應(yīng)于圖像中一階微分最大或最小、或是二階微分呈零交叉或二階微分取極值的點(diǎn)。一階微分算子包括 Robert算子[1]、Sobel算子、Prewitt算子[2]和 Kirsch[3]算子等,二階微分算子包括Laplacian算子、LOG[4]算子等。另外,Canny[5]算法是種基于一階微分的多尺度邊緣檢測(cè)算法,是一種較好的邊緣檢測(cè)算法,但為了得到較好的邊緣檢測(cè)結(jié)果,通常需要使用較大的濾波尺度,這樣容易丟失一些細(xì)節(jié)。
上述邊緣檢測(cè)算子中,Kirsch算子在醫(yī)學(xué)圖像邊緣檢測(cè)以及其它很多領(lǐng)域都一直在廣泛應(yīng)用,例如Li Huiqi, Opas chutatape在2000年提出利用 Kirsch算子檢測(cè)糖尿病性視網(wǎng)膜病變后眼底圖像的邊緣來(lái)區(qū)別不同成分[6];M A Bottalico,A Starita在2000年利用Kirsch算子檢測(cè)頸動(dòng)脈超聲圖像邊緣[7];Mahmoudi, Maryam Tayefeh在2003年研究了它在車(chē)道檢測(cè)中的應(yīng)用[8],在嘈雜的環(huán)境中 Kirsch算子有較好的檢測(cè)效果;Md Saidur Rahman[9]等在2009年利用Kirsch算子對(duì)手寫(xiě)數(shù)字進(jìn)行識(shí)別;高萍、王偉等在 2010年將它與光流法結(jié)合檢測(cè)運(yùn)動(dòng)物體[10]等。Kirsch算子采用8個(gè)模板進(jìn)行檢測(cè),能較好地保持圖像的細(xì)節(jié),但存在著計(jì)算量大、檢測(cè)運(yùn)行時(shí)間長(zhǎng)、邊緣連接性較差、丟失弱邊緣等缺點(diǎn)。針對(duì)Kirsch算子存在的缺點(diǎn),近些年來(lái)國(guó)內(nèi)外學(xué)者對(duì)其進(jìn)行了進(jìn)一步研究,例如呂俊白在 2001年通過(guò)矩陣變換來(lái)減少算子的運(yùn)算量[11]、吳懷宇在 2009年采用改進(jìn)的Otsu法[12]和王寶樹(shù)在2009年采用拋物線法[13]自動(dòng)獲取閾值來(lái)保持圖像弱邊緣,但仍存在弱邊緣提取不全的缺點(diǎn)。
本文采用一種多閾值選取和邊緣連接算法對(duì) Kirsch算法進(jìn)行了改進(jìn),可以獲得保持弱邊緣、連接性較好的檢測(cè)結(jié)果。
Kirsch算子是幾種經(jīng)典的邊緣檢測(cè)算子之一,至今仍有廣泛的應(yīng)用。1971年,R. Kirsch[3]提出了一種圖像像素順時(shí)針循環(huán)求梯度的方法來(lái)進(jìn)行邊緣檢測(cè)。他使用8個(gè)模板來(lái)確定梯度的大小和方向,是一種最佳匹配的邊緣檢測(cè)。
設(shè)待檢測(cè)圖像的3×3子圖像如下:
0 a a1a27 a (i, j) a36 a a5a4
用 M0~M7分別與子圖像中的各個(gè)對(duì)應(yīng)元素相乘,計(jì)算這8個(gè)結(jié)果的最大值作為中心像素的近似梯度值,其對(duì)應(yīng)的方向作為邊緣的方向;8個(gè)卷積核形成了Kirsch算子。在進(jìn)行邊緣提取時(shí),圖像中每一個(gè)像素對(duì)應(yīng)的3×3子圖像都與這8個(gè)模板進(jìn)行卷積,然后輸出最大值。
Kirsch算子通過(guò)對(duì)圖像進(jìn)行8個(gè)方向的邊緣檢測(cè)能取得較好的效果,它可以較好地保持圖像的細(xì)節(jié),但是最初得到的邊緣圖像較為粗糙,一般采用取閾值的辦法來(lái)獲得較為清晰的邊緣圖像。而這樣得到的邊緣圖像,經(jīng)過(guò)人工取閾值以后,容易產(chǎn)生連續(xù)性較差的問(wèn)題,同時(shí)容易丟失掉梯度值較小的弱邊緣。
設(shè)I表示待檢測(cè)圖像,I( i, j)表示圖像I中(i, j)處的像素值。用上述8個(gè)模板對(duì)待檢測(cè)圖像I做卷積,則式(1)表示8個(gè)模板對(duì)圖像I做卷積所得到的(i, j)處的梯度值??梢杂梢幌盗衜( i, j)組成梯度圖像G
其中,M和N表示待檢測(cè)圖像I的高度和寬度。
傳統(tǒng)的Kirsch算子在獲得了梯度圖像G以后,設(shè)定了一個(gè)閾值,然后對(duì)圖像進(jìn)行二值化,得到最后的邊緣圖像。這時(shí),若閾值選取過(guò)大,則可以去除虛假邊緣,但同時(shí)也造成了弱邊緣的丟失;若閾值選取過(guò)小,則可以保持弱邊緣,但又會(huì)造成虛假邊緣增多。因此固定地選取某一個(gè)閾值總是不能很好地解決二者的矛盾。
針對(duì)Kirsch算子的缺點(diǎn),本文提出多閾值選取與邊緣連接的邊緣檢測(cè)算法:為了避免噪聲對(duì)邊緣檢測(cè)的影響以及檢測(cè)出虛假邊緣,首先對(duì)原始圖像用Gauss濾波進(jìn)行去噪處理,然后利用傳統(tǒng)的Kirsch算子提取圖像邊緣,再設(shè)定一個(gè)較低的閾值保持圖像的全部邊緣、一個(gè)較高的閾值提取出圖像真正的邊緣,得到連接性較差的邊緣圖像,再利用局部均值與標(biāo)準(zhǔn)差獲得一幅邊緣連接完整但粗糙的圖像作為下一步邊緣連接的基礎(chǔ),最后利用本文改進(jìn)的邊緣連接算法將斷裂的邊緣連接,從而得到連接性良好的邊緣圖像。
根據(jù)以上分析,本文算法分4步進(jìn)行,具體步驟如下:
Step 1 在進(jìn)行傳統(tǒng)的 Kirsch算子處理之前,我們首先采用較小尺度的Gauss濾波對(duì)圖像進(jìn)行平滑去噪,目的是消除噪聲對(duì)邊緣檢測(cè)的影響以及去除噪聲點(diǎn)等虛假邊緣。設(shè)二維Gauss函數(shù)[14]為
σ為Gauss函數(shù)標(biāo)準(zhǔn)差。對(duì)圖像用Gauss濾波做平滑去噪實(shí)質(zhì)上是將圖像與Gauss函數(shù)做卷積的過(guò)程。我們這里選擇Gauss核為3,σ2=1的Gauss濾波器對(duì)圖像進(jìn)行處理,這樣可以在去除噪聲點(diǎn)的同時(shí)更好地保留了邊緣效果。
Step 2 利用傳統(tǒng)的Kirsch算子進(jìn)行邊緣檢測(cè),得到上述梯度圖像G。
Step 3 設(shè)定一個(gè)低閾值,記為T(mén)1,它的選取原則是不造成弱邊緣的丟失,即T1小于弱邊緣點(diǎn)對(duì)應(yīng)的梯度值。這樣我們得到包含我們想要的全部邊緣的圖像D
圖像D的邊緣點(diǎn)的梯度值大于T1,這會(huì)造成圖像D的邊緣線較為粗糙,模糊不清。如果我們想得到較為細(xì)膩、清晰的邊緣線,一種最直接的方法就是在圖像D的基礎(chǔ)上再設(shè)定一個(gè)較大的閾值,即大于這個(gè)較大的閾值的邊緣點(diǎn)都被認(rèn)作為圖像的邊緣。但這樣做的結(jié)果是邊緣線不連續(xù),因?yàn)橹挥胁糠址蠗l件的邊緣點(diǎn)被保留了下來(lái)。
本文的做法是利用局部圖像的像素值的均值和標(biāo)準(zhǔn)差,自適應(yīng)地選取較大的閾值。
對(duì)圖像D求每個(gè)3×3子圖像像素的標(biāo)準(zhǔn)差。以(i, j)為中心的3×3子圖像的像素標(biāo)準(zhǔn)差為
由表達(dá)式可知,圖像F1是由圖像D中局部區(qū)域 D ( i, j)≥T2的點(diǎn)所構(gòu)成的,這些點(diǎn)一定是圖像的邊緣,而在 D ( i, j)<T2的點(diǎn)中也會(huì)含有一些圖像的邊緣,于是這樣的取值可找到圖像的部分真正邊緣,但是圖像F1中的邊緣是斷裂的,連接性差。
因此,我們?cè)偃3>D( i, j),得到圖像D中像素值大于其局部平均值的點(diǎn)的集合F2
作為對(duì)下一步連接邊緣圖像的基礎(chǔ)。
Step 4 通過(guò)以上的方法,我們得到了一個(gè)初步的邊緣圖像結(jié)果,圖像中還存在一些斷裂的邊緣線。為了得到更好的邊緣圖像,我們采用一種基于“邊緣模式”的連接算法[15]來(lái)得到連續(xù)邊緣。
在3×3子圖像中,邊緣的存在形式有16種,如圖1所示。
圖1 3×3鄰域16種邊緣模式
圖1中黑色部分表示圖像邊緣。
連接邊緣的具體做法是:
Step 4.1 逐一掃描邊緣圖像F1的每一個(gè)像素。若(i, j)是邊緣像素,則在圖像F2中找到與(i, j)對(duì)應(yīng)像素的3×3子圖像SFi,j,在這個(gè)3×3子圖像上定義上述16種邊緣模式。
Step 4.2 設(shè) E MVn表示SFi,j中第n種邊緣模式對(duì)應(yīng)的3個(gè)像素之和
Step 4.4 用M1,,表示 3×3子圖像中對(duì)應(yīng)于模式中的像素。給定閾值,如果>T4,那么在3×3子圖像中與,,有相同位置的像素被標(biāo)記為邊緣像素,令其像素值為255;否則不是邊緣像素。
其中閾值T4的取法:文獻(xiàn)[15]中該閾值取為2.5382~10.153之間,這會(huì)造成圖像邊緣連接不完全以及連接的邊緣在兩端處出現(xiàn)“工”字型邊角。本文取
Step 4.5 重復(fù)上述步驟,直至圖像沒(méi)有新的邊緣點(diǎn)增加。
利用上述邊緣連接算法可以得到連續(xù)性良好的邊緣圖像,連接后的圖像會(huì)出現(xiàn)許多孤立的噪聲點(diǎn),去除孤立點(diǎn)的方法為:在連接完畢的邊緣圖像中,逐一檢查3×3子圖像,計(jì)算子圖像的像素之和,若和為255,則認(rèn)為是孤立點(diǎn),將其去除。
下面分別用不同閾值下的傳統(tǒng)Kirsch算子、本文的多閾值選取與邊緣連接的邊緣檢測(cè)算法對(duì)Lena標(biāo)準(zhǔn)圖像進(jìn)行邊緣檢測(cè),檢測(cè)結(jié)果如圖2所示。
圖2 不同閾值的Kirsch算子與本文方法的Lena圖像檢測(cè)結(jié)果
圖2中的(a)為 Lena原圖,(b)、(c)、(d)為Kirsch算子閾值分別取 20、30、40后的邊緣提取結(jié)果,(e)為本文方法提取結(jié)果。由圖2可見(jiàn),當(dāng)Kirsch算子選取較低閾值時(shí),可基本將圖像邊緣提取出來(lái),但輪廓線粗糙模糊;隨著加大閾值,雖輪廓線稍加清晰,但造成了較為嚴(yán)重的邊緣丟失。而本文方法可以在清晰輪廓的同時(shí)較好地保持邊緣。
目前,Canny算子是最常用的邊緣檢測(cè)方法。下面用傳統(tǒng)的Kirsch算子、Canny算子和本文方法對(duì)人體大腦、胸腔、腹腔的CT圖像進(jìn)行邊緣檢測(cè),檢測(cè)結(jié)果如圖3所示。
圖3 中的(a1)、(a2)、(a3)為原圖,(b1)、(b2)、(b3)為傳統(tǒng)Kirsch算子檢測(cè)結(jié)果圖,(c1)、(c2)、(c3)為Canny方法檢測(cè)結(jié)果圖,(d1)、(d2)、(d3)為本文算法檢測(cè)結(jié)果圖。通過(guò)實(shí)驗(yàn)結(jié)果對(duì)比可知,Kirsch算子能一定程度地檢測(cè)出圖像邊緣,但是邊緣提取粗糙,丟失邊緣嚴(yán)重;Canny算子能較好地提取出邊緣,但對(duì)圖像的弱邊緣檢測(cè)不全。仔細(xì)觀察圖像(d1)、(d2)、(d3)與對(duì)應(yīng)的原圖,(d1)、(d2)、(d3)中的細(xì)小的短邊并不是多余的噪聲,而是Kirsch算子與Canny算子沒(méi)有檢測(cè)出的圖像弱邊緣,因?yàn)樗惴ㄖ性O(shè)定的低閾值T1保持了圖像的弱邊緣。結(jié)果顯示本文的算法能有效地保持圖像弱邊緣,且邊緣輪廓比較清晰。
圖3 Kirsch算子、Canny算子與本文方法的檢測(cè)結(jié)果
針對(duì)Kirsch算子的缺點(diǎn),本文提出多閾值選取與邊緣連接的邊緣檢測(cè)算法:首先對(duì)原始圖像用 Gauss濾波進(jìn)行去噪處理;再利用傳統(tǒng)的Kirsch算子提取圖像邊緣:先設(shè)置一個(gè)低閾值,保證檢測(cè)到圖像的所有弱邊緣;然后利用均值和標(biāo)準(zhǔn)差來(lái)自適應(yīng)設(shè)定高閾值,提取出圖像各個(gè)部分的真正邊緣;最后利用本文改進(jìn)的邊緣連接算法連接邊緣,從而得到連接性良好的邊緣圖像。試驗(yàn)表明,本文的邊緣檢測(cè)算法能夠保持圖像的弱邊緣,很好地連接斷裂的邊緣線,檢測(cè)出的邊緣細(xì)膩光滑,噪聲點(diǎn)較少。
[1]Roberts L G. Machine perception of three-dimensional solids [D]. Massachusetts: MIT Press, 1963.
[2]Prewitt J M S. Object enhancement and extraction [C]//Picture Processing and Psychopictorics. Academic Press, New York. 1970: 75-149.
[3]Kirsch R. Computer determination of the constituent structure of biological images [J]. Computers and Biological Research, 1971, 4(3): 315-328.
[4]Marr D, Hildreth E C. Theory of edge detection [C]//Proceedings of the Royal Society of London. Series B,Biological Sciences, 1980, 207(1167): 187-217.
[5]Canny J. A computational approach to edge detection [J].IEEE Trans. Pattern Analysis and Machine Intelligence, 1986, PAMI-8(6): 679- 698.
[6]Li Huiqi, Opas C. Fundus image features extraction [C]//Proceedings of 22th Annual EMBS International Conference, 2000, (4): 3071-3073.
[7]Bottalico M A, Starita A. A computer tool to support carotid ultrasound images analysis [C]//Proceedings of 22th Annual EMBS International Conference, 2000,(4): 2428-2430.
[8]Mahmoudi, Tayefeh M. A comparative study of edge detectors for lane detection [C]//Proceedings of the International Conference on Imaging Science, Systems and Technology, 2003, (2): 526-530.
[9]Rahman M S. An approach to recognize handwritten Bengali numerals for postal automation [C]//Proceedings of 11th International Conference on Computer and Information Technology, 2008: 171–176.
[10]Gao Ping, Sun Xiangju, Wang Wei. Moving object detection based on Kirsch operator combined with Optical Flow [C]//Image Analysis and Signal Processing (IASP), 2010: 620-624.
[11]呂俊白. 基于快速Kirsch與邊緣點(diǎn)概率分析的邊緣提取[J]. 計(jì)算機(jī)應(yīng)用, 2001, 21(2): 33-35.
[12]薛孝琴, 吳懷宇, 游輝勝. 一種改進(jìn) Ostu法在Kirsch邊緣檢測(cè)中的應(yīng)用[J]. 計(jì)算機(jī)與數(shù)字工程,2009, 37(3): 167-171.
[13]康 牧, 王寶樹(shù). 自適應(yīng) Kirsch邊緣檢測(cè)算法[J].華中科技大學(xué)學(xué)報(bào), 2009, 37(4): 47-50.
[14]阮秋琦. 數(shù)字圖像處理基礎(chǔ)[M]. 北京: 清華大學(xué)出版社, 2009: 155-156.
[15]張光玉, 龔光珍, 朱維樂(lè). 基于克隆算法的彩色圖像邊緣檢測(cè)新算法[J]. 電子學(xué)報(bào), 2006, 34(4):702-707.