Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检测中心已知的部分隐藏椭圆的边界(OpenCV)_C++_Opencv_Computer Vision_Ellipse - Fatal编程技术网

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

C++ 检测中心已知的部分隐藏椭圆的边界(OpenCV),c++,opencv,computer-vision,ellipse,C++,Opencv,Computer Vision,Ellipse,我必须在灰度图像中检测椭圆的边界。这些图像包含很多东西,但总是有一个(部分隐藏的)椭圆。我知道图像中椭圆的中心在哪里 优点: 椭圆总是可见的 椭圆中心附近的点是已知的 椭圆始终为黑色(8位上的值=[0,50]) 麻烦: 白色斑点(值=[220255])可以出现在椭圆中(而不是外部) 黑色人工制品(值=[0,80])可以隐藏0%到50%的椭圆和白色斑点(但中心仍然是已知的) 以下是4个示例图像,它们表示可能出现的不同情况: 我尝试过几种算法(霍夫圆、椭圆检测等),但没有一种能处理所有不同的情况。

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

优点:

  • 椭圆总是可见的

  • 椭圆中心附近的点是已知的

  • 椭圆始终为黑色(8位上的值=[0,50])
  • 麻烦:

  • 白色斑点(值=[220255])可以出现在椭圆中(而不是外部)

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

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

    我尝试过几种算法(霍夫圆、椭圆检测等),但没有一种能处理所有不同的情况。此外,他们没有受益于已知的中心。
    欢迎所有建议

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


    RANSAC椭圆拟合代码示例:

    每个图像仅1个椭圆?麻烦1说明椭圆外没有白色。。。您的示例图像中的白色背景如何?对执行时间有一些限制?每个图像只有一个“黑色”椭圆。背景不是白色的,也不均匀,通常是灰色的[50150]。如果可能,执行时间必须在1ms左右。可以允许较大的执行时间,但不超过3ms