这是一个一般性的问题,我只是在寻找一个起点,而不是一个完整的解决方案。
我计划做一些3D扫描,意味着检查一个表面,并从它生成一个3D模型。AFAIK有两种方法:一种是用激光光栅扫描整个表面,另一种是用相机将网格投射到表面上(不确定使用这个网格的一张照片是足够还是需要做更多)。
我的问题是: OpenCV是否支持使用摄像头的第二种方法?如果是:涉及哪些类/函数?
欢迎所有提示:-)
发布于 2015-08-16 05:40:26
第二种方法需要一个投影仪和一个相机。还有第三类算法称为运动结构算法,它允许您从多个图像中捕获3D (稀疏点云)。稀疏的点云稍后可以使用多视图立体转换为密集的曲面,并且可以使用泊松曲面重建重建网格模型。虽然您可以使用OpenCV实现上述功能,但我建议您使用现有的软件。
稀疏三维重建
捆绑者:http://www.cs.cornell.edu/~snavely/bundler/
VisualSFM:http://ccwu.me/vsfm/
多视图立体声()
CMVS:http://www.di.ens.fr/cmvs/
融合:http://www.gris.informatik.tu-darmstadt.de/projects/multiscale-depthmap-fusion/
如果你可以使用带有图形处理器的机器,我强烈推荐VisualSFM,因为它集成了稀疏重建和多视图。
发布于 2015-01-23 04:13:48
看看Kanade,光流。
你基本上可以使用goodFeaturesToTrack在第1帧中找到特征,然后在第2帧中找到相同的特征。根据它们的位移,你可以找到深度或3D。
希望这能有所帮助!
发布于 2022-03-03 20:29:05
我做了一个立体视觉项目,虽然3d扫描不是目的,但校准文件是使用棋盘生成的。只是为了好玩,我把点云放进了第三方的3d建模软件中,虽然图像很糟糕,但你可以分辨出一些深度。相机的分辨率非常低,比如640x480。
所以我认为这是可能的,但你需要使用尽可能高的分辨率,你必须校准每个摄像头,并使用一个考虑到摄像头属性和两个摄像头之间距离的公式。
https://stackoverflow.com/questions/25619357
复制相似问题