1 三維數據的采集方式
1.1 激光掃描儀
激光掃描儀(Lidar)是一種常用于采集三維數據的儀器,它使用激光光束進行測量和感知,通過發(fā)射激光束并測量其返回時間和強度來獲取目標物體的距離和形狀信息,并計算出每個掃描點的準確坐標。這些點的集合形成了三維點云數據。激光掃描儀可大面積、高分辨率、快速地獲取物體表面各個點的(x,y,z)坐標、反射率、(R.G.B)顏色等數據信息,可以快速復建出1:1彩色三維點云模型,用于后續(xù)的三維重建、建模和測量分析等應用。
1.2 深度相機
傳統(tǒng)的RGB彩色普通相機稱為2D相機,只能拍攝相機視角內的物體,沒有物體到相機的距離信息,只能憑感覺感知物體的遠近,沒有明確的數據。而RGB-D深度相機(又稱3D相機,其中D代表Depth為深度信息)可獲取物體到相機的距離信息,加之2D平面的X,Y坐標,可計算出每個點的三維坐標,進行三維重建、目標定位、識別等應用。
1.3 雙目相機
雙目相機,也稱為立體視覺相機或雙目立體視覺系統(tǒng),是一種通過兩個攝像頭同時拍攝來模擬人類雙眼視覺的相機系統(tǒng)。每個攝像頭都可以獨立地捕捉場景的圖像,然后通過計算機算法將這些圖像進行立體視覺匹配,從而得到場景深度信息。通過測量攝像頭對應像素上圖像的位移,結合攝像頭之間的已知基線長度,可以使用三角測量原理計算出場景中點的三維位置。這使得雙目相機在許多應用領域中非常有用,例如三維重建、立體視覺測距、物體識別和跟蹤等。
1.4 光學相機多視角重建
使用相機拍攝物體的多張照片,再通過相關三維重建軟件將照片配準定位,進行特征提取與匹配,隨后生成稀疏點云并進行稠密重建操作。SFM是指通過分析多個二維圖像之間的共同點和攝像機運動信息,推導出場景的三維結構。基本的假設是,同一場景的不同圖像是通過攝像機在空間中移動而產生的。SFM利用這些視角和對應點之間的幾何關系,通過三角定位、尺度恢復、攝像機運動估計等算法,將這些視角投射到一個共同的三維坐標系中。多視角重建這類軟件有Agisoft Photoscan、VisualSFM等。

**
2 三維數據的采集原理
2.1 三角測距
三角測距是一種常用的測量方法,基于三角形的相似性原理進行測量。其原理可以簡化為以下幾個步驟:
- 建立一個已知長度的基準線段:在測量前,建立一個已知長度的基準線段。
- 觀測目標物體和基準線段之間的角度:使用測量儀器,測量目標物體和基準線段之間的兩個角度。這可以通過對目標物體和基準線段分別放置測量儀器來實現(xiàn)。
- 計算距離:利用三角形的相似性原理,通過已知角度和基準線段長度,根據三角函數的關系,可以推導出目標物體到觀測點的距離。

2.2 TOF
TOF(Time of Flight)是一種基于光的測距技術,通過測量光信號從發(fā)射到接收所需的時間來確定物體到傳感器之間的距離。以下是TOF的工作步驟:
- 發(fā)射光脈沖:傳感器發(fā)射一個光脈沖,這個光脈沖會被物體反射或散射。
- 接收光信號:傳感器接收并記錄反射或散射的光信號。這個信號在光脈沖返回傳感器之后,經過一段時間才能被接收到。
- 測量時間差:通過測量光脈沖發(fā)射和接收之間的時間差,即發(fā)射光脈沖和接收到反射或散射光信號之間的時間間隔,確定物體到傳感器之間的距離。
- 計算距離:根據光在真空中的傳播速度(一般取光速),將測量得到的時間差轉換為距離。
TOF的優(yōu)點是測量精度高、測量范圍廣,可以應用于不同的環(huán)境和物體表面。它在工業(yè)、機器人、自動駕駛等領域被廣泛應用。

2.3 雙目視覺
雙目視覺是一種基于人類雙眼感知深度的視覺技術。它模擬了人類的雙眼視覺系統(tǒng),通過兩個相距一定距離的攝像頭來獲取兩個不同角度的圖像,并通過計算兩個圖像之間的視差(disparity)來推斷物體的距離和深度信息。以下是雙目視覺的工作步驟:
- 攝像頭安裝:兩個攝像頭以一定距離安裝在同一平面上,使得視野有一定的重疊區(qū)域。
- 圖像獲取:通過兩個攝像頭分別獲取兩個不同角度的圖像,類似于人的雙眼。
- 圖像校正:根據攝像頭的內外參數,對兩個圖像進行校正,以消除圖像畸變和對齊兩個攝像頭的視圖。
- 匹配特征點:在兩個校正后的圖像中,通過特征點提取算法(如SIFT、SURF等)找到兩個圖像中具有相似特征的點。
- 計算視差:對于找到的匹配特征點,計算它們在兩幅圖像中的水平位置差異,這個差異稱為視差。視差值越大,表示物體距離攝像頭越近;視差值越小,表示物體距離攝像頭越遠。
- 距離計算:通過已知的攝像頭參數、基線距離和三角測量原理,將視差轉換為物體的距離值。距離值隨著視差的增大而減小,反映物體與攝像頭的距離遠近。
雙目視覺在機器人導航、三維重建、物體識別和跟蹤等領域得到廣泛應用,能夠提供精確的深度信息,以增強對環(huán)境的感知能力。

2.4 結構光
結構光是一種常見的三維感知技術,其原理基于對物體表面投射結構光,并通過相機來捕捉和分析光的形狀和變化。以下是結構光測量的原理步驟:
- 投射結構光:在測量區(qū)域的一側,使用光源(通常是激光器或投影儀)發(fā)射結構化的光,例如光柵紋理、條紋或編碼圖案。
- 光的投射和形變:結構光經過測量區(qū)域后,會與物體表面的形狀和紋理相互作用。光在物體表面上會發(fā)生投影、反射和散射等變化。物體表面的形狀和紋理會導致結構光的形變。
- 形變捕捉:在測量區(qū)域的另一側,放置相機或傳感器來捕捉反射、散射或投影的結構光。相機記錄下物體表面的結構光形變和模式。
- 形變分析:通過分析相機捕捉到的結構光圖像,可以反推出物體表面的形狀和尺寸。這可以通過計算結構光的位移、形變或紋理變化進行實現(xiàn)。
- 三維重建:通過相機捕捉到的結構光圖像,以及對光源和相機之間的幾何關系,進行三維重建,將物體表面的形狀和紋理轉化為一個三維模型或點云數據。

3 點云基礎
3.1 點云概念
點云(Point Cloud)是三維空間中,表達目標空間分布和目標表面特性的點的集合,點云通常可以從深度相機中直接獲取,也可以從CAD等軟件中生成。點云是用于表示多維點集合的數據結構,通常用于表示三維數據。在3D點云中,這些點通常代表采樣表面的X,Y和Z幾何坐標。當存在顏色信息時,點云變?yōu)?D。

根據激光測量原理得到的點云,包含三維坐標信息(xyz)和激光反射強度信息(intensity)(激光反射強度與儀器的激光發(fā)射能量、波長,目標的表面材質、粗糙程度、入射角相關)。根據攝影測量原理得到的點云,包括三維坐標(xyz)和顏色信息(rgb)。結合兩個原理的多傳感器融合技術(多見于手持式三維掃描儀),能夠同時得到這三種信息。三維點云是真實物體表面的離散采樣,點云處理就是從點云中提取到我們需要的信息。
3.2 點云類型
為了涵蓋能想到的所有可能的情況,PCL中定義了大量的point類型,在point_types.hpp中有完整目錄。
- PointXYZ - Members: float x, y, z
最常用的數據類型之一,只表示3D xyz信息。用戶可以訪問點[i].data[0]或點[i].x
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
- PointXYZI - Members: float x, y, z, intensityXYZ+強度類型。由于大多數點操作會將data[4]數組的第四部分設置為0或1(用于轉換),因此不能將intensity設置為同一結構的成員,因為它的內容將被覆蓋。
union
{
floatdata[4];
struct
{
floatx;
floaty;
floatz;
};
};
union
{
struct
{
floatintensity;
};
floatdata_c[4];
};
- PointXYZRGBA - Members: float x, y, z; std::uint32_t rgba與PointXYZI類似,除了rgba包含打包成無符號32位整數的rgba信息外。由于聯(liá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;
};
- 其他類型| 點云類型 | 描述 || --- | --- || PointXYZRGB | float x, y, z; std::uint32_t rgba;與PointXYZRGBA相同 || PointXY | float x, y; 簡單的二維x-y點結構 || InterestPoint | float x, y, z, strength;與PointXYZI類似,除了強度包含關鍵點強度的度量 || Normal | float normal[3], curvature;最常用之一,表示給定點處的曲面法向,以及曲率的度量 || PointNormal | float x, y, z; float normal[3], curvature;保存XYZ數據、曲面法線和曲率的點結構 || PointXYZRGBNormal | float x, y, z, normal[3], curvature; std::uint32_t rgba;保存XYZ數據、RGBA顏色以及曲面法線和曲率的點結構 || PointXYZINormal | float x, y, z, intensity, normal[3], curvature;保存XYZ數據和強度值以及曲面法線和曲率的點結構 || PFHSignature125 | float pfh[125];包含給定點的PFH(點特征直方圖)的簡單點類型 || FPFHSignature33 | float fpfh[33];包含給定點的FPFH(快速點特征直方圖)的簡單點類型 || PointSurfel | float x, y, z, normal[3], rgba, radius, confidence, curvature;包含XYZ數據、曲面法線、RGB信息、比例、置信度和曲面曲率的復雜點類型 |
更多點云類型參見:點云類型(https://blog.csdn.net/tobebest_lah/article/details/106241406)
3.3 點云儲存格式
點云目前的主要存儲格式包括:PCD、pts、LAS等。其中PCD 存儲格式是 PCL 庫官方指定格式,PCD 格式具有文件頭,用于描繪點云的整體信息:定義數字的可讀頭、尺寸、點云的維數和數據類型;一種數據段,可以是 ASCII 碼或二進制碼。數據本體部分由點的笛卡爾坐標構成,文本模式下以空格做分隔符。

其中WIDTH用點的數量表示點云數據集的寬度。根據是有序點云還是無序點云,WIDTH有兩層解釋:
- 它能確定無序數據集的點云中點的個數(和下面的POINTS一樣);
- 它能確定有序點云數據集的寬度(一行中點的數目)。
HEIGHT用點的數目表示點云數據集的高度。類似于WIDTH,HEIGHT也有兩層解釋:
- 它表示有序點云數據集的高度(行的總數);
- 對于無序數據集它被設置成1(被用來檢查一個數據集是有序還是無序)。
無序點云是指通過3D掃描或其他方式獲取的點云數據,其中點的順序沒有特定的結構或排列規(guī)則。每個點具有特定的位置信息,但不一定按照任何特定的順序排列。無序點云的點之間沒有明確的連接關系,可以看作是隨機散布在空間中的點。有序點云是指點云數據按照特定的結構或排列規(guī)則進行有序排列的數據。例如,有序點云可以是通過三維傳感器按照網格或柵格的方式獲取的數據,其拓撲結構比較明確。有序點云的點之間具有一定的連接關系,常用于表示網格模型或體素數據。PCD 不是第一個支持3D點云數據的文件類型,尤其是計算機圖形學和計算幾何學領域,已經創(chuàng)建了很多格式來描述任意多邊形和激光掃描儀獲取的點云。常見的有下面幾種格式:
- PLY 是一種多邊形文件格式 , 由Stanford大學的Turk等人設計開發(fā);
- STL 是3D Systems公司創(chuàng)建的模型文件格式,主要應用于CAD、CAM領域;
- OBJ 是從幾何學上定義的文件格式,首先由Wavefront Technologies開發(fā);
- X3D 是符合ISO標準的基于XML的文件格式,表示3D計算機圖形數據;
- 其他。
以上所有格式都有其優(yōu)缺點,因為他們是在不同時期為了滿足不同的需求所創(chuàng)建的,那時很多當今流行的傳感器和算法都還沒有發(fā)明。其中一部分點云儲存的格式可以在PCL中進行輸入輸出的轉換。
-
光學
+關注
關注
4文章
867瀏覽量
38108 -
測量儀器
+關注
關注
3文章
903瀏覽量
46274 -
激光光束
+關注
關注
0文章
16瀏覽量
7162
原文標題:深度剖析三維數據基礎
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
三維曲線加速度
三維逆向工程的成果及應用案例
三維快速建模技術與三維掃描建模的應用
廣西掃描服務三維檢測三維掃描儀
三維設計應用案例
Handyscan三維掃描儀對戶外大型燈箱三維掃描解決方案
SMARTSCAN三維掃描儀電子產品配件三維掃描服務
三維可視化的應用和優(yōu)勢
如何實現(xiàn)三維數據的采集?
關于三維激光切割的簡單剖析
智慧城市_實景三維|物業(yè)樓三維掃描案例分享_泰來三維
深度剖析三維數據基礎
評論