我怎样才能找到物体的中心?

时间:2012-09-12 18:21:36

标签: c++ image-processing opencv

二值化后我有黑白图像。之后我得到一个形状不规则的物体。链接到此图像如下。 我该如何将这个对象刻上圆圈?或者如何找到这个对象的“中心”?

http://s6.ifotos.pl/img/opticdisk_xhnrnwe.png

4 个答案:

答案 0 :(得分:9)

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

然后,您可以绘制一个以重心为中心的圆,其中点之间的最大距离为半径。

Here你有一个图解说明。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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