首先,我想描述一下我在 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
:
所以我的目标是在这里只获得“白色”或“黑色”的。
帮助或建议表示赞赏。如果您对片段或目标有任何疑问,请随时提问。
先感谢您!