使用已知中心检测部分隐藏椭圆的边界(OpenCV)

时间:2017-04-05 20:22:54

标签: c++ opencv computer-vision ellipse

我必须在灰色图像中检测椭圆的边框。这些图像包含很多东西,但总有一个(部分隐藏的)椭圆。我知道图像中椭圆的中心在哪里。

优点:

  1. 椭圆始终可见

  2. 椭圆中心附近的点已知

  3. 椭圆始终为黑色(8位上的值= [0,50])
  4. 故障:

    1. 白色斑点(值= [220,255])可以出现在椭圆中(不在外面)

    2. 黑色人工制品(值= [0,80])可以隐藏0%到50%的椭圆和白色斑点(但中心仍然是已知的)

    3. 以下是4个示例图像,它们代表了可能出现的不同情况:

      Diagrams

      我尝试了几个算法(Hough circle,ellipse detection,..),但没有一个能够管理所有不同的情况。而且,他们不会受益于已知的中心。 欢迎所有建议!

1 个答案:

答案 0 :(得分:1)

尝试RANSAC方法,它将允许您避免噪声边缘和拟合椭圆精确。 Ellipse有2个焦点,你可以找到它们,知道你的椭圆方程,然后找到它们之间的中间位置。它将是你的椭圆质心。

RANSAC椭圆拟合的代码示例:https://github.com/seisgo/EllipseFit