【问题标题】:Find centroid in a pixels cluster在像素簇中查找质心
【发布时间】:2017-10-07 10:48:22
【问题描述】:

如何计算由像素组成的簇的质心?

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

质心应该是集群中实例的平均值,但是如何计算像素之间的平均值

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

如果有任何帮助,我正在使用欧几里得距离函数。

【问题讨论】:

  • 你怎么知道结果不对?
  • @MalcolmMcLean 我以这种方式定义了质心并使用 K-Means 分割图像。重新分配质心后,集群变得疯狂。
  • 使用每个组件的平均值(即颜色)是正确的方法。没有任何代码或细节,很难判断你的算法有什么问题,但逻辑不应该是这样。
  • red / N 的总和将给出质心红色通道,没有两种方法。您必须以某种方式对集群的错误像素求和。

标签: algorithm cluster-analysis centroid


【解决方案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)

所有像素的总和。

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

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 2019-06-16
    • 1970-01-01
    • 2018-08-19
    • 2012-11-03
    • 2019-01-11
    • 2012-11-17
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多