2015-07-01 58 views
0

我想要使用k均值聚類來分割用於土地覆蓋的RGB圖像(衛星圖像),使得圖像的不同區域用不同的顏色標記,並且如果可能的話創建分隔不同區域的邊界。RGB圖像的RGB圖像分割意味着python中的聚類

K-means聚類可以實現嗎? 我一直在搜索整個互聯網和許多教程通過k意味着羣集,但只有在將圖像轉換爲灰度後。我只想用RGB圖像來做。有什麼資料可以幫助我開始? 請提出建議。

+0

這個問題對於SO來說可能太寬泛了。而且目前的形式很模糊。您想要區分大致相似顏色的區域嗎? FWIW,k-means聚類_can_可用於對RGB圖像執行顏色量化。然而,標準k-means可能不適合你的任務,因爲你需要提前指定'k'(地區的數量)。也許像[生成自組織映射](https://en.wikipedia.org/wiki/Growing_self-organizing_map)這種不同的方法會更好。 –

+0

謝謝你的幫助。爲了澄清我的問題,我想對地表衛星影像進行圖像分割作爲GIS的一個應用,因此這些區域具有不同的顏色,強度和紋理。對於K均值聚類,我已經通過了我的項目的土地覆蓋分類文獻,發現用K均值聚類算法得到的最好結果用於圖像分割。現在請建議在這方面提出一些建議。 – RachJain

回答

0

你是什麼意思,他們將圖像轉換爲灰度?該公式計算一個點與質心的歐幾里得距離。因此使用R,G,B值。閱讀這個學生報告使用不同的色彩空間的比較 - RGB或HSV:http://www.cs.bgu.ac.il/~ben-shahar/Teaching/Computational-Vision/StudentProjects/ICBV121/ICBV-2012-1-OfirNijinsky-AvivPeled/report.pdf

+0

當我說他們先把它轉換成灰度,這裏是一個鏈接到[鏈接](http://scikit-learn.org/stable/auto_examples/cluster/plot_lena_segmentation.html) – RachJain

+0

它沒有轉換爲灰度,圖像它本身通過函數scipy.misc.lena()獲得灰度。查看圖形切割 - 它們可能更適合衛星圖像。 – riddler

0

我想這是不相關的RachJain但如果有人在未來的需求: 一個簡單的使用sklearn KMean算法將給通緝結果:

from sklearn.cluster import KMeans 
pic = np.float64(misc.imread(filepath)/255) 
kmeans = KMeans(n_clusters=13, random_state=0).fit(pic) 
pic2show = kmeans.cluster_centers_[kmeans.labels_] 
plt.imshow(pic2show)