朱先震,呂順,唐天航
(四川大學計算機學院,成都610065)
作為人類認識和感知世界的基礎,深度信息被廣泛應用于三維重建、無人駕駛、工業(yè)檢測、外科手術定位等諸多領域。目前,大多數(shù)深度估計方法依據(jù)計算攝影學的相關理論,采用基于光場恢復[1-2]、深度線索[3-8]或機器學習[9-10]的方式完成場景深度信息的恢復。然而,基于光場恢復的深度估計大多需要額外的附加硬件或修改相機結構,應用范圍有限;基于機器學習的深度估計每次訓練僅針對特定場景的圖像有效,泛化性不強。故本文選擇基于散焦和透視線索的深度估計方法作為研究重點。
基于散焦線索的深度估計將深度估計問題轉化為對散焦區(qū)域的模糊估計問題,依據(jù)薄透鏡成像原理計算場景的相對深度。Pentland將散焦圖像建模為清晰圖像與點擴散函數(shù)(PSF)的卷積,通過測量圖像中給定點的模糊量,計算場景中相應點的距離[3];Zhuo利用已知的高斯模糊核對輸入圖像進行再模糊,通過計算輸入圖像和再模糊圖像的梯度比得到邊緣位置的散焦量,進而恢復完整的場景深度圖[5]。基于大氣透視線索的深度估計方法認為,由于空氣中氣溶膠的散射作用,距離觀測點越遠的物體其成像對比度、顏色、分辨率衰減越明顯。Zhu等人提出顏色衰減先驗,通過建立霧天圖像場景深度的線性模型,可以很好地恢復有霧圖像的深度信息[7];He等人提出暗通道先驗用于圖像去霧,在恢復清晰無霧圖像的同時可以得到高質量的場景深度圖[8]。
本文致力于解決單幅單目室外圖像的自然場景深度恢復問題。之前算法由于僅采用散焦線索進行深度估計,無法避免焦平面及模糊紋理二義性,造成最終深度估計結果存在誤差,魯棒性不足。為解決該問題,本文提出一種聯(lián)合散焦和大氣透視線索的深度估計方法恢復輸入圖像的深度信息:①分別計算圖像散焦與透視線索的深度估計值;②分析對比兩種深度估計信息,采用最小二乘優(yōu)化的方式融合來自不同線索的深度值,獲得場景的最終深度圖。
從散焦估計深度是一個盲反卷積問題[11],在恢復場景深度信息的同時需要估計清晰的場景圖像,求解效率不高,實時性不強。在實際應用中,由于人們往往只關注于高質量深度信息的獲取而無意求解場景的去模糊圖像,故可將深度估計轉化為半盲反卷積問題,避免場景清晰圖像的求解。受此啟發(fā),本文采用的散焦深度估計方法包括兩個階段,即邊緣稀疏散焦量的估計與散焦信息的傳播。
1.1.1 薄透鏡模型及散焦圖像建模
盡管大多數(shù)相機鏡頭采用具有多個獨立透鏡元件的復雜設計,但本文在此僅討論簡化的薄透鏡成像模型,相關原理足以支撐本文提出算法的適用場景。
圖1 薄透鏡成像模型
圖2 物距dobject與模糊圓直徑dblur間的關系
圖1 展示了簡化的相機成像模型。由高斯成像公式[12]可知,薄透鏡成像滿足:
其中,dobject為成像物體與鏡頭之間的距離,dimage為鏡頭與準確聚焦像平面之間的距離,f為鏡頭焦距。由于衍射效應,散焦成像形成的模糊光斑可近似為圓形斑點,被稱為模糊圓(Circle of Confusion,CoC)。假設鏡頭到傳感器距離為d,根據(jù)場景幾何關系結合式(1),模糊圓的直徑dblur滿足:
其中,A為鏡頭光圈直徑,N為光圈值,模糊圓直徑dblur反映了成像點的散焦程度。圖2展示了當焦距f、光圈值N取特定值時物距dobject與模糊圓直徑dblur滿足的數(shù)量關系。從圖中可以看出,在焦平面兩側,場景物距與模糊圓直徑具有一一對應的關系,故通過估計散焦圖像的模糊量可以恢復場景的相對深度。此外,散焦引起的圖像退化過程可以建模為場景反射光和相機點擴散函數(shù)(Point Spread Function,PSF)的卷積[3]。在實踐過程中,一般采用標準差為σ的二維高斯函數(shù)作為點擴散函數(shù)的近似,因此,散焦成像過程可以表示為:
1.1.2 場景散焦深度估計
假設圖像中的場景邊緣均為理想的階躍邊緣,可將其建模為:
其中,A和B分別表示邊緣強度與偏移量大小,s(x)表示階躍函數(shù),x表示像素位置。根據(jù)式(3),模糊邊緣可以表示為:高斯函數(shù)g(x,σ)的標準差σ反映了邊緣像素x的模糊程度。
采用Zhuo[5]的方法進行邊緣散焦估計。使用具有已知大小模糊核σr的高斯函數(shù)對圖像進行模糊處理,再次模糊后的邊緣梯度可以表示為:
可以看出邊緣梯度大小僅與邊緣強度A及高斯函數(shù)標準差σ有關。根據(jù)Zhuo的理論,原始邊緣與再次模糊邊緣之間的梯度比R在邊緣像素處(x=0時)取得最大值[5],即:
因此,已知邊緣像素的最大梯度比R與再次模糊的模糊核大小σr,可求出原始圖像的邊緣稀疏散焦量:
實驗中,本文采用σr=1的模糊核對原始圖像進行再次模糊,采用Canny算子提取圖像邊緣,基于式(7)可以求得邊緣稀疏散焦量的估計。如圖3所示,(a)為原始場景圖像,(b)為求得的場景稀疏散焦圖。
圖3 場景稀疏散焦圖
獲得場景邊緣稀疏深度圖d?后,通過散焦傳播的方式進行完整場景深度d的估計。根據(jù)局部一致性假設,在局部較小的圖像區(qū)域內,不同像素對應同一成像物體,其深度應當是一致的?;谶@一假設,受Chen[6]提出方法的啟發(fā),采用基于超像素的散焦傳播方法獲得完整場景深度圖。
首先使用SLIC算法[13]對圖像進行過分割,得到超像素集S={s1,s2,…,sN}。根據(jù)局部一致性假設,每個超像素si區(qū)域內的深度應當是一致的,故可依據(jù)上一步求得的邊緣稀疏散焦量為每個超像素分配其初始深度。超像素si的初始深度可以定義為:
針對散焦傳播,本文作出如下假設:超像素si與sj如果有相似的強度和顏色,則具有相似的模糊度。據(jù)此,應用特征相似性對任意兩超像素間的相似度進行度 量,構 建 相 似 權 重 矩 陣。其 中,表示超像素si與sj顏色空間的歐氏距離。由于W編碼任意兩個超像素之間的相似性,因此可以使用該矩陣調整超像素對間的散焦模糊量,將邊緣稀疏散焦量傳播至整幅圖像,修正超像素的初始深度值。具體方法可以表示為:
其中,W?表示正則化后的相似權重矩陣,滿足每行元素相加為1的條件。式(9)表明,每個超像素的深度估計來自于除不包含邊緣像素外的所有其他超像素的散焦傳播。
圖4 散焦傳播得到的完整場景深度圖及深度估計誤差
使用散焦傳播算法得到的完整場景深度圖如圖4所示。從圖中可以看出,受焦平面二義性影響,實際拍攝的近景被錯誤估計為具有更大的景深,不符合人類的直觀判斷。因此,為提高深度估計的準確性,需要融合來自大氣透視線索的深度信息修正散焦深度估計中不準確的深度值。
1.2.1 大氣散射模型及初始透視深度估計
如圖5所示,由于空氣中灰塵、煙霧等氣溶膠顆粒的存在,幾乎每一個室外場景反射的光線在到達相機前都會在大氣中散射,造成相機拍攝圖像的對比度降低、飽和度下降。針對這一現(xiàn)象,Narasimhan等人建立了散射成像的數(shù)學模型,解釋了強散射介質中探測系統(tǒng)成像質量下降的原因[14]。該模型可以表示為:
圖5 大氣散射成像模型
其中,I為相機拍攝圖像的觀測強度,J為場景輻射照度,A為全局大氣光,t為介質透射率。當光線在均勻介質中傳播時,介質透射率可以表示為:
其中,β為大氣散射系數(shù),d是場景深度。式(11)表明介質透射率隨深度增加呈指數(shù)衰減,在估計場景介質透射率的同時可恢復場景相對深度信息。
大氣散射模型被廣泛應用于圖像去霧操作。在圖像去霧的同時,除了從觀測圖像I中恢復出無霧的原始場景圖J,還可同時預測全局大氣光A及場景介質透射率t。He等人基于統(tǒng)計觀察,提出暗通道先驗理論,該理論認為對于室外無霧圖像,在大多數(shù)非天空區(qū)域中,至少存在一個顏色通道的像素強度非常低且接近于零[8],可以表示為:
其中,Jdark表示圖像J的暗通道,Ω(x)表示以像素x為中心的局部圖像域,c表示彩色像素的顏色通道。假定全局大氣光A已知且不為0,結合式(12),可推導出介質透射率t(x)的表達式:
如圖6所示,(a)為相機拍攝的室外圖像,(b)和(c)分別為其對應的暗通道及透射率圖。依據(jù)大氣透視線索,在估計出場景全局大氣光A的基礎上,結合式(11)和式(13)可求得場景初始透視深度信息:
圖6 圖像暗通道及其透射率
1.2.2 大氣透視深度估計修正
基于大氣透視線索的深度估計方法根據(jù)場景中遠、近景散射效應的不同利用式(14)恢復場景的相對深度信息。然而,當場景本身包含反射強度較高且表面無陰影覆蓋的明亮區(qū)域時,該方法會產(chǎn)生較大的深度估計誤差。為解決該問題,本文提出結合亮通道計算與高層語義先驗的不可靠深度修正方法。
與暗通道類似,將圖像亮通道定義為:
式中,Jbright表示圖像J的亮通道,Ω(x)表示以像素x為中心的局部圖像區(qū)域,c表示彩色像素的r,g,b顏色通道。從式(15)可知,圖像亮通道描述了局部圖像區(qū)域各像素顏色通道強度的最大值。由于圖像明亮區(qū)域的各通道像素強度值都很高,其亮通道與暗通道之間的差異很小,故使用圖像亮通道與暗通道的差值可以識別不可靠的深度估計區(qū)域。
基于這一思想,取濾波后的亮、暗通道之間的差值與某一閾值進行比較,若差值低于設定閾值,則判定該像素屬于深度估計不可靠區(qū)域,具體可以表示為:
式中,G表示引導濾波[15],用于平滑亮、暗通道之間的差值圖像,α表示設定閾值,用于判定特定像素的深度估計是否可靠。實驗中,本文將α設定為0.4。圖7顯示了使用該方法預測出的不可靠深度估計區(qū)域。可以看到圖中天空、道路、灰色建筑物等色彩對比度較低的區(qū)域都被標記為不可靠區(qū)域,符合上文的分析判斷。下面介紹使用高層語義先驗修正不可靠深度估計的方法。
圖7 識別不可靠的深度估計
首先,使用K-均值聚類算法[16]對圖像進行分割,將圖像劃分為天空、地面及中間過渡區(qū)域。聚類后,根據(jù)圖像幾何關系與圖中顏色、紋理變化,推斷場景隱含的高層語義信息。即,位于圖像頂部且像素強度較高的區(qū)域為天空區(qū)域;位于圖像底部且具有特定紋理變化的區(qū)域為地面區(qū)域;除此之外,其余區(qū)域為中間過渡區(qū)域。圖8展示了使用K-均值聚類法得到的圖像分割結果。
圖8 圖像場景分割及高層語義推斷
獲得場景高層語義信息后,可以根據(jù)不同區(qū)域的對象類型有針對地修正其不準確的深度估計。對于天空區(qū)域,默認其位于距離焦平面無限遠處,故為其分配最大深度值;對于地面區(qū)域,根據(jù)相機投影模型[17],像素距離圖像底部越近對應深度越小,故為最底部的圖像像素分配最小深度值;對于圖像中間過渡區(qū)域,取過渡區(qū)域與深度估計不可靠區(qū)域的交集,采用乘以特定比例因子的策略過渡區(qū)域的不可靠深度估計值,修正后的深度估計可以表示為:
圖9 基于高層語義信息的深度估計修正
獲得場景散焦深度估計與優(yōu)化后的大氣透視深度估計后,本文采用最小二乘回歸策略,通過優(yōu)化目標函數(shù)取得最小值,獲得兩種深度線索的融合權重。具體可以表示為:
其中,d為數(shù)據(jù)集中場景真實深度值,α與β分別為權重系數(shù),db為散焦深度估計值,dp為優(yōu)化后的大氣透視深度估計值。通過優(yōu)化式(18)取得最小值,可以得到最終的場景深度圖。
為驗證本文提出算法的有效性,本文使用斯坦福大學的“Make3D”圖像數(shù)據(jù)集[9-18]進行測試?!癕ake3D”數(shù)據(jù)集包含了534張分辨率為1704×2272的室外圖像,以及使用激光掃描測距儀采集的灰度范圍為1~81的對應真實深度圖。本文算法基于MATLAB R2018b編程實現(xiàn),運行于載有Intel Core i5-6300HQ CPU、16GB內存、64位操作系統(tǒng)的PC上。同時使用Zhuo[5]、He[8]、Saxena[9]提出的深度估計方法作為對照算法進行性能對比。
如圖10所示,(a)為從“Make3D”數(shù)據(jù)集中隨機選取的測試圖像,(b)為測試圖像對應的真實深度圖,(c)、(d)、(e)、(f)分別為Zhuo算法、He算法、Saxena算法以及本文提出算法在測試圖像上的表現(xiàn)。從圖中可以看出,由于“Make3D”數(shù)據(jù)集包含的測試圖像具有較大景深,缺乏足夠的散焦線索,Zhuo算法采用散焦測距原理進行深度估計,無法有效應對此類圖像,生成的深度圖對近、遠景區(qū)分不明顯,主觀視覺效果不好;He算法對場景透射率進行估計,使用透射率作為深度先驗進行相對深度估計,無法有效應對不準確透射率帶來的深度估計誤差,對于存在明顯過亮區(qū)域的測試圖像,亮區(qū)域深度估計結果不符合主觀視覺判斷;Saxena算法雖然可以生成相對深度估計較為準確的深度圖,但深度估計結果存在明顯噪聲,主觀視覺效果不好。本文提出的算法結合散焦線索與大氣透視線索進行深度估計,使兩種單一線索得到的深度估計優(yōu)勢互補,避免了Zhuo算法與He算法存在的問題,生成了視覺效果良好的、符合人眼主觀判斷的深度圖。
除此之外,本文還使用PENTAX K-5單反相機拍攝了若干張真實自然環(huán)境下的室外圖像用于算法測試。如圖11所示,(a)為拍攝的真實自然場景圖像,(b)、(c)、(d)、(e)分別為Zhuo算法、He算法、Saxena算法以及本文提出算法在對應圖像上的表現(xiàn)。從圖中可以看出,相較于“Make3D”數(shù)據(jù)集,雖然Zhuo算法深度估計性能有所提升,但是受焦平面及模糊紋理二義性影響,該算法對于部分近景區(qū)域及天空區(qū)域的深度估計存在明顯誤差。對于He算法,由于選取的拍攝圖像中基本不存在明顯的過亮區(qū)域,其深度估計性能也有提升,生成的深度估計結果基本符合人眼相對深度判斷,但視覺效果還有待提升。對于Saxena算法,由于該算法采用機器學習的方式進行場景深度估計,無法保證其在各類不同場景中的泛化性,故Saxena算法在真實拍攝的室外場景圖像上表現(xiàn)不盡人意,相對深度估計結果與人類主觀視覺判斷差別較大。本文提出的算法采用散焦與透視線索進行深度估計,適用于絕大多數(shù)室外場景圖像,避免了Saxena等基于機器學習的深度估計算法泛化性不強的問題。此外,選取部分圖像局部區(qū)域放大對比可以看出,本文算法對于深度細節(jié)處理更加優(yōu)異,較好反映了不同場景的相對深度關系,在真實拍攝的測試圖像上性能優(yōu)于對比的3個基準算法。
圖10 不同算法在“Make3D”數(shù)據(jù)集上深度估計結果對比
圖11 不同算法在真實拍攝圖像上深度估計結果對比
選取絕對相對誤差(Absolute Relative Error)與平均絕對對數(shù)誤差(Mean Absolute Logarithmic Error)作為深度估計結果的評價指標,其中,絕對相對誤差可以定義為:
平均絕對對數(shù)誤差可以定義為:
式中,N表示圖像像素的數(shù)量,Di表示算法估計深度值,D*i表示場景真實深度值。隨機選擇“Make3D”數(shù)據(jù)集中的100張圖像用于測試,分別使用Saxena算法、Zhuo算法、He算法以及本文提出算法對測試圖像進行深度估計。使用絕對相對誤差與平均絕對對數(shù)誤差度量不同算法在每張測試圖像上的性能表現(xiàn),取所有測試圖像的誤差均值作為算法的最終性能度量。表1展示了本文提出算法與Saxena算法、Zhuo算法、He算法深度估計誤差的定量對比,從表中可以看出,本文提出算法在深度估計準確性上優(yōu)于其他算法。
本文沿用基于深度線索的深度估計方式,提出了一種結合散焦線索與大氣透視線索的單幅單目室外圖像深度估計方法。不同于以往采用單一線索的深度估計方法,本文分別采用散焦與透視線索進行深度估計,采用多線索深度融合的方式獲得最終的場景深度估計。對于散焦深度估計,基于散焦圖像退化模型與局部一致性假設,求取并傳播邊緣稀疏散焦量,獲得場景散焦深度估計值;對于透視深度估計,基于暗通道先驗與高層語義信息,求取并修正大氣散射深度估計,獲得場景透視深度估計值;對于深度信息融合與最終深度圖的生成,采用最小二乘回歸策略獲取不同深度線索的融合權重,融合來自散焦與大氣透視線索的深度信息獲得場景的最終深度估計。實驗結果表明,相比3個對比的基準算法,提出的算法可以有效避免采用單一線索進行深度估計可能產(chǎn)生的誤差,精度平均提高10%~13%,生成主觀視覺效果良好的、魯棒性較高的場景深度圖。
表1 本文提出算法與Saxena、Zhuo、He算法的性能對比