點雲壓縮的opencl實現

2021-10-09 04:29:04 字數 2632 閱讀 4073

2. 解碼

3. opencl演算法

4. 演算法實現

5. 參考文獻

點雲壓縮的八叉樹演算法

通過迴圈遞迴的方法對大小2n×

2n×2

n2^n\times 2^n \times 2^n

2n×2n×

2n的八叉樹空間8等分劃分,最多剖分n

nn次。

在完成逐層劃分之後,對資料編碼,編碼方式為:假設點雲座標p(x

,y,z

)p(x,y,z)

p(x,y,

z)和樹中節點(a,

b,c)

(a,b,c)

(a,b,c

)相對應且樹中任乙個節點都與乙個最小包圍盒cub

emin

cube_

cubemi

n​一一對應 oct

:(a,

b,c)

↔cub

emin

(1)oct:(a,b,c)\leftrightarrow cube_ \tag

oct:(a

,b,c

)↔cu

bemi

n​(1

) 乙個座標點對應乙個oct節點,而乙個oct節點可能對應多個座標點。利用該特性可以刪除多餘的點。

節點編碼為m=m

n−1⋯

m2m1

m0

m=m_\cdots m_2m_1m_0

m=mn−1

​⋯m2

​m1​

m0​為節點在n

nn層的節點序號。

首先利用空間座標計算出節點索引值:

a=int\left( \frac}\right)\\ b=int\left( \frac}\right)\\ c=int\left( \frac}\right) \tag\end

⎩⎪⎪⎪⎨⎪

⎪⎪⎧​

a=in

t(λx

​x−x

min​

​)b=

int(

λy​y

−ymi

n​​)

c=in

t(λz

​z−z

min​

​)​(

2)使用無符號整數表示a,b

,c

a,b,c

a,b,

c a=a_a_\cdots a_0\\ b=b_b_\cdots b_0\\ c=c_c_\cdots c_0 \tag\end

⎩⎪⎨⎪⎧​

a=an

−1​a

n−2​

⋯a0​

b=bn

−1​b

n−2​

⋯b0​

c=cn

−1​c

n−2​

⋯c0​

​(3)

節點序號m

im_i

mi​和ai,

bi,c

ia_i,b_i,c_i

ai​,bi

​,ci

​之間的關係可以表示為:

m i=

ai+b

i⋅2+

ci⋅4

(4)m_i=a_i+b_i\cdot 2+c_i \cdot 4 \tag

mi​=ai

​+bi

​⋅2+

ci​⋅

4(4)

若知道八叉樹某一節點序號m

im_i

mi​,利用m

im_i

mi​和ai,

bi,c

ia_i,b_i,c_i

ai​,bi

​,ci

​之間的關係得出:

a i=

(mim

od2)

,bi=

[(mi

/2)m

od2]

,ci=

[(mi

/4)m

od2]

(5)ai=(m_i\ mod\ 2),b_i=[(m_i/2)\ mod\ 2],c_i=[(m_i/4)\ mod\ 2] \tag

ai=(mi

​mod

2),b

i​=[

(mi​

/2)m

od2]

,ci​

=[(m

i​/4

)mod

2](5

) 由(2)進行量化,去除重複座標,然後直接編碼為:

m =c

n−1b

n−1a

n−1⋯

c0b0

a0

(6)m=c_b_a_\cdots c_0b_0a_0 \tag

m=cn−1

​bn−

1​an

−1​⋯

c0​b

0​a0

​(6)

量化是按座標點迴圈

整數排序→

\rightarrow

→去除重複點

[1] 三維點雲資料精簡與壓縮的研究_唐林

[2] massively parallel kd-tree construction and nearest neighbor search algorithms

octomap點雲壓縮

如果點雲檔案比較大,可以利用octomap庫對點雲進行壓縮。octomap以八叉樹結構對點雲進行組織,是一種有失真壓縮,定義不同的解析度可以儲存不同尺度的資料。這裡以rabbit.pcd檔案為例,分別將點雲儲存為文字格式 txt 二進位制格式 bin 八叉樹格式 ot 八叉樹二進位制模式 bt 對比...

點雲 PCL點雲濾波與實現

目錄 直通濾波器 passthrough 條件濾波 conditional removal 球半徑濾波器 radiusoutlinerremoval 4 統計濾波器 statisticaloutlierremoval 5 體素降取樣 voxelgrid 均勻取樣 uniform sampling i...

PCL 八叉樹的應用 點雲壓縮

點雲由龐大的資料集組成,這些資料集通過距離 顏色 法線 等附加資訊來描述空間的三維點。此外,點雲還能以非常高的速率被建立出來,因此需要占用相當大的儲存資源,一旦點雲需要儲存或者通過速率受限制的通訊通道進行傳輸,提供針對這種資料的壓縮方法就變得十分有用。pcl 提供了點雲的壓縮功能,它允許編碼壓縮所有...