Aly*_*Aly 7 geometry opencv multiview computer-vision
我试图在图像中找到圆圈并将它们扭曲回规范视图(即,好像在看中心).但是,圆圈通常会在透视变换下投影到椭圆.所以我首先检测省略号,粗略地执行以下操作(在OpenCV中):
1. Find contours in the image
2. Estimate area of contour
3. Fitting a bounded box to contour and estimating area by width/2 * height/2 * PI (area of ellipse)
4. checking if area of contour and estimated area of ellipse is < a threhsold
Run Code Online (Sandbox Code Playgroud)
假设我通过这种方法找到了一个椭圆,我怎样才能将它整流回一个圆圈,这样我就可以"撤消"透视变换(虽然不是平面旋转,因为我想这不可能).例如,如果它是一个矩形,我只计算从一个向上的矩形的4个角到检测到的投影矩形的单应性.
我不知道如何用椭圆做这个,任何帮助都非常感谢.
谢谢
这看起来像一个不确定的问题.
矩形的投影以8个未知数(单应系数)提供8个方程.
使用椭圆,您只能检索中心坐标(2 DOF),轴(2 DOF)和轴方向(1 DOF).
实际上,圆是通过透视变换转换为椭圆形的,但是其轴与初始圆的轴不同,如下图所示:

(来源:brian-curtis.com)
您可以参考此链接以获取详细的演示。结果,通过透视变换,椭圆的边界矩形不是初始正方形的图像。
编辑:
这意味着,通过透视图映射,您观察到的椭圆的中心和轴不是原始圆的中心和轴的图像。我试图做一个更清晰的插图:

在此图像上,在透视变换后,我以绿色绘制了原始圆的轴和中心,并以红色绘制了椭圆的轴和中心。在此特定示例中,垂直轴不会因透视图映射而变形,但在一般情况下会变形。因此,通过透视变换使圆变形会产生一个椭圆,但是您看到的轴和中心不是原始圆的轴和中心。
结果,您不能简单地使用椭圆上的顶部,底部,左侧和右侧点(红色点,可以从椭圆上轻松检测到)将它们映射到圆的顶部,底部,左侧和右侧点因为它们在透视图映射下不对应(绿点对应),但无法从椭圆中轻松检测到。
最后,我认为根本不可能从单个检测到的椭圆中估计透视图。
| 归档时间: |
|
| 查看次数: |
2938 次 |
| 最近记录: |