Open3d 学习计划—13(Azure Kinect)
該文章為轉(zhuǎn)載內(nèi)容,請關(guān)注文章作者博客https://blog.csdn.net/io569417668
Open3D是一個開源庫,支持快速開發(fā)和處理3D數(shù)據(jù)。Open3D在c++和Python中公開了一組精心選擇的數(shù)據(jù)結(jié)構(gòu)和算法。后端是高度優(yōu)化的,并且是為并行化而設(shè)置的。
本系列學(xué)習(xí)計劃有Blue同學(xué)作為發(fā)起人,主要以O(shè)pen3D官方網(wǎng)站的教程為主進(jìn)行翻譯與實踐的學(xué)習(xí)計劃(點擊“原文閱讀”可以直接關(guān)注blue的博客)。點云PCL公眾號作為免費(fèi)的3D視覺,點云交流社區(qū),期待有使用Open3D或者感興趣的小伙伴能夠加入我們的翻譯計劃,貢獻(xiàn)免費(fèi)交流社區(qū),為使用Open3D提供中文的使用教程。
注意:Azure Kinect只支持在Windows和Ubuntu 18.04下使用.
安裝Azure Kinect SDK
從這篇指南(https://github.com/microsoft/Azure-Kinect-Sensor-SDK)中下載Azure Kinect SDK(K4A).
在Ubuntu中,你將要設(shè)置udev規(guī)則去使用不帶sudo的Kinect相機(jī),請參考以下指南(https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/usage.md#linux-device-setup).
安裝以后,你需要在Linux的窗口運(yùn)行 k4aviewer 或者在Windows上運(yùn)行 k4aviewer.exe 來確保設(shè)備工作.
當(dāng)前Open3d支持的 Azure Kinect SDK 版本為v1.2.0,不過未來的版本也可能兼容.
如果你使用的是Ubuntu 16.04,Azure Kinect SDK是不受官方支持的,我們需要一個非官方的解決方案,參考如下:?Unofficial Ubuntu 16.04 workaround.(后面會有介紹)
從Pip或者Conda安裝使用Open3d
如果你是從Pip或者Conda安裝的Open3d,那么通過推薦的方式在系統(tǒng)中安裝K4A,Open3d的Azure Kinect功能是可以直接使用的.當(dāng)Open3d使用K4A相關(guān)的功能時,將會自動加載K4A的動態(tài)鏈接庫.
在Ubuntu,默認(rèn)的搜索路徑遵循Linux的慣例.
在Windows,Open3d將從默認(rèn)的安裝路徑加載共享庫.舉個例子,對于v1.2.0版本的K4A,默認(rèn)的安裝路徑是 C:\Program Files\Azure Kinect SDK v1.2.0 .如果這個不起作用,復(fù)制 depthengine_x_x.dll, k4a.dll 和 k4arecord.dll文件到Open3d Python模塊安裝的路徑(如果你用的Python),或者到你的C++可執(zhí)行文件相同的目錄.
你能夠通過下面的方式得到Open3d的Python模塊路徑:
python -c "import open3d as o3d; import os; print(os.path.dirname(o3d.__file__))"
源碼構(gòu)建
想要從源碼構(gòu)建支持K4A的Open3d,需要在CMake設(shè)置的時候設(shè)置
BUILD_AZURE_KINECT=ON.
cmake -DBUILD_AZURE_KINECT=ON -DOTHER_FLAGS ..
Open3D Azure Kinect Viewer
使用Open3D Azure Kinect Viewer來預(yù)覽Azure Kinect相機(jī)捕獲到的深度和RGB圖像.
Open3D 提供了Azure Kinect Viewer的Python和C++例程代碼.請在
examples/Cpp/AzureKinectViewer.cpp?和examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py?中查看更多細(xì)節(jié).
我們將使用Python版本作為例程.
python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py --align_depth_to_color
當(dāng)使用高幀數(shù),高分辨率進(jìn)行記錄時,可以使用未經(jīng)變換的原始深度圖像來減少計算.
python examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py
近來很多3D的應(yīng)用在興起,3D傳感器在進(jìn)步,隨著虛擬網(wǎng)絡(luò)的發(fā)展轉(zhuǎn)到物理實際中的應(yīng)用,比如(ADAS,AR,MR)自動駕駛中需要理解 汽車行人交通標(biāo)識,同時也需要理解三維物體的狀態(tài)靜止和移動。
當(dāng)可視化窗口工作時,可以使用ESC來退出.
也可以使用Json文件來配置傳感器.
python?examples/Python/ReconstructionSystem/sensors/azure_kinect_viewer.py?--config?config.json
這個傳感器的配置如下.完整的配置列表請參閱這里(https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/include/k4a/k4atypes.h)
{"camera_fps" : "K4A_FRAMES_PER_SECOND_30","color_format" : "K4A_IMAGE_FORMAT_COLOR_MJPG","color_resolution" : "K4A_COLOR_RESOLUTION_720P","depth_delay_off_color_usec" : "0","depth_mode" : "K4A_DEPTH_MODE_WFOV_2X2BINNED","disable_streaming_indicator" : "false","subordinate_delay_off_master_usec" : "0","synchronized_images_only" : "false","wired_sync_mode" : "K4A_WIRED_SYNC_MODE_STANDALONE"
}
Open3D Azure Kinect記錄器
使用Open3D Azure Kinect Viewer記錄RGB和深度圖像流到MKV文件.
Open3D 提供了Azure Kinect Viewer的Python和C++例程代碼.請在
examples/Cpp/AzureKinectRecord.cpp?和examples/Python/ReconstructionSystem/sensors/azure_kinect_recorder.py
Python版本的使用例程如下:
python examples/Python/ReconstructionSystem/sensors/azure_kinect_recorder.py --output record.mkv
當(dāng)運(yùn)行記錄器腳本時,可以任意修改相機(jī)配置.
當(dāng)可視化窗口工作時,按 空格鍵 開始或者暫停記錄.按ESC可以退出記錄.
Open3D Azure Kinect MKV文件讀取
記錄的MKV文件使用K4A的自定義格式,里面包含了RGB和深度圖像.常規(guī)的視頻播放器可能只支持播放彩色圖像或者不支持所有格式,要想查看自定義的MKV文件,請使用Open3D Azure Kinect MKV Reader.
Open3D 提供了Open3D Azure Kinect MKV Reader 的 Python 和 C++ 的使用例程代碼,請查看?examples/Cpp/AzureKinectMKVReader.cpp?和examples/Python/ReconstructionSystem/sensors/azure_kinect_mkv_reader.py?.
Python版本使用:
python examples/Python/ReconstructionSystem/sensors/azure_kinect_mkv_reader.py --input record.mkv
需要注意,盡管記錄的時候記錄的是未對齊的原始深度圖像,閱讀器依然能夠?qū)⑸疃葓D與彩色圖像對齊.
要將MKV 視頻轉(zhuǎn)換為深度圖和彩色圖的圖像幀時,請指定 --output 標(biāo)志.
python examples/Python/ReconstructionSystem/sensors/azure_kinect_mkv_reader.py --input record.mkv --output frames
非官方的Ubuntu 16.04工作環(huán)境
Azure Kinect SDK并沒有提供Ubuntu 16.04的官方版本,在這里我們給出非官方提供的例程.
使用Open3d Python包
對于Python版本的Open3d,運(yùn)行
pip install open3d_azure_kinect_ubuntu1604_fix
open3d_azure_kinect_ubuntu1604_fix包包含四個共享庫
libstdc++.so:從Ubuntu 18.04復(fù)制,libdepthengine.so需要.
libdepthengine.so:從K4A的Ubuntu 18.04版本拷過來的.
libk4a.so:在Ubuntu 16.04上從源碼構(gòu)建的.
libk4arecord.so:在Ubuntu 16.04上從源碼構(gòu)建的.
open3d_azure_kinect_ubuntu1604_fix將會預(yù)加載共享庫并設(shè)置LD_LIBRARY_PATH,之后當(dāng)編譯模塊加載Kinect庫時,dlopen會使用他們.
當(dāng)安裝完open3d_azure_kinect_ubuntu1604_fix后,使用import open3d導(dǎo)入Open3d時,Open3d將會在初始化階段試圖加載共享庫.
從源碼構(gòu)建Open3d
首先,下載open3d_azure_kinect_ubuntu1604_fix包到你的Python環(huán)境.這個包包含編譯Azure Kinect支持版本的Open3d的所要的頭文件.
從源碼構(gòu)建Open3d時,在CMake配置階段設(shè)置
-DBUILD_AZURE_KINECT=ON.CMake
將會使用當(dāng)前路徑中可用的Python可執(zhí)行文件去檢測open3d_azure_kinect_ubuntu1604_fix包的位置.因此在運(yùn)行CMake時,
請確保啟用的Python環(huán)境是open3d_azure_kinect_ubuntu1604_fix包所在的環(huán)境.
如果是構(gòu)建C++二進(jìn)制文件,依然要確保在運(yùn)行時LD_LIBRARY_PATH包含 libstdc++.so 和libdepthengine.so 目錄.如果你構(gòu)建已經(jīng)編譯的Open3d Python模塊,Open3d的?init.py文件將會試圖導(dǎo)入open3d_azure_kinect_ubuntu1604_fix,為了自動追加 LD_LIBRARY_PATH.
資源
三維點云論文及相關(guān)應(yīng)用分享
【點云論文速讀】基于激光雷達(dá)的里程計及3D點云地圖中的定位方法
3D目標(biāo)檢測:MV3D-Net
三維點云分割綜述(上)
3D-MiniNet: 從點云中學(xué)習(xí)2D表示以實現(xiàn)快速有效的3D LIDAR語義分割(2020)
win下使用QT添加VTK插件實現(xiàn)點云可視化GUI
JSNet:3D點云的聯(lián)合實例和語義分割
大場景三維點云的語義分割綜述
PCL中outofcore模塊---基于核外八叉樹的大規(guī)模點云的顯示
基于局部凹凸性進(jìn)行目標(biāo)分割
基于三維卷積神經(jīng)網(wǎng)絡(luò)的點云標(biāo)記
點云的超體素(SuperVoxel)
基于超點圖的大規(guī)模點云分割
更多文章可查看:點云學(xué)習(xí)歷史文章大匯總
SLAM及AR相關(guān)分享
【開源方案共享】ORB-SLAM3開源啦!
【論文速讀】AVP-SLAM:自動泊車系統(tǒng)中的語義SLAM
【點云論文速讀】StructSLAM:結(jié)構(gòu)化線特征SLAM
SLAM和AR綜述
常用的3D深度相機(jī)
AR設(shè)備單目視覺慣導(dǎo)SLAM算法綜述與評價
SLAM綜述(4)激光與視覺融合SLAM
Kimera實時重建的語義SLAM系統(tǒng)
SLAM綜述(3)-視覺與慣導(dǎo),視覺與深度學(xué)習(xí)SLAM
易擴(kuò)展的SLAM框架-OpenVSLAM
高翔:非結(jié)構(gòu)化道路激光SLAM中的挑戰(zhàn)
SLAM綜述之Lidar SLAM
基于魚眼相機(jī)的SLAM方法介紹
往期線上分享錄播匯總
第一期B站錄播之三維模型檢索技術(shù)
第二期B站錄播之深度學(xué)習(xí)在3D場景中的應(yīng)用
第三期B站錄播之CMake進(jìn)階學(xué)習(xí)
第四期B站錄播之點云物體及六自由度姿態(tài)估計
第五期B站錄播之點云深度學(xué)習(xí)語義分割拓展
第六期B站錄播之Pointnetlk解讀
[線上分享錄播]點云配準(zhǔn)概述及其在激光SLAM中的應(yīng)用
[線上分享錄播]cloudcompare插件開發(fā)
[線上分享錄播]基于點云數(shù)據(jù)的?Mesh重建與處理
[線上分享錄播]機(jī)器人力反饋遙操作技術(shù)及機(jī)器人視覺分享
[線上分享錄播]地面點云配準(zhǔn)與機(jī)載點云航帶平差
點云PCL更多活動請查看:點云PCL活動之應(yīng)屆生校招群
掃描下方微信視頻號二維碼可查看最新研究成果及相關(guān)開源方案的演示:
如果你對本文感興趣,請點擊“原文閱讀”獲取知識星球二維碼,務(wù)必按照“姓名+學(xué)校/公司+研究方向”備注加入免費(fèi)知識星球,免費(fèi)下載pdf文檔,和更多熱愛分享的小伙伴一起交流吧!
以上內(nèi)容如有錯誤請留言評論,歡迎指正交流。如有侵權(quán),請聯(lián)系刪除
掃描二維碼
? ? ? ? ? ? ? ? ? ?關(guān)注我們
讓我們一起分享一起學(xué)習(xí)吧!期待有想法,樂于分享的小伙伴加入免費(fèi)星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機(jī)器人等相關(guān)的領(lǐng)域。
分享及合作方式:群主微信“920177957”(需要按要求備注) 聯(lián)系郵箱:dianyunpcl@163.com,歡迎企業(yè)來聯(lián)系公眾號展開合作。
點一下“在看”你會更好看耶
總結(jié)
以上是生活随笔為你收集整理的Open3d 学习计划—13(Azure Kinect)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【论文速读】RandLA-Net大规模点
- 下一篇: 一个精简的开源点云库