利用K-Means進(jìn)行圖像分割

使用K—Means進(jìn)行圖像分割

一、需要用到的庫(kù):

sklearn.cluster中的kmeans关顷、PIL中的image糊秆、skimage中的color、PIL中的image

PIL是圖像處理標(biāo)準(zhǔn)庫(kù)议双,用image得到圖像的像素值和尺寸大小痘番,依據(jù)尺寸,可以得到各個(gè)點(diǎn)的RGB值(三通道值)平痰,還可以利用image內(nèi)的函數(shù)保存圖片汞舱。利用PIL庫(kù)可以對(duì)圖像進(jìn)行讀寫(xiě)

<pre>import PIL.Image as image

# 得到圖像的像素值

img = image.open(f)

# 得到圖像尺寸

width, height = img.size</pre>

二、準(zhǔn)備階段

加載數(shù)據(jù)—獲取圖像信息【包括圖像像素?cái)?shù)據(jù)宗雇、圖像的尺寸和通道數(shù)】—對(duì)圖像每個(gè)通道的數(shù)據(jù)進(jìn)行數(shù)據(jù)規(guī)范化

jpg格式的圖像具有三個(gè)通道(R昂芜,G,B)赔蒲,也就是一個(gè)像素點(diǎn)具有3個(gè)特征值泌神,特征值的范圍在0-255之間。

為了加速聚類(lèi)的收斂舞虱,可以對(duì)通道值進(jìn)行規(guī)范化欢际。

三、進(jìn)行聚類(lèi)

Fit_predict進(jìn)行kmeans

四矾兜、將聚類(lèi)結(jié)果可視化

將聚類(lèi)表示轉(zhuǎn)換為不同顏色的矩陣损趋,可以手動(dòng)對(duì)各個(gè)聚類(lèi)標(biāo)識(shí)規(guī)定顏色,比如得到各個(gè)聚類(lèi)中心的RGB通道來(lái)代表這一類(lèi)的RGB通道值椅寺,下圖舉了三個(gè)例子舶沿,表示第0、1配并、2類(lèi)的通道值

五、總的代碼

<pre>

import numpy as np

import PIL.Image as image

from sklearn.cluster import KMeans

from sklearn import preprocessing

# 加載圖像高镐,并對(duì)數(shù)據(jù)進(jìn)行規(guī)范化

def load_data(filePath):

? ? # 讀文件

? ? f = open(filePath,'rb')

? ? data = []

? ? # 得到圖像的像素值

? ? img = image.open(f)

? ? # 得到圖像尺寸

? ? width, height = img.size

? ? for x in range(width):

? ? ? ? for y in range(height):

? ? ? ? ? ? # 得到點(diǎn) (x,y) 的三個(gè)通道值

? ? ? ? ? ? c1, c2, c3 = img.getpixel((x, y))

? ? ? ? ? ? data.append([(c1+1)/256.0, (c2+1)/256.0, (c3+1)/256.0])

? ? f.close()

? ? return np.mat(data), width, height

# 加載圖像溉旋,得到規(guī)范化的結(jié)果 imgData,以及圖像尺寸

img, width, height = load_data(r'C:\users\dell\Desktop\weixin.jpg')

# 用 K-Means 對(duì)圖像進(jìn)行 16 聚類(lèi)

kmeans =KMeans(n_clusters=16)

label = kmeans.fit_predict(img)#因?yàn)閒it和predict傳入的數(shù)據(jù)是一樣的嫉髓,所以可以直接寫(xiě)在一起观腊,直接得到聚類(lèi)結(jié)果

# 將圖像聚類(lèi)結(jié)果邑闲,轉(zhuǎn)化成圖像尺寸的矩陣

label = label.reshape([width, height])

# 創(chuàng)建個(gè)新圖像 img,用來(lái)保存圖像聚類(lèi)壓縮后的結(jié)果

img=image.new('RGB', (width, height))

for x in range(width):

? ? for y in range(height):

? ? ? ? c1 = kmeans.cluster_centers_[label[x, y], 0]

? ? ? ? c2 = kmeans.cluster_centers_[label[x, y], 1]

? ? ? ? c3 = kmeans.cluster_centers_[label[x, y], 2]

? ? ? ? #c1,c2,c3代表了每個(gè)類(lèi)RGB通道的數(shù)值

? ? ? ? img.putpixel((x, y), (int(c1*256)-1, int(c2*256)-1, int(c3*256)-1))

? ? ? ? # #用 putpixel 函數(shù)對(duì)新圖像的點(diǎn)進(jìn)行RGB的設(shè)置梧油,因?yàn)榍懊鎸?duì)通道值進(jìn)行了規(guī)范化苫耸,控制在了0-1,但是通道值要在0-255的時(shí)候才會(huì)顯示出顏色儡陨,所以這邊*256恢復(fù)到0-255的范圍

img.save(r'C:\users\dell\Desktop\weixin_new.jpg')

<\pre>

得到的圖片如下所示:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末褪子,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子骗村,更是在濱河造成了極大的恐慌嫌褪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胚股,死亡現(xiàn)場(chǎng)離奇詭異笼痛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)琅拌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)缨伊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人进宝,你說(shuō)我怎么就攤上這事刻坊。” “怎么了即彪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵紧唱,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我隶校,道長(zhǎng)漏益,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任深胳,我火速辦了婚禮绰疤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舞终。我一直安慰自己轻庆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布敛劝。 她就那樣靜靜地躺著余爆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪夸盟。 梳的紋絲不亂的頭發(fā)上蛾方,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼桩砰。 笑死拓春,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亚隅。 我是一名探鬼主播硼莽,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼煮纵!你這毒婦竟也來(lái)了懂鸵?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤醉途,失蹤者是張志新(化名)和其女友劉穎矾瑰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體隘擎,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡殴穴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了货葬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采幌。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖震桶,靈堂內(nèi)的尸體忽然破棺而出休傍,到底是詐尸還是另有隱情,我是刑警寧澤蹲姐,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布磨取,位于F島的核電站,受9級(jí)特大地震影響柴墩,放射性物質(zhì)發(fā)生泄漏忙厌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一江咳、第九天 我趴在偏房一處隱蔽的房頂上張望逢净。 院中可真熱鬧,春花似錦歼指、人聲如沸爹土。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胀茵。三九已至,卻和暖如春挟阻,著一層夾襖步出監(jiān)牢的瞬間宰掉,已是汗流浹背呵哨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轨奄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓拒炎,卻偏偏與公主長(zhǎng)得像挪拟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子击你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容