0

我想做 k 意味着在 1024 * 1024 * 3 .ppm 文件上进行聚类。我必须承认这张图片中的点强度非常低。现在,我阅读了图片,然后调整了它的大小,以便 aleast matlab 可以显示它。然后是重塑它并将其转换为双精度的代码行,以便我可以将其传递给内置的 matlab kmeans 函数。

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 算法?我需要两个集群,黑色和红色点。

4

1 回答 1

1

K-means 不允许您根据预定义的标准指定输出集群的组成。它只是试图找到与您的点距离最小的质心。您通常可以提供[0,0,0;1,0,0]对应于黑色和红色的起点,但不能保证最终的质心与起点相似。

但是,如果您先验地知道质心应该是什么样子,则不需要 k-means。只需计算每个像素到黑色像素和红色像素的距离,然后选择最小的距离。

于 2012-04-28T04:36:21.547 回答