一文詳解深度相機(jī)之TOF成像
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
文章導(dǎo)讀
本文通過介紹TOF相機(jī)的成像過程,帶大家了解TOF相機(jī)中脈沖法和連續(xù)波調(diào)制這兩種技術(shù)原理,并詳細(xì)的分析每種方法的實(shí)現(xiàn)細(xì)節(jié)和各自優(yōu)缺點(diǎn),對(duì)連續(xù)波調(diào)制方法深入其相位差原理,單頻相位測(cè)距的限制及如何解決模糊距離等問題。
0
前情回顧
小編過了一個(gè)咸魚般的五一,躺尸在家被五大過程組,十大知識(shí)體系折磨個(gè)半死,做題全憑感覺。
記得放假前一天和朋友吃飯,被問到TOF的原理是什么?小編弱弱的回答發(fā)射脈沖波打到物體返回后統(tǒng)計(jì)光的運(yùn)行時(shí)間從而計(jì)算距離。被大佬用質(zhì)疑的眼神瞄了一下,然后啪嗒啪嗒給我解釋了一番連續(xù)調(diào)制波的原理。
小編總感覺哪里有些問題,做了這么久激光雷達(dá)感知算法,那些Velodyne-16,Horizon確實(shí)是基于脈沖波的技術(shù)原理呀,不過再往下問具體傳感器內(nèi)部是怎么工作的,小編也是一知半解。
下面我們來好好補(bǔ)一補(bǔ)有關(guān)TOF相機(jī)的基本知識(shí),劇透一下原來TOF相機(jī)既可以基于脈沖波的光學(xué)快門方法又可以基于連續(xù)調(diào)制波的方法。
1
什么是TOF相機(jī)
在雙目成像的文章中,我們說過雙目相機(jī)是一種被動(dòng)接收自然光的傳感器,通過接收自然光利用三角測(cè)距的方式描述三維環(huán)境。本文的TOF相機(jī)則是一種主動(dòng)發(fā)射紅外光的傳感器,通過發(fā)射光脈沖并接收打到物體反射回來的脈沖信號(hào),最后計(jì)算光脈沖的飛行時(shí)間得到目標(biāo)物體的距離。
說到這里我們可能第一反應(yīng)是這不就是激光雷達(dá)的工作原理嘛!確實(shí)很相似,但是機(jī)械式或混合固態(tài)激光雷達(dá)采用逐點(diǎn)掃描的方式感知環(huán)境信息,而TOF相機(jī)以面陣的方式得到深度圖。
小編最早接觸的TOF相機(jī)就是微軟的Kinect 2.0。Kinect系列很有意思,第一代基于結(jié)構(gòu)光原理做的深度相機(jī),第二代基于TOF原理做的深度相機(jī),當(dāng)時(shí)小編以為第三代是不是要用雙目原理做深度相機(jī)了,誓把深度成像的技術(shù)都玩?zhèn)€遍的時(shí)候它停產(chǎn)了。如下圖所示:上面是Kinect 1.0,下面是Kinect 2.0(長(zhǎng)得太丑)
TOF相機(jī)輸出的深度圖在2D空間表示為灰度圖像,每個(gè)像素點(diǎn)對(duì)應(yīng)一個(gè)距離值,其中強(qiáng)度越亮表示距離越近,如果光源被吸收或者未收到反射信號(hào)則呈現(xiàn)黑色。如下圖所示:
在深度圖的基礎(chǔ)上,配合相機(jī)的外參數(shù)據(jù)可以轉(zhuǎn)換三維點(diǎn)云。假如你又同時(shí)有一顆RGB相機(jī),能夠?qū)⑽矬w表面紋理映射到點(diǎn)云體素上,那么一張栩栩如生的三維渲染模型就出來了,如下如所示:
2
TOF相機(jī)的技術(shù)原理
發(fā)射模塊和接收模塊是TOF相機(jī)的核心部分,通過內(nèi)部的數(shù)據(jù)處理計(jì)算出深度信息。至于采用什么技術(shù)計(jì)算深度信息,我們提到了兩種方法:
基于脈沖法原理簡(jiǎn)單:類似于我們有一個(gè)計(jì)時(shí)器,按下開始鍵發(fā)射一束脈沖波出去,當(dāng)遇到障礙物后返回,當(dāng)被接收器收到后按下停止鍵。根據(jù)計(jì)時(shí)器記錄的時(shí)間和光的速度可以計(jì)算出相機(jī)到物體的距離。
公式如:Distance = 1/2 × c × Δt
其中c表示光在空氣中傳播的速度,Δt表示脈沖信號(hào)從相機(jī)到目標(biāo)往返的時(shí)間。
通過一個(gè)高頻率的時(shí)鐘驅(qū)動(dòng)計(jì)數(shù)器對(duì)收發(fā)脈沖之間的時(shí)間進(jìn)行計(jì)數(shù),使得計(jì)數(shù)時(shí)鐘的周期必須遠(yuǎn)小于發(fā)送脈沖和接收脈沖之間的時(shí)間才能夠保證足夠的精度。但是如果要達(dá)到毫米級(jí)別的測(cè)量,對(duì)控制時(shí)鐘,發(fā)射單元等電子元器件的精度都是一項(xiàng)挑戰(zhàn)。這就是為什么無人駕駛中應(yīng)用的激光雷達(dá)傳感器常基于脈沖法,因?yàn)樵摲椒ū容^適合中遠(yuǎn)距離的測(cè)量。
但是在機(jī)器人等應(yīng)用中使用的TOF相機(jī)大多采用的是連續(xù)波調(diào)制的方法:使用調(diào)制光照射場(chǎng)景, 并測(cè)量通過場(chǎng)景中的物體反射后返回光的相位延遲。得到相位延遲后, 再使用正交采樣技術(shù)測(cè)量間接得到距離。
公式如:Distance = 1/2 × c × ? × T/2π
其中c表示光在空氣中傳播的速度,T表示調(diào)制周期,?表示發(fā)射和接收波形的相位差。
該方法比較適合中短距離的測(cè)量,精度往往可以達(dá)到毫米級(jí)。
通過對(duì)比上述兩種方法的基本原理,我們不難發(fā)現(xiàn):
脈沖法測(cè)量方式簡(jiǎn)單,占空比窄檢測(cè)距離遠(yuǎn);但是它易受環(huán)境光和元器件精度影響,測(cè)量精度相對(duì)較低。
相位差可以消除測(cè)量器件帶來的固定偏差但是采樣次數(shù)多,導(dǎo)致測(cè)量耗時(shí)幀率低。
3
如何將相位偏移轉(zhuǎn)換成距離?
仔細(xì)看兩種方法的距離求解公式,其實(shí)很相似,最終都是距離 = 速度 × 時(shí)間。唯一區(qū)別在于時(shí)間是怎么得到的?
脈沖法求時(shí)間比較直接,這里沒有什么好解釋的,就是到達(dá)時(shí)間-發(fā)射時(shí)間即可。
相位差也是可以轉(zhuǎn)換成時(shí)間的,通常某一定頻率 f 的相位差時(shí)間 = 相位差的度數(shù) / 2πf 。這里就有小伙伴會(huì)問相位差的度數(shù)是怎么求的?
在連續(xù)波調(diào)制過程中通常將連續(xù)波近似為正弦波劃分成4個(gè)窗口進(jìn)行采樣,并且采樣時(shí)間間隔相同。如下圖所示:
推導(dǎo)過程就不貼了,最終的結(jié)果為:
? = arctan((Q3-Q4) / (Q1-Q2))
相位差求取中的(Q3-Q4)和(Q1-Q2)相對(duì)于脈沖調(diào)試法消除了由于測(cè)量器件或者環(huán)境光引起的固定偏差。并且方程中求商的過程減少了來自距離測(cè)量的恒定增益影響,比如系統(tǒng)放大和衰減或者反射響度等問題。
4
重復(fù)周期下的相移如何計(jì)算距離?
在信號(hào)與系統(tǒng)中提到過相位與延時(shí)的關(guān)系,其中2π為一個(gè)符號(hào)周期時(shí)間,如果采用相位差法測(cè)距,怎么判斷目標(biāo)位于第幾個(gè)周期呢?
事實(shí)上采用單一頻率進(jìn)行相位測(cè)距,確實(shí)無法分辨超過一個(gè)周期的距離值。簡(jiǎn)單粗暴一點(diǎn)的做法就是根據(jù)最大測(cè)量距離來調(diào)節(jié)頻率,不過頻率越高意味著距離分辨率越低,從而測(cè)量精度越低。所以在單一頻率下會(huì)出現(xiàn)距離和精度無法同時(shí)滿足的情況。
為解決單頻造成的模糊距離問題,可以采用多頻率技術(shù)來延長(zhǎng)測(cè)量距離同時(shí)不降低調(diào)制頻率。多頻率技術(shù)的工作原理就是將一個(gè)或多個(gè)調(diào)制頻率添加到混合。每個(gè)調(diào)制頻率將有不同的模糊距離,但真正的位置是在不同的頻率一致。當(dāng)兩個(gè)調(diào)制一致的頻率,稱為拍頻,通常是較低的,并對(duì)應(yīng)一個(gè)更長(zhǎng)的模糊距離。如下圖所示:

此解釋來源于2014年的一篇文章:Time-of-Flight Camera – An Introduction
有興趣的小伙伴可以私我要文章(還有一篇更詳細(xì)的原理解釋:TOF Camera Principles Methods and Applications)
5
TOF相機(jī)的特性對(duì)比
市場(chǎng)上比較常見的視覺傳感器包括單目相機(jī)、雙目相機(jī)、結(jié)構(gòu)光相機(jī)、全景相機(jī)、紅外相機(jī)、TOF相機(jī)等。通常在談到深度相機(jī)時(shí)會(huì)把TOF和結(jié)構(gòu)光、雙目這三種技術(shù)拿出來進(jìn)行對(duì)比。
TOF技術(shù)相比結(jié)構(gòu)光實(shí)現(xiàn)難度較低,發(fā)射信號(hào)遇到目標(biāo)返回即可,不像結(jié)構(gòu)光需要先打出激光散斑編碼,然后再去提取編碼特征。而且TOF受環(huán)境影響較小,不存在結(jié)構(gòu)光激光散斑在戶外會(huì)被淹沒的問題,具有較好的抗干擾能力。但是TOF相機(jī)的分辨率低,所以通常只適用于一些近距離的避障導(dǎo)航功能。
TOF技術(shù)相比雙目成像技術(shù),因?yàn)槠渲鲃?dòng)發(fā)射光源,輸出的深度數(shù)據(jù)是通過解相位計(jì)算得到,所以很大程度上不受陰影的影響,在昏暗場(chǎng)景依然有良好的效果。而且TOF生成深度圖沒有復(fù)雜的特征配準(zhǔn)、三角測(cè)量等算法加持,所以不依賴特征匹配的好壞,也就不受物體表面紋理,環(huán)境光照射角度等影響。在生成深度圖的實(shí)時(shí)性上自然優(yōu)于雙目經(jīng)過一大堆復(fù)雜計(jì)算的成像過程。
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。
下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。
下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~
