日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【入门】3D视觉库

發布時間:2023/12/15 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 【入门】3D视觉库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄1. PCL1.1. PCL的結構和內容1.2. 教程1.3. Python-PCL2. Open3D3. 其他軟件3.1. openMVG3.2. openMVS3.3. MeshLab

對比幾個三維重建系統

wechat: OpenMVG源碼閱讀小記

1. PCL

github

PCL(Point Cloud Library),是在吸收了前人點云相關研究基礎上建立起來的大型跨平臺開源C++編程庫,它實現了大量點云相關的通用算法和高效數據結構,涉及到點云獲取、濾波、分割、配準、檢索、特征提取、識別、追蹤、曲面重建、可視化等。支持多種操作系統平臺,可在Windows、Linux、Android、Mac OS X、部分嵌入式實時系統上運行。如果說OpenCV是2D信息獲取與處理的結晶,那么PCL就在3D信息獲取與處理上具有同等地位,PCL是BSD授權方式,可以免費進行商業和學術應用。

PCL起初是ROS(Robot Operating System)下由來自于慕尼黑大學(TUM - Technische Universit?t München)和斯坦福大學(Stanford University)Radu博士等人維護和開發的開源項目,主要應用于機器人研究應用領域,隨著各個算法模塊的積累,于2011年獨立出來,正式與全球3D信息獲取、處理的同行一起,組建了強大的開發維護團隊,以多所知名大學、研究所和相關硬件、軟件公司為主,可參考圖1。截止目前,發展非常迅速,不斷有新的研究機構等加入,在Willow Garage, NVidia, Google (GSOC 2011), Toyota, Trimble, Urban Robotics, Honda Research Institute等多個全球知名公司的資金支持下,不斷提出新的開發計劃,代碼更新非常活躍,至今在不到一年的時間內從1.0版本已經發布到1.7.0版本。

隨著加入組織的增多,PCL官方目前的計劃是繼續加入很多新的功能模塊和算法的實現,包括當前最新的3D相關的處理算法,如基于PrimeSensor 3D設備,微軟Kinect或者華碩的XTionPRO智能交互應用等,詳細讀者可以參考官方網站每期的新聞,而且也計劃進一步支持使用CUDA 和OpenCL等基于GPU的高性能計算的技術。筆者相信在近幾年內會有更多的人和組織加入到這個項目中來,共享開源PCL帶來的各自領域的成果。

1.1. PCL的結構和內容

對于3D點云處理來說,PCL完全是一個的模塊化的現代C++模板庫。其基于以下第三方庫:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,實現點云相關的獲取、濾波、分割、配準、檢索、特征提取、識別、追蹤、曲面重建、可視化等。

PCL利用OpenMP、GPU、CUDA等先進高性能計算技術,通過并行化提高程序實時性。K近鄰搜索操作的構架是基于FLANN (Fast Library for Approximate Nearest Neighbors)所實現的,速度也是目前技術中最快的。PCL中的所有模塊和算法都是通過Boost共享指針來傳送數據的,因而避免了多次復制系統中已存在的數據的需要,從0.6版本開始,PCL就已經被移入到Windows,MacOS和Linux系統,并且在Android系統也已經開始投入使用,這使得PCL的應用容易移植與多方發布。

從算法的角度,PCL是指納入了多種操作點云數據的三維處理算法,其中包括:過濾,特征估計,表面重建,模型擬合和分割,定位搜索等。每一套算法都是通過基類進行劃分的,試圖把貫穿整個流水線處理技術的所有常見功能整合在一起,從而保持了整個算法實現過程中的緊湊和結構清晰,提高代碼的重用性、簡潔可讀。在PCL中一個處理管道的基本接口程序是:

創建處理對象:(例如過濾、特征估計、分割等);
使用setInputCloud通過輸入點云數據,處理模塊;
設置算法相關參數;
調用計算(或過濾、分割等)得到輸出。

為了進一步簡化和開發,PCL被分成一系列較小的代碼庫,使其模塊化,以便能夠單獨編譯使用提高可配置性,特別適用于嵌入式處理中:

libpcl filters:如采樣、去除離群點、特征提取、擬合估計等數據實現過濾器;
libpcl features:實現多種三維特征,如曲面法線、曲率、邊界點估計、矩不變量、主曲率,PFH和FPFH特征,旋轉圖像、積分圖像,NARF描述子,RIFT,相對標準偏差,數據強度的篩選等等;
libpcl I/O:實現數據的輸入和輸出操作,例如點云數據文件(PCD)的讀寫;
libpcl segmentation:實現聚類提取,如通過采樣一致性方法對一系列參數模型(如平面、柱面、球面、直線等)進行模型擬合點云分割提取,提取多邊形棱鏡內部點云等等;
libpcl surface:實現表面重建技術,如網格重建、凸包重建、移動最小二乘法平滑等;
libpcl register:實現點云配準方法,如ICP等;
libpclkeypoints:實現不同的關鍵點的提取方法,這可以用來作為預處理步驟,決定在哪兒提取特征描述符;
libpcl range:實現支持不同點云數據集生成的范圍圖像。

為了保證PCL中操作的正確性,上述提到的庫中的方法和類包含了單位和回歸測試。這套單元測試通常都是由專門的構建部門按需求編譯和驗證的。當某一部分測試失敗時,這些特定部分的各自作者就會立即被告知。這徹底地保證了代碼測試過程出現的任何變故,以及新功能或修改都不會破壞PCL中已經存在的代碼。

1.2. 教程

csdn: PCL點云處理算法匯總

1.3. Python-PCL

github

Python對PCL的綁定。目前最新版本是v0.3,但自2019-06月份后就沒再更新了。

apt install python3-pcl

2. Open3D

github

Open3D 是一個可以支持 3D 數據處理軟件快速開發的開源庫。Open3D 前端公開了一組用 C++ 和 Python 寫成的精心挑選的數據結構和算法,后端高度優化并設置為并行。Open3D可以在不同的平臺上設置,并以最少的工作量進行編譯。Open3D的代碼非常整潔,可以通過明確的代碼審查機制來維護。

其核心特性包括:

3D數據結構
3D數據處理算法
場景重建
Surface alignment(表面對齊?)
3D可視化
基于物理的渲染(PBR)
C++和python代碼接口

安裝:可以直接通過 pip install open3d 安裝,依賴于:

jupyter
scipy
sklearn
pybind11

3. 其他軟件

3.1. openMVG

github

常見的多視圖三維重建管線:

重建稀疏點云-Structure from Motion(Sfm)
重建稠密點云-Multi-View Stereo(MSV)
重建表面-Surface Generation(SG)
紋理映射-Texture Mapping(TM)

我們知道,照相機/攝像機的原理是將一個三維場景或物體投影到二維平面上,過去是膠片,現在是經過感光元件再記錄到存儲器。降維的過程通常不可避免地會存在信息的損失,而所謂的重建(Reconstruction),顧名思義就是要從獲取到的二維圖像中復原原始三維場景或物體。

三維重建的流程大致如下:首先,通過多角度拍攝或者從視頻中提取得到一組圖像序列,將這些圖像序列作為整個系統的輸入;隨后,在多視角的圖像中,根據紋理特征提取出稀疏特征點(稱為點云),通過這些特征點估計相機位置和參數;在得到相機參數并完成特征點匹配后,我們就可以獲得更稠密的點云(這些點可以附帶顏色,從遠處看就像還原了物體本身一樣,但從近處能明顯看出它們只是一些點);最后根據這些點重建物體表面,并進行紋理映射,就還原出三維場景和物體了。

概括起來就是:圖像獲取->特征匹配->深度估計->稀疏點云->相機參數估計->稠密點云->表面重建->紋理映射。

3.2. openMVS

3.3. MeshLab

homepage

MeshLab 是一個開源、可移植和可擴展的三維幾何處理系統,主要用于交互處理和非結構化編輯三維三角形網格。該系統發布于2005年年底,旨在提供一整套三維掃描、編輯、清洗、拼合、檢查、呈現和轉換網格數據的工具。

總結

以上是生活随笔為你收集整理的【入门】3D视觉库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。