肖昆,宋萬忠
(四川大學計算機學院,成都610065)
三維測量技術在恢復物體三維重構方面發展迅速,在機器視覺、文物保護、工業元件檢測等方面得到了廣泛應用。其中相位測量技術通過對被測物體表面投射編碼光柵,計算條紋在物體表面上的相位高度變化,進一步映射出物體的高度信息,從而完成物體的三維重構。實際中,由于使用反正切函數得到的相位值在[-π,π)之間,需要將相位主值準確地展開為連續分布的真實值。在截斷相位圖噪聲較小、連續、無陰影、對比度較好等理想情況時,只需要沿相位圖的行與列逐點依次展開,在相位截斷處加減2π的整數倍,即可獲得連續相位值。然而在實際情況中,由于物體局部形狀變換劇烈、圖像低對比度、成像陰影或投影陰影、運動模糊、離焦等因素的存在,對于依賴路徑展開的單頻截斷相位展開方法,容易引起相位錯誤沿著路徑傳遞,導致展開結果不理想或失敗。
為了解決以上問題,人們研究了不少相位展開方法,主要有時間相位展開方法和空間相位展開方法。時間相位展開方法需要多套條紋,對設備的要求也比較高,因此測量速度比較慢[1]。而空間相位展開方法只需要一套條紋圖,即可進行相位展開,速度比較快,然而,由于噪聲、陰影、相位不連續等不可靠區域的存在,使得沿相位路徑展開的空間相位展開方法很容易造成誤差傳遞。傳統的空間相位展開方法可分為可靠度引導算法[2]、最小范數算法[3]等方法。可靠度引導算法主要思想是首先確定相位點的可靠度,并對相位點的可靠度值進行排序,然后相位展開沿著可靠度最高的方向進行展開,能夠避開不可靠區域的點,使得相位展開把誤差降低至最小[4]。然而如果存在不連續的情況時,質量圖就不能完美的進行相位展開[5]。最小范數算法是指求出展開截斷相位F 的相鄰像素相位差和截斷相位j 的相鄰像素相位差最小LP 范數意義上的解,其中比較經典的是基于快速傅里葉變換(FFT)的最小二乘法(FFT-LS)[6],主要思路是對截斷相位進行周期延拓,通過計算得到真實的相位值。然而在展開截斷相位時,需要進行周期延拓,比較占用時間,同時要進行FFT 變換,需要滿足一定條件,具有局限性[7]。傳統方法在某種程度上確實降低了誤差,然而在低對比度、條紋斷裂、圖像離焦和運動模糊等干擾因素比較復雜的情況下,傳統的可靠度引導算法、最小范數算法等在進行截斷相位展開時,仍然面臨很大的挑戰。
近年來,隨著深度學習與卷積神經網絡的融合發展,尤其是2012 年多倫多大學的Alex Krizhevsky 等人[8]提出的AlexNet 模型,使得深度卷積神經網絡得到了快速發展,一些科技上棘手的問題得到了很好地解決,例如在語義分割、語音識別、人臉識別等方面。深度卷積神經網絡(DCNN)是一種模擬人腦的行為特征,包含許多隱藏層的神經網絡。深度學習是一種基于數據進行學習的方法,使得計算機或機器通過訓練得到多層的深度卷積神經網絡,建立圖像特征與語義之間的對應關系[9]。
基于以上問題,本文提出了一種采用深度卷積神經網絡的空間相位展開新方法,截斷相位圖的展開被分為不可靠區域檢測和可靠區域展開兩個子問題,深度卷積神經網絡被用于檢測截斷相位圖中的低對比度、條紋斷裂、圖像離焦和運動模糊等不可靠區域,可靠區域的相位展開用傳統算法完成。為訓練能處理高分辨率截斷相位圖的神經網絡,本文提出了位移采樣方法。本文通過采用真實牙模三維掃描數據對神經網絡進行訓練,并與使用傳統空間相位展開算法對相位進行展開的對比實驗,得到了有效真實的結果,驗證了本算法的有效性。
深度卷積神經網絡是一種比較復雜的網絡結構模型,主要是通過增加網絡的深度,以達到擁有更加強大的特征學習能力和特征表達能力。然而隨著深度的增加,神經網絡會變得很復雜,系統參數也會越來越多,進而使得數據訓練變得相當困難,最終導致梯度彌散問題[10]。本文的網絡結構使用深度殘差網絡(ResNet)來解決這一問題,通過在卷積層加入越層的快捷鏈接方法有效的解決梯度彌散問題[11]。
殘差塊結構圖如圖1 所示,其中殘差塊的輸入為x,原始映射函數(即期望輸出函數)為H(x),定義殘差函數為F(x)=H(x)-x,由圖1 可以得出,殘差塊通過快捷鏈接的方式,直接將輸入x作為輸出結果與F(x)相加得到H(x),即H(x)=F(x)+x,如果F(x)=0,則H(x)=x,即為圖中的恒等映射。所以對于殘差網絡,當下層網絡中存在誤差時,只要網絡訓練能夠使得殘差函數F(x)逼近為0,也就是通過快捷鏈接轉變為恒等映射,使得輸入x近似于輸出H(x),就能夠降低由于網絡層數太多帶來的梯度彌散問題。

圖1 殘差塊結構
本文采用深度卷積神經網絡進行截斷相位圖的不可靠區域檢測,網絡結構如圖2 所示。網絡模型來自于Fastai[12]的U-Net[13]實現,U-Net 是一個對稱的網絡結構,先經過左邊為Encoder 的網絡結構,使得模型能夠對不可靠區域進行學習、識別等,但是卻丟失了位置信息,本文Encoder 部分采用的是ResNet18 網絡結構,參數如表1 所示,然后再經過Decoder 部分,使得模型結合Encoder 加深對圖像不可靠區域的理解,并且重新得到了位置信息,實現了對圖像的語義分割,最終將截斷相位圖中不可靠區域檢測出來。

圖2 網絡結構示意

表1 不同深度ResNet 的網絡結構
本文深度卷積神經網絡中使用的損失函數為交叉熵函數,公式(1)中H(p,q)表示交叉熵,其中p(x)為真實概率分布,q(x)為預測概率分布。H(p,q)值越小表示網絡預測的結果越好,所以使用交叉熵損失函數來進行損失計算。

數據輸入統一固定大小為256×256,第一層為卷積層,使用64 個大小為7×7 的卷積核,填充padding=3,步長stride=2,對輸入圖像進行卷積運算。下一步是對卷積運算后的結果進行批規范化,作用是為提高學習速率,防止速率衰減。再經過Max 池化層,卷積核為3×3,填充padding=1,步長stride=2,進行下采樣降維,最終經過網絡后輸出相位圖中不可靠區域檢測圖像。
本文采用定制開發的手持式條紋結構光三維成像設備對13 個石膏半口牙齒模型進行掃描,得到了7402組數據。每組數據包括平均灰度圖、截斷相位圖、深度圖,數據點數均為1024×1024。該設備投影多組條紋,用時間相位展開方法得到連續相位分布;再結合事先標定的相機參數計算出每幀深度圖和點云,通過實時地對每幀點云進行拼接和融合后,實現對物體表面的連續掃描。針對實際應用中,條紋結構光圖像普遍存在的低對比度、圖像離焦、運動模糊、條紋不連續和背景物體等因素在深度圖中產生的無效數據點,該設備用一系列算法檢測并剔除這些無效點,實現了連續掃描深度圖的拼接。如圖3 所示為其中一組數據圖,(a)為平均灰度圖,(b)為(a)對應的截斷相位圖,(c)為對應的深度圖,其中黑色部分為無效點,深度范圍為[133.57mm,145.0mm]之間。該設備輸出的深度圖中,已經剔除了不可靠點,并且能滿足連續的深度圖拼接和點云融合需要的深度圖。該深度圖的無效數據點可以直接作為訓練輸入圖像的目標圖像,避免了耗時的手工圖像標注。

圖3 牙模三維掃描數據組
由于高分辨率圖像具有更多的細節信息,有助于進行截斷相位圖不可靠區域的檢測,因此,本文將采用高分辨率真牙摸圖像作為訓練數據對深度卷積神經網絡進行訓練。
本文使用的數據集真實牙模圖像分辨率為1024×1024 像素,然而由于現有技術(包括硬件和軟件)的限制,高分辨率圖像在訓練網絡時,無法有效地進行訓練。為解決這一問題,本文提出了位移采樣方法,流程如圖4 所示。

圖4 位移采樣流程圖
方法如下:
(1)高分辨率圖像多尺度位移下采樣。首先預設圖像分辨率,本文預設大小為256×256,采樣間距計算方法為高分辨率圖像與預設圖像的分辨率大小相除,即1024/256=4,此處采樣間距為4。根據采樣間距可以得到行采樣起始點和列采樣起始點,然后根據行和列的采樣起始點計算采樣起始點為16 個,然后對高分辨圖像進行16 次位移下采樣,得到16 個待處理的低分辨率圖像。
(2)低分辨率圖像訓練。預先設置每個低分辨率圖像的標識信息,標識與起始點息息相關,同時得到每個像素點的坐標信息。將低分辨率圖像輸入到深度卷積神經網絡中進行訓練,得到低分辨率圖像的不可靠區域檢測圖像。
(3)低分辨率不可靠區域檢測圖像位移上采樣。通過對16 個低分辨率不可靠區域檢測圖像的采樣起始點進行排序疊加的辦法,得到高分辨率區域分割圖,對高分辨率圖像和高分辨率區域分割圖進行計算可得到高分辨的不可靠區域檢測圖像。
通過位移采樣方法能夠使得深度卷積神經網絡有效地處理高分辨率圖像。
本文使用Fastai 在配置為Intel Core i7-9700 CPU、32G 內存、NVIDIA TITAN RTX 的計算機上對DCNN 進行訓練和測試。batch size 為64,訓練時間約為4 小時;測試時,一幅1024×1024 的截斷相位圖的處理時間約為80ms。
本實驗13 個牙模掃描數據中,分別隨機選出1 個牙模掃描數據作為測試數據集,2 個牙模掃描數據作為驗證數據集,10 個牙模掃描數據作為訓練數據集。
為驗證本文方法的有效性與可行性,設計了一種對真實牙模三維掃描截斷相位圖進行不可靠區域檢測,并與使用傳統方法對原始截斷相位圖、去除不可靠區域的原始截斷相位圖進行相位展開的實驗,并將兩者的實驗展開結果進行對比分析。
首先在進行實驗之前,本文對比了每一幅牙模的平均灰度圖與其截斷相位圖,圖5 表示了含有陰影、低對比度、運動模糊、離焦等四種不可靠區域去除后的情況,其中(a)表示平均灰度圖、(b)表示與(a)一一對應的原始截斷相位圖,(c)為用DCNN 訓練后輸出的二值圖模板,其中不可靠區域的無效點統一設置為0,可靠區域的點設置為1。在實際情況中,這些干擾因素往往是無法避免,本文的重點將是檢測并去掉截斷相位圖中這些不可靠區域,然后對截斷相位圖中剩下的可靠區域進行相位展開。

圖5 去除截斷相位圖中不可靠區域的結果
檢測結果如圖5(d)所示,是參照二值圖模板(c)將(b)中一一對應的原始截斷相位圖中的陰影、低對比度、運動模糊、離焦等不可靠區域檢測去除后的結果。
本文使Herrae 算法[14]對截斷相位圖進行相位展開,輸入數據分別為754 幅原始截斷相位圖像與754幅原始截斷相位圖去除不可靠區域后的圖像,圖像大小都為1024×1024。通過實驗運算,圖6(a)顯示原始截斷相位圖在分別存在陰影、低對比度、運動模糊、離焦等四種情況下的相位展開結果,圖6(b)為(a)中去掉不可靠區域后的截斷相位圖展開結果。

圖6 截斷相位圖展開結果對比
本文采用空間相位展開方法展開得到相位圖是相對相位,為更清晰地展示去除不可靠區域前后的差異,實驗中將圖6(a)和圖6(b)中的相位圖以同一像素坐標點為基準進行對齊后再進行相位展開,選出其中一列數據顯示結果如圖7 所示。對某列數據,除物體表面的高度跳變外,曲線應為連續平滑曲線,否則表明展開錯誤;這種錯誤在圖6 中表現為圖像灰度值出現跳變。圖6 和圖7 表明,原始截斷相位圖在遇到存在陰影、低對比度、運動模糊、離焦等不可靠區域時,無法有效地避開,導致展開錯誤沿著路徑傳播的情況,會出現展開效率不理想甚至失敗的結果,而本文所用的方法可以有效地檢測出不可靠區域,然后去除掉,對截斷相位圖中的可靠區域進行相位展開,效果往往比較理想。

圖7 去除不可靠區域前后展開結果對比圖
本文提出的基于深度神經網絡的條紋結構光相位展開方法通過檢測截斷相位圖中不可靠區域再進行相位展開,能夠有效地避免錯誤沿路徑傳播的情況。然而,還有一些問題需要解決,例如本文訓練需要大量數據,網絡結構比較復雜,參數也比較多,下一步是減少網絡參數,采用弱監督與先驗知識結合的方法來減少訓練數據量。