当前位置:   article > 正文

python opencv 三维重建_SFM三维重建(Python+OpenCV)

opensfm

一、基础矩阵原理

类似于单应性矩阵,当存在噪声和不正确的匹配时,我们需要估计基础矩阵。与单应性矩阵估计相比,基础矩阵增加了默认的最大迭代次数,改变了匹配的阈值,使其匹配更加精准。基础矩阵描述了空间中的点在两个像平面中的坐标对应关系,不仅包含了本质矩阵E的两个摄像机相关的旋转平移信息,还包含了两个摄像机的内参。可用于简化匹配,去除错配特征。

c0d8ffd43b514202b5160d1760095ca2.jpg

具体公式的推导,参考博客:https://blog.csdn.net/kokerf/article/details/72191054#commentBox

https://www.cnblogs.com/wangguchangqing/p/8214032.html

二、实验流程

1、检测特征点,然后在两幅图像间匹配

用SIFT算法实现两幅图像的特征点检测,找到对应的匹配点并绘制出来

2、由匹配计算基础矩阵

使用RANSAC方法估计最佳基础矩阵F,以及正确点的索引

3、由基础矩阵计算照相机矩阵

在两个视图的场景中,照相机矩阵可以由基础矩阵恢复出来。在没有任何照相机内参数知识的情况下,照相机矩阵只能通过射影变换恢复出来。因此,在无标定的情况下,第二个照相机矩阵可以使用一个(3*3)的射影变换出来。

假设第一个相机矩阵: P1=[I|0] ,第二相机矩阵: P2=[M | e′]

其中  e′ 是极点 (e′T F= 0),  M = [e′×]F,  e′× 是e的叉积

4、三角剖分这些三维点

从照相机矩阵的列表中,对正确点的三维点进行三角剖分,挑选出经过三角剖分后,在两个照相机前均含有最多场景点,即取出真正在照相机前面的点。

三、代码

# coding: utf-8

from PIL import Image

from numpy import *

from pylab import *

import numpy as np

from PCV.geometry import homography, camera,sfm

from PCV.localdescriptors import sift

camera = reload(camera)

homo

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/900414
推荐阅读
相关标签
  

闽ICP备14008679号