0

やりたいこと k は、1024 * 1024 * 3 .ppm ファイルでのクラスタリングを意味します。この画像のポイントは強度が非常に低いことを認めなければなりません。今、私は写真を読んでサイズを変更し、alteast matlab が表示できるようにします。次に、組み込みの matlab kmeans 関数に渡すことができるように、それを再形成して double に変換するコード行です。

img1 = imread('picture.ppm');
img= imresize(img1,0.15);
imshow(img);
imf = double(reshape(img,size(img,1)*size(img,2),size(img,3)));
imf = imresize(imf,.15);
[m,n,z]=size(imf)

しかし、私は多くのエラーに遭遇しています。1) ポイントの強度が非常に低い。私がこれをした後:

Y=Y*255; %y being of the same dimension as my img
imf1 = Y-imf;

私の写真のほとんどは白く、強度の低い点が散らばっています.他の方法でそれらの点の強度を上げることができますか?

2)さまざまなkmeansアルゴリズムに有効な入力として渡すことができるように、画像をどうしますか? 黒点と赤点の 2 つのクラスターが必要です。

4

1 に答える 1

1

K-means では、定義済みの基準に基づいて出力されるクラスターの構成を指定することはできません。ポイントまでの距離が最小の重心を見つけようとするだけです。通常、黒と赤に対応する開始点を指定できますが[0,0,0;1,0,0]、最終的な重心が開始点に似ているという保証はありません。

ただし、セントロイドがどのように見えるかがアプリオリにわかっている場合は、k-means は必要ありません。黒のピクセルと赤のピクセルまでのすべてのピクセルの距離を計算し、最小の距離を選択するだけです。

于 2012-04-28T04:36:21.547 に答える