• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      模糊C均值聚類圖像分割算法的C++實(shí)現(xiàn)

      2017-12-12 00:26:13游繼安
      關(guān)鍵詞:彩色圖像均值灰度

      劉 衣,游繼安

      (湖北工程學(xué)院 新技術(shù)學(xué)院,湖北 孝感 432000)

      模糊C均值聚類圖像分割算法的C++實(shí)現(xiàn)

      劉 衣,游繼安

      (湖北工程學(xué)院 新技術(shù)學(xué)院,湖北 孝感 432000)

      利用C++語言和OPENCV仿真工具,實(shí)現(xiàn)了模糊C均值聚類算法的圖像分割?;仡櫫四:鼵均值聚類算法的原理,詳細(xì)說明了如何將聚類算法和圖像分割進(jìn)行關(guān)聯(lián)。描述了整個(gè)仿真的每一個(gè)函數(shù)的算法原理和流程,對比分析了不同圖像分割的實(shí)驗(yàn)結(jié)果,最后探討了模糊C均值聚類算法需要改進(jìn)的一些問題。

      C++;OPENCV;模糊C均值;聚類;圖像分割

      圖像分割是目標(biāo)跟蹤、車輛自動(dòng)駕駛等技術(shù)的基礎(chǔ),是圖像處理技術(shù)的一個(gè)研究熱點(diǎn)。目前圖像分割問題沒有一種普遍適用的求解算法,一般只能針對不同領(lǐng)域中的問題設(shè)計(jì)不同的算法[1]。圖像分割可分為基于層次的分割和基于塊的分割,基于塊的分割方法又可分為基于區(qū)域的分割和基于邊緣或邊界的分割。本文研究基于區(qū)域分割的圖像分割問題[1]。另外,模糊聚類廣泛應(yīng)用在遠(yuǎn)程感知、醫(yī)學(xué)圖片等領(lǐng)域。在圖像分割中,模糊C均值聚類算法是一種應(yīng)用最廣泛的聚類算法,常用于數(shù)據(jù)挖掘、機(jī)器視覺等領(lǐng)域。傳統(tǒng)的模糊C均值算法對大多數(shù)無噪聲圖片的分割很有效[2]。于是,很多方法都以模糊C均值算法為基礎(chǔ),對其加以改進(jìn)以適應(yīng)某些圖像分割,如利用遷移學(xué)習(xí)改進(jìn)的知識(shí)杠桿遷移模糊C均值(KL-TFCM)算法[3],等等。

      本文利用C++語言和OPENCV工具,在VS2015平臺(tái)上進(jìn)行了編程,分別從初始聚類數(shù)、灰度和彩色維度探討了實(shí)驗(yàn)結(jié)果。

      1 模糊C均值(FCM)簡介

      FCM聚類算法的目標(biāo)函數(shù)可描述為式(1):

      (1)

      (2)

      (3)

      為了便于編程,對式(2)進(jìn)行變換可得式(4):

      (4)

      2 FCM與圖像分割的關(guān)聯(lián)

      (1)設(shè)置目標(biāo)函數(shù)精度ε,模糊指數(shù)m(通常取值為2),最大迭代次數(shù)maxTimes;

      (2)初始化模糊聚類中心P;

      (3)由公式(4)和(3)分別更新隸屬度矩陣和聚類中心,若樣本點(diǎn)和聚類中心的距離為0,則將該點(diǎn)與相對應(yīng)類的隸屬度值設(shè)為1;

      (4)計(jì)算每個(gè)樣本點(diǎn)到每個(gè)類的聚類中心的距離,并按照公式(1)計(jì)算目標(biāo)函數(shù)值J;

      (5)若達(dá)到最大迭代次數(shù)或前后兩次J的絕對值差小于ε,則停止計(jì)算,否則轉(zhuǎn)到第(3)步。

      (6)將樣本點(diǎn)劃分為隸屬度最大的那一類。

      算法流程圖如下:

      圖1 算法流程圖

      3 程序的實(shí)現(xiàn)

      頭文件的定義。利用C++語言,在頭文件里針對灰度圖像和彩色圖像定義兩種類型的結(jié)構(gòu)體數(shù)據(jù),分別為GrayClusterData和ColorClusterData。在GrayClusterData定義變量size_t x,size_t y, uchar pixelVal,分別存儲(chǔ)像素點(diǎn)的x,y坐標(biāo)值和灰度值。在ColorClusterData里面定義size_t x, size_t y, uchar RGBValue[3],分別存儲(chǔ)像素點(diǎn)的x,y坐標(biāo)值和彩色圖像像素點(diǎn)的B、G、R三個(gè)值。

      在頭文件里還定義一個(gè)ClusterMethod類,里面的成員變量有IplImage*mpOrgImage,IplImage*mpGrayImage,size_tmpClusterResult,double*mpCenters,分別用來存儲(chǔ)原始圖像,灰度圖像,聚類結(jié)果和聚類中心。size_t mSampleNum為樣本數(shù),size_t mClusterNum為聚類數(shù),size_t mFeatureNum為每個(gè)樣本的特征數(shù),size_t mImageWidth為原始圖像寬,size_t mImageHeight為原始圖像高,CvRNG mRNG為隨機(jī)數(shù)種子,可用cvRNG(cvGetTickCount()) 進(jìn)行初始化,GrayClusterData*mpGraySampleData用來存儲(chǔ)灰度圖像的樣本總數(shù)據(jù),ColorClusterData*mpColorSampleData用來存儲(chǔ)彩色圖像的樣本總數(shù)據(jù)。所有的成員變量都是private類型。

      public成員函數(shù)有void GetClusteredImage(IplImage*pOrginalImage, IplImage*pClusteredImage, size_t clusterNum),用于傳輸原圖像pOrginalImage,獲取分割后的圖像pClusteredImage,值得注意的是,pOrginalImage和pClusteredImage都需要由外界去開辟圖像空間。

      Private成員函數(shù)有void Initialize(IplImage*pOrginalImage, size_t clusterNum),用來初始化各種變量,pOrginalImage為原圖像,clusterNum為聚類數(shù)。void FuzzyCMeans(int m_value),模糊C均值算法的入口,m_value的值一般為2。void FuzzyCInitialize(double*pMemberShip, double*pDistances)為聚類的初始化,pMemberShip存儲(chǔ)總樣本隸屬度,pDistances存儲(chǔ)每一個(gè)樣本點(diǎn)到每一個(gè)聚類中心點(diǎn)的距離平方值。void FuzzyCCalculate(double*pMemberShip, double*pDistances, int m_value)用來計(jì)算模糊C均值聚類,void ClusteredResult(double*pMemberShip)用來計(jì)算聚類結(jié)果并分類,將每一個(gè)樣本點(diǎn)歸為隸屬度最大的那一類。

      成員函數(shù)間的調(diào)用。GetClusteredImage函數(shù)是僅有的外部接口,main函數(shù)通過調(diào)用它,傳遞原圖像數(shù)據(jù)和獲取分割后的圖像能。該函數(shù)在內(nèi)部依次調(diào)用Initialize和FuzzyCMeans,最后將pClusteredImage中每個(gè)像素點(diǎn)的值,按照它屬于的類,依次進(jìn)行賦值,這樣整幅圖像就被分成了c個(gè)類的值了。

      FuzzyCMeans函數(shù)按順序分別調(diào)用FuzzyCInitialize、FuzzyCCalculate和ClusteredResult三個(gè)函數(shù)。調(diào)用的結(jié)構(gòu)見圖2,按照1-6的順序執(zhí)行。首先在main函數(shù)中定義原圖pOrginalImage,分割后的圖像pClusteredImage,和聚類數(shù)clusterNum,然后將3個(gè)參數(shù)傳遞給GetClusteredImage,最后用pClusteredImage存儲(chǔ)分割后的圖像。

      圖2 成員函數(shù)調(diào)用流程

      數(shù)據(jù)的賦值。大部分?jǐn)?shù)據(jù)的賦值工作由Initialize成員函數(shù)完成,根據(jù)外部傳遞進(jìn)來的圖像數(shù)據(jù)進(jìn)行賦值。在Initialize函數(shù)中開辟mpGraySampleData和mpColorSampleData空間,存儲(chǔ)原始灰度和彩色圖像的數(shù)據(jù)。

      模糊C均值聚類算法的實(shí)現(xiàn)。模糊C均值算法的實(shí)現(xiàn)由FuzzyCMeans函數(shù)完成,在該函數(shù)里,開辟了存儲(chǔ)總樣本隸屬度pMemberShip、樣本與聚類中心距離平方的集合pDistances、聚類中心點(diǎn)集合mpCenters和聚類結(jié)果集合mpClusterResult的空間。在調(diào)用完FuzzyCInitialize、FuzzyCCalculate和ClusteredResult函數(shù)后,還需要負(fù)責(zé)釋放非成員變量pMemberShip和pDistances動(dòng)態(tài)開辟的空間。

      模糊C聚類算法初始化與計(jì)算。聚類算法的初始化是通過FuzzyCInitialize實(shí)現(xiàn)的,其作用是初始化聚類中心和初始化樣本與聚類中心距離平方的集合(簡稱距離矩陣)。FCM算法的計(jì)算通過FuzzyCCalculate實(shí)現(xiàn),主要是計(jì)算隸屬度和聚類中心以及相鄰兩代目標(biāo)函數(shù)值的絕對差,根據(jù)公式(3)和公式(4),分別得出每次迭代更新的聚類中心和隸屬度,并求出聚類中心更新后的樣本點(diǎn)到每個(gè)聚類中心的距離矩陣。若前后兩次的目標(biāo)函數(shù)值小于允許誤差或運(yùn)行次數(shù)超過最大迭代次數(shù),則終止計(jì)算,否則重新計(jì)算隸屬度、聚類中心和距離矩陣。

      聚類結(jié)果的計(jì)算。把每個(gè)樣本所屬類的值存儲(chǔ)到mpClusterResult中。該過程是通過ClusteredResult函數(shù)實(shí)現(xiàn)的,它將每個(gè)樣本點(diǎn)的隸屬度進(jìn)行比較,將隸屬度最大的類賦給該樣本,并存儲(chǔ)到mpClusterResult中。

      4 實(shí)驗(yàn)結(jié)果

      本文采用兩幅彩色圖進(jìn)行對比實(shí)驗(yàn),原圖為圖3所示,其中Lena像素分別率為512*512,JLK Magenta像素分辨率是586*764。實(shí)驗(yàn)電腦配置:CPUi7 7700HQ,內(nèi)存8G,win10 x64系統(tǒng),硬盤為固態(tài)硬盤128G。

      對于灰度圖像,采用模糊C均值聚類算法和分水嶺算法進(jìn)行對比研究;對于彩色圖像,僅采用模糊C均值聚類算法。

      4.1灰度圖像分割

      首先,對圖3中的Lena用模糊C均值聚類算法進(jìn)行圖像分割,以灰度像素值為樣本特征值,設(shè)置聚類數(shù)目分別為2和5,圖像分割的結(jié)果見圖4。

      Lena JLK Magenta圖3 原始圖像

      對JLK Magenta進(jìn)行灰度圖像分割的結(jié)果如圖5所示。

      聚類數(shù)為2 聚類數(shù)為5圖5 JLK Magenta灰度分割后的圖像

      將程序各運(yùn)行10次可知,不同聚類數(shù)和分辨率的圖像分割時(shí)間不同,聚類數(shù)越多,運(yùn)行時(shí)間越長;JLK Magenta圖像分割比Lena圖像分割的運(yùn)行時(shí)間長。表1和表2分別記錄了Lena圖像分割和JLK Magenta圖像分割的運(yùn)行時(shí)間和平均運(yùn)行時(shí)間。

      表1 灰度Lena不同聚類數(shù)的運(yùn)行時(shí)間(單位:秒)

      表2 灰度JLK Magenta不同聚類數(shù)的運(yùn)行時(shí)間(單位:秒)

      再對Lena和JLK Magenta圖像分別用分水嶺算法進(jìn)行分割,結(jié)果如圖6所示。

      將圖4和圖6的Lena分析可得,圖4分割清晰準(zhǔn)確,區(qū)域劃分簡潔明朗,圖6的Lena中局部圖像區(qū)域劃分過多。圖4中,當(dāng)聚類數(shù)為2時(shí),區(qū)域劃分更為簡潔,當(dāng)聚類數(shù)為5時(shí),圖像分割更精細(xì)。

      將圖5和圖6的JLK Magenta做對比可知,圖5邊緣分割精確,當(dāng)聚類數(shù)為2時(shí),整體分為兩大類,整個(gè)人體的輪廓清晰可見,但具體的細(xì)節(jié)不夠,如眼睛等;當(dāng)聚類數(shù)為5時(shí),細(xì)節(jié)信息顯露得十分清楚。而圖6的JLK Magenta區(qū)域劃分不準(zhǔn)確,局部區(qū)域分割過多,細(xì)節(jié)信息偏少。

      4.2彩色圖像分割

      對圖3的兩幅圖像做彩色圖像分割,以R、G、B三個(gè)空間的像素值作為樣本的特征值,設(shè)置聚類數(shù)目分別為2和5,對Lena和JLK Magenta分別進(jìn)行圖像分割,其結(jié)果見圖7和圖8。

      Lena JLK Magenta 圖6 Lena分水嶺算法

      分別將程序運(yùn)行10次,對于Lena的彩色和JLK Magenta的彩色圖像分割時(shí)間對比見表3和表4。

      表3 彩色Lena不同聚類數(shù)的運(yùn)行時(shí)間(單位:秒)

      表4 彩色JLK Magenta不同聚類數(shù)的運(yùn)行時(shí)間(單位:秒)

      5 實(shí)驗(yàn)結(jié)論

      將表1和表3對比,表2和表4對比可以看出,同一張圖片,在相同聚類數(shù)的情況下,對灰度和彩色圖像進(jìn)行分割,運(yùn)行時(shí)間差異很大,故一個(gè)樣本的特征數(shù)目越多,運(yùn)行時(shí)間越長。將表1和表2對比,表3和表4對比可以看出,對于分辨率不一樣、其他情況相同的圖片,運(yùn)行時(shí)間也是不同的,分辨率越大的,運(yùn)行時(shí)間越長。單獨(dú)看表1、2、3、4,對于同一張圖片,聚類數(shù)不同,其他條件均相同的圖片,聚類數(shù)越多,所消耗的時(shí)間越長。上述圖像中當(dāng)聚類數(shù)為2時(shí),切割后的圖像的信息顯得丟失不少,而當(dāng)聚類數(shù)為5時(shí),運(yùn)行的時(shí)間大幅增加,故在確定聚類數(shù)的時(shí)候需要有一個(gè)權(quán)衡。將圖4與圖5對比,圖6與圖7對比,可以看出,模糊C均值聚類算法的圖像分割效果比分水嶺算法要好很多,分水嶺算法在圖像局部區(qū)域過多分割,而且圖像邊緣也沒有模糊C均值聚類算法檢測的精確。總體上看,對于無噪聲的圖片,模糊C均值算法要優(yōu)于分水嶺算法,但要達(dá)到實(shí)時(shí)圖像處理,還需要進(jìn)一步改進(jìn)算法。本文的程序運(yùn)行時(shí)間較長,需要對模糊C均值算法進(jìn)行改進(jìn)和優(yōu)化。由于模糊C均值算法對含有噪聲的圖片很敏感,所以沒有詳細(xì)討論,如何抗噪,也是需要改進(jìn)的一個(gè)方向。另外,在運(yùn)行程序前,需要人為根據(jù)實(shí)際圖片,憑經(jīng)驗(yàn)確定分類數(shù)目,無法進(jìn)行自動(dòng)確定分類數(shù),從而無法對圖像進(jìn)行自動(dòng)分割。如何進(jìn)行自動(dòng)確定圖像分類數(shù)也是以后需要改進(jìn)的一個(gè)方向。

      [1] Zaitoun N M, Aqel M J. Survey on Image Segmentation Techniques[J].Procedia Computer Science, 2015, 65(4):797-806.

      [2] Zhang M, Jiao L, Ma W, et al. Multi-objective evolutionary fuzzy clustering for image segmentation with MOEA/D[J].Applied Soft Computing, 2016(48): 621-637.

      [3] Qian P, Zhao K, Jiang Y, et al. Knowledge-leveraged transfer fuzzy C-Means for texture image segmentation with self-adaptive cluster prototype matching[J].Knowledge-Based Systems, 2017(130): 33-50.

      [4] 江銘炎,袁東風(fēng).人工蜂群算法及其應(yīng)用[M].北京: 科學(xué)出版社,2014:195-197.

      (責(zé)任編輯:熊文濤)

      TP391.41

      A

      2095-4824(2017)06-0091-06

      2017-09-05

      劉 衣(1986- ),男,湖北孝感人,湖北工程學(xué)院新技術(shù)學(xué)院助教,碩士。

      游繼安(1987- ),男,湖北孝感人,湖北工程學(xué)院新技術(shù)學(xué)院助教,碩士。

      猜你喜歡
      彩色圖像均值灰度
      采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
      基于灰度拉伸的圖像水位識(shí)別方法研究
      基于FPGA的實(shí)時(shí)彩色圖像邊緣檢測
      電子制作(2019年16期)2019-09-27 09:34:46
      基于最大加權(quán)投影求解的彩色圖像灰度化對比度保留算法
      基于灰度線性建模的亞像素圖像抖動(dòng)量計(jì)算
      均值不等式失效時(shí)的解決方法
      均值與方差在生活中的應(yīng)用
      基于顏色恒常性的彩色圖像分割方法
      關(guān)于均值有界變差函數(shù)的重要不等式
      對偶均值積分的Marcus-Lopes不等式
      屯门区| 阿拉善右旗| 邯郸市| 汽车| 汶川县| 山西省| 平南县| 桐乡市| 阜平县| 汾西县| 海丰县| 江安县| 霍山县| 诸城市| 塔城市| 乐昌市| 同德县| 自贡市| 密云县| 延吉市| 化州市| 北碚区| 黄平县| 锡林郭勒盟| 德化县| 淮南市| 林周县| 芷江| 密云县| 德钦县| 广宗县| 攀枝花市| 新平| 玛纳斯县| 乾安县| 贺兰县| 沽源县| 宜州市| 岢岚县| 黄石市| 澳门|