1 三維數(shù)據(jù)的采集方式
1.1 激光掃描儀
激光掃描儀(Lidar)是一種常用于采集三維數(shù)據(jù)的儀器,它使用激光光束進(jìn)行測(cè)量和感知,通過(guò)發(fā)射激光束并測(cè)量其返回時(shí)間和強(qiáng)度來(lái)獲取目標(biāo)物體的距離和形狀信息,并計(jì)算出每個(gè)掃描點(diǎn)的準(zhǔn)確坐標(biāo)。這些點(diǎn)的集合形成了三維點(diǎn)云數(shù)據(jù)。激光掃描儀可大面積、高分辨率、快速地獲取物體表面各個(gè)點(diǎn)的(x,y,z)坐標(biāo)、反射率、(R.G.B)顏色等數(shù)據(jù)信息,可以快速?gòu)?fù)建出1:1彩色三維點(diǎn)云模型,用于后續(xù)的三維重建、建模和測(cè)量分析等應(yīng)用。
1.2 深度相機(jī)
傳統(tǒng)的RGB彩色普通相機(jī)稱(chēng)為2D相機(jī),只能拍攝相機(jī)視角內(nèi)的物體,沒(méi)有物體到相機(jī)的距離信息,只能憑感覺(jué)感知物體的遠(yuǎn)近,沒(méi)有明確的數(shù)據(jù)。而RGB-D深度相機(jī)(又稱(chēng)3D相機(jī),其中D代表Depth為深度信息)可獲取物體到相機(jī)的距離信息,加之2D平面的X,Y坐標(biāo),可計(jì)算出每個(gè)點(diǎn)的三維坐標(biāo),進(jìn)行三維重建、目標(biāo)定位、識(shí)別等應(yīng)用。
1.3 雙目相機(jī)
雙目相機(jī),也稱(chēng)為立體視覺(jué)相機(jī)或雙目立體視覺(jué)系統(tǒng),是一種通過(guò)兩個(gè)攝像頭同時(shí)拍攝來(lái)模擬人類(lèi)雙眼視覺(jué)的相機(jī)系統(tǒng)。每個(gè)攝像頭都可以獨(dú)立地捕捉場(chǎng)景的圖像,然后通過(guò)計(jì)算機(jī)算法將這些圖像進(jìn)行立體視覺(jué)匹配,從而得到場(chǎng)景深度信息。通過(guò)測(cè)量攝像頭對(duì)應(yīng)像素上圖像的位移,結(jié)合攝像頭之間的已知基線長(zhǎng)度,可以使用三角測(cè)量原理計(jì)算出場(chǎng)景中點(diǎn)的三維位置。這使得雙目相機(jī)在許多應(yīng)用領(lǐng)域中非常有用,例如三維重建、立體視覺(jué)測(cè)距、物體識(shí)別和跟蹤等。
1.4 光學(xué)相機(jī)多視角重建
使用相機(jī)拍攝物體的多張照片,再通過(guò)相關(guān)三維重建軟件將照片配準(zhǔn)定位,進(jìn)行特征提取與匹配,隨后生成稀疏點(diǎn)云并進(jìn)行稠密重建操作。SFM是指通過(guò)分析多個(gè)二維圖像之間的共同點(diǎn)和攝像機(jī)運(yùn)動(dòng)信息,推導(dǎo)出場(chǎng)景的三維結(jié)構(gòu)?;镜募僭O(shè)是,同一場(chǎng)景的不同圖像是通過(guò)攝像機(jī)在空間中移動(dòng)而產(chǎn)生的。SFM利用這些視角和對(duì)應(yīng)點(diǎn)之間的幾何關(guān)系,通過(guò)三角定位、尺度恢復(fù)、攝像機(jī)運(yùn)動(dòng)估計(jì)等算法,將這些視角投射到一個(gè)共同的三維坐標(biāo)系中。多視角重建這類(lèi)軟件有Agisoft Photoscan、VisualSFM等。
**
2 三維數(shù)據(jù)的采集原理
2.1 三角測(cè)距
三角測(cè)距是一種常用的測(cè)量方法,基于三角形的相似性原理進(jìn)行測(cè)量。其原理可以簡(jiǎn)化為以下幾個(gè)步驟:
- 建立一個(gè)已知長(zhǎng)度的基準(zhǔn)線段:在測(cè)量前,建立一個(gè)已知長(zhǎng)度的基準(zhǔn)線段。
- 觀測(cè)目標(biāo)物體和基準(zhǔn)線段之間的角度:使用測(cè)量?jī)x器,測(cè)量目標(biāo)物體和基準(zhǔn)線段之間的兩個(gè)角度。這可以通過(guò)對(duì)目標(biāo)物體和基準(zhǔn)線段分別放置測(cè)量?jī)x器來(lái)實(shí)現(xiàn)。
- 計(jì)算距離:利用三角形的相似性原理,通過(guò)已知角度和基準(zhǔn)線段長(zhǎng)度,根據(jù)三角函數(shù)的關(guān)系,可以推導(dǎo)出目標(biāo)物體到觀測(cè)點(diǎn)的距離。
2.2 TOF
TOF(Time of Flight)是一種基于光的測(cè)距技術(shù),通過(guò)測(cè)量光信號(hào)從發(fā)射到接收所需的時(shí)間來(lái)確定物體到傳感器之間的距離。以下是TOF的工作步驟:
- 發(fā)射光脈沖:傳感器發(fā)射一個(gè)光脈沖,這個(gè)光脈沖會(huì)被物體反射或散射。
- 接收光信號(hào):傳感器接收并記錄反射或散射的光信號(hào)。這個(gè)信號(hào)在光脈沖返回傳感器之后,經(jīng)過(guò)一段時(shí)間才能被接收到。
- 測(cè)量時(shí)間差:通過(guò)測(cè)量光脈沖發(fā)射和接收之間的時(shí)間差,即發(fā)射光脈沖和接收到反射或散射光信號(hào)之間的時(shí)間間隔,確定物體到傳感器之間的距離。
- 計(jì)算距離:根據(jù)光在真空中的傳播速度(一般取光速),將測(cè)量得到的時(shí)間差轉(zhuǎn)換為距離。
TOF的優(yōu)點(diǎn)是測(cè)量精度高、測(cè)量范圍廣,可以應(yīng)用于不同的環(huán)境和物體表面。它在工業(yè)、機(jī)器人、自動(dòng)駕駛等領(lǐng)域被廣泛應(yīng)用。
2.3 雙目視覺(jué)
雙目視覺(jué)是一種基于人類(lèi)雙眼感知深度的視覺(jué)技術(shù)。它模擬了人類(lèi)的雙眼視覺(jué)系統(tǒng),通過(guò)兩個(gè)相距一定距離的攝像頭來(lái)獲取兩個(gè)不同角度的圖像,并通過(guò)計(jì)算兩個(gè)圖像之間的視差(disparity)來(lái)推斷物體的距離和深度信息。以下是雙目視覺(jué)的工作步驟:
- 攝像頭安裝:兩個(gè)攝像頭以一定距離安裝在同一平面上,使得視野有一定的重疊區(qū)域。
- 圖像獲?。和ㄟ^(guò)兩個(gè)攝像頭分別獲取兩個(gè)不同角度的圖像,類(lèi)似于人的雙眼。
- 圖像校正:根據(jù)攝像頭的內(nèi)外參數(shù),對(duì)兩個(gè)圖像進(jìn)行校正,以消除圖像畸變和對(duì)齊兩個(gè)攝像頭的視圖。
- 匹配特征點(diǎn):在兩個(gè)校正后的圖像中,通過(guò)特征點(diǎn)提取算法(如SIFT、SURF等)找到兩個(gè)圖像中具有相似特征的點(diǎn)。
- 計(jì)算視差:對(duì)于找到的匹配特征點(diǎn),計(jì)算它們?cè)趦煞鶊D像中的水平位置差異,這個(gè)差異稱(chēng)為視差。視差值越大,表示物體距離攝像頭越近;視差值越小,表示物體距離攝像頭越遠(yuǎn)。
- 距離計(jì)算:通過(guò)已知的攝像頭參數(shù)、基線距離和三角測(cè)量原理,將視差轉(zhuǎn)換為物體的距離值。距離值隨著視差的增大而減小,反映物體與攝像頭的距離遠(yuǎn)近。
雙目視覺(jué)在機(jī)器人導(dǎo)航、三維重建、物體識(shí)別和跟蹤等領(lǐng)域得到廣泛應(yīng)用,能夠提供精確的深度信息,以增強(qiáng)對(duì)環(huán)境的感知能力。
2.4 結(jié)構(gòu)光
結(jié)構(gòu)光是一種常見(jiàn)的三維感知技術(shù),其原理基于對(duì)物體表面投射結(jié)構(gòu)光,并通過(guò)相機(jī)來(lái)捕捉和分析光的形狀和變化。以下是結(jié)構(gòu)光測(cè)量的原理步驟:
- 投射結(jié)構(gòu)光:在測(cè)量區(qū)域的一側(cè),使用光源(通常是激光器或投影儀)發(fā)射結(jié)構(gòu)化的光,例如光柵紋理、條紋或編碼圖案。
- 光的投射和形變:結(jié)構(gòu)光經(jīng)過(guò)測(cè)量區(qū)域后,會(huì)與物體表面的形狀和紋理相互作用。光在物體表面上會(huì)發(fā)生投影、反射和散射等變化。物體表面的形狀和紋理會(huì)導(dǎo)致結(jié)構(gòu)光的形變。
- 形變捕捉:在測(cè)量區(qū)域的另一側(cè),放置相機(jī)或傳感器來(lái)捕捉反射、散射或投影的結(jié)構(gòu)光。相機(jī)記錄下物體表面的結(jié)構(gòu)光形變和模式。
- 形變分析:通過(guò)分析相機(jī)捕捉到的結(jié)構(gòu)光圖像,可以反推出物體表面的形狀和尺寸。這可以通過(guò)計(jì)算結(jié)構(gòu)光的位移、形變或紋理變化進(jìn)行實(shí)現(xiàn)。
- 三維重建:通過(guò)相機(jī)捕捉到的結(jié)構(gòu)光圖像,以及對(duì)光源和相機(jī)之間的幾何關(guān)系,進(jìn)行三維重建,將物體表面的形狀和紋理轉(zhuǎn)化為一個(gè)三維模型或點(diǎn)云數(shù)據(jù)。
3 點(diǎn)云基礎(chǔ)
3.1 點(diǎn)云概念
點(diǎn)云(Point Cloud)是三維空間中,表達(dá)目標(biāo)空間分布和目標(biāo)表面特性的點(diǎn)的集合,點(diǎn)云通??梢詮纳疃认鄼C(jī)中直接獲取,也可以從CAD等軟件中生成。點(diǎn)云是用于表示多維點(diǎn)集合的數(shù)據(jù)結(jié)構(gòu),通常用于表示三維數(shù)據(jù)。在3D點(diǎn)云中,這些點(diǎn)通常代表采樣表面的X,Y和Z幾何坐標(biāo)。當(dāng)存在顏色信息時(shí),點(diǎn)云變?yōu)?D。
根據(jù)激光測(cè)量原理得到的點(diǎn)云,包含三維坐標(biāo)信息(xyz)和激光反射強(qiáng)度信息(intensity)(激光反射強(qiáng)度與儀器的激光發(fā)射能量、波長(zhǎng),目標(biāo)的表面材質(zhì)、粗糙程度、入射角相關(guān))。根據(jù)攝影測(cè)量原理得到的點(diǎn)云,包括三維坐標(biāo)(xyz)和顏色信息(rgb)。結(jié)合兩個(gè)原理的多傳感器融合技術(shù)(多見(jiàn)于手持式三維掃描儀),能夠同時(shí)得到這三種信息。三維點(diǎn)云是真實(shí)物體表面的離散采樣,點(diǎn)云處理就是從點(diǎn)云中提取到我們需要的信息。
3.2 點(diǎn)云類(lèi)型
為了涵蓋能想到的所有可能的情況,PCL中定義了大量的point類(lèi)型,在point_types.hpp中有完整目錄。
- PointXYZ - Members: float x, y, z
最常用的數(shù)據(jù)類(lèi)型之一,只表示3D xyz信息。用戶可以訪問(wèn)點(diǎn)[i].data[0]或點(diǎn)[i].x
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
- PointXYZI - Members: float x, y, z, intensityXYZ+強(qiáng)度類(lèi)型。由于大多數(shù)點(diǎn)操作會(huì)將data[4]數(shù)組的第四部分設(shè)置為0或1(用于轉(zhuǎn)換),因此不能將intensity設(shè)置為同一結(jié)構(gòu)的成員,因?yàn)樗膬?nèi)容將被覆蓋。
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
union
{
struct
{
floatintensity;
};
floatdata_c[4];
};
- PointXYZRGBA - Members: float x, y, z; std::uint32_t rgba與PointXYZI類(lèi)似,除了rgba包含打包成無(wú)符號(hào)32位整數(shù)的rgba信息外。由于聯(lián)合聲明,還可以按名稱(chēng)單獨(dú)訪問(wèn)顏色通道。
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
union
{
union
{
struct
{
std::uint8_tb;
std::uint8_tg;
std::uint8_tr;
std::uint8_ta;
};
floatrgb;
};
std::uint32_trgba;
};
- 其他類(lèi)型| 點(diǎn)云類(lèi)型 | 描述 || --- | --- || PointXYZRGB | float x, y, z; std::uint32_t rgba;與PointXYZRGBA相同 || PointXY | float x, y; 簡(jiǎn)單的二維x-y點(diǎn)結(jié)構(gòu) || InterestPoint | float x, y, z, strength;與PointXYZI類(lèi)似,除了強(qiáng)度包含關(guān)鍵點(diǎn)強(qiáng)度的度量 || Normal | float normal[3], curvature;最常用之一,表示給定點(diǎn)處的曲面法向,以及曲率的度量 || PointNormal | float x, y, z; float normal[3], curvature;保存XYZ數(shù)據(jù)、曲面法線和曲率的點(diǎn)結(jié)構(gòu) || PointXYZRGBNormal | float x, y, z, normal[3], curvature; std::uint32_t rgba;保存XYZ數(shù)據(jù)、RGBA顏色以及曲面法線和曲率的點(diǎn)結(jié)構(gòu) || PointXYZINormal | float x, y, z, intensity, normal[3], curvature;保存XYZ數(shù)據(jù)和強(qiáng)度值以及曲面法線和曲率的點(diǎn)結(jié)構(gòu) || PFHSignature125 | float pfh[125];包含給定點(diǎn)的PFH(點(diǎn)特征直方圖)的簡(jiǎn)單點(diǎn)類(lèi)型 || FPFHSignature33 | float fpfh[33];包含給定點(diǎn)的FPFH(快速點(diǎn)特征直方圖)的簡(jiǎn)單點(diǎn)類(lèi)型 || PointSurfel | float x, y, z, normal[3], rgba, radius, confidence, curvature;包含XYZ數(shù)據(jù)、曲面法線、RGB信息、比例、置信度和曲面曲率的復(fù)雜點(diǎn)類(lèi)型 |
更多點(diǎn)云類(lèi)型參見(jiàn):點(diǎn)云類(lèi)型(https://blog.csdn.net/tobebest_lah/article/details/106241406)
3.3 點(diǎn)云儲(chǔ)存格式
點(diǎn)云目前的主要存儲(chǔ)格式包括:PCD、pts、LAS等。其中PCD 存儲(chǔ)格式是 PCL 庫(kù)官方指定格式,PCD 格式具有文件頭,用于描繪點(diǎn)云的整體信息:定義數(shù)字的可讀頭、尺寸、點(diǎn)云的維數(shù)和數(shù)據(jù)類(lèi)型;一種數(shù)據(jù)段,可以是 ASCII 碼或二進(jìn)制碼。數(shù)據(jù)本體部分由點(diǎn)的笛卡爾坐標(biāo)構(gòu)成,文本模式下以空格做分隔符。
其中WIDTH用點(diǎn)的數(shù)量表示點(diǎn)云數(shù)據(jù)集的寬度。根據(jù)是有序點(diǎn)云還是無(wú)序點(diǎn)云,WIDTH有兩層解釋?zhuān)?/p>
- 它能確定無(wú)序數(shù)據(jù)集的點(diǎn)云中點(diǎn)的個(gè)數(shù)(和下面的POINTS一樣);
- 它能確定有序點(diǎn)云數(shù)據(jù)集的寬度(一行中點(diǎn)的數(shù)目)。
HEIGHT用點(diǎn)的數(shù)目表示點(diǎn)云數(shù)據(jù)集的高度。類(lèi)似于WIDTH,HEIGHT也有兩層解釋?zhuān)?/p>
- 它表示有序點(diǎn)云數(shù)據(jù)集的高度(行的總數(shù));
- 對(duì)于無(wú)序數(shù)據(jù)集它被設(shè)置成1(被用來(lái)檢查一個(gè)數(shù)據(jù)集是有序還是無(wú)序)。
無(wú)序點(diǎn)云是指通過(guò)3D掃描或其他方式獲取的點(diǎn)云數(shù)據(jù),其中點(diǎn)的順序沒(méi)有特定的結(jié)構(gòu)或排列規(guī)則。每個(gè)點(diǎn)具有特定的位置信息,但不一定按照任何特定的順序排列。無(wú)序點(diǎn)云的點(diǎn)之間沒(méi)有明確的連接關(guān)系,可以看作是隨機(jī)散布在空間中的點(diǎn)。有序點(diǎn)云是指點(diǎn)云數(shù)據(jù)按照特定的結(jié)構(gòu)或排列規(guī)則進(jìn)行有序排列的數(shù)據(jù)。例如,有序點(diǎn)云可以是通過(guò)三維傳感器按照網(wǎng)格或柵格的方式獲取的數(shù)據(jù),其拓?fù)浣Y(jié)構(gòu)比較明確。有序點(diǎn)云的點(diǎn)之間具有一定的連接關(guān)系,常用于表示網(wǎng)格模型或體素?cái)?shù)據(jù)。PCD 不是第一個(gè)支持3D點(diǎn)云數(shù)據(jù)的文件類(lèi)型,尤其是計(jì)算機(jī)圖形學(xué)和計(jì)算幾何學(xué)領(lǐng)域,已經(jīng)創(chuàng)建了很多格式來(lái)描述任意多邊形和激光掃描儀獲取的點(diǎn)云。常見(jiàn)的有下面幾種格式:
- PLY 是一種多邊形文件格式 , 由Stanford大學(xué)的Turk等人設(shè)計(jì)開(kāi)發(fā);
- STL 是3D Systems公司創(chuàng)建的模型文件格式,主要應(yīng)用于CAD、CAM領(lǐng)域;
- OBJ 是從幾何學(xué)上定義的文件格式,首先由Wavefront Technologies開(kāi)發(fā);
- X3D 是符合ISO標(biāo)準(zhǔn)的基于XML的文件格式,表示3D計(jì)算機(jī)圖形數(shù)據(jù);
- 其他。
以上所有格式都有其優(yōu)缺點(diǎn),因?yàn)樗麄兪窃诓煌瑫r(shí)期為了滿足不同的需求所創(chuàng)建的,那時(shí)很多當(dāng)今流行的傳感器和算法都還沒(méi)有發(fā)明。其中一部分點(diǎn)云儲(chǔ)存的格式可以在PCL中進(jìn)行輸入輸出的轉(zhuǎn)換。
-
光學(xué)
+關(guān)注
關(guān)注
3文章
751瀏覽量
36265 -
測(cè)量?jī)x器
+關(guān)注
關(guān)注
3文章
793瀏覽量
42185 -
激光光束
+關(guān)注
關(guān)注
0文章
15瀏覽量
6940
原文標(biāo)題:深度剖析三維數(shù)據(jù)基礎(chǔ)
文章出處:【微信號(hào):3D視覺(jué)工坊,微信公眾號(hào):3D視覺(jué)工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論