王益艷 于 貴
(1.四川文理學(xué)院智能制造學(xué)院 達(dá)州 635000)(2.達(dá)州智能制造產(chǎn)業(yè)技術(shù)研究院 達(dá)州 635000)
邊緣是圖像的最基本特征,邊緣檢測時圖像分析和模式識別的主要特征提取手段,直接決定著后續(xù)處理的精度與結(jié)果[1]。傳統(tǒng)的圖像邊緣檢測是基于掩模的方法,包括基于一階導(dǎo)數(shù)和基于二階導(dǎo)數(shù)兩類,一階邊緣檢測算子有Roberts、Sobel、Prewitt、Krisch等[2],二階邊緣檢測算子包括Log、Canny等[3]。這些基于導(dǎo)數(shù)的檢測算子對噪聲比較敏感,常常會在檢測邊緣的同時加強(qiáng)噪聲。小波變換具有良好的局域化特性,它是檢測邊緣很好的工具,可實現(xiàn)多尺度邊緣特征提取[4~5]。但是,在受噪聲感染的狀況下,該方法對邊緣檢測效果不理想。近年來,基于數(shù)學(xué)形態(tài)學(xué)的方法被廣泛應(yīng)用于圖像邊緣檢測[6],該方法比傳統(tǒng)方法具有更好的連續(xù)性和方向性[7]。然而,傳統(tǒng)數(shù)學(xué)形態(tài)學(xué)檢測算法主要根據(jù)形態(tài)學(xué)梯度信息提取邊緣,由于沒有考慮邊緣的方向,導(dǎo)致圖像出現(xiàn)邊緣多像素寬。為此,人們提出了各種改進(jìn)的多尺度形態(tài)學(xué)邊緣檢測算法[8~9],在一定程度上提高了邊緣檢測效果,但該類方法中結(jié)構(gòu)元素的選取對最終檢測結(jié)果影響較大。為有效提高邊緣檢測的精度,本文提出了一種聯(lián)合K-means和形態(tài)學(xué)算子的圖像邊緣檢測。首先通過K-means算法[10]對圖像進(jìn)行分割,再對分割后的圖像求反,然后利用形態(tài)學(xué)作腐蝕操作,挖去圖像內(nèi)部像素點,最后利用分割圖像減去形態(tài)學(xué)腐蝕后的圖像獲得圖像邊緣。仿真結(jié)果表明,該方法具有較好的邊緣提取性能,比傳統(tǒng)Sobel算子、Canny算子、小波變換等方法具有更高的檢測精度。
K-means算法是一種聚類算法[11],它是將各個聚類子集內(nèi)的所有數(shù)據(jù)樣本的均值作為該聚類的代表點,算法的主要思想是通過迭代過程把數(shù)據(jù)集劃分為不同的類別,使得評價聚類性能的準(zhǔn)則函數(shù)達(dá)到最優(yōu),從而使生成的每個聚類內(nèi)緊湊、類間獨立。
1)選定某種距離作為數(shù)據(jù)樣本間的相似性度量
K-means聚類算法在計算數(shù)據(jù)樣本之間的距離時,可以根據(jù)實際需要選擇歐式距離、曼哈頓距離或者馬氏距離中的一種來作為算法的相似性度量[12],其中最常用的是歐式距離。其實現(xiàn)過程如下。
2)選擇評價聚類性能的準(zhǔn)則函數(shù)
K-means聚類算法使用誤差平方和準(zhǔn)則函數(shù)來評價聚類性能。給定數(shù)據(jù)集X,其中只包含描述屬性,不包含類別屬性。假設(shè)X包含K個聚類子集 X1,X2,...,XK;各個聚類子集中的樣本數(shù)量分別為 n1,n2,...,nK;各個聚類子集的均值代表點(也稱聚類中心)分別為 m1,m2,...,mK。則誤差平方和準(zhǔn)則函數(shù)公式為
3)相似度的計算根據(jù)一個簇中對象的平均值來進(jìn)行。
(1)將所有對象隨機(jī)分配到k個非空的簇中。
(2)計算每個簇的平均值,并用該平均值代表相應(yīng)的簇。
根據(jù)參考文獻(xiàn),患者留置尿管拔除前干擾膀胱收縮導(dǎo)致拔管后排尿困難的影響因素復(fù)雜,需要確認(rèn)患者拔管后膀胱功能恢復(fù)情況,臨床多通過間歇夾閉導(dǎo)管訓(xùn)練膀胱功能判斷膀胱功能是否恢復(fù)良好,但目前尚無明確的醫(yī)學(xué)循證。
(3)根據(jù)每個對象與各個簇中心的距離,分配給最近的簇。
(4)然后轉(zhuǎn)(2),重新計算每個簇的平均值。這個過程不斷重復(fù)直到滿足某個準(zhǔn)則函數(shù)才停止。
整個K-means算法流程如圖1所示。
圖1 K-means算法流程圖
本文提出了一種基于K-means算法的形態(tài)學(xué)邊緣檢測方法。其實現(xiàn)步驟如下:
1)首先通過上一小節(jié)介紹的K-means算法對原始圖像I進(jìn)行分割,得到分割圖像J。
2)再對分割后的圖像J求反,得到K。求反公式如下:
令 K(x,y)表示輸入圖像,B(i,j)表示結(jié)構(gòu)元(函數(shù)),則形態(tài)學(xué)腐蝕[7]可定義為
W=(KΘB)(x,y)=
式中,DK和DB分別是函數(shù)K和B的定義域,位移參數(shù)(x+i,y+j)必須包含在函數(shù)K的定義域內(nèi)?;叶葓D像的腐蝕可以得到兩種結(jié)果:如果所有的結(jié)構(gòu)元素都為正,則輸出圖像將趨于比輸入圖像暗;在比結(jié)構(gòu)元素還小的區(qū)域中的明亮經(jīng)腐蝕處理后其效果將減弱,減弱的程度取決于環(huán)繞亮度區(qū)域的灰度值以及結(jié)構(gòu)元素本身的形狀和幅值。
腐蝕運算是一個點一個點地進(jìn)行的,某點的運算結(jié)果是它在一個局部范圍內(nèi)的點與結(jié)構(gòu)元素中與之對應(yīng)的點的灰度值之差,選取其中的最小值。可見,經(jīng)腐蝕運算后,邊緣部位灰度值相對大的點的灰度值會降低,從而邊緣會向灰度值高于相鄰區(qū)域的區(qū)域內(nèi)收縮。
4)最后利用分割圖像J減去形態(tài)學(xué)腐蝕后的圖像W獲得圖像邊緣S。
為對本文算法進(jìn)行有效驗證,本文采用標(biāo)準(zhǔn)的“woman”和“Logo”圖像作為測試對象,以 Matlab R2015b為測試平臺,計算機(jī)配置為Windows7系統(tǒng)、AMDA8處理器、主頻1.60GHz、4G內(nèi)存,分別進(jìn)行了兩組試驗。
實驗一:利用K-means算法對測試圖像進(jìn)行分割,實驗結(jié)果如圖2所示。
圖2 K-means算法分割結(jié)果
實驗二:將本文方法與傳統(tǒng)Sobel算子[2]、Canny算子[3]、小波變換[6]等方法進(jìn)行對比實驗。圖3~4給出了邊緣檢測視覺效果。
圖2結(jié)果顯示,K-means算法能有效實現(xiàn)對圖像的分割,為本文后面的邊緣檢測奠定了良好的基礎(chǔ)。圖3和圖4實驗結(jié)果顯示,傳統(tǒng)Sobel算子檢測精度較差,部分邊緣細(xì)節(jié)沒有檢測到,而Canny算子和小波方法存在明顯的偽邊緣和邊緣斷裂現(xiàn)象,而本文方法檢測的邊緣檢測精度高,邊緣連接完整,視覺效果更好。
圖3 woman圖像邊緣檢測結(jié)果
圖4 Logo圖像邊緣檢測結(jié)果
本文結(jié)合K-means算法和形態(tài)學(xué)腐蝕運算,提出了一種新的邊緣檢測方法。該方法能有效獲得精確而完整的圖像邊緣,比傳統(tǒng)其他幾種方法具有更優(yōu)的視覺效果,為后續(xù)的圖像識別奠定了基礎(chǔ)。