1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        三維視覺之結(jié)構(gòu)光原理詳解

        共 3781字,需瀏覽 8分鐘

         ·

        2021-07-14 17:14

        點擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時間送達(dá)

        本文轉(zhuǎn)自:計算機(jī)視覺工坊


        關(guān)  于  線  掃  描  結(jié)  構(gòu)  光


        線掃描結(jié)構(gòu)光較之面陣結(jié)構(gòu)光較為簡單,精度也比較高,在工業(yè)中廣泛用于物體體積測量、三維成像等領(lǐng)域。
        • 數(shù)學(xué)基礎(chǔ)

        先來看一個簡單的二維下的情況:
        通過上圖可以看到線掃描結(jié)構(gòu)光裝置的一個基本結(jié)構(gòu)。主動光源L緩慢掃過待測物體,在此過程中,相機(jī)記錄對應(yīng)的掃描過程,最后,依據(jù)相機(jī)和光源在該過程中的相對位姿和相機(jī)內(nèi)參等參數(shù),就可以重建出待測物體的三維結(jié)構(gòu)。
        由上圖可知:
        可得
        其中,  為投影裝置的朝向。  則需要通過對應(yīng)像素的像素坐標(biāo)  和焦距f來確定。最終可知P點的三維坐標(biāo)為:
        將之推廣至三維空間中:
        由小孔成像模型有
        由三角測量原理又有
        兩式聯(lián)立則有
        最后可得
        可以看到,三維空間中的情形和之前的二維空間類似,作為俯仰角的  并沒有出現(xiàn)在公式中。
        • 應(yīng)用

        如上圖,相機(jī)與投影器等相對位姿都經(jīng)過了精確的校正,并且選取了測量臺上的一角作為原點建立物方坐標(biāo)系。因此,激光投影器所投射的線激光在物方坐標(biāo)系中可以通過一個平面方程來描述:
        而相機(jī)光心的位姿通過幾何校正也已知,可以通過找到線激光在圖像中的對應(yīng)像素重建出光心與像素的射線,射線和激光平面的交點即為待求的三維空間點。
        由小孔成像模型有
        代入平面方程中,可得
        關(guān)   于   面   陣   結(jié)   構(gòu)   光


        面陣結(jié)構(gòu)光大致可以分為兩類:隨機(jī)結(jié)構(gòu)光和編碼結(jié)構(gòu)光。隨機(jī)結(jié)構(gòu)光較為簡單,也更加常用。通過投影器向被測空間中投射亮度不均和隨機(jī)分布的點狀結(jié)構(gòu)光,通過雙目相機(jī)成像,所得的雙目影像經(jīng)過極線校正后再進(jìn)行雙目稠密匹配,即可重建出對應(yīng)的深度圖。如下圖為某種面陣的紅外結(jié)構(gòu)光。
        隨機(jī)結(jié)構(gòu)光這里就不再說了,因為和普通雙目算法是很相似的。一些額外的考慮就是是否給相機(jī)加裝濾光片、光斑的密度要到什么程度等硬件和光學(xué)的問題了。
        這里主要討論編碼結(jié)構(gòu)光。編碼結(jié)構(gòu)光可以分為兩類:
        1. 時序編碼;
        2. 空間編碼。


        • 時序編碼

        如上圖,時序編碼結(jié)構(gòu)光即為在一定時間范圍內(nèi),通過投影器向被測空間投射一系列明暗不同的結(jié)構(gòu)光,每次投影都通過相機(jī)進(jìn)行成像。假設(shè)共有n張影像,并設(shè)被陰影覆蓋的部分編碼值為1,未被覆蓋的部分編碼值為0。此時,每個像素都對應(yīng)唯一一個長度為n的二進(jìn)制編碼,雙目影像搜索匹配像素的問題就變成了查找具有相同編碼值的像素。如果雙目圖像已經(jīng)進(jìn)行了極線校正,那么所投影的結(jié)構(gòu)光只需要在x方向上不具有重復(fù)性即可。
        如上圖中,紅框內(nèi)的像素的編碼為0110,轉(zhuǎn)化為十進(jìn)制則為5。此時,只需要在右圖相同行上檢索編碼值為5的像素即可。
        上圖編碼方式稱為二進(jìn)制碼(binary code),每段區(qū)域不斷的進(jìn)行二分下去直至投影的編碼寬度等于相機(jī)的像素寬度即可。對于寬度為1024的圖像,最少需要10張影像來進(jìn)行編碼。
        Binary Code 的一種改進(jìn)為Gray Code. Gray Code比Binary Code具有更好的魯棒性,它使得相鄰兩個像素相差1bit。Gray Code的詳細(xì)介紹和其與Binary Code之間的轉(zhuǎn)換可以參考wikipedia。
        注意觀察即可看到gray code和binary code在前幾行像素上的不同
        轉(zhuǎn)換算法:
        自然,除了使用二進(jìn)制的0-1編碼之外,還可以使用更多顏色層級的編碼。假設(shè)使用了M種不同的灰度層級進(jìn)行編碼,則拍攝N張影像可以得到包含  個條帶的影響。如下圖中M = 3, N = 3時圖中有27條條帶。
        由以上的介紹也可以得出時序編碼結(jié)構(gòu)光的優(yōu)缺點:
        優(yōu)點:
        • 高精度;
        缺點:
        • 只適用于靜態(tài)場景;
        • 需要拍攝大量影像。

        • 空間編碼

        為滿足動態(tài)場景的需要,可以采用空間編碼結(jié)構(gòu)光。前面談到了隨機(jī)結(jié)構(gòu)光,就是不帶編碼信息,投影隨機(jī)紋理,而這里討論的空間編碼結(jié)構(gòu)光特指向被測空間中投影經(jīng)過數(shù)學(xué)編碼的、一定范圍內(nèi)的光斑不具備重復(fù)性的結(jié)構(gòu)光。由此,某個點的編碼值可以通過其臨域獲得。其中,包含一個完整的空間編碼的像素數(shù)量(窗口大?。┚蜎Q定了重建的精度。
        • 德布魯因序列 (De Bruijn) 序列

        德布魯因序列(維基百科)B(k, n) 表示用k個符號(如二進(jìn)制,k = 2)來表示長度為  的循環(huán)編碼,n為一個編碼值的長度。
        舉例:最簡單的,k = 2時,采用二進(jìn)制符號(0, 1),編碼值的長度n = 2,可以得到一個長度為 的循環(huán)序列:[0, 0, 1, 1]。此時,我們得到4個長度為2的不同的編碼:[0, 0], [0, 1], [1, 1], [1, 0].
        因此,某種結(jié)構(gòu)光就可以按照該德布魯因序列進(jìn)行編碼。而獲得的結(jié)構(gòu)光影像中,以上4個像素的編碼為[0, 0, 1, 1],通過一個大小為2的滑動窗口(假定一個結(jié)構(gòu)光光斑或光束的寬度是一個像素)即可獲取每個像素的編碼值。同樣地,如果是經(jīng)過極線校正的雙目圖像,只需要搜索對應(yīng)的行即可,此時只要求編碼在x軸上不具備重復(fù)性。此時的結(jié)構(gòu)光就是豎直條帶狀的。
        當(dāng)然,為了提高編碼效率,也可以使用灰度圖、彩色圖像等比0-1編碼具有更多可能編碼值的投影方式。例如,對于RGB影像,采用二進(jìn)制編碼(即某種顏色只有 有、無 兩種狀態(tài)),則共有 種顏色組合,去除(0, 0, 0),還剩下7種顏色。因此k = 7, n = 3,這樣就可以獲得一個長度為343的條帶序列。對于這個序列,唯一的約束為:相鄰的條帶不能為同樣的顏色。否則對于解碼算法來說很容易造成誤差。下圖展示了只使用5種顏色(k = 5, n = 3)的結(jié)構(gòu)光序列:
        • 二維空間編碼

        德布魯因序列是一種一維編碼,可以將之?dāng)U展到二維空間中,使得對于一個x * y大小的二維空間,其中一個w * h大小的子窗口所包含的編碼值在這整個二維編碼序列中只出現(xiàn)一次。


        如上面中的4 * 6的M-arrays序列中,每個2 * 2大小的窗口所包含的編碼值都是唯一的。
        同樣也可以利用RGB信息來進(jìn)行二維編碼,有相關(guān)算法來產(chǎn)生一些偽隨機(jī)二維編碼。如在下圖中,左邊展示了一個6 * 6大小的二維矩陣,子窗口的大小為3 * 3。算法首先在左上角的3 * 3子窗口中隨機(jī)填入各種顏色;然后一個3 * 1大小的滑動窗口移動到右端第一個空白處,并隨機(jī)填入3中顏色;在填入生成的隨機(jī)顏色前,算法會先驗證子窗口的編碼的唯一性能不能得到保證,若不能,則會重新生成3中隨機(jī)顏色;如此循環(huán),只是在豎直方向上滑動窗口的大小變?yōu)? * 3,直至將整個6 * 6矩陣填滿。右圖則是該算法產(chǎn)生的某種偽隨機(jī)二維編碼的示例。
        通過以上對空間編碼的討論,也可以看出空間編碼結(jié)構(gòu)光的一些優(yōu)缺點:
        優(yōu)點:
        • 無需多張照片,只需要一對影像即可進(jìn)行三維重建??梢詽M足實時處理,用在動態(tài)環(huán)境中。
        缺點
        • 易受噪聲干擾:由于反光、照明等原因可能導(dǎo)致成像時部分區(qū)域等編碼信息缺失;
        • 對于空間中的遮擋比較敏感;
        • 相較于時序編碼結(jié)構(gòu)光精度較低。
        以上是對各種常用的結(jié)構(gòu)光技術(shù)的一些介紹。其實,三維重建中最常用的還是隨機(jī)面陣結(jié)構(gòu)光。通過向空間中投影這樣的隨機(jī)結(jié)構(gòu)光,再結(jié)合雙目稠密重建,可以獲得比單純使用RGB影像進(jìn)行三維重建更加可靠和精確的結(jié)果。
        本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。

        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機(jī)視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~



        瀏覽 68
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欲香欲色天天综合和网 | 青青草视频播放 | 91在线无码精品秘 国产血腥 | 国产91在线播放 | 免费看黄色视屏 | vvvv88国产精品 | 双性受胸罩大有奶水bl1v1 | 欧美午夜精品一区 | 亚洲综合在线精品 | 伊人大香蕉婷婷 |