李志明
(四川大學計算機學院,成都 610065)
平面結構是日常生活中非常常見的一種特殊結構,例如建筑物墻體、書桌桌面、電子顯示屏等,大大小小的眾多平面構成了復雜的生活場景。隨著計算機視覺技術的迅速發展,平面憑借其特殊的幾何特性,在計算機視覺領域中發揮著越來越重要的作用。例如在增強現實領域中,在場景中加入虛擬物體通常要依托于某些平面結構,這樣才能滿足物理上的真實感;再如當下智能手機中的全景拍照功能,就是利用同一個場景下運動拍攝的多張照片,檢測出圖像中的多個平面并進行配準,然后拼接起來得到全景圖像。
對于人眼來說,判斷圖像中的平面結構是一件輕而易舉的事情,但對于計算機而言,理解和識別圖像中的平面結構是一大難題。隨著硬件的發展,出現了3D攝像頭,可拍攝含有深度信息的圖像,即RGB-D圖像,對于RGB-D圖像,可根據其深度信息恢復重建三維場景,從而提取出場景中的平面。但3D攝像頭尚未普及前,從RGB圖像中提取平面仍是亟需解決的課題。
目前針對二維圖像的平面檢測算法中,最常用且表現最好的是基于特征點匹配的平面模型擬合方法。首先采集同一場景在不同視角下的多張圖像,通過對多張圖像進行特征點檢測和匹配得到特征點對數據集,由匹配的特征點對擬合出單應性矩陣來定義平面模型。這一類方法存在明顯的弊端:
(1)嚴重依賴于特征點檢測與匹配的準確度。當圖像中平面較光滑時,無法檢測到足夠的特征點;當圖像中含有噪聲或者大量重復紋理時,很容易出現錯誤的匹配。而這些情況會導致無法提取平面模型、生成虛平面(不存在的平面)、生成的平面模型存在極大的誤差等各種情況。
(2)檢測出的平面是非連續的。此類方法是通過點到模型的匹配關系,將每個特征點分配到對應的平面模型,最終的檢測結果僅僅是對離散的特征點的劃分,而非對整幅圖像的連續的、逐像素的劃分。
(3)需要采集場景在不同視角下的多幅圖像。如果圖像間的視角變化不明顯,則無法區分不同的平面,這一前提條件也使得這一類方法的應用受到了極大的限制。
鑒于此,本文提出一種新的平面檢測算法,首先利用圖像分割技術提取出圖像主體部分,然后基于輪廓提取技術和平面的幾何特性提取出主平面的輪廓,最后使用擬合技術并結合圖像中的邊緣信息對平面的邊界進行優化。
Toldo等[1]提出了基于隨機抽樣和概念數據表示的J-linkage聚類算法,將樣本數據放入相似概念空間中進行分析,使屬于同一模型的數據元素在相似概念空間中聚為一類.Tardif等[2]將J-Linkage聚類算法應用到消失點檢測,多次隨機取樣得到一定數量的消失點假設模型,然后計算每一條直線到所有消失點模型的匹配程度,若消失點與直線距離小于某個閾值則相匹配記為1,反之為0,從而每一條直線對應一個0-1向量,稱為該直線的偏好集。將偏好集相似的直線聚為一類,最終得到多個聚類,每一個聚類中的直線近似相交于對應的消失點。本文使用此聚類思想對場景中的直線段進行聚類處理,由于日常的戶外場景通常為曼哈頓結構[3],直線段聚類后主要有三類,且三類直線段在三維空間中的映射是相互正交的,如圖3所示,直線段主要分為了紅綠藍三類,三類直線分別近似相交于消失點v1,v2,v3。設相機的焦距為 f,根據曼哈頓結構中消失點的幾何性質[4],消失點的相機坐標( )vix,viy,f相互正交,即滿足公式vix*vjx+viy*vjy+f*f=0(i≠j),由此可求得相機焦距 f,以及內參矩陣,cx和cy分別為主點橫縱坐標,即圖像中心點的坐標值。

圖1
圖像分割即把圖像分成若干個特定的、具有獨特性質的區域并提取出感興趣目標的技術和過程,隨著深度學習技術的發展,圖像分割技術已能將視覺輸入分為不同的語義可解釋類別。本文使用DeepLabv3模型[5]將場景中的主體建筑部分分割出來,效果如圖2a所示,隨后提取該部分的所有輪廓,篩選出符合條件的主輪廓,由于提取的輪廓所含節點極多,這里先將輪廓擬合成一個多邊形,從而在不影響輪廓整體形狀的前提下保留盡量少的節點,如圖2(b)所示,其中紅色線條構成的多邊形即為擬合結果。

圖2
從圖2(b)中可看出,擬合后的多邊形輪廓仍存在許多誤差,所以隨后需要做進一步優化,刪除無效的節點。記輪廓中任意相鄰的三節點為vi,vj,vk,vj的兩條鄰邊為lij、ljk,若線段lij和ljk的斜率差小于某閾值,則刪除節點vj,將節點vi與節點vk相連。接下來,在剩余的節點中,尋找三平面的交點V,使得其滿足:

其中,H1(A1,B1,C1),H2(A2,B2,C2)為輪廓中所求交點V的兩條鄰邊,H3(A3,B3,C3)是過點V的直線段,vi、vj、vk分別為2.1節中所求的三個消失點。即過所求節點V的三條直線段正好對應三個不同的消失點方向,H3即為某兩個平面間的分界線,如圖3所示,綠色圓點為三平面交點V,藍色線段即為左右兩平面的分界線H3,將其延長后可將原輪廓分成兩部分,計算每個部分的區域面積,面積最大的部分即為場景主平面,剩余平面可根據實際需要保留。

圖3主平面輪廓
上一節中提取的平面輪廓很不規則,接下來做進一步優化。按逆時針方向記平面輪廓節點為ri(i=0,1,…,n),起點r0為圖3中綠色節點,記2.2節中所求平面分界線H3延長后的直線段為L1,輪廓中L1相鄰的兩直線段分別為 Lpre、Lnext,Pi(i=1,2,3,4)為 4個點集,初始為空,分別對應平面的4條邊Li(逆時針方向),kj為節點ri和ri+1之間線段的斜率。將rj(j=1,…,n-1)按如下規則分類:
(1)rj∈P2,當dist(rj,Lpre)/dist(rj,Lnext)>5);
(2)rj∈P4,當dist(rj,Lnext)>5)/dist(rj,Lpre);
(3) rj∈P2且 rj∈P3,當 dist( rj,Lnext)<10)且| kj-1-k1|
(4) rj∈P3且 rj∈P4,當 dist( rj,Lpre)<10)且| kj-1-kn|
(5)rj∈P3。
將分類后的點集Pi,使用RANSAC(Random Sample Consensus,隨機抽樣一致性)算法擬合得到平面的另外三條邊界線段L2,L3,L3,將其作為初值,構造代價函數:

對平面邊界進行優化,其中li為待求的四條線段參數,w=K-TK-1為絕對二次曲線,K為2.1節中所求得的相機內參矩陣和分別為待求的平面邊界Li中兩組對邊的交點,由于平面邊界線段在3D空間的映射中對邊相互平行且鄰邊相互垂直,所以滿足絕對二次曲線約束[6],即。這個具有非線性約束的最小二乘問題可通過LM(Levenberg-Marquardt,列文伯格-馬夸爾特)算法迭代求解,優化結果如圖4所示。由于算法流程中輪廓本身就存在一定誤差,可將所求直線段與圖像邊緣檢測的結果進行匹配,如果某直線和所擬合直線相似程度達到一定閾值,則將該直線作為最終的邊界。我們采用公式‖來衡量兩直線的相似程度,Qk(k=1,…,m)為圖像中檢測到直線段,m為擬合的直線L上所取的第j個等分點iji表示直線Qk與點mij的距離范數,使S最小的Qk則是與Li相似程度最高的直線段,當S<2時,則用Qk替代Li,最終結果如圖5。需要注意的一點是對于非矩形平面,即不滿足曼哈頓結構的場景,則忽略使用絕對二次曲線作約束進行優化的步驟,直接將擬合的線段與圖像邊緣線段進行匹配。

圖4擬合的平面邊界

圖5優化后的平面邊界
傳統的平面提取算法需要不同視角下的多幅圖像,所得結果僅僅是對離散的特征點的劃分,而非對整幅圖像的連續的、逐像素的劃分,而本文算法是提取單幅RGB圖像中的完整平面區域,所以未作對比分析實驗。為了驗證此平面檢測算法的有效性,我們在多個場景下進行了實驗,部分實驗結果如圖6所示。


圖6其他實驗結果
本文所提出的平面檢測算法,是在單幅RGB圖像上,利用圖像分割、輪廓提取技術,以及平面的幾何特性檢測出主平面,并利用圖像中的邊緣信息對平面的邊界進行優化,最終得到完整、連續的平面區域,可為后續平面跟蹤、三維重建等工作提供豐富的先驗信息,極大地節省了算法開銷。但本文算法也存在一定的缺陷,適用范圍限于平面結構相對簡單的戶外場景,且對于一些干擾因素如遮擋、平面丟失等比較敏感。鑒于此,我們下一步的工作目標是提高算法的普適性和魯棒性。另外,由于傳統的平面檢測算法未重視平面的整體外觀特征,充分利用平面的輪廓結構等幾何特征并結合深度學習技術來檢測單幅RGB圖像平面將是我們下一步工作的主要研究路線。