为什么k-means聚类用于图像处理?

时间:2016-10-08 15:30:28

标签: image-processing machine-learning

为什么要使用它,因为我们可以简单地按像素强度值分割图像分量? 就像我想要提取女孩和她的头发的皮肤一样,我可以简单地在像素强度值上进行,而不是使用复杂的k-means算法。

1 个答案:

答案 0 :(得分:2)

细分并不简单。与手动阈值处理相比,聚类更容易,更强大。

让我们来看看Matlab:

yellow lily

感兴趣的区域是黄色的花瓣。让我们将rgb-image划分为三个不同的平面:

lily = imread('yellowlily.jpg')

redplane = lily(:,:,1);
greenplane = lily(:,:,2);
blueplane = lily(:,:;3);

imshow(greenplane); colormap(jet); imcontrast;

查看绿板:

greenplane of the image

所以黄色实际上是更多的绿色'比绿色?哦,哦。好吧,不管怎样,让我们​​结合门槛。红色和绿色平面中的黄色很强,所以找到它的两个阈值。绿色强烈绿色,另一方面背景是黑色,并且所有这些都具有很高的价值。因此黄色的两个阈值,一个用于绿色而不是黑色或黄色,因此三个绿色比较...?直到灯光发生变化并彻底破坏我们的手动阈值。

或者我们可以尝试聚类:

redIndices = redPlane(:);
greenIndices = greenPlane(:);
blueIndices = bluePlane(:);

Data = [redIndices, blueIndices, greenIndices];
clusterIdx = kmeans(Data,3);    

ClusterImage = zeros(size(RedPlane));
ClusterImage(:) = clusterIdx;

enter image description here

几乎就在那里。我们得到了黄色的花瓣,绿色的失败,黑色需要一些形态的爱。只需一个参数,即簇数。也许高斯混合模型作为软K均值?

要考虑的另一点是重叠的颜色,例如黄色花瓣底部附近的绿色。你正在分割头发的女孩可能站在一些树皮附近,树皮上有同样的棕色。您可以将图像中的距离添加为数据的一个维度,例如,我之前提到的GMM。颜色空间和图像中距离的概念可以是强大且强大的分割工具,这是手动阈值永远不可能的。

相关问题