标签: c++ opencv computer-vision ellipse
我必须在灰色图像中检测椭圆的边框。这些图像包含很多东西,但总有一个(部分隐藏的)椭圆。我知道图像中椭圆的中心在哪里。
优点:
椭圆始终可见
椭圆中心附近的点已知
故障:
白色斑点(值= [220,255])可以出现在椭圆中(不在外面)
黑色人工制品(值= [0,80])可以隐藏0%到50%的椭圆和白色斑点(但中心仍然是已知的)
以下是4个示例图像,它们代表了可能出现的不同情况:
我尝试了几个算法(Hough circle,ellipse detection,..),但没有一个能够管理所有不同的情况。而且,他们不会受益于已知的中心。 欢迎所有建议!
答案 0 :(得分:1)
尝试RANSAC方法,它将允许您避免噪声边缘和拟合椭圆精确。 Ellipse有2个焦点,你可以找到它们,知道你的椭圆方程,然后找到它们之间的中间位置。它将是你的椭圆质心。
RANSAC椭圆拟合的代码示例:https://github.com/seisgo/EllipseFit