丁曉鳳,熊赟暉,林祖軒
(華南理工大學(xué)數(shù)學(xué)學(xué)院,廣州510640)
單目圖像中物體的尺度估算是計(jì)算機(jī)視覺領(lǐng)域的經(jīng)典研究方向,在建筑保護(hù)與重建[1]、場(chǎng)景理解[2]、圖像合成[3]等領(lǐng)域應(yīng)用廣泛。目前,對(duì)建筑物的保護(hù)和重建大多是對(duì)已有建筑進(jìn)行3D掃描后進(jìn)行建筑物外部和內(nèi)部信息的重建。大部分重建工作集中在建筑物外部輪廓[4],也有對(duì)室內(nèi)空間信息的重建工作[5]。這些重建工作的一個(gè)關(guān)鍵基礎(chǔ)就是需要建筑物的3D點(diǎn)云數(shù)據(jù)。但是,在對(duì)已損毀建筑的重建工作上就會(huì)遇到困難。由于歷史原因,也許只保留了這些建筑的歷史圖像信息,而實(shí)物蕩然無存,也就無法通過掃描的方式獲取它們的三維數(shù)據(jù)。因此,需要從這些圖像中恢復(fù)出一些關(guān)鍵物體的尺度信息來重建已損毀的建筑及建筑間的空間布局,這是建筑群布局復(fù)原流程的關(guān)鍵[6]。
目前蘋果和谷歌公司都有開發(fā)有關(guān)測(cè)距的測(cè)距儀App,但是這些軟件存在較多的限制條件,例如:拍攝相機(jī)的所有相機(jī)參數(shù)已知,只能測(cè)量近距離的小物體尺度等,對(duì)于圖像中尺度信息稍大的建筑物,物體尺度信息的計(jì)算容易造成較大的偏差。因此,本文的工作集中在對(duì)單目圖像場(chǎng)景的建筑物尺度估算上。建筑物尺度估算的關(guān)鍵是需要獲取單目圖像中各像素點(diǎn)的深度信息,但目前對(duì)單目圖像的深度信息估計(jì)還是存在一定的偏差,影響場(chǎng)景中各物體尺度的計(jì)算準(zhǔn)確度。這就需要引入先驗(yàn)知識(shí)來改善計(jì)算精度。根據(jù)這樣的思路,提出了檢測(cè)圖像中已知尺度的參考物體,并用它來修正圖像中的其他建筑物尺度。從實(shí)驗(yàn)效果來看,在增加了先驗(yàn)信息的情況下,能有效地提高建筑物尺度計(jì)算的精度。
目前,3D LIDAR等基于結(jié)構(gòu)光的深度獲取設(shè)備獲取到的深度信息為最準(zhǔn),但也存在數(shù)據(jù)噪聲的問題,獲取物體的三維數(shù)據(jù)的過程也相對(duì)復(fù)雜。而單目圖像的獲取成本相對(duì)來說較低,設(shè)備也比較普及。特別是早期古建筑或園林只保留了少量圖像資料,要對(duì)它們進(jìn)行重建恢復(fù),就只能從已有的單目圖像中進(jìn)行深度估計(jì)。
Lecun等人[7]在LeNet架構(gòu)中提出的CNN可以對(duì)高維圖像數(shù)據(jù)進(jìn)行處理,CNN利用卷積神經(jīng)核提取圖像特征,通過深度神經(jīng)網(wǎng)絡(luò)對(duì)特征層抽象來完成高級(jí)的視覺任務(wù),如基于深度學(xué)習(xí)的單幅圖像深度估計(jì)方法。Saxena等人[8]在最大化后驗(yàn)概率框架下以超像素為單元,利用馬爾可夫隨機(jī)場(chǎng)(MRF)擬合特征與深度、不同尺度的深度之間的關(guān)系,進(jìn)而實(shí)現(xiàn)對(duì)深度的估計(jì)。
Eigen等人[9]首次將深度神經(jīng)網(wǎng)絡(luò)用于單目深度估計(jì),使用兩個(gè)尺度的神經(jīng)網(wǎng)絡(luò)對(duì)單張圖片的深度進(jìn)行估計(jì):粗尺度網(wǎng)絡(luò)預(yù)測(cè)圖片的全局深度,細(xì)尺度網(wǎng)絡(luò)優(yōu)化局部細(xì)節(jié)。Liu等人[10]將深度卷積神經(jīng)網(wǎng)絡(luò)與連續(xù)條件隨機(jī)場(chǎng)結(jié)合,提出深度卷積神經(jīng)場(chǎng),用以從單幅圖像中估計(jì)深度。對(duì)于深度卷積神經(jīng)場(chǎng),使用深度結(jié)構(gòu)化的學(xué)習(xí)策略,在統(tǒng)一的神經(jīng)網(wǎng)絡(luò)框架中學(xué)習(xí)連續(xù)CRF的一元?jiǎng)菽茼?xiàng)和成對(duì)勢(shì)能項(xiàng)。Garg等人[11]利用立體圖像對(duì)實(shí)現(xiàn)無監(jiān)督單目深度估計(jì),不需要深度標(biāo)簽,其工作原理類似于自動(dòng)編碼機(jī)。訓(xùn)練時(shí)利用原圖和目標(biāo)圖片構(gòu)成的立體圖像對(duì),首先利用編碼器預(yù)測(cè)原圖的深度圖,然后用解碼器結(jié)合目標(biāo)圖片和預(yù)測(cè)的深度圖重構(gòu)原圖,將重構(gòu)的圖片與原圖對(duì)比計(jì)算損失。Jin Han Lee等人[12]提出了一種基于多尺度局部平面制導(dǎo)層的從小到大的端到端的單目圖像深度估計(jì)方法。Katrin Lasinger等人[13]提出了一種對(duì)于深度的范圍和尺度具有不變性的訓(xùn)練方法,從而可以在訓(xùn)練期間混合多個(gè)數(shù)據(jù)集,利用3D電影構(gòu)建了一個(gè)數(shù)據(jù)集并進(jìn)行訓(xùn)練,然后對(duì)未在訓(xùn)練數(shù)據(jù)集中出現(xiàn)過的數(shù)據(jù)進(jìn)行評(píng)測(cè)。這個(gè)方法的主要特點(diǎn)是將不同類型的數(shù)據(jù)集混合在一起進(jìn)行訓(xùn)練,從而改善圖像深度估計(jì)的精度。
在得到了圖像深度估計(jì)值后,由于深度估計(jì)算法存在一定的誤差,這樣會(huì)導(dǎo)致計(jì)算圖像物體間距離也產(chǎn)生偏差。解決這個(gè)問題的一個(gè)思路是檢測(cè)圖像中參照物:已知尺度的物體(如墻面上一塊已知尺度的方磚),用深度估計(jì)值得到一個(gè)估計(jì)距離,再和精度值比較得到一個(gè)尺度修正系數(shù),重新調(diào)整圖像物體間的距離,從而提高圖像中物體尺度的計(jì)算精度。因此要利用參照物的真實(shí)尺度,必須先從圖像中檢測(cè)出已知的參照物。
傳統(tǒng)目標(biāo)檢測(cè)的方法一般分為三個(gè)階段:首先在給定的圖像上選擇一些候選的區(qū)域,然后對(duì)這些區(qū)域提取特征,常用的特征有SIFT[14]、HOG[15],最后使用訓(xùn)練的分類器進(jìn)行分類。SSD[16]檢測(cè)算法使用不同階段不同分辨率的下采樣特征圖進(jìn)行預(yù)測(cè),表征能力較弱。FSSD[17]檢測(cè)算法也是使用不同階段不同分辨率的特征圖進(jìn)行預(yù)測(cè),相比于SSD,F(xiàn)SSD多了一個(gè)特征融合處理,將網(wǎng)絡(luò)較低層的特征引入到網(wǎng)絡(luò)的較高層,在檢測(cè)的時(shí)候能夠同時(shí)考慮不同尺度的信息,使得檢測(cè)更加準(zhǔn)確。R-CNN[18]生成區(qū)域的方法是傳統(tǒng)方法Se-lective Search,主要思路是通過圖像中的紋理、邊緣、顏色等信息對(duì)圖像進(jìn)行自底向上的分割,然后對(duì)分割區(qū)域進(jìn)行不同尺度的合并,每個(gè)生成的區(qū)域即一個(gè)候選區(qū)域。這種方法基于傳統(tǒng)特征,速度較慢。后來就有了速度較快的Faster R-CNN[19]和RFCN[20]算法。
YOLO算法是端到端的目標(biāo)檢測(cè)算法,目前已有4個(gè)進(jìn)化版本。YOLOv1[21]開創(chuàng)性提出了目標(biāo)檢測(cè)中的anchor-free,在速度上得到了很大的提升,但在精度上與兩階段的算法還有差異。YOLOv2[22]采用DarkNet-19作為特征提取網(wǎng)絡(luò),增加了批量標(biāo)準(zhǔn)化(Batch Nor-malization)的預(yù)處理,并借鑒了Fast R-CNN的思想,引入Anchor機(jī)制,利用K-means聚類的方式在訓(xùn)練集中聚類計(jì)算出更好的Anchor模板,在卷積層使用Anchor Boxes操作,增加區(qū)域提議的預(yù)測(cè),同時(shí)結(jié)合圖像細(xì)粒度特征,將淺層特征與深層特征相連,有助于對(duì)小尺寸目標(biāo)的檢測(cè)。YOLOv3[23]在v1和v2基礎(chǔ)上做了一些改進(jìn),主要包括三點(diǎn):新的backbone基礎(chǔ)網(wǎng)絡(luò)、多尺度預(yù)測(cè)和損失函數(shù)的調(diào)整。2020年YOLOv4[24]設(shè)計(jì)了一種有效的策略用于擴(kuò)展大目標(biāo)檢測(cè)器,使其更有效、更適合GPU訓(xùn)練。我們采用了YOLOv3算法,其在穩(wěn)定性、速度和精度上都達(dá)到了較好的平衡。
單目圖像尺度估算的流程主要是,采用已有的深度估計(jì)算法對(duì)單目圖像進(jìn)行深度估計(jì),再結(jié)合目標(biāo)檢測(cè)確定已知尺度的參照目標(biāo)物,引入先驗(yàn)知識(shí)進(jìn)行尺度的修正,最后通過尺度估算公式得到單目圖像中建筑的真實(shí)尺度估算值。如圖1所示。
圖1 本文主要流程
在整個(gè)流程中,關(guān)鍵步驟如下:
(1)單目圖像的深度估計(jì)。對(duì)獲取的單目圖像用文獻(xiàn)[13]深度學(xué)習(xí)算法來對(duì)單目圖像進(jìn)行深度估計(jì),得到每一像素點(diǎn)的深度估計(jì)值。
(2)圖像中參照物的檢測(cè)。在獲取單目圖像后,需要對(duì)圖像中已知尺度的參照目標(biāo)物進(jìn)行檢測(cè)??紤]到檢測(cè)精度和檢測(cè)效率,采用YOLOv3來進(jìn)行參照目標(biāo)物的目標(biāo)檢測(cè)。將單目圖像作為神經(jīng)網(wǎng)絡(luò)的輸入,然后獲取參照目標(biāo)物的檢測(cè)框,將參照目標(biāo)物估計(jì)尺度和真實(shí)尺度信息相對(duì)應(yīng),就能獲得相應(yīng)的修正系數(shù)。
(3)建筑真實(shí)尺度估算。將單目圖像的深度信息和目標(biāo)檢測(cè)中得到的修正系數(shù)相結(jié)合,通過尺度估算公式來實(shí)現(xiàn)對(duì)單目圖像中的建筑進(jìn)行真實(shí)尺度估算。
整個(gè)算法分三步驟完成:①先對(duì)單目圖像進(jìn)行深度估計(jì),得到每一像素點(diǎn)的深度信息,通過坐標(biāo)轉(zhuǎn)化得到每一像素點(diǎn)的空間坐標(biāo)。②再對(duì)圖像進(jìn)行參照物目標(biāo)檢測(cè),結(jié)合參照物真實(shí)尺度得到修正系數(shù)。③最后通過修正系數(shù)和尺度估算公式得到建筑物體尺度的估算值。
圖2 參照物目標(biāo)檢測(cè)
對(duì)圖像各像素點(diǎn)深度信息的估計(jì)采用了文獻(xiàn)[13]的算法,這是一種基于遷移學(xué)習(xí)的無監(jiān)督單目深度估計(jì)的算法。先利用Pareto-optimal算法將五種互補(bǔ)訓(xùn)練集進(jìn)行混合訓(xùn)練:ReDWeb、MegaDepth、WSVD、DIML Indoor和3D movies數(shù)據(jù)集,使算法具備一定的尺度不變性特征。然后根據(jù)魯棒性損失函數(shù)來預(yù)測(cè)圖像深度:
式中,Nl表示訓(xùn)練集的大?。籑表示圖像中像素的個(gè)數(shù);Um表示一幅圖像中修正了20%最大殘差的像素點(diǎn)個(gè)數(shù);d表示預(yù)測(cè)深度;d*表示相對(duì)應(yīng)的真實(shí)深度;K=4表示4個(gè)等級(jí),每一個(gè)等級(jí)圖像分辨率減半;Ri=di-,α=0.5。通過對(duì)尺度和位移不變的損失函數(shù)約束最后得到單目圖像的深度估計(jì)。在此深度估計(jì)圖的基礎(chǔ)上,再通過轉(zhuǎn)化函數(shù)得到圖像相對(duì)深度矩陣,從而獲取每一像素的深度估計(jì)值。
在目標(biāo)檢測(cè)領(lǐng)域,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為Region-Proposal和End-to-End,前者需要對(duì)原始圖像進(jìn)行特征提取,找到可能含有目標(biāo)的候選框;再結(jié)合CNN進(jìn)行檢測(cè),輸出目標(biāo)類別和位置。后者是輸入原始圖像到深度學(xué)習(xí)網(wǎng)絡(luò)中,直接輸出圖像中目標(biāo)類別和位置。從便捷性和檢測(cè)效果上來看,采用端對(duì)端的算法能直接獲得檢測(cè)結(jié)。YOLO算法正是這種算法的典型代表,在目標(biāo)檢測(cè)中有更好的精度和速度。
將單目圖像作為YOLO算法的輸入,輸出為類別標(biāo)簽和包圍框信息。在得到的圖像中標(biāo)定目標(biāo)參照物的位置(Mleft,Mright,Mtop,Mbot)之后,確定可以表示參照物尺度的像素點(diǎn)坐標(biāo)(x,y),如圖2所示M1=(x1,y1),M2=(x2,y2)。
通過圖像的深度和像素坐標(biāo)轉(zhuǎn)化得到像素的空間坐標(biāo),再對(duì)圖像目標(biāo)檢測(cè)得到參照目標(biāo)物的估算尺度與真實(shí)尺度相結(jié)合的修正知識(shí),然后把修正知識(shí)引入尺度估算,最后對(duì)建筑真實(shí)尺度估算公式進(jìn)行構(gòu)建,從而獲取圖像中建筑的真實(shí)尺度估算值。
3.3.1像素坐標(biāo)系與相機(jī)坐標(biāo)系之間的轉(zhuǎn)換
像素坐標(biāo)系[u,v]向相機(jī)坐標(biāo)系[Xc,Yc,Zc]進(jìn)行轉(zhuǎn)換的實(shí)質(zhì)是先由像素坐標(biāo)系轉(zhuǎn)化為圖像坐標(biāo)系,再由圖像坐標(biāo)系轉(zhuǎn)化為相機(jī)坐標(biāo)系。
以圖像左上角為原點(diǎn)建立以像素為單位的直角坐標(biāo)系u-v,像素的橫坐標(biāo)u與縱坐標(biāo)v分別表示圖像數(shù)組中所在的列數(shù)與所在的行數(shù)。將相機(jī)光軸與圖像平面的交點(diǎn)(一般位于圖像平面的中心處,也稱為圖像的主點(diǎn))定義為圖像坐標(biāo)系的原點(diǎn)O1,且x軸與u軸平行,y軸與v軸平行,假設(shè)(u0,v0)代表O1在u-v坐標(biāo)系下的坐標(biāo),dx與dy分別表示每個(gè)像素在橫軸x和縱軸y上的物理尺寸,則圖像中每個(gè)像素在u-v坐標(biāo)系中的坐標(biāo)和在x-y坐標(biāo)系中的坐標(biāo)之間存在如下關(guān)系:
式中,假設(shè)圖像坐標(biāo)系的單位為毫米,dx的單位為:毫米/像素。x/dx的單位為:像素。矩陣形式表示為:
圖像坐標(biāo)系和像素坐標(biāo)系如圖3所示。
圖3 像素和圖像坐標(biāo)系
根據(jù)針孔成像原理如圖4所示,以平面π為攝像機(jī)的像平面,點(diǎn)Oc為攝像機(jī)中心,f為攝像機(jī)的焦距,以O(shè)c為端點(diǎn)且垂直于像平面的射線為光軸或主軸,主軸與像平面的交點(diǎn)p為圖像的主點(diǎn)。
圖4 圖像和相機(jī)坐標(biāo)系
由圖4可得,圖像坐標(biāo)系為o-xy,攝像機(jī)坐標(biāo)系為Oc-xcyczc。記空間點(diǎn)Xc攝像機(jī)坐標(biāo)系中的齊次坐標(biāo)為:Xc=[xc yc zc1]T。它的像點(diǎn)m在圖像坐標(biāo)系中的齊次坐標(biāo)為:m=[x y1]T。根據(jù)三角形相似原理:.矩陣形式表示為:
當(dāng)前大部分?jǐn)?shù)碼相機(jī)拍攝的照片屬性里面都有焦距的信息,早期的35mm膠片相機(jī)拍攝的圖片,相片大小為36mm×24mm,可以假設(shè)視角范圍是45°,這樣也能近似得到焦距信息。因此,根據(jù)公式(5)可以實(shí)現(xiàn)從像素坐標(biāo)系到相機(jī)坐標(biāo)系之間的轉(zhuǎn)化。
3.3.2 基于映射原理的尺度估算公式定義
單目攝像機(jī)拍攝的圖像滿足透視投影的原理[25],如圖5所示。
圖5 針孔成像原理
我們可以建立一個(gè)估算尺度和真實(shí)值之間的比例關(guān)系,用來修正建筑的真實(shí)尺度估算。根據(jù)透視投影的原理和三角形相似定理,假設(shè)從深度估計(jì)算法中得到深度信息zc的與真實(shí)深度值z(mì)true之間存在一個(gè)比例關(guān)系,則根據(jù)公式(5)可計(jì)算出來的兩點(diǎn)間距離也存在這樣相同的比例。如圖6所示,由于圖像中物體真實(shí)尺度與估算尺度之間的比例一致,我們可以利,其中dtrue是參照物da的真實(shí)尺度,da是參照物通過深度估計(jì)算法計(jì)算出來的尺度。
進(jìn)而構(gòu)建尺度估算的修正公式。以db為例,其修正后的尺度估算值為D=db·k,詳細(xì)推導(dǎo)過程見附錄。
算法1.步驟如下:
輸入.圖像像素點(diǎn)的深度估計(jì)值和基于目標(biāo)檢測(cè)的參照物修正系數(shù)k。
輸出.圖像建筑尺度估算值。
(1)計(jì)算參照物的估算尺度,從圖像中參照物位置,選取已知尺度dtrue參照物的兩個(gè)像素點(diǎn),再結(jié)合相機(jī)參數(shù)焦距f獲取空間坐標(biāo)(xai,yai,zai)和(xaj,yaj,zaj),通過歐氏距離公式計(jì)算得到參照物的估算尺度:用參照物定義一個(gè)修正系數(shù)
式中i,j=1,…,m,m為圖像像素點(diǎn)個(gè)數(shù)。這樣就可以得到修正系數(shù)。
(2)計(jì)算建筑目標(biāo)物的估算尺度,從圖像中建筑目標(biāo)物的位置,選取表示建筑尺度的兩個(gè)像素點(diǎn),獲取空間坐標(biāo)(xbi,ybi,zbi)和(xbj,ybj,zbj),通過歐氏距離公式計(jì)算得到建筑物的粗估算尺度:
(3)計(jì)算D=db·k,將其作為圖像中建筑真實(shí)尺度估算值并返回。
圖6展示了從圖像中計(jì)算建筑尺度的方法。首先確定參照物目標(biāo)位置,然后選取已知尺度dtrue的兩個(gè)像素點(diǎn)A和B,計(jì)算圖像中參照物的估算尺度da,接著選取表示圖像中建筑物尺度的兩個(gè)像素點(diǎn)C和D,計(jì)算建筑物的估算尺度db;最后在真實(shí)尺度估算公式中計(jì)算得到建筑物M-N間的真實(shí)尺度。
實(shí)驗(yàn)運(yùn)行環(huán)境是基于Windows 10系統(tǒng),采用Python 3.7實(shí)現(xiàn),目標(biāo)檢測(cè)算法YOLOv3的訓(xùn)練是在TensorFlow下基于DarkNet框架下進(jìn)行,深度估計(jì)算法的訓(xùn)練是在PyTorch下進(jìn)行,在實(shí)驗(yàn)過程中還用到了OpenCV等圖像處理庫。
圖6 真實(shí)尺度修正算法
算法處理的數(shù)據(jù)有室外場(chǎng)景單目建筑圖像和用于深度估計(jì)的混合訓(xùn)練集。
有兩組帶有建筑物體的單目圖像數(shù)據(jù),這些圖像中都帶有焦距信息。一個(gè)來自于園林場(chǎng)景數(shù)據(jù)集,包括閣樓、船廳、涼亭、祠堂等建筑物;另一個(gè)是日常場(chǎng)景的數(shù)據(jù)集,包括樓房、車庫、走廊、體育館、仿古建筑等建筑物。用于深度估計(jì)的混合訓(xùn)練集包括:ReDWeb、MegaDepth、WSVD、DIML Indoor和3D movies。
如算法實(shí)現(xiàn)過程所述,所提出的尺度估算公式與建筑物的相機(jī)坐標(biāo)有直接的關(guān)系,而建筑物的相機(jī)坐標(biāo)是通過參照物檢測(cè)獲取的對(duì)應(yīng)像素點(diǎn)坐標(biāo)和圖像的深度估計(jì)得到的。因此,參照物檢測(cè)對(duì)應(yīng)點(diǎn)的選擇對(duì)尺度估算結(jié)果有著重要影響。
以任一像素點(diǎn)M為例,假設(shè)檢測(cè)的像素點(diǎn)的像素坐標(biāo)為M(x,y),對(duì)應(yīng)的空間坐標(biāo)為M(xc,yc,zc)。如圖7所示,選取以點(diǎn)M為中心,步長α為半徑的矩形框中所有的像素點(diǎn),使得更新后的像素點(diǎn)M的空間坐標(biāo)為:。
剔除異常數(shù)據(jù)。利用Z-分?jǐn)?shù)統(tǒng)計(jì)量檢測(cè)異常值并剔除異常點(diǎn)和以M為中心的對(duì)稱點(diǎn)。Z-分?jǐn)?shù)為:,其中σ為矩形框中像素點(diǎn)深度值數(shù)據(jù)的標(biāo)準(zhǔn)差。若矩形框中存在一點(diǎn),其Z-score>τ,其中τ為閾值,則剔除該點(diǎn)及其關(guān)于M的對(duì)稱點(diǎn),然后再根據(jù)上述步驟重新計(jì)算M的空間坐標(biāo)。若剔除點(diǎn)為M,則跟據(jù)算法1重新獲取參照物坐標(biāo)。建筑物坐標(biāo)優(yōu)化和上述方法同理。
圖7 用于坐標(biāo)優(yōu)化的所有像素點(diǎn)
通過人工標(biāo)注的方式得到圖像參照物的真實(shí)尺度值,再利用算法1的計(jì)算結(jié)果得到圖像建筑物的真實(shí)尺度估算值。用建筑尺度估算值與真實(shí)值之間的相對(duì)誤差和整體誤差來評(píng)估本文算法的有效性。誤差函數(shù)定義如下:
相對(duì)誤差函數(shù):
整體誤差函數(shù):
整體誤差為同一圖像內(nèi)多個(gè)物體尺度估算的均方誤差,用來表示圖像的整體尺度估算誤差,其中c表示建筑尺度估算值;gt表示建筑尺度真實(shí)值;eabs=|c-gt|表示絕對(duì)誤差;i=1,…,n表示一組可以表示建筑尺度的估算值數(shù)目。
對(duì)于修正系數(shù)的有效性,從10個(gè)不同場(chǎng)景中選取了3個(gè)樣例在表1中展示。圖8為這10個(gè)不同場(chǎng)景用了修正系數(shù)下的尺度估算的對(duì)比結(jié)果。由圖7的對(duì)比結(jié)果顯示,修正算法對(duì)尺度估算具有更好的準(zhǔn)確性,誤差更小。
接下來所有表中出現(xiàn)的“尺度估算”都是經(jīng)過修正系數(shù)修正過的尺度估算值。
表1 修正系數(shù)下的估算結(jié)果
圖8 添加修正系數(shù)前后對(duì)比的結(jié)果
表2為同一單目圖像內(nèi),相同場(chǎng)景內(nèi)不同測(cè)量尺度下的估算效果。第1列是采集的單目建筑圖像;第2列是YOLOv3參照目標(biāo)物檢測(cè)結(jié)果,其中藍(lán)色框標(biāo)定的是已知真實(shí)尺度的參照物;第3列是對(duì)應(yīng)的深度估計(jì)圖,有深度估計(jì)圖轉(zhuǎn)化可得到深度估計(jì)矩陣,從而知道像素點(diǎn)對(duì)應(yīng)的相對(duì)深度值,得到相應(yīng)的空間坐標(biāo);第4列是由尺度估算公式得到的建筑尺度估算值。表3為同場(chǎng)景內(nèi)不同測(cè)量尺度下的整體誤差。A、B、C為單目圖像中三個(gè)不同的建筑物,D、E為單目圖像中兩個(gè)不同的參照物磚塊,其中A為建筑右起第一個(gè)門,B為建筑右起第二個(gè)C為建筑總長,D、E為建筑表面的不同磚塊。實(shí)驗(yàn)表明修正后的尺度估算值離實(shí)際尺度的偏差較小。
表2 相同場(chǎng)景內(nèi)不同測(cè)量尺度的估算
表3 同場(chǎng)景內(nèi)的整體誤差
表4比較了在不同尺度的不同場(chǎng)景尺度估算的效果,表5顯示了在不同尺度下的建筑物估算誤差,結(jié)果顯示在0-5m和5-10m的尺度下估算誤差較小,20m以上的大尺度估算誤差較大,由此可見算法1對(duì)于20m以下具有較好的魯棒性,對(duì)于超大尺度的估算則有待優(yōu)化。
表4 不同尺度下建筑物估算
表5 不同尺度下估算誤差
表6中顯示了本文建筑物尺度估算與其他方法的比較結(jié)果,其中TBMDE出自文獻(xiàn)[13],F(xiàn)CRN出自文獻(xiàn)[26],表明了本文算法的建筑物尺度估算誤差較小,性能最好。
表6 不同方法建筑尺度的誤差
單目圖像尺度估算對(duì)于場(chǎng)景理解,建筑物重建和復(fù)原有重要研究價(jià)值。由于受限于已有深度估計(jì)算法對(duì)場(chǎng)景尺度分析不足,引入了參照物已知尺度的先驗(yàn)信息,得到一個(gè)尺度修正系數(shù),最后得到圖像中物體的真實(shí)尺度估算。對(duì)于在相同相機(jī)參數(shù),相似環(huán)境下拍攝的多幅圖像,從一張存在已知尺度參照物的圖像中提取修正參數(shù),也可以適用于其他不存在已知尺度參照物的圖像中。實(shí)驗(yàn)結(jié)果表明,提出的算法1能有效地估算建筑物的真實(shí)尺度。
但算法也存在一些局限。如果建筑物出現(xiàn)空洞較大或者植物、車子、大型景觀石等物體大面積遮擋建筑物時(shí),會(huì)造成深度估計(jì)嚴(yán)重偏差,則無法準(zhǔn)確地估計(jì)出建筑物的真實(shí)尺度。早期膠片相機(jī)拍攝的照片是用近似計(jì)算的方法得到焦距和像素信息也會(huì)對(duì)計(jì)算準(zhǔn)確性帶來一定的影響。算法對(duì)于中小尺度的建筑物尺度估算具有較好的魯棒性,尺度估算誤差小;但對(duì)于尺度很大超過20m的建筑物則會(huì)出現(xiàn)誤差較大的情況。
本文下一步工作將繼續(xù)研究參照物估算尺度和真實(shí)尺度之間更復(fù)雜的關(guān)系,優(yōu)化焦距和像素信息的計(jì)算,改進(jìn)修正系數(shù)的設(shè)定,得到更準(zhǔn)確的物體尺度估算。
附錄
尺度估算公式的推導(dǎo)過程。由公式(5)可知,
令:
由ztrue=kzc
假設(shè)p和q是修正前兩點(diǎn)的相機(jī)坐標(biāo),dpq為修正前兩點(diǎn)間尺度值,ptrue和qtrue則是修正后的相機(jī)坐標(biāo),則這兩點(diǎn)間修正后p,q的真實(shí)尺度為: