高櫻萍,宋 丹,王雅靜,張軒宇
(湖南工程學(xué)院計(jì)算機(jī)與通信學(xué)院,湘潭 411104)
服裝產(chǎn)業(yè)是我國主要的經(jīng)濟(jì)產(chǎn)業(yè)之一,近年來,隨著機(jī)器學(xué)習(xí)技術(shù)的迅速發(fā)展,服裝產(chǎn)業(yè)也得到了較大的發(fā)展,而圖像作為服裝產(chǎn)業(yè)的一種直觀、便捷的傳輸媒介,一直是研究的熱點(diǎn).圖像分割作為圖像處理的第一步,是計(jì)算機(jī)視覺的基礎(chǔ),同時(shí)也是圖像處理中最困難的問題之一.圖像分割的好壞對(duì)后續(xù)的服裝分類以及服裝檢索等都有著重要的影響[1-5].近年來,圖像分割是計(jì)算機(jī)圖像處理與計(jì)算機(jī)視覺中的一個(gè)重要子領(lǐng)域,許多學(xué)者對(duì)圖像分割涉及的各個(gè)算法和技術(shù)都開展了許多研究[6-14].圖像分割是指根據(jù)相似性規(guī)則將一幅圖像劃分為多個(gè)子圖像區(qū)域的過程,旨在分離圖像中具有獨(dú)特性質(zhì)的區(qū)域并提出感興趣的目標(biāo),方便進(jìn)一步處理.
一直以來,國內(nèi)外許多學(xué)者都對(duì)圖像分割的方法進(jìn)行了深入的研究,提出了上千種分割算法,但是這些算法都有一定的不足,至今還沒有一種方法能夠完全適用于所有圖像.目前,彩色圖像分割方法主要分為以下幾大類:基于閾值的分割方法、基于聚類的分割方法、基于區(qū)域的分割方法以及基于特定理論的分割方法.
聚類是模式識(shí)別和數(shù)據(jù)挖掘中的一個(gè)重要方向,是一種無監(jiān)督學(xué)習(xí)算法,其思想是將物理或抽象對(duì)象的集合分組為由類似的對(duì)象組成的多個(gè)類的分析過程,該算法的目標(biāo)就是在相似的基礎(chǔ)上收集數(shù)據(jù)來分類.K-means 算法作為最經(jīng)典的聚類算法,許多研究者將其用于圖像分割領(lǐng)域,但該算法有兩個(gè)主要的缺點(diǎn),第一是聚類的數(shù)目需要預(yù)先設(shè)定,第二就是初始聚類中心的選取.
到目前為止,許多學(xué)者從不同方面對(duì)這兩個(gè)缺點(diǎn)進(jìn)行了改進(jìn),并取得了一些進(jìn)展.楊善林[2]等針對(duì)如何找到最佳聚類數(shù)k的問題,設(shè)計(jì)了一種空間聚類k值優(yōu)化算法,基本思想是在其他聚類有效性函數(shù)的基礎(chǔ)上,構(gòu)造了距離代價(jià)函數(shù),并將距離代價(jià)函數(shù)作為最佳聚類數(shù)的有效性檢驗(yàn)函數(shù),這樣可以大大縮小最優(yōu)解的范圍,提高算法的效率.霍鳳財(cái)[4]等提出了一種基于Lab 空間的改進(jìn)K-means算法來分割彩色圖像,將圖像從RGB 轉(zhuǎn)換到Lab 空間,并用馬氏距離代替歐式距離,最后對(duì)圖像像素點(diǎn)進(jìn)行聚類,實(shí)現(xiàn)圖像分割.Hong Yao[5]等提出了一種K-means 聚類與數(shù)學(xué)形態(tài)學(xué)相結(jié)合的方法對(duì)魚類圖像進(jìn)行分割,其中聚類的最佳數(shù)目由灰度直方圖確定,聚類中心數(shù)據(jù)通過與Otsu 確定的閾值進(jìn)行比較,對(duì)聚類中心數(shù)據(jù)進(jìn)行過濾,并利用數(shù)學(xué)形態(tài)學(xué)的開閉運(yùn)算求出魚體的輪廓.受到文獻(xiàn)[4]和文獻(xiàn)[5]的啟發(fā),本文提出了一種改進(jìn)的K-means分割算法,利用圖像灰度直方圖的峰值個(gè)數(shù)來確定聚類數(shù)k的值,并用馬氏距離代替?zhèn)鹘y(tǒng)的歐式距離.實(shí)驗(yàn)結(jié)果顯示,本文提出的算法所確定的k值能夠得到較好的分割效果.
K-means 算法也稱為k均值聚類算法,它采用距離作為相似性的評(píng)價(jià)指標(biāo),即認(rèn)為兩個(gè)對(duì)象的距離越近,其相似度就越大.該算法是一種迭代求解的聚類分析算法,基本思想是初始隨機(jī)給定k個(gè)簇中心,按照最鄰近原則把待分類樣本點(diǎn)分到各個(gè)簇,然后按平均法重新計(jì)算各個(gè)簇的質(zhì)心,從而確定新的質(zhì)心,一直迭代,直到簇心的移動(dòng)距離小于某個(gè)給定的值.
K-means 的目的是最小化對(duì)數(shù)據(jù)點(diǎn)和簇中心之間的緊密性進(jìn)行采樣的目標(biāo)函數(shù),如果用數(shù)學(xué)表達(dá)式表示,計(jì)算如下:
假設(shè)簇劃分為C1,C2,……Ck,則我們的目標(biāo)是最小化平方誤差E:
其中μi是簇Ci的均值向量,即質(zhì)心,表達(dá)式為:
影響傳統(tǒng)K-means 算法的主要因素就是聚類數(shù)k的選擇、初始聚類中心的確定以及樣本與質(zhì)心之間的距離.對(duì)于彩色圖像分割處理來說,聚類的類數(shù)往往依賴具體的應(yīng)用環(huán)境和圖像分割的目的人所確定,不同的聚類數(shù)會(huì)產(chǎn)生不同的分割效果.該算法采用目標(biāo)函數(shù)最小化作為聚類結(jié)束的條件,且初始聚類中心一般采用隨機(jī)選擇,不同的初始聚類中心可能會(huì)導(dǎo)致完全不同的聚類效果.
針對(duì)聚類數(shù)目難以確定的問題,本文主要采用灰度直方圖進(jìn)行改進(jìn).在K-means 聚類算法中使用直方圖的峰值來作為聚類數(shù)k,其依據(jù)是K-means聚類分割是一種基于圖像灰度值和直方圖波峰波谷響應(yīng)圖像灰度分布變化的一種聚類過程.圖像的灰度直方圖描述的是圖像中具有該灰度級(jí)的像素個(gè)數(shù),而直方圖的峰值代表這些灰度級(jí)的像素規(guī)模較大,具有數(shù)量優(yōu)勢(shì).因此本文以直方圖的峰個(gè)數(shù)來作為聚類數(shù),即若直方圖有k個(gè)峰,則聚類數(shù)為k.本文先通過式(3)找到直方圖所有的波峰,然后根據(jù)給定的閾值進(jìn)行合理選擇,若兩個(gè)相鄰峰值之間的距離小于給定的閾值,則丟棄,否則保留.
其中h(i)為第i點(diǎn)的像素值的個(gè)數(shù).
本文計(jì)算了相鄰兩個(gè)峰谷點(diǎn)的距離,并將所有計(jì)算距離的平均值作為閾值,公式如下:
其中dis(i)為相鄰峰谷點(diǎn)之間的距離,N為距離的個(gè)數(shù).
傳統(tǒng)的K-means 算法中使用的是歐式距離,歐式距離是一個(gè)通常采用的距離定義,它是在m維空間中兩個(gè)點(diǎn)之間的真實(shí)距離.在二維空間中的歐式距離就是兩點(diǎn)之間的距離,公式如下:
歐式距離由于其計(jì)算簡單常被用來計(jì)算距離測(cè)度,但也存在著明顯的缺點(diǎn).這是因?yàn)槊總€(gè)坐標(biāo)對(duì)歐式距離的貢獻(xiàn)是同等的,當(dāng)坐標(biāo)表示測(cè)量值時(shí),其帶有大小不等的隨機(jī)波動(dòng),在這種情況下,合理的方法是對(duì)坐標(biāo)進(jìn)行加權(quán),使變化較大的坐標(biāo)比變化較小的坐標(biāo)有較小的權(quán)系數(shù),這就產(chǎn)生了各種距離.當(dāng)各個(gè)分量為不同性質(zhì)的量時(shí),“距離”的大小與指標(biāo)的單位有關(guān),它將樣品的不同屬性(即指標(biāo)或變量)之間的差別同等對(duì)待,這一點(diǎn)沒有考慮到總體變異對(duì)距離遠(yuǎn)近的影響,有時(shí)不能滿足實(shí)際要求.因此,有學(xué)者提出了馬氏距離的概念.
馬哈拉諾比斯距離(Mahalanobis Distance)簡稱馬氏距離,是由印度統(tǒng)計(jì)學(xué)家馬哈拉諾比斯提出來的,用來表示數(shù)據(jù)的協(xié)方差距離,是一種有效的計(jì)算兩個(gè)未知樣本集的相似度的方法.馬氏距離的目的就是將方差歸一化,使得特征之間的關(guān)系更加符合實(shí)際情況,它與歐式距離主要的區(qū)別就是它能考慮到各種特性之間的關(guān)系.在公式計(jì)算上,馬氏距離采用的是協(xié)方差矩陣,協(xié)方差矩陣能夠衡量多個(gè)變量之間的相關(guān)性,除此之外,還可以實(shí)現(xiàn)數(shù)據(jù)完全去相關(guān),即在圖像處理中弱化甚至消除圖像中的相關(guān)性.
對(duì)于一個(gè)均值為μ=(μ1,μ2,μ3,…,μp)T,協(xié)方差矩陣為∑的多變量x=(x1,x2,x3,…,xp)T,其馬氏距離為:
當(dāng)上式中的協(xié)方差矩陣∑-1是單位陣時(shí),此時(shí)馬氏距離等同于歐式距離,因此歐式距離可以看作是一種特殊的馬氏距離.
對(duì)于根據(jù)距離做判別的問題來說,馬氏距離比歐式距離更適合做判別.因?yàn)樗皇芰烤V的影響,兩點(diǎn)之間的馬氏距離與原始數(shù)據(jù)的測(cè)量單位無關(guān).由標(biāo)準(zhǔn)化數(shù)據(jù)和中心化數(shù)據(jù)(即原始數(shù)據(jù)與均值之差)計(jì)算出的兩點(diǎn)之間的馬氏距離是相同的.
本文主要針對(duì)K-means 算法中聚類數(shù)目k難以確定的問題進(jìn)行了改進(jìn),并使用馬氏距離代替歐式距離,來得到更好的分割效果.首先讀取圖像并將圖像轉(zhuǎn)換為double 型,通過分析該圖像的直方圖得到聚類的數(shù)目k,然后根據(jù)像素間的相似性進(jìn)行聚類,通過多次迭代更新聚類中心的位置,直到目標(biāo)函數(shù)收斂,最后輸出分割后的結(jié)果.
該算法的主要步驟如下:
step1:首先求出輸入圖像的灰度直方圖的峰值,確定k值,即將數(shù)據(jù)集經(jīng)過聚類得到k個(gè)集合
step2:隨機(jī)選擇k個(gè)數(shù)據(jù)點(diǎn)作為質(zhì)心.
step3:對(duì)該圖像中每一個(gè)點(diǎn),計(jì)算其與每一個(gè)質(zhì)心的馬氏距離,離哪個(gè)質(zhì)心近,就劃分到那個(gè)質(zhì)心所屬的集合.
step4:把所有數(shù)據(jù)歸好集合后,一共有k個(gè)集合.然后重新計(jì)算每個(gè)集合的質(zhì)心.
step5:如果新計(jì)算出來的質(zhì)心和原來的質(zhì)心之間的距離小于某一個(gè)設(shè)置的閾值(表示重新計(jì)算的質(zhì)心的位置變化不大,趨于穩(wěn)定,或者說收斂),此時(shí)認(rèn)為聚類已經(jīng)達(dá)到期望的結(jié)果,算法終止.
step6:如果新質(zhì)心和原質(zhì)心距離變化很大,需要迭代step3~step5 步驟.
算法的流程圖如圖1 所示.
圖1 改進(jìn)K-means算法流程圖
為了驗(yàn)證本文提出的算法,實(shí)驗(yàn)在windows10操作系統(tǒng),軟件Matlab R2017a 中進(jìn)行,并選取不同的k值進(jìn)行對(duì)比,以此驗(yàn)證本文算法的有效性.從服裝圖像數(shù)據(jù)庫中收集了126 張服裝圖片進(jìn)行實(shí)驗(yàn),選取的圖像的背景均為白色,其中的一部分圖像如圖2 所示.
圖2 部分實(shí)驗(yàn)圖片集
本文首先將輸入的服裝圖像轉(zhuǎn)化為灰度圖像并求出其灰度直方圖,然后對(duì)灰度直方圖進(jìn)行運(yùn)算處理得到符合條件的峰值點(diǎn),用紅色的“*”標(biāo)出.同時(shí),為了對(duì)比不同聚類數(shù)k對(duì)圖像分割結(jié)果的影響,本文還分別選取了三個(gè)不同的k值,并在同一情況下對(duì)同一幅圖像進(jìn)行分割,得到對(duì)比圖.圖3(a)、圖3(b)、圖3(c)、圖3(d)為測(cè)試實(shí)驗(yàn)中的四張圖片,代表了吊帶連衣裙、背心套裝、上衣、無袖連衣裙,
圖3 示例圖片(吊帶連衣裙、背心套裝、上衣、無袖連衣裙)
圖4(a)、圖4(b)、圖4(c)、圖4(d)是每張圖片對(duì)應(yīng)的灰度直方圖.
圖4 待分割圖像的灰度直方圖
根據(jù)灰度直方圖中“*”的數(shù)量,我們可以得知圖3 中四張圖片的聚類數(shù)分別為9、8、10 和9.
圖5 不同k值分割效果(其中帶*號(hào)的k值是通過直方圖的峰值數(shù)得到的)
通過上面的對(duì)比圖看出,對(duì)于圖3 中的四張圖片,聚類數(shù)k分別為9、8、10 以及9 時(shí)得到的分割效果最好.實(shí)驗(yàn)結(jié)果表明,使用本文所提出的方法得出的聚類數(shù)k能夠得到更好的分割效果.
對(duì)所有實(shí)驗(yàn)圖片的聚類數(shù)k進(jìn)行統(tǒng)計(jì)與分析后發(fā)現(xiàn),本文所提出的方法對(duì)于淺色的連衣裙類的服裝圖像有較好的分割效果,且該類圖像的聚類數(shù)一般在9~12 之間時(shí)分割的效果最好.同時(shí),在實(shí)驗(yàn)過程中發(fā)現(xiàn),模特的膚色以及發(fā)色等都會(huì)對(duì)分割結(jié)果產(chǎn)生一定的影響.
表1 聚類數(shù)k的取值
K-means 聚類算法作為一種簡單有效的算法,在圖像分割中有著廣泛的應(yīng)用,但傳統(tǒng)的K-means算法的聚類數(shù)k難以確定,而且用于計(jì)算相似度的歐式距離也有一定的不足,導(dǎo)致圖像分割的結(jié)果往往不如人意.本文在傳統(tǒng)的K-means 算法的基礎(chǔ)上,提出了一種改進(jìn)的K-means 算法,通過分析待分割圖像的灰度直方圖確定聚類數(shù)k,并在進(jìn)行相似度計(jì)算時(shí),采用馬氏距離代替歐式距離,實(shí)驗(yàn)結(jié)果表明,本文提出的算法與傳統(tǒng)的算法相比能夠得到更好的分割效果.