真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python圖像處理丨基于K-Means聚類的圖像區(qū)域分割

摘要:本篇文章主要講解基于理論的圖像分割方法,通過(guò)K-Means聚類算法實(shí)現(xiàn)圖像分割或顏色分層處理。

本文分享自華為云社區(qū)《[Python圖像處理] 十九.圖像分割之基于K-Means聚類的區(qū)域分割》,作者: eastmount。

10余年的花溪網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整花溪建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“花溪網(wǎng)站設(shè)計(jì)”,“花溪網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

本篇文章主要講解基于理論的圖像分割方法,通過(guò)K-Means聚類算法實(shí)現(xiàn)圖像分割或顏色分層處理?;A(chǔ)性文章,希望對(duì)你有所幫助。

  • 一.K-Means原理
  • 二.K-Means聚類分割灰度圖像
  • 三.K-Means聚類對(duì)比分割彩色圖像

注意 :該部分知識(shí)均為楊秀璋查閱資料撰寫(xiě),未經(jīng)授權(quán)禁止轉(zhuǎn)載,謝謝?。∪绻袉?wèn)題隨時(shí)私聊我,只望您能從這個(gè)系列中學(xué)到知識(shí),一起加油喔~

該系列在github所有源代碼:https://github.com/eastmountyxz/ImageProcessing-Python

一.K-Means聚類原理

第一部分知識(shí)主要參考自己的新書(shū)《Python網(wǎng)絡(luò)數(shù)據(jù)爬取及分析從入門(mén)到精通(分析篇)》和之前的博客[Python數(shù)據(jù)挖掘課程] 二.Kmeans聚類數(shù)據(jù)分析。

K-Means聚類是最常用的聚類算法,最初起源于信號(hào)處理,其目標(biāo)是將數(shù)據(jù)點(diǎn)劃分為K個(gè)類簇,找到每個(gè)簇的中心并使其度量最小化。該算法的最大優(yōu)點(diǎn)是簡(jiǎn)單、便于理解,運(yùn)算速度較快,缺點(diǎn)是只能應(yīng)用于連續(xù)型數(shù)據(jù),并且要在聚類前指定聚集的類簇?cái)?shù)。

下面是K-Means聚類算法的分析流程,步驟如下:

  • 第一步,確定K值,即將數(shù)據(jù)集聚集成K個(gè)類簇或小組。
  • 第二步,從數(shù)據(jù)集中隨機(jī)選擇K個(gè)數(shù)據(jù)點(diǎn)作為質(zhì)心(Centroid)或數(shù)據(jù)中心。
  • 第三步,分別計(jì)算每個(gè)點(diǎn)到每個(gè)質(zhì)心之間的距離,并將每個(gè)點(diǎn)劃分到離最近質(zhì)心的小組,跟定了那個(gè)質(zhì)心。
  • 第四步,當(dāng)每個(gè)質(zhì)心都聚集了一些點(diǎn)后,重新定義算法選出新的質(zhì)心。
  • 第五步,比較新的質(zhì)心和老的質(zhì)心,如果新質(zhì)心和老質(zhì)心之間的距離小于某一個(gè)閾值,則表示重新計(jì)算的質(zhì)心位置變化不大,收斂穩(wěn)定,則認(rèn)為聚類已經(jīng)達(dá)到了期望的結(jié)果,算法終止。
  • 第六步,如果新的質(zhì)心和老的質(zhì)心變化很大,即距離大于閾值,則繼續(xù)迭代執(zhí)行第三步到第五步,直到算法終止。

下圖是對(duì)身高和體重進(jìn)行聚類的算法,將數(shù)據(jù)集的人群聚集成三類。

二.K-Means聚類分割灰度圖像

在圖像處理中,通過(guò)K-Means聚類算法可以實(shí)現(xiàn)圖像分割、圖像聚類、圖像識(shí)別等操作,本小節(jié)主要用來(lái)進(jìn)行圖像顏色分割。假設(shè)存在一張100×100像素的灰度圖像,它由個(gè)RGB灰度級(jí)組成,我們通過(guò)K-Means可以將這些像素點(diǎn)聚類成K個(gè)簇,然后使用每個(gè)簇內(nèi)的質(zhì)心點(diǎn)來(lái)替換簇內(nèi)所有的像素點(diǎn),這樣就能實(shí)現(xiàn)在不改變分辨率的情況下量化壓縮圖像顏色,實(shí)現(xiàn)圖像顏色層級(jí)分割。

在OpenCV中,Kmeans()函數(shù)原型如下所示:

retval, bestLabels, centers = kmeans(data, K, bestLabels, criteria, attempts, flags[, centers])

  • data表示聚類數(shù)據(jù),最好是np.flloat32類型的N維點(diǎn)集
  • K表示聚類類簇?cái)?shù)
  • bestLabels表示輸出的整數(shù)數(shù)組,用于存儲(chǔ)每個(gè)樣本的聚類標(biāo)簽索引
  • criteria表示算法終止條件,即最大迭代次數(shù)或所需精度。在某些迭代中,一旦每個(gè)簇中心的移動(dòng)小于criteria.epsilon,算法就會(huì)停止
  • attempts表示重復(fù)試驗(yàn)kmeans算法的次數(shù),算法返回產(chǎn)生最佳緊湊性的標(biāo)簽
  • flags表示初始中心的選擇,兩種方法是cv2.KMEANS_PP_CENTERS ;和cv2.KMEANS_RANDOM_CENTERS
  • centers表示集群中心的輸出矩陣,每個(gè)集群中心為一行數(shù)據(jù)

下面使用該方法對(duì)灰度圖像顏色進(jìn)行分割處理,需要注意,在進(jìn)行K-Means聚類操作之前,需要將RGB像素點(diǎn)轉(zhuǎn)換為一維的數(shù)組,再將各形式的顏色聚集在一起,形成最終的顏色分割。

# coding: utf-8
import cv2
import numpyas np
import matplotlib.pyplotas plt
#讀取原始圖像灰度顏色
img= cv2.imread('scenery.png', 0) 
print img.shape
#獲取圖像高度、寬度
rows, cols= img.shape[:]
#圖像二維像素轉(zhuǎn)換為一維
data= img.reshape((rows * cols, 1))
data= np.float32(data)
#定義中心 (type,max_iter,epsilon)
criteria= (cv2.TERM_CRITERIA_EPS +
            cv2.TERM_CRITERIA_MAX_ITER,10, 1.0)
#設(shè)置標(biāo)簽
flags= cv2.KMEANS_RANDOM_CENTERS
#K-Means聚類 聚集成4類
compactness, labels, centers= cv2.kmeans(data, 4, None, criteria, 10, flags)
#生成最終圖像
dst= labels.reshape((img.shape[0], img.shape[1]))
#用來(lái)正常顯示中文標(biāo)簽
plt.rcParams['font.sans-serif']=['SimHei']
#顯示圖像
titles= [u'原始圖像', u'聚類圖像'] 
images= [img, dst] 
for i in xrange(2): 
 plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray'), 
 plt.title(titles[i]) 
 plt.xticks([]),plt.yticks([]) 
plt.show()

新聞標(biāo)題:Python圖像處理丨基于K-Means聚類的圖像區(qū)域分割
文章起源:http://weahome.cn/article/dsogedj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部