多維度結構光線圖案應用在三維介面掃描 Multi-Dimension Structural Light Patterns for 3D Surface Scanning 指導教授:鄭文凱 學生:葉宇欽
Outline Introduction 三維掃描系統模型之架構與原理 文獻中現有編碼法 針對現有編碼缺點提出改善 結論
Introduction 三維掃描系統使用在各個領域當中,像是模具業、製造業、醫學、 工程建設、遊戲等,皆可見其蹤跡 三維掃描分類:接觸式(contact)、 非接觸式(non-contact) 非接觸式:被動式、主動式 本論文使用種類:非接觸、主動式中的 time-multiplexing Time-multiplexing:由投影機在一段的連續時間裡投影幾張編碼圖案 至物體上進行拍攝 研究重點:使用現有Gray code的編碼特性,改良研發新的code
系統架構與實驗流程 實際拍攝狀況 電腦:控制整體流程 投影機:將編碼圖投射在被攝物的表面上 兩部CCD數位攝影機:記錄物體影像變化 (解析度:640x482) 影像擷取卡:用以將影像數位化 將拍回來的圖做解碼 計算物體上每個pixel的相對位置 建立三維空間座標 實驗數據分析 實際拍攝狀況
同軸幾何概圖 三維座標重建必須引用的幾何關係 X:物體上一點 (O,O’):左右攝影機的光學中心 (x,x’):X在影像平面的成像位置 (X,O,O’)連成同軸面(Epipolar plane) 同軸面與影像平面交線:同軸線(Epipolar line) 用同軸線找對應點 三角量測計算,建立三維座標
影像強度區間 灰階影像強度區間:0~255 (實驗取:30~225) 編碼:level數 (0、1、2….) 拍攝:內插到灰階影像強度區間 內插到灰階區間 (30、95、160、225) 0 0 0 0 0 1 1 1 0 0 2 2 3 3 2 0 1 1 1 1 30 30 30 30 30 95 95 95 30 30 160 160 225 225 160 30 95 95 95 95
光圈亮度 第幾張 影像強度 1 0 2 17 3 34 4 51 5 68 6 85 7 102 8 119 9 136 10 153 11 170 12 187 13 204 14 221 15 238 16 255
實驗數據好壞評斷:RANSAC 拍攝白色平面 RANSAC 的計算流程如下: 在資料中任取三點,由三個點可以決定一個平面 計算有多少點認同此平面,也就設定一個threshold,小於此threshold的點算是認同此平面 重複上述步驟n次,並記錄這n次最多點所認同的平面 最後計算出所有點到此平面的標準差值 (standard deviation) 標準差值(RANSAC)越小,表示重建效果越好,這組編碼也就越好
Gray code 2-level、九維空間編碼 相鄰的codewords僅相差一個bit、一個level 1 Gray code 9D 2levels 的部分編碼
-------------------------------- 總和 511 511 列數 頻率 變化量 1 1 1 2 2 2 3 4 4 4 8 8 5 16 16 6 32 32 7 64 64 8 128 128 9 256 256 -------------------------------- 總和 511 511 Gray code 編碼完成圖 Gray code 拍攝用圖
Gray code Quantization 投影編碼圖案(0=黑色,1=白色)以及灰階圖(全暗全亮) 每個pixel:接收11個bit (前9bit編碼圖組成一組codeword+後2bit灰階圖) 門檻值:T=(全暗+全亮)/2 bit量化:影像強度>T, bit=1;影像強度<T, bit=0 判斷屬於512個codewords中的哪個
Hilbert curve 8-level、三維空間編碼 符合Gray code 特性 Bit變換頻率分散各列 Hilbert curve 2D 編碼曲線 4 3 6 5 2 1 Hilbert curve 3D 8levels 的部分編碼 Hilbert curve 3D 編碼曲線
Hilbert curve 3D 編碼完成圖 ( 顏色表示level ) Hilbert curve 3D 拍攝用圖
S curve 符合Gray code 特性 可以做任意維度編碼 與Gray code一樣bit變換頻率集中在同一列 8-level、三維空間編碼 3 4 6 5 2 1 7 S curve 3D 8levels 的部分編碼 S curve 編碼曲線
S curve 3D 編碼完成圖
Bit變換頻率問題 兩者編碼差異:Hilbert curve的bit變換頻率分散 S curve的bit變換頻率集中在同一列上 White Plane(DLP)30~225 RANSAC STD 點 數 使用拍攝張數 Hilbert (8-level、3D) 0.9511 68937 11 S curve (8-level、3D) 5.4872 55260 Hilbert curve 3D 編碼完成圖 (顏色表示level) S curve 3D 編碼完成圖 (顏色表示level)
不同bit變換頻率之影像強度關係
bit變換頻率分散編碼法 影像強度搭配方式: Level (03) Code1024_10v10v03 (2-level,10張)
Quaternarycode (4-level,9張) bit變換頻率分散編碼法 運用4-level互相搭配方式完成編碼,且符合Gray code特性 搭配方式: Level (32) Level (21) Level (10) Quaternarycode (4-level,9張)
實驗數據之分析 Quaternarycode編碼優點: 拍攝張數與Gray code一樣,效果比較好 Level搭配有區塊化現象,即使解碼誤判也不容易誤判到別的區塊 使用4-Level互相搭配的影像強度差比用2-Level搭配的影像強度差還小 White Plane 30~225 RANSAC STD 點 數 拍攝張數 Graycode 2-level,9張 0.9104 72619 11 Code1024_10v10v03 2-level,10張 0.8444 70970 12 Quaternarycode 4-level,9張 0.7374 80210 13
bit變換頻率分散編碼法 運用8-level互相搭配方式完成編碼,且符合Gray code特性 Octalcode (8-level,9張) 76 65 54 43 32 21 10 Octalcode (8-level,9張)
實驗數據之分析 Octalcode編碼: 拍攝張數與Gray code一樣,但效果差 Level搭配雖然也有區塊化現象,但由於level數過多,所以容錯 能力下降,導致解碼時容易誤判過多 White Plane 30~225 RANSAC STD 點 數 拍攝張數 Graycode 2-level,9張 0.9140 73049 11 Code1024_10v10v03 2-level,10張 0.8244 70697 12 Quaternarycode 4-level,9張 0.7805 80644 13 Octalcode 8-level,9張 1.6505 77531 17
容錯能力
結論 遵守Gray code 特性,也就是說相鄰的codewords每次要變動,都只能變動1bit、1level 影像強度差距越大,環境光源問題影響越大