【问题标题】:Calculate distance between two points in a perpective image计算透视图像中两点之间的距离
【发布时间】:2017-12-05 19:16:17
【问题描述】:

我想验证透视图像中两点 C 和 D (CD) 之间的距离。

这张照片是在我的客厅里拍的。每个图块的尺寸为 0.6x0.6(以米为单位)。

真实世界测量:

点 A 和点 D (AD) 之间的距离 = 1.8 米。 A点和B点之间的距离(AB)= 0.6米

图像平面坐标:

A' = (232, 613)

B' = (221, 341)

C' = (215, 189)

D' = (210, 98)

我使用交叉比率来计算 CD。

R{A', B', C', D'} = 1.316

R{A,B,C,D} = (AC * BD)/(AD * BC)

经过计算,CD为0.584m(而不是0.6m)

问题:

1) 我用来验证 CD 的方法是否正确?

2) 我应该考虑 A 和 D 之间的角度(不是 90 度)

3) 我应该在这里研究消失点吗?

4) 如果我们不知道 A 和 B 之间的真实世界距离,而只知道 AC 和 AD,是否可以计算 B 和 A 或 B 和 D 之间的距离?

5) 上面计算的差0.016m,可以接受吗?

我是射影几何的新手。如果我做错了什么,请告诉我。

【问题讨论】:

  • 不确定您的计算是否正确,但 16 毫米的误差似乎有点大,因为沿 C 到 D 的像素分辨率约为每像素 6 毫米。但是,当 C 和 D 的测量图像点向相反方向各偏离 1 个像素时,您已经有 12 毫米的误差。因此,如果您需要更高的精度,您可能必须使用更高分辨率的相机和/或亚像素位置估计。
  • 我从手机拍摄的原始图像的分辨率为 2340x4160 像素,1 像素大约代表 0.7 毫米。捕获的原始图像的交叉比为 1.3323。我调整了原始图像的大小,以便 openCV 可以在窗口中显示图像。调整后的图像分辨率为 468x832 像素,1 像素大约代表 3.5mm。

标签: image-processing computer-vision projective-geometry


【解决方案1】:
  1. 该方法是正确的,但我会改用单应性。
  2. 角度无关,交叉比投影不变
  3. 没有必要。
  4. 是的,在估计平面与其图像之间的单应性之后,可以从图像中估计平面上的每个距离,前提是至少有一个已知可以解析比例。
  5. “可接受”是旁观者的看法,因为它取决于您的应用程序。 2.67% 的相对误差对于您的意大利面配方来说可能是可以的,但如果您是一名打算在桥梁上连接梁的焊工,那么任何超过几毫米的误差都太大了。

建议 - 测量更多点,消除非线性失真(图像上部墙底部的线看起来弯曲),估计单应性。

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 2021-05-26
    • 1970-01-01
    • 2011-04-23
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多