首页 > 解决方案 > 如何从知道现实世界中质心位置的图像和图像投影中获得现实世界中正方形的方位

问题描述

我正在尝试从图像中获取现实世界中正方形的方向。我知道图像中每个顶点的投影,并且通过这个和深度相机,我可以获得质心在现实世界中的位置。

我需要正方形的方向(实际上是平面的法线向量),而深度相机的分辨率不够。相机参数也是已知的。

我已经搜索过,我只发现估计算法对于信息少得多的问题来说太过分了。但在这种情况下,我有很多关于形状、距离、相机、图像等的数据,但我无法得到它。

提前致谢。

标签: image-processingcomputer-visiontransformshapesprojection

解决方案


我假设图像是用普通相机捕获的,并且您的“正方形”可以很好地近似为实际的几何矩形,具有平行的相对边和正交的相邻边

如果您只需要正方形的法线,并且校准了相机(特别是从图像中去除了非线性镜头失真),那么可以从消失点和中心轻松获得。算法如下:

  1. p_i, i=1..4用齐次坐标表示四个顶点 的图像: p_i = (u_i, v_i, 1)。i 的顺序并不重要,但在下面我假设它从任何一个顶点开始顺时针。另外,为方便起见,在下面我写i + n的地方,假设加法是模4,因此,例如,i + 1 = 1i = 4
  2. 计算覆盖正方形边的线的方程:l_i = p_(i+1) X p_i,其中X表示叉积。
  3. 计算对角线方程:d_13 = p_1 X p_3, d_24 = p_2 X p_4.
  4. 计算中心:c = d_13 X d_24
  5. 计算平行边对的消失点:v_13 = l_1 X l_3, v_24 = l_2 X l_4. 它们表示在 3D 中相互正交的两条线的图像方向。
  6. 计算以正方形中心为根的 3D 正交坐标系的轴的图像,其中两个轴平行于正方形边:x = c X v_13, y = c X v_24.
  7. 最后,平面法线,在 3D 相机坐标系中,是它们的叉积:z = x X y.

请注意,消除失真很重要,因为当正方形边几乎平行时,即使是少量的失真也会极大地影响消失点的位置。

如果您想知道为什么会这样,Hartley 和 Zisserman 的“计算机视觉中的多视图几何”的以下摘录应该就足够了:

在此处输入图像描述


推荐阅读