首页 文章

来自Motion的结构,在给定2D图像点对应的情况下重建3D点 Cloud

提问于
浏览
4

Use-case


  • 物体以不同的速度围绕它的中心旋转

  • 固定的相机正在看物体

  • 给定2D图像点对应重建3D点 Cloud

  • 当对象旋转时,可以看到相机的不同部分,从而检测到不同的点和对应关系 .

Scene


一个 . N图像
湾N-1图像对
C . N-1 2D点对应(两个2D点阵列)

Implementation


对于每个(N-1)2D点对应关系

  • 计算相机相对姿势

  • 三角测量以产生3D点数

  • 对于每个2个3D点数组,使用[c]中给出的2D对应关系导出对应关系

  • 使用3D对应派生@ [3]导出每个对象3D点的轨迹,从而为每个对象点/顶点生成单个轨迹

Result:


A(N-2)个3D点数组,对应关系,相机姿势和轨迹(每个对象点一个轨迹)

Approach considered to resolve the problem:


鉴于三角测量结果精确到一定范围,计算点 Cloud .
答:每个三角测量结果和相机相对翻译都是
以非齐次坐标表示(每个结果具有不同的比例) .
B.假设对象结构是实体的,因此不会改变,
对于所有相机姿势,每个3D点到其中心的距离应该相同 .
C.记住[B],在[A]和相机翻译中的所有三角形3D点
可以转换为齐次坐标系 .
D.选择一个相机姿势并转换每个轨道中的第一个点(定义@ [4])
到那个相机姿势(通过累积的相机的反转变换
结果,预期点可以 .

以上是从2D点对应生成点 Cloud 的正确方法吗?

1 回答

  • 3

    这是重建对象的正确程序 . 去年我在大学的一个项目上研究过这个话题 . 我的经验是用手移动相机重建物体并不容易 .

    Matching

    首先,你必须考虑inteset点的匹配 . SURF和SIFT是这一点的良好匹配方法 . 当物体移动小于15°时,您可以考虑使用USURF,这比正常的SURF快一点(有关详细信息,请参阅SURF论文) . 在我们的项目中,我们决定使用OpenCV中的光流,它看起来有点慢,但对异常值更强 . 您的对象只是旋转,所以您也可以考虑使用它 .

    Evaluation of Matrix

    接下来是评估新相机矩阵的结果 . 你有可能找出物体旋转了多少(像一些步进电机或其他东西)?因此,您可以将计算结果与电机步骤进行比较 . 如果它高于阈值你知道计算是坏的 . 但是,对于一些步进电机的精度并不是很好,但是一些实验可能会带来更多关于这一点的信息 .

    Evaluation of Cloud

    有一些很好的方法来评估计算的 Cloud . 最简单的方法是计算 Cloud 的重投影错误 . 为此,您只需反转重建并查看计算图像指向远离原始对应点的距离 . 另一个测试是检查所有点是否是相机的信息 . 通过计算可以发现点位于相机的前方和后方 . 我知道当两个相机相互关闭时它会发生,并且三角测量也会终止 .

    First Image Pair

    我不确定静态相机是否需要这一步 . 但首先我们必须计算一个基本矩阵 . 我们使用具有最多匹配的图像对来提取它们并使用RANSAC版本获得最佳结果 . 但也许您可以尝试放置对象,使其在第一次拍摄时在前面具有最多的Intereset点 .

    Following Image Pairs

    真正有效的是从现有的旧图像对计算的现有点 Cloud 中提取新的相机位置 . 为此你已经记住了以前的2D 3D相关图像 . 它被称为PerspectivenPoint Camera Pose Estimation(PnP) .

    最后我们得到了一些好的和坏的结果 . 这取决于扫描对象 . 以下是一些帮助我的论文:

    Modeling The World

    Live Metric 3D-Reconstruction

相关问题