2017-05-09 109 views
1

如何计算由像素形成的簇的质心?在像素簇中查找质心

我用RED,BLUE和GREEN值表示像素(例如,pixel(116 133 55))。

重心应该是集群的情况下的均值,但我怎么能计算像素之间什么意思呢?

[I试图计算每种颜色的平均(重心[“RED”] = sum_red_pixel_values像素/号等),但它给出错误的结果]

如果它有助于以任何方式我使用欧几里德距离函数。

+0

你怎么知道结果是错的? –

+0

@MalcolmMcLean我以这种方式定义了质心,并使用K-Means来分割图像。在质心重新分配之后,这些簇会变得疯狂。 –

+1

使用每个组件的平均值(即颜色)是正确的方法。很难说没有任何代码或细节的算法有什么问题,但该逻辑不应该是这样。 – jdehesa

回答

1

sum_red_pixel_values/number of pixels会给你平均的红色强度。如果你想要质心,你需要找到像素强度加权的所有像素的平均x和y位置。

centroid.x = sum(pixel.red * pixel.x)/sum(pixel.red) 
centroid.y = sum(pixel.red * pixel.y)/sum(pixel.red) 

其中总和超过所有像素。

您可以分别计算红色绿色和蓝色的平均值,然后平均值,但如果您只是想要平均值,则平均值会更高效(如果您想要亮度,可能是加权平均值),每个红色绿色和蓝色通道像素先然后基于此计算质心。