在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于K-means聚類算法的圖像分割

新機器視覺 ? 來源:新機器視覺 ? 2023-09-07 16:59 ? 次閱讀

				

圖像分割:利用圖像的灰度、顏色、紋理、形狀等特征,把圖像分成若干個互不重疊的區域,并使這些特征在同一區域內呈現相似性,在不同的區域之間存在明顯的差異性。然后就可以將分割的圖像中具有獨特性質的區域提取出來用于不同的研究。

1. 應用

  • 在機車檢驗領域,可以應用到輪轂裂紋圖像的分割,及時發現裂紋,保證行車安全。

  • 在生物醫學工程方面,對肝臟CT圖像進行分割,為臨床治療和病理學研究提供幫助。

2. 圖像分割常用方法

  • 閾值分割:對圖像灰度值進行度量,設置不同類別的閾值,達到分割的目的。

  • 邊緣分割:對圖像邊緣進行檢測,即檢測圖像中灰度值發生跳變的地方,則為一片區域的邊緣。

  • 直方圖法:對圖像的顏色建立直方圖,而直方圖的波峰波谷能夠表示一塊區域的顏色值的范圍,來達到分割的目的。

  • 特定理論:基于聚類分析小波變換等理論完成圖像分割。

3. 實例描述

  • 目標:利用K-means聚類算法對圖像像素點顏色進行聚類。

  • 輸出:同一聚類中的點使用相同顏色標記,不同聚類顏色不同。

  • 導入Python模塊:from sklearn.cluster import KMeans

  • 實例數據:本實例中的數據可以是任意大小的圖片,為了使效果更佳直觀,可以采用區分度比較明顯的圖片。

4. 實驗過程

  • [ Step1 ] 建立工程并導入sklearn包

  • [ Step2 ] 加載圖片并進行預處理

  • [ Step3 ] 加載K-means聚類算法

  • [ Step4 ] 對像素點進行聚類并輸出

PIL包: 因為本實驗涉及圖像的加載和創建,因此需要使用到 PIL 包。

Step1: 建立工程并導入sklearn包
  • 創建Kmeans.py文件

  • 導入sklearn相關包

import numpy as np
from PIL import Image  #加載PIL包,用于加載創建圖片
from sklearn.cluster import KMeans  #加載Kmeans算法
import matplotlib.pyplot as plt  #繪制圖像
Step2: 加載圖片并進行預處理
  • 加載訓練數據

def loadData(filePath):
    f = open(filePath, 'rb') #以二進制形式打開文件
    data = []
    img = Image.open(f)  #以列表的形式返回圖片像素值
    m, n = img.size   #獲取圖片的大小
    for i in range(m):  #將每個像素點的RGB顏色處理到0-1
        for j in range(n):
            x,y,z = img.getpixel((i,j))
            data.append([x/256.0, y/256.0, z/256.0]) #范圍內并存入data
    f.close()
    return np.mat(data), m, n #以矩陣的形式返回data,以及圖片大小
Step3: 加載K-means聚類算法
#加載Kmeans聚類算法
km = KMeans(n_clusters= 3) #其中n clusters屬性指定了聚類中心的個數為3
Step4: 對像素點進行聚類并輸出
  • 對像素點進行聚類并輸出心依據聚類中心,對屬于同一聚類的點使用同樣的顏色進行標記。

#聚類獲取每個像素所屬的類別
label = km.fit_predict(imgData)
label = label.reshape([row, col])
#創建一張新的灰度圖保存聚類后的結果
pic_new = Image.new('L', (row, col))
#根據所屬類別向圖片中添加灰度值
# 最終利用聚類中心點的RGB值替換原圖中每一個像素點的值,便得到了最終的分割后的圖片
for i in range(row):
    for j in range(col):
        pic_new.putpixel((i, j), int(256 / (label[i][j] + 1)))
#以JPEG格式保存圖片
pic_new.save("result_demo1.jpg","JPEG")
plt.imshow(pic_new)
plt.show()
5. 用例數據及展示結果

6de7ea7c-4d5b-11ee-a25d-92fbcf53809c.png

6.K-means聚類算法-程序代碼

# -*- coding: utf-8 -*-
# @Time    : 2020/3/31 21:27
# @Author  : Zudy
# @FileName: course1.py
'''
1.進行圖像中顏色的分類(K-means聚類算法對圖像像素點顏色進行聚類實現間的圖像分割)
'''
import numpy as np
from PIL import Image
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
def loadData(filePath):
    f = open(filePath, 'rb') #以二進制形式打開文件
    data = []
    img = Image.open(f)  #以列表的形式返回圖片像素值
    m, n = img.size   #獲取圖片的大小
for i in range(m):  #將每個像素點的RGB顏色處理到0-1
for j in range(n):
            x,y,z = img.getpixel((i,j))
            data.append([x/256.0, y/256.0, z/256.0]) #范圍內并存入data
    f.close()
return np.mat(data), m, n #以矩陣的形式返回data,以及圖片大小
path='./基于聚類的整圖分割/demo1.jpg'
imgData, row, col = loadData(filePath= path)
print(imgData)
print(row)
print(col)
#加載Kmeans聚類算法
km = KMeans(n_clusters= 3)
#聚類獲取每個像素所屬的類別
label = km.fit_predict(imgData)
label = label.reshape([row, col])
#創建一張新的灰度圖保存聚類后的結果
pic_new = Image.new('L', (row, col))
#根據所屬類別向圖片中添加灰度值
# 最終利用聚類中心點的RGB值替換原圖中每一個像素點的值,便得到了最終的分割后的圖片
for i in range(row):
for j in range(col):
        pic_new.putpixel((i, j), int(256 / (label[i][j] + 1)))
#以JPEG格式保存圖片
pic_new.save("result_demo1.jpg","JPEG")
plt.imshow(pic_new)
plt.show()

驗分析

通過設置不同的k值,能夠得到不同的聚類結果。同時,k值的不確定也是Kmeans算法的一個缺點。往往為了達到好的實驗結果,需要進行多次嘗試才能夠選取最優的k值。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像分割
    +關注

    關注

    4

    文章

    182

    瀏覽量

    18047
  • 聚類算法
    +關注

    關注

    2

    文章

    118

    瀏覽量

    12158
  • K-means
    +關注

    關注

    0

    文章

    28

    瀏覽量

    11336

原文標題:[sklearn]基于K-means聚類算法的圖像分割

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于距離的算法K-means的設計實現

    K-means 算法是典型的基于距離的算法,采用距離作為相似性的評價指標,兩個對象的距離越近,其相似度就越大。而簇是由距離靠近的對象組成
    的頭像 發表于 07-18 09:19 ?2374次閱讀
    基于距離的<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b><b class='flag-5'>K-means</b>的設計實現

    一種增強的K-means算法在入侵檢測中的應用

           異常檢測是入侵檢測中防范新型攻擊的基本手段,本文應用增強的K-means 算法對檢測數據進行分類。計算機仿
    發表于 09-03 10:21 ?14次下載

    Web文檔k-means算法的改進

    Web文檔k-means算法的改進 介紹了Web文檔中普遍使用的、基于
    發表于 09-19 09:17 ?1071次閱讀
    Web文檔<b class='flag-5'>聚</b><b class='flag-5'>類</b>中<b class='flag-5'>k-means</b><b class='flag-5'>算法</b>的改進

    K-means+算法研究綜述

    介紹了K-means 算法的目標函數、算法流程,并列舉了一個實例,指出了數據子集的數目K、初
    發表于 05-07 14:09 ?27次下載
    <b class='flag-5'>K-means</b>+<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>研究綜述

    基于離散量改進k-means初始中心選擇的算法

    傳統kmeans算法由于初始中心的選擇是隨機的,因此會使結果不穩定。針對這個問題,提出一種基于離散量改進
    發表于 11-20 10:03 ?2次下載

    基于密度的K-means算法數目中應用

    針對傳統的K-means算法無法預先明確數目,對初始中心選取敏感且易受離群孤點影響導致
    發表于 11-25 11:35 ?0次下載

    K均值算法的MATLAB實現

    K-means算法是最簡單的一種算法算法的目的是使各個樣本與所在
    發表于 12-01 14:07 ?2.1w次閱讀
    <b class='flag-5'>K</b>均值<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>的MATLAB實現

    K-Means算法改進及優化

    傳統的k-means算法采用的是隨機數初始化中心的方法,這種方法的主要優點是能夠快速的產生初始化的
    發表于 12-05 18:32 ?0次下載
    <b class='flag-5'>K-Means</b><b class='flag-5'>算法</b>改進及優化

    基于布谷鳥搜索的K-means算法

    針對原始K-means算法受初始中心影響過大以及容易陷入局部最優的不足,提出一種基于改進
    發表于 12-13 17:24 ?3次下載

    大數據處理的優化抽樣K-means算法

    針對大數據環境下K-means算法精度不足和收斂速度慢的問題,提出一種基于優化抽樣
    發表于 12-22 15:47 ?4次下載
    大數據處理的優化抽樣<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>K-means</b><b class='flag-5'>算法</b>

    K-Means算法的簡單介紹

    K-Means是十大經典數據挖掘算法之一。K-Means和KNN(K鄰近)看上去都是K打頭,但卻是不同種類的
    發表于 07-05 14:18 ?4952次閱讀

    如何使用K-Means算法改進的特征加權算法詳細資料概述

    聚類分析是將研究對象分為相對同質的群組的統計分析技術,聚類分析的核心就是發現有用的對象簇。K-means算法由于具有出色的速度和良好的可擴展性,一直備受廣大學者的關注。然而,傳統的
    發表于 12-20 10:28 ?10次下載

    K-MEANS算法概述及工作原理

    K-means 是一種算法,且對于數據科學家而言,是簡單且熱門的無監督式機器學習(ML)算法之一。
    的頭像 發表于 06-06 11:53 ?4163次閱讀

    K-means算法指南

    技術領域中,K-means可能是最常見和經常使用的技術之一。K-means使用迭代細化方法,基于用戶定義的集群數量(由變量K表示)和數
    的頭像 發表于 10-28 14:25 ?1548次閱讀

    大學課程 數據分析 實戰之K-means算法(2)算法代碼

    繼續講解! 程序來啦! 最后看一下程序示例!看看如何用K-means算法實現數據的過程。程序很簡單,側重讓大家了解和掌握 K-means
    的頭像 發表于 02-11 07:20 ?487次閱讀
    主站蜘蛛池模板: 中文字幕一区二区三区精彩视频 | 天天色天天草 | 五月婷在线观看 | 狠狠色噜噜狠狠狠狠狠色综合久久 | h小视频在线观看网 | 一本在线免费视频 | 色综合天天综合网国产成人网 | 在线天堂中文 | 把小嫩嫩曰出白浆 | 你懂得在线播放 | aaa一区二区三区 | 波多野结衣久久国产精品 | 欧美色图网站 | 久久久久久久久久久9精品视频 | 99热这里只有精品一区二区三区 | www在线视频在线播放 | 亚洲一区二区免费 | 色图综合网 | 天天激情站 | 久久98精品久久久久久婷婷 | 夜夜爽夜夜 | 日本5级床片全免费 | 国产伦精品一区二区三区高清 | 视频在线一区二区 | 久久成人免费网站 | 免费看污黄视频软件 | 亚洲综合一区二区三区 | 失禁h啪肉尿出来高h受 | 狠狠色丁香婷婷综合激情 | 色婷婷激情综合 | 琪琪see色原网一区二区 | 天堂视频在线免费观看 | 午夜在线观看cao | 一级毛片aaaaaa视频免费看 | 老师下面好湿好紧好滑好想要 | 天天色天天爽 | 加勒比一区二区三区 | 中文字幕在线一区二区在线 | 影音先锋ady69色资源网站 | 午夜影院在线观看 | 婷婷涩五月 |