2017-04-27 50 views
-1

我有1500名患者肺部的圖像,我試圖在他們身上應用kmean來解決我的問題。我的問題是,我想對一名患者(有230張圖像)應用k均值,然後保存此患者的質心,我想根據此質心對其他患者應用kmeans。這是matlab代碼。 [idx,C] = kmeans(data,80) 現在,我有C但我應該怎麼做才能使用它並將該質心應用於其他圖像?以k爲基準形心的聚類

這裏'我的數據看起來像,我是基於這些圖像的直方圖聚類。

Img1 histogram with 16 bins 
Img2 Histo gram with 16 bins 
Img3 // // // // // // // 
Img4 /////// /// ///
. 
. 
. 

任何教程或任何可能的幫助,請建議。謝謝。

回答

1

Kmeans最接近的中心確定的每個點的成員資格。因此,擁有這些中心後,您可以通過檢查它們與每個中心的距離來保持更多關聯。在MATLAB中可以方便的與pdist2做到這一點:

dim = 2; 
n = 100; 
% generate two data sets 
data1 = rand(n,dim); 
data2 = rand(n,dim); 
% computing membership & clusters using kmeans on data1 
k = 5; 
[idx1,C] = kmeans(data1,k); 
% computing membership using pairwise distance on data2 
D = pdist2(data2,C); 
[~,idx2] = min(D,[],2); 
% plot centers 
scatter(C(:,1),C(:,2),100,1:k,'*') 
hold on 
% plot data1 
scatter(data1(:,1),data1(:,2),30,idx1,'filled') 
% plot data2 
scatter(data2(:,1),data2(:,2),30,idx2) 
legend('centers','data1','data2') 

如果你願意,你甚至可以使用Voronoi圖繪製成員資格限制:

voronoi(C(:,1),C(:,2)); 

enter image description here