最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

系列篇|三維重建之純格雷碼三維重建

2020-12-01 21:47 作者:3D視覺工坊  | 我要投稿

來源:公眾號|3D視覺工坊(系投稿)

作者:書涵

「3D視覺工坊」技術(shù)交流群已經(jīng)成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學(xué)習(xí)、SLAM、三維重建、點云后處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫(yī)療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產(chǎn)品落地、視覺競賽、車牌識別、硬件選型、學(xué)術(shù)交流、求職交流、ORB-SLAM系列源碼交流、深度估計等。工坊致力于干貨輸出,不做搬運工,為計算機視覺領(lǐng)域貢獻自己的力量!歡迎大家一起交流成長~

添加小助手微信:CV_LAB,備注學(xué)校/公司+姓名+研究方向,即可加入工坊一起學(xué)習(xí)進步。

對于新手來說,使用格雷碼做單目結(jié)構(gòu)光三維重建是一個入門級的訓(xùn)練。但是在復(fù)現(xiàn)時往往會遇到一個問題,明明解碼都很不錯了,重建后的點云精度卻很低,甚至重建出來的平面點云出現(xiàn)斷層現(xiàn)象。這是由于格雷碼是一種離散型編碼,編碼精度是整數(shù)級的像素,這種編碼設(shè)計注定了它的精度不會太高。所以在實際應(yīng)用中,格雷碼通常是配合著其他編碼方式一起使用:比如使用格雷碼來標示相移的周期數(shù)。

盡管如此,由于格雷碼本身的特性,穩(wěn)定性高,抗反光效果比較好,在精度需求不是特別高的情況下,還是有適用場景的。尤其是景深范圍大的時候,相位很容易出現(xiàn)模糊,可是對于黑白條紋的格雷碼適應(yīng)的景深就能夠大一些。本文就簡單介紹下如何使用純格雷碼進行三維重建,并得到一個精度尚可的點云(至少不出現(xiàn)重建平面時明顯斷層/分層現(xiàn)象)。

從解決問題的本身出發(fā),想要得到一個精度比較不錯的點云,最直觀的思路是解碼時得到一個準確的亞像素級精度,比如像相移那樣,但是對于格雷碼而言,很難去給出一個很好的插值函數(shù)去獲得一個亞像素級的匹配,實際上,如果以圖片某一行為例,你得到的解碼結(jié)果可能是 16,16,17,17,18,18,18,NaN,NaN,21… 對于這樣排列的解碼結(jié)果,想要用一個函數(shù)去定義亞像素的插值函數(shù)是一件很困難的事情,筆者暫時沒有看到哪篇文章提供了好的思路。(如果有讀者知道,歡迎和筆者溝通)。


在無法獲得準確的亞像素級的解碼精度后,我們可以從三維重建方式本身去考慮,如上圖所示。圖中是一幅經(jīng)典的雙目重建模型,在之前的系列篇中我們介紹了單目結(jié)構(gòu)光重建可以使用雙目模型,只需要把投影儀看成一個逆相機就可以。圖中紅線即極線,也就是說,理論上相機成像點PL(圖中l(wèi)eft camera) 對應(yīng)的可能的投影儀(圖中Right Camra)中的位置是圖中紅線,如果知道對應(yīng)的是圖中紅線哪一點,就可以解得準確的三維位置。

實際上,由于我們能夠解得的編碼只能是整數(shù)級的,導(dǎo)致我們的解碼結(jié)果會像如下圖所示的函數(shù)圖一樣,橙色的線是理論的極線,但是由于解碼的離散性,我們得到的解碼坐標是個整數(shù)級的數(shù),如圖中的階躍函數(shù),于是誤差就這么產(chǎn)生了。


我們解得的點,通常會對應(yīng)極線的或上方一點或下方一點,導(dǎo)致該點與投影儀中心點連線與相機像點和相機中心點發(fā)出的射線在三維空間不相交。如果相交,交點就是物體的在空間中的實際三維位置。盡管由于解碼的離散性導(dǎo)致兩條直線不相交,但是兩條這空間直線間的距離不會很遠,所以可以用如下思路去估計實際的物體三維位置:

求這兩條空間直線中距離最近的兩個點,而這兩個點的中點就是我們估計的物體三維位置點。

這兩個點怎么求呢?

在數(shù)學(xué)上很簡單,我們高中都學(xué)過如何求三維空間中兩條直線的距離,那條和兩條直線都垂直且相交的線與兩條直線的交點就是我們要求得的兩條直線在空間中距離最近的兩個點了!

至此,我們就很好的估計了一個比直接用解碼結(jié)果按公式求得的更準確的三維重建點了,但是細心的朋友一定發(fā)現(xiàn)了,在一般形式的結(jié)構(gòu)光三維重建中,我們僅僅需要用到列方向的條紋,(為什么僅需要一個列方向,可以看系列篇之三維重建原理),但是在上述求射線的過程中,我們需要知道像點對應(yīng)的投影儀位置的行和列兩個信息,如果僅有一個列方向的值,列所在的直線和原點就構(gòu)成一個面了!那像點和相機中心連線的射線一定會和這個面有交點,且這個交點即是我們用傳統(tǒng)的解法得到的解,這個解通常由于列值(格雷碼)解碼值精度不夠而不夠精確。

純格雷碼的三維重建并不算很常見,如果一定要用,不防試下上述方法,可以保證一定精度,當然還是沒有相移法來的準確。還有一個顯然的缺點就是投影的圖片較多,需要行列方向都投影格雷碼,投影圖片數(shù)量太多會損失時間的效率,但是作為一個新手入門demo,還是很不錯的選擇!

最后,也歡迎大家一起在「3D視覺從入門到精通」知識星球里多多交流,我們相互學(xué)習(xí),一起進步~

推薦閱讀:

系列篇|結(jié)構(gòu)光——格雷碼編解碼方法

系列篇|單目結(jié)構(gòu)光三維成像系統(tǒng)的標定方法

系列篇|結(jié)構(gòu)光三維重建基本原理

系列篇|結(jié)構(gòu)光三維重建——相移法基本原理

系列篇|一文詳解相移步長的選擇問題

綜述|線結(jié)構(gòu)光中心提取算法研究發(fā)展

直播回顧|結(jié)構(gòu)光編碼與三維重建技術(shù)

關(guān)于結(jié)構(gòu)光問題的總結(jié)

結(jié)構(gòu)光三維重建原理

直播回顧|結(jié)構(gòu)光3D相機光機核心技術(shù)及3D成像性能分析

本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。


系列篇|三維重建之純格雷碼三維重建的評論 (共 條)

分享到微博請遵守國家法律
万源市| 宁河县| 靖江市| 乐至县| 濮阳市| 筠连县| 宝应县| 钟山县| 土默特左旗| 哈巴河县| 安泽县| 广西| 兴仁县| 措美县| 临桂县| 银川市| 随州市| 大名县| 水城县| 兴仁县| 大悟县| 万州区| 彭阳县| 双牌县| 赤水市| 安顺市| 若羌县| 大关县| 远安县| 龙口市| 兴安县| 同江市| 兖州市| 南华县| 双牌县| 德江县| 德惠市| 平泉县| SHOW| 崇仁县| 和平区|