まず、Matlabのkmeansに関する私の問題について説明したいと思います。マウスでポイントを選択し、クラスターの初期化に使用します。これは正常に機能します。
データをセグメンテーションした後、マトリックスが必要なため、データを適切なスタイルに再形成します。ここで、ユーザーがマウスでデータを選択したクラスターのみを選択したいと思います。したがって、マウス座標のインデックスを選択して、セグメント化するラベルを選択します。関連するデータに接続されていない、または近くにない他の余分なデータのためですが、同じラベルも取得しています。
8付近の連結成分のみを選択したい。
これまでの私のコードスニペットは次のとおりです。
flatimg = double(reshape(croppedimg,size(croppedimg,1)*size(croppedimg,2),size(croppedimg,3)));
% kmeans
[idx, clusters] = kmeans(flatimg,2,'start',[seedpoint1(3);seedpoint2(3)]);
% form it back to a matrix
k=reshape(idx,size(croppedimg,1),size(croppedimg,2));
%convert point, which is part of the label I want to linear index
selectedobjectpoint = sub2ind(size(croppedimg),seedpoint1(2),seedpoint1(1));
hgplabel = k(selectedobjectpoint);
idx_object = find(k, hgplabel);
% also tried: idx_object = find(k == hgplabel);
次の直接出力を示すスクリーンショットを追加しましたkmeans
。
したがって、ここでの目的は、「白」または「黒」のものだけを取得することです。
ヘルプやアドバイスをいただければ幸いです。スニペットや目標について質問がある場合は、お気軽にお問い合わせください。
前もって感謝します!