这是一个普遍的问题,我只是在寻找一个起点,而不是一个完整的解决方案。
我计划进行一些3D扫描,意味着检查表面并从中生成3D模型。 AFAIK有两种方法:一种是使用激光光栅扫描整个表面,另一种是使用相机,其中网格投射在表面上(不确定一张带有此网格的图片是否足够或者是否需要更多图片)完成)。
我的问题:OpenCV是否支持使用相机的第二种方法?如果是:涉及哪些类/功能?
欢迎提供所有提示: - )
答案 0 :(得分:2)
第二种方法需要投影仪和相机。第三类算法称为动态结构,允许您从多个图像中捕获3D(稀疏点云)。稍后可以使用多视图立体声将稀疏点云转换为密集表面,并且可以使用泊松表面重建来重建网格模型。虽然您可以使用OpenCV实现上述功能,但我会推荐现有的软件。
稀疏3D重建
Bundler:http://www.cs.cornell.edu/~snavely/bundler/
VisualSFM:http://ccwu.me/vsfm/
Multiview Stereo(MVS)
CMVS:http://www.di.ens.fr/cmvs/
Fusion:http://www.gris.informatik.tu-darmstadt.de/projects/multiscale-depthmap-fusion/
如果您可以访问带GPU的机器,我强烈推荐使用VisualSFM,因为它将稀疏重建与MVS集成在一起。
答案 1 :(得分:1)
看看Kanade,光流。
你基本上可以使用goodFeaturesToTrack并在第1帧中找到功能,然后在第2帧中你可以找到相同的功能。根据它们的位移,您可以找到深度或3D。
希望这有帮助!