【问题标题】:Image processing -Algorithm to calculate centroids of white space in binary image图像处理 - 计算二值图像中空白质心的算法
【发布时间】:2023-03-23 21:20:01
【问题描述】:

问题是我需要一个简化版本的算法,它可以计算二进制图像中几个白色轮廓的质心。例如,如果只有一个白色轮廓,则轮廓中心的坐标 Xc 和 Yc 使用公式计算:

其中M是m_i强度之和,m_i是像素强度值,x_i和y_i是图像上的像素位置,n是像素总数。

任何人都可以提出类似的方法来处理多个轮廓,或者如何在使用相同的公式计算其中一个轮廓时忽略其他轮廓?

【问题讨论】:

  • 小心,你的标准化应该超过 sum(m_i),而不是超过 M。
  • 我在图像处理书上找到了这个公式。直到你提到这是错误的,我才注意到。 :))
  • 你能告诉我们更多关于你的问题吗?根据您的环境,可能会有一些适用的库/简化。也许显示和图像,你有什么代码?
  • 其实我觉得M大概是定义为总权重。 (我把它和n 混淆了。)
  • 我不需要用于论文的代码。环境是黑色空间中的两个白色圆圈。二进制图像,没有噪音。

标签: algorithm image-processing formula centroid


【解决方案1】:

首先使用一些称为connected component labeling 的算法来分离不同的blob。这将为每个区域分配一个唯一的 ID。然后,您可以计算每个 blob 的质心。

【讨论】:

  • 如果我这样做不是正确的吗 - 在分离不同的 blob 之后,我将我目前不使用的 blob 的强度设置为零?例如有值的blobls:1 2 3 4..现在我需要计算第一个blob的质心,所以其他blob 2 3 4,得到0,所以我可以使用上面的公式。
  • @user 是的,但这样你得到的运行时间并不理想。您可以在 O(size if CC) 而不是 O(size of image) 中处理连接的组件
  • @sansuiso 在某些情况下,某些轮廓之间可能有噪声,并且连接的组件不会整体检测到它。
  • 在我的例子中,没有噪音只有两个白色轮廓。
【解决方案2】:

您可以使用k means 算法与不同的 k 值,其中最小平方误差。查找连接的组件可以帮助您获得图像中的最大斑点,但容易受到噪声的影响,但它是存在的总轮廓的上限。使用 k 计算聚类后,计算轮廓的质心很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2013-04-01
    • 2013-12-13
    • 1970-01-01
    • 2012-06-07
    • 2015-12-27
    • 2012-01-15
    相关资源
    最近更新 更多