【问题标题】:How can I find center of object?我怎样才能找到物体的中心?
【发布时间】:2012-09-12 18:21:35
【问题描述】:

二值化后我有黑白图像。之后,我得到一个形状不规则的物体。此图片的链接如下。 我怎样才能把这个物体刻成圆圈?或者我怎样才能找到这个对象的“中心”??

【问题讨论】:

  • 您想在对象上找到最长的可绘制线,并以一半的长度为半径画一个圆吗?
  • 链接已损坏,仅供参考——实际上从未加载任何 png
  • @tuğrulbüyükışık 我认为“nieve”方法只是平均“白色”像素的位置?
  • 根据您在下面使用的方法,您可能需要先close 图像。 OpenCV 可以为您做到这一点

标签: c++ image-processing opencv


【解决方案1】:

您可以使用一个简单的公式找到像素的重心,该公式是 x 坐标的总和除以点数,以及 y 坐标的总和除以点数点(我的意思是白点)。

然后你可以画一个以重心为中心的圆,点之间的最大距离为半径的一半。

Here你对此有一个图形解释。

【讨论】:

    【解决方案2】:

    这听起来像是一组白色像素上的smallest circle problem。它可以在像素数的线性时间内找到。这是您将得到的最好的结果,您的输入只是一个二进制像素数组。

    【讨论】:

      【解决方案3】:

      好吧,您可以从上向下扫描最顶部的白色像素,然后从下向上扫描最底部的白色像素,左右相同。这给了你一个矩形。找到矩形的中心很容易(例如 left + ( right - left ) / 2),这就是你的圆心。然后找到到一个角落的距离(任何都可以),这就是你的圆半径。

      【讨论】:

      • 我认为这不会产生最小半径。考虑该算法针对实心白色圆圈的结果。
      【解决方案4】:

      我认为,物体的中心可以很容易地找到 x 和 y 坐标的算术平均值。我想用一个圆来代替它,我会说直径是所有点到中心的平均距离的两倍。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        • 1970-01-01
        相关资源
        最近更新 更多