基於結構光投影三維重建:格雷碼編碼與解碼


一 單目結構光編碼目的

類似於雙目,如果把投影儀看成一個逆相機,直到空間中的一點成像平面的位置,就可以知道空間中一點的坐標。

雙目結構光原理圖

編碼的目的:知道打在物體物體表面的光是從投影儀的那個像素發出來的,就知道在投影儀的虛擬成像位置。

二 格雷碼的編碼與解碼

2.1 格雷碼vs二進制碼

格雷碼與二進制碼區別

格雷碼是一種二進制碼,最大的特點是相鄰格雷碼編碼只有一位不同。

所以格雷碼解碼更穩定,相對不容易出錯。

體現在

  • 明暗交接處變換更少:

對於格雷碼來說,明暗交接處變換更少,如圖所示二進制下部有7次變換,而格雷碼只有4次。黑白交接的影響主要是在解碼上,解碼很重要的環節就是二值化,一般情況下全黑和全亮是不容易出錯的,因為在實際應用中投影交界處是漸變的,閾值很難確定(還有物體邊緣的影響)。

  • 最細的條紋寬度更寬

在相機對焦外,可能投影會糊掉,所以條紋越寬越不容易糊掉。

二進制編碼與格雷碼編碼不同

2.2 編解格雷碼

如果單純的編制一張圖片的話很簡單,如上一節圖所示,最低一行(最后一位)變化為0110周期,第二行為0011100周期,第三行為0000111111110000周期(2的指數級增長)。

二進制碼->格雷碼

1.對n位二進制的碼字,從右到左,以0到 n-1編號

2.如果二進制碼字的第i位和i+1位相同,則對應的格雷碼的第i位為0,否則為1

格雷碼->二進制碼

從左邊第二位起,將每位與左邊一位解碼后的值異或,作為該位解碼后的值(最左邊一位依然不變)。依次異或,直到最低位。依次異或轉換后的值就是格雷碼轉換 后的二進制值。

格雷碼轉二進制碼示范

以十進制數6為例,格雷碼->二進制碼

第一位不變: 1

第二位(0)與第一位解碼后的值(1)異或:1

第三位(1)與第二位解碼后的值(1)異或:0

三 圖片二值化方法

原圖、灰度圖與二值化圖

前提條件:每個在投影儀照射范圍的點都至少需要經歷一次明暗變換,即總要能找到一張圖該位置為 0,另一張圖該位置是1

實現方法

方法一: 增加兩張圖, 一張全黑圖,一張全亮圖

方法二: 去除全0和全1的編碼 ,讓每個編碼至少含有一個0和一個1(不建議,可能會破壞格雷碼穩定性)

二值化方法

二值化公式

對於每個像素,計算其在整個時間序列(一組)下的最大值和最小值,然后對當前圖片像素二值化就 是計算出一個如上式所示的閾值,閾值大於0.5的時候則為1,小於0.5則為0。

四 其他離散型編碼

在某些場景下,由於物體材質的原因,格雷碼效果不好;物體受到全局光照影響特別大;

Global illumination 全局光照:

1 inter-reflection 內反射 -- long range effect

2 diffusion 漫反射 – long range effect

3 sub-surface scatter 下表面散射 – short range effect

全局光的影響

全局光照對解碼影響:解碼錯誤

解決思路

不同的全局光,對不同頻率的編碼光影響不同。

1 高頻光適合 (long range effect): 內反射, 漫反射

格雷碼

有可能第一行右邊亮的地方點亮左邊暗的地方,所以需要更密集的投射如下:

XOR-04

2 低頻光適合 (short range effect): 下表面反射(影響臨近的點)

低頻光因為影響臨近,所以最好是越低頻越好,如下:

min-SW

其實相對來說格雷碼最穩定,而上面這種方法會生成過多的圖片,會對點雲幀率有所影響。

方法對比

參考論文: Structured Light 3D Scanning in the Presence of Global Illumination

五 總結

格雷碼編解碼流程:

格雷碼編解碼流程

特殊應用場景:

特殊應用場景



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM