0

組織病理学的医用画像にk-meansクラスタリングアルゴリズムを適用して、ピクセルをクラスに分類しています。k-meansを適用する場合はすべて問題ありませんが、小さな問題があります。k-means関数(matlabで使用可能)を何度も実行すると、画像のピクセルが毎回異なる色で表示されます。k-means関数を何度も適用するときに、ピクセルの色を同じにすることはできますか?

卒業生、

サファア

4

3 に答える 3

0

k-meansはランダム化されたアルゴリズムです。実行するたびに異なる結果が返されます。ただし、他のクラスタリングアルゴリズムでは、意図した意味(色など)へのクラスターのマッピングを見つける必要があります。

ランダムジェネレーターを修正するか、初期手段を手動で選択することでチートできます(Matlabは使用していませんが、何らかの形でサポートされていると思います)。そうすれば、結果はより安定しますが、それでも必ずしも画像間で比較できるとは限りません。

于 2012-08-27T06:22:37.933 に答える
0

この機能にMatlabを使用したことはありません。しかし、Kmeans クラスタリングの結果は、最初の中心点の選択に基づいていると思います。おそらく、Matlab 関数は K 個の初期ピクセルをランダムに選択します。これは、毎回異なる結果が得られたことを説明している可能性があります。

于 2012-08-26T18:33:05.067 に答える
0

Matlab kmeans関数には start という名前のパラメーターがあり、それを使用して開始シードを定義できます。

start 、シードと呼ばれることもある初期クラスター重心位置を選択するために使用されるメソッド。

ドキュメントによると、デフォルト値は

'sample' X から k 個の観測を無作為に選択します (既定)。

他のオプションがありますが、マトリックスオプションのみがランダムではありません。この場合、重心の開始位置の行列 k 行 p 列を定義する必要があります。

以下の例を参照してください。matlab のドキュメントから取得し、ここで変更します。

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];
opts = statset('Display','final');

k = 2;
startPositions = [0.01 0.01 ; -0.01 -0.01];

[idx,ctrs] = kmeans(X,k,...
                    'Distance','city',...
                    'Options',opts,...
                    'Start',startPositions ...
                );

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')

データ自体がランダムであるため、クラスターの中心が変化するように見えることに注意してください。データを static に変更すると、クラスター センターも静的になります。

于 2012-08-27T23:08:29.003 に答える