標籤:

3d模型如何生成點雲數據?

計算機圖形,3d, cg


—————————— 2016.08.11 補充 ————————————

有朋友說obj格式用pcl_mesh2pcd是可以均勻採樣的。

我用mesh2pcd一直core dumped,所以沒運行成功過,因此補充。

—————————— 2016.07.20 更新 ————————————

請善用搜索引擎,多讀源代碼么么噠。

啃論文時發現了另一種方法,首先生成Depth map,然後再生成點雲,這種方法的好處在於可以設定viewpoint。

(Depth map生成很多庫都可以實現,也有源代碼;Depth 轉點雲,參考PCL庫里的png2pcd,以及 c++ - Converting depth map, stored in a Mat to a point cloud using pcl)

圖片來自 Sliding Shapes for 3D Object Detection in Depth Images(ECCV2014)

—————————— 正文 ————————————

這問題問得好籠統……我按照我的理解來回答好了。

(我知乎的第一個專業類回答(°////°))

首先,最簡單的情況:你的3D模型是*.ply或者*.obj格式的。那麼你可以直接調用PCL庫里的tool,例如:pcl_ply2pcd, pcl_obj2pcd,(劃掉pcl_mesh2pcd). 它的原理就是提取模型mesh的頂點(Vertex)坐標/法向量坐標。

至於*.pcd文件轉成點雲,很簡單,PCL的tutorials里有代碼。

其次,如果你的3D模型是其它複雜的格式,比如COLLADA(*.dae),那就稍微麻煩一些。可以調用Assimp庫,它是一個3D模型讀取庫,支持讀取十幾種3D文件: Collada(*.dae;*.xml ) Blender (*.blend) Biovision BVH (*.bvh) 3D Studio Max 3DS (*.3ds) 3D Studio Max ASE (*.ase) AutoCAD DXF ( *.dxf )等。


然後提取你需要的數據,有用數據一般都是3D模型的meshes的頂點坐標和法向量,可以很簡單就轉成*.ply或者*.pcd文件。

最後一個問題是:以上提到的都是提取3D模型的meshes的頂點(Vertex)坐標,對於點雲來說點數不夠,而且在3D模型存在平面或者是簡單立方體的情況下幾乎沒有點。

所以又需要PCL庫了,pcl_mesh_sampling可以輕鬆解決這個問題。它是通過調用VTK(Visualization ToolKit)讀取模型,在3D模型平面均勻地採樣點然後生成點雲,並且你可以選擇需要的點數, 以及voxel grid的採樣距離。

以上都是通過使用各種庫,我處理點雲也都是用大神的輪子進行各種拼接,更高端的辦法恕實力不夠暫時想不到。

例圖如下:

我是一隻*.obj格式的愚蠢的模型豬

我是一隻經過pcl_obj2pcd轉換後的愚蠢的點雲豬

我是一隻經過pcl_mesh_sampling轉換後的愚蠢且黃的點雲豬

(點雲顏色為隨機)—————————— 2016.08.11 補充 ————————————

後天實習答辯不想學習,我來補充一下Assimp的用法吧:

下圖為Assimp庫所用的數據結構,任何可以用它導入的3D模型在用它之後都以這樣的結構保存的。

話不多說甩個教學鏈接:Learn OpenGL, extensive tutorial resource for learning Modern OpenGL

網站裡面有例子代碼,看看代碼,再讀讀assimp的說明(http://www.assimp.org/lib_html/data.html),整合一下就可以自己寫代碼轉格式了。


Blensor: Blender Sensor Simulation

這是基於Blender的一個插件。和其他答主提到的直接提取點雲數據的方法不同,Blensor是將三維模型導入Blender中然後模擬使用Scanner對三維模型進行掃描。這樣做的好處是和實際掃出來的數據很像,可以方便地選擇掃描的位置、設置多個點雲用於registration、添加noise或者模擬的設備。這些特性在需要toy data進行測試時比較有用。


請問maxwell3D模型中的某個平面的數據如何導出呢?謝謝


請問,這個PCL-1.6.0-AllInOne-msvc2010-win64安裝好以後並沒有應用程序,無法進入軟體界面,請問這個軟體如何使用


額 可以分享下 pcl_mesh_sampling 是怎麼實現的嗎 O(∩_∩)O


可以試試點雲重建軟體,好多都可以實現點到ply,ply到離散點


推薦閱讀:

TAG:點雲庫PCL |