天天看點

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%名額評選的優秀畢業作品。

  先截圖,技術細節以後有空再詳細分解下。

3DPointCloudReconstruction(3D點雲重構)

  圖1原始南瓜點雲模型

3DPointCloudReconstruction(3D點雲重構)

圖2用八叉樹組織的南瓜模型

3DPointCloudReconstruction(3D點雲重構)

圖3用八叉樹組織的南瓜模型

3DPointCloudReconstruction(3D點雲重構)

圖4局部投影結果,黑色部分為法向

3DPointCloudReconstruction(3D點雲重構)

圖5原始南瓜的渲染結果

3DPointCloudReconstruction(3D點雲重構)

圖6投影後的南瓜渲染結果

繼續閱讀