3DPointCloudReconstruction(3D点云重构)

  本科时候做的东西了,3D点云重构。目前点云在游戏界应该用的挺少,关键算法还不够成熟,运算量非常大。但是在学术界和电影界就挺活跃的,指环王的模型就是用点云生成的。我这个算是个成败参半的项目。最近决定拿出来晒晒,一来从这个项目自己学到很多东西,拿来复习下,二来也从失败的经验学到教训,三来很多公司要作品链接,顺便发上来。

  从软件工程角度说,无疑非常失败的。一是用了XNA作为3D的API,这是最失败一步。由于XNA是面向开发小游戏的,做3D图形研究非常不适合,一来速度受到限制,二来没有GPU的接口,三来由于其基于C#.net平台,无法利用已有的3D图形开源资源(因为3D绝大部分学术资源都是用C++写的,像cgal,meshlab,vtk,还有很多数学库等等),而且还只有我自己一个人做,这样意味着所有琐碎的东西你都要自己写,根本没有足够精力去处理3D点云的优化算法。

  不过从学习理论的角度讲,它算是对我来说非常成功的项目。因为所有的细节都要自己处理,包括camera,所有数据结构,八叉树等等,所以扎实了很多3D图形学的知识。没有数学库,自己就所有把《数值分析》上面所有算法都自己写了一遍,包括QR算法,用来求任意实的非奇异矩阵的全部特征值;反冥法求出已知协方差权重矩阵的最小特征值的特征向量;高斯法求解方程组;最小二乘法等等。然后初步实现了Marc Alexa,“point set surfaces”这篇paper的点云投影算法。后来也因为其具有一定的理论性,得到了我们学校1%名额评选的优秀毕业作品。

  先截图,技术细节以后有空再详细分解下。

  图1原始南瓜点云模型

 

 

图2用八叉树组织的南瓜模型

 

 

 

图3用八叉树组织的南瓜模型

 

图4局部投影结果,黑色部分为法向

 

 

 

 

图5原始南瓜的渲染结果

 

图6投影后的南瓜渲染结果

你可能感兴趣的:(3DPointCloudReconstruction(3D点云重构))