国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

多臺Azure Kinect配準與三維重建點云融合

這篇具有很好參考價值的文章主要介紹了多臺Azure Kinect配準與三維重建點云融合。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔


前言

本文章講解 多臺Azure Kinect配準與三維重建點云融合 的相關(guān)理論及思路,相關(guān)代碼將免費開源至github,敬請期待。


一、同步多臺設(shè)備

在進行多相機或者雙相機的數(shù)據(jù)采集時,為了使得各相機所捕獲的每一幀數(shù)據(jù)都是同一時刻的場景,因此需要對各個相機間進行同步操作。當有多個Kinect Azure設(shè)備同時連接時,需將它們分成master屬性(主設(shè)備)和subordinate屬性(從屬設(shè)備)兩種,其中主設(shè)備有且只有一個,剩下的全部為從屬設(shè)備。
每個 Azure Kinect DK 設(shè)備附帶 3.5 毫米同步端口(輸入同步和輸出同步),可將多個設(shè)備鏈接在一起。 連接設(shè)備后,軟件可以協(xié)調(diào)設(shè)備之間的觸發(fā)定時。 需要注意的是,“同步輸入”和“同步輸出”插孔需要拆下Azure Kinect DK外部塑料蓋才能看到。
同步的配置有兩種,可使用以下任一方法來完成設(shè)備配置:
菊花鏈配置。 同步一個主設(shè)備以及最多八個從屬設(shè)備。在菊花鏈配置中連接 Azure Kinect DK 設(shè)備步驟:

  1. 將每個 Azure Kinect DK 連接到電源。
  2. 將每個設(shè)備連接到其自身的主機。
  3. 選擇一個設(shè)備充當主設(shè)備,并將 3.5 毫米音頻線插入該設(shè)備輸出同步端口。
  4. 將該線纜的另一端插入第一個從屬設(shè)備的輸入同步端口。
  5. 若要連接另一個設(shè)備,請將另一根線纜插入第一個從屬設(shè)備的輸出同步端口,以及下一個設(shè)備的輸入同步端口。
  6. 重復(fù)上述步驟,直到所有設(shè)備都已連接。 最后一個設(shè)備應(yīng)連接了一根線纜。 其輸出同步端口應(yīng)該是空的。
    多臺Azure Kinect配準與三維重建點云融合
    星形配置。 同步一個主設(shè)備以及最多兩個從屬設(shè)備。在星形配置中連接 Azure Kinect DK 設(shè)備步驟:
  7. 將每個 Azure Kinect DK 連接到電源。
  8. 將每個設(shè)備連接到其自身的主機。
  9. 選擇一個設(shè)備充當主設(shè)備,將耳機分線器的單體端插入其輸出同步端口。
  10. 將 3.5 毫米音頻線連接到耳機分線器的“分接”端。
  11. 將每根線纜的另一端插入某個從屬設(shè)備的輸入同步端口。
    多臺Azure Kinect配準與三維重建點云融合
    觸發(fā)器源必須使用 3.5 毫米音頻線將信號傳送到主設(shè)備的輸入同步端口。線纜長度應(yīng)小于 10 米,可以是立體聲或單聲道音頻線。可以使用立體聲或單聲道音頻線。 Azure Kinect DK 會將音頻線連接器的所有套管和套環(huán)短接到一起,并將其接地。 如下圖所示,設(shè)備只從連接器尖端接收同步信號。

多臺Azure Kinect配準與三維重建點云融合
實際采集場景可如下所示:
多臺Azure Kinect配準與三維重建點云融合每個Azure Kinect DK可以連接至不同的主機,也可以全部連接至同一臺主機??梢愿鶕?jù)設(shè)備的使用方式以及通過 USB 連接傳輸?shù)臄?shù)據(jù)量使用專用主機控制器。
注意:每個連接設(shè)備的軟件必須配置為以主模式或從屬模式運行。使用外部同步時,始終應(yīng)先啟動從屬相機,然后再啟動主相機,這樣才能正常調(diào)整時間戳。
連接設(shè)備完成后簡單地驗證設(shè)備是否已連接并可通信,步驟如下:

  1. 打開 Azure Kinect 查看器的兩個實例。
  2. 在“打開設(shè)備”下,選擇要測試的從屬設(shè)備的序列號。
  3. 在“外部同步”下,選擇“從屬設(shè)備”。選擇“開始”。
  4. 啟動從屬設(shè)備后,使用 Azure Kinect 查看器的另一實例打開主設(shè)備。
  5. 在“外部同步”下,選擇“主設(shè)備”。選擇“開始”。
  6. Azure Kinect主設(shè)備啟動后,Azure Kinect查看器兩個實例應(yīng)顯示圖像。
    除此之外,也可以自己編寫代碼完成多臺設(shè)備的同步采集。

二、配準多臺設(shè)備

驗證設(shè)備可正確通信后,接下來可對其進行校準,以便在單個域中生成圖像。
在單個設(shè)備中,深度相機和 RGB 相機已經(jīng)過出廠校準,可以協(xié)同工作。 但是,如果必須一同使用多個設(shè)備,則必須對這些設(shè)備進行校準,以確定如何將圖像從捕獲它時所在的相機域轉(zhuǎn)換為用于處理圖像的相機域。
目的:多攝像機轉(zhuǎn)移矩陣的標定可以將多攝像機人體姿態(tài)轉(zhuǎn)移到同一空間坐標。多攝像頭的標定是為了通過標定技術(shù)獲取兩個或更多攝像頭的相機坐標之間的旋轉(zhuǎn)平移矩陣。
方案:目前使用的比較多的標定方法是張正友標定法(黑白棋盤格標定)。對于單個傳感器而言,該方法可以計算傳感器的內(nèi)參、畸變參數(shù)以及傳感器坐標系和世界坐標系之間的外參。對于兩個傳感器而言,可以計算它們之間的外參。
簡而言之,配準就是一個用各種方法尋找相機間的旋轉(zhuǎn)矩陣的過程。
配準之前,需要了解以下知識:

2.1 四個坐標系

世界坐標系:即物體在真實的物理環(huán)境所在坐標系。
相機坐標系:即以相機的的中心點為原點而建立的坐標系。相機的光軸通過該原點,且為該坐標系的Z軸。
圖像坐標系:即所獲得的圖像所在的坐標系,圖像的中心即為該坐標系的原點。需要注意的是,相機的光軸也通過圖像坐標系的原點。
像素坐標系:即以圖像的左上角(或者左下角)為原點的坐標系舉個例子,CCD傳感上上面的8mm x 6mm,轉(zhuǎn)換到像素大小是640x480. 假如dx表示像素坐標系中每個像素的物理大小就是1/80. 也就是說毫米與像素點的之間關(guān)系是piexl/mm.需要注意的是,像素坐標系中的點,以像素來表示,而非距離單位。像素坐標系與圖像坐標系均在像平面上,范圍與圖片尺寸有關(guān)。
相機坐標系和圖像物理坐標系:
多臺Azure Kinect配準與三維重建點云融合其中點X為相機坐標系下的現(xiàn)實世界中的點,XYZ為像機坐標系,xyz為圖像坐標系,右圖為正視圖,f代表相機的焦距。
四個坐標系的疊加:
多臺Azure Kinect配準與三維重建點云融合

2.2 世界坐標系到相機坐標系

多臺Azure Kinect配準與三維重建點云融合

旋轉(zhuǎn)變換:多臺Azure Kinect配準與三維重建點云融合
平移變換:
多臺Azure Kinect配準與三維重建點云融合

2.3 相機坐標系到圖像物理坐標系

多臺Azure Kinect配準與三維重建點云融合

2.4 圖像物理坐標系到像素坐標系

多臺Azure Kinect配準與三維重建點云融合
坐標系變換的總結(jié)

多臺Azure Kinect配準與三維重建點云融合

2.5 張正友標定

張正友相機標定法是張正友教授1998年提出的單平面棋盤格的相機標定方法。傳統(tǒng)標定法的標定板是需要三維的,需要非常精確,這很難制作,而張正友教授提出的方法介于傳統(tǒng)標定法和自標定法之間,但克服了傳統(tǒng)標定法需要的高精度標定物的缺點,而僅需使用一個打印出來的棋盤格就可以。同時也相對于自標定而言,提高精度,便于操作。因此張氏標定法被廣泛應(yīng)用于計算機視覺方面。
多臺Azure Kinect配準與三維重建點云融合
已知相機的內(nèi)參和外參,將他們重新表示為:
多臺Azure Kinect配準與三維重建點云融合
多臺Azure Kinect配準與三維重建點云融合
多臺Azure Kinect配準與三維重建點云融合
多臺Azure Kinect配準與三維重建點云融合
多臺Azure Kinect配準與三維重建點云融合
容易發(fā)現(xiàn)B是一個對稱陣,所以B的有效元素就剩下6個,即

多臺Azure Kinect配準與三維重建點云融合
通過至少含一個棋盤格的三幅圖像,應(yīng)用上述公式我們就可以估算出B了。得到B后,我們通過cholesky分解 ,就可以得到攝相機機的內(nèi)參陣A的六個自由度,即:
多臺Azure Kinect配準與三維重建點云融合
多臺Azure Kinect配準與三維重建點云融合且R具有正交性和歸一性,所以

多臺Azure Kinect配準與三維重建點云融合
此處K等于上述的A,一個H矩陣可以提供兩個方程,對于5自由度的A,至少需要三幅圖片可以求解。但上述的推導(dǎo)結(jié)果是基于理想情況下的解,由于可能存在高斯噪聲,所以使用最大似然估計進行優(yōu)化。采用更多的圖片(20幅有效圖片),每幅圖片有更多角點(8*6棋盤格)。
根據(jù)上述原理可以求得單個傳感器的外參,分別求出兩個設(shè)備的顏色傳感器的外參,就可以計算出兩個顏色傳感器間的外參。

2.6 實際操作
可以通過opencv庫實現(xiàn)相機標定。使用opencv庫實現(xiàn)相機標定的步驟如下:

  1. 相機獲取一幀圖像,由圖像格式轉(zhuǎn)為Mat矩陣
  2. 利用findChessboardCorners()函數(shù)識別圖像中的棋盤格角點位置drawChessboardCorners()函數(shù)可以查看識別的角點位置是否準確
  3. 當有足夠多張圖后,調(diào)用calibrateCamera()以獲取單相機的內(nèi)外參和畸變系數(shù);調(diào)用stereoCalibrate()以獲取雙相機間的外參(R、t)。
    Microsoft 提供了使用 OpenCV 方法的 GitHub 綠屏代碼示例。 此代碼示例的自述文件提供了有關(guān)校準設(shè)備的更多詳細信息和說明。
    多臺Azure Kinect配準與三維重建點云融合

三、多臺設(shè)備3維空間信息重建

此處建議錄制視頻與生成點云是分開的。 這樣做的好處有兩點:一是在具體操作時發(fā)現(xiàn)如果二者并行,采集速度將會是龜速。二是這里的kinect即使替換為任意的RGB-D相機,該程序仍然可以運行。
Kinect Azure通過k4a_device_get_calibration函數(shù)可以獲取各傳感器的內(nèi)參以及它們之間的外參,并存放在k4a_calibration_t數(shù)據(jù)類型中,方便使用者直接獲取數(shù)據(jù)。在SDK提供的各函數(shù)接口中,會通過k4a_transformation_create函數(shù)將k4a_calibration_t數(shù)據(jù)類型轉(zhuǎn)換成k4a_transformation_t類型后進行使用。換句話說,直接使用SDK提供的函數(shù)時用k4a_transformation_t類型,需要讀取內(nèi)外參具體數(shù)據(jù)時用k4a_calibration_t類型。
通過k4a_transformation_color_image_to_depth_camera函數(shù)可以獲取到深度圖像上每個像素對應(yīng)的彩色值,并保存在同分辨率的transformation_color_image圖像中。通過k4a_transformation_depth_image_to_point_cloud函數(shù)可以獲取到深度圖像上每個像素對應(yīng)的點云坐標。最后遍歷每個像素點,將對應(yīng)的點云坐標和彩色數(shù)據(jù)寫在構(gòu)造的color_point_t結(jié)構(gòu)體中作為一個彩色點,排除數(shù)據(jù)異常點后,所有被寫在vector向量中的點即為單相機獲得的單幀點云數(shù)據(jù)。可以使用PCL點云庫生成點云。
得到單個相機的點云后,將所有點云進行融合,根據(jù)第二步配準得到的外參,我們可以將不同視角的點云融合至同一視角,達到三維重建的效果。
三維重建點云融合流程如下圖:

多臺Azure Kinect配準與三維重建點云融合


總結(jié)

以上就是今天要講的內(nèi)容,本文章講解 多臺Azure Kinect配準與三維重建點云融合 的相關(guān)理論及思路,相關(guān)代碼將免費開源至github,敬請期待。文章來源地址http://www.zghlxwxcb.cn/news/detail-448621.html

到了這里,關(guān)于多臺Azure Kinect配準與三維重建點云融合的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【CloudCompare教程】008:基于點云的三維模型重建(泊松重建)

    【CloudCompare教程】008:基于點云的三維模型重建(泊松重建)

    本文講述基于點云的三維模型重建方法,PoissonRecon是“Poisson Surface Reconstruction”的縮寫,它是由約翰霍普金斯大學的Misha Kazhdan47提出的三角形網(wǎng)格生成算法的簡單接口。 加載兔子點云,如下圖所示: 在三維模型構(gòu)建之前,應(yīng)先計算法向量,否則會有以下提示:點云必須具有

    2024年02月07日
    瀏覽(195)
  • 三維重建(單目、雙目、多目、點云、SFM、SLAM)

    三維重建(單目、雙目、多目、點云、SFM、SLAM)

    三維重建定義 在計算機視覺中, 三維重建是指根據(jù)單視圖或者多視圖的圖像重建三維信息的過程. 由于單視頻的信息不完全,因此三維重建需要利用經(jīng)驗知識. 而多視圖的三維重建(類似人的雙目定位)相對比較容易, 其方法是先對攝像機進行標定, 即計算出攝像機的圖象坐標系與

    2024年02月03日
    瀏覽(30)
  • MATLAB算法實戰(zhàn)應(yīng)用案例精講-【目標檢測】三維點云重建

    目錄 前言 算法原理 什么是點云? 數(shù)據(jù)預(yù)處理 ?三維計算視覺研究內(nèi)容

    2024年02月06日
    瀏覽(34)
  • 【計算機視覺】基于三維重建和點云處理的掃地機器人尋路

    【計算機視覺】基于三維重建和點云處理的掃地機器人尋路

    [摘要] 掃地機器人的使用已經(jīng)越發(fā)普及,其中應(yīng)用到了三維重建的知識。本項目旨在設(shè)計由一 ? 定數(shù)量的圖像根據(jù)算法完成三維模型的建立,并利用三維數(shù)據(jù)最終得到掃地機器人的行駛路 ? 線, ? 完成打掃機器人成功尋路的任務(wù) ? 。本項目采用的方法是?SFM-MVS ? 、Colmap ?

    2024年01月21日
    瀏覽(29)
  • 4 OpenCV實現(xiàn)多目三維重建(多張圖片增量式生成稀疏點云)【附源碼】

    4 OpenCV實現(xiàn)多目三維重建(多張圖片增量式生成稀疏點云)【附源碼】

    本文是基于 OpenCV4.80 進行的,關(guān)于環(huán)境的配置可能之后會單獨說,先提一嘴 vcpkg 真好用 從多張圖片逐步生成稀疏點云,這個過程通常包括以下步驟: 初始重建: 初始兩張圖片的選擇 十分重要 ,這是整個流程的基礎(chǔ),后續(xù)的增圖都是在這兩張圖片的基礎(chǔ)上進行的 對于輸入圖

    2024年02月06日
    瀏覽(35)
  • 開源,點云處理及三維重建軟件(Point Cloud Viewer, PCV)的設(shè)計與實現(xiàn)

    開源,點云處理及三維重建軟件(Point Cloud Viewer, PCV)的設(shè)計與實現(xiàn)

    GitHub地址:point-cloud-viewer GitCode地址:point-cloud-viewer 筆者于2021年底開始,著手設(shè)計并實現(xiàn)這款點云處理及三維重建軟件Point Cloud Viewer, PCV,歷時三個月,完成該軟件的大部分功能實現(xiàn)。由于筆者轉(zhuǎn)行做嵌入式底層相關(guān)工作,不再研究點云處理相關(guān)技術(shù),PCV的后續(xù)功能實現(xiàn)就一

    2024年02月01日
    瀏覽(25)
  • 【Kinect】Ubuntu20.04 安裝Azure Kinect Sensor

    【Kinect】Ubuntu20.04 安裝Azure Kinect Sensor

    本文主要記錄Ubuntu20.04 安裝Azure Kinect Sensor SDK Azure Kinect 人體跟蹤 SDK官網(wǎng) : https://learn.microsoft.com/zh-cn/azure/Kinect-dk/body-sdk-download Linux版本目前只支持 18.04 和 20.04 Azure Kinect 傳感器 SDK 官網(wǎng): https://learn.microsoft.com/zh-cn/azure/Kinect-dk/sensor-sdk-download Linux版本目前只支持 18.04 ,但也能

    2024年02月06日
    瀏覽(26)
  • Azure Kinect 使用記錄 (一)

    Azure Kinect 使用記錄 (一)

    20211111 - 占坑 20211115 - 添加vs編譯內(nèi)容 20220311 - k4abt_simple_3d_viewer 突然用不了了 因項目需要,得用Azure Kinect以及它的SDK進行開發(fā),在這里記錄下心得體會,不定時更新 1.0 k4abt_simple_3d_viewer 閃退 之前用著還好好的,突然就用不了了,表現(xiàn)情況是,雙擊 k4abt_simple_3d_viewer.exe ,出現(xiàn)

    2024年02月06日
    瀏覽(16)
  • Azure Kinect獲取相機內(nèi)參

    在采集點云數(shù)據(jù)時需要根據(jù)相機不同depth、color分辨率調(diào)整對應(yīng)相機內(nèi)參u0(px)、v0(py)、fx、fy,那么具體內(nèi)參怎么獲得呢?就跟隨ludaner一起來看看吧。 其實Azure-Kinect-Sensor-SDK已經(jīng)提供了example代碼,只需編譯運行即可: Azure-Kinect-Sensor-SDK/main.cpp at develop · microsoft/Azure-Kinect-Sensor-S

    2023年04月13日
    瀏覽(24)
  • Azure Kinect 之 Note(一)

    Azure Kinect 之 Note(一)

    Azure Kinect DK 是一款開發(fā)人員工具包,配有先進的AI 傳感器,提供復(fù)雜的計算機視覺和語音模型。 Kinect 將深度傳感器、空間麥克風陣列與視頻攝像頭和方向傳感器整合成一體式的小型設(shè)備,提供多種模式、選項和軟件開發(fā)工具包(SDK)。 https://learn.microsoft.com/zh-tw/azure/kinect-dk/h

    2024年02月16日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包