原文:https://blog.csdn.net/zouxy09/article/details/8083553
之前看到Stanford大學的機器學習公開課程的lecture01中,Andrew Ng介紹他的兩個學生用單幅圖像去重構這個場景的三維模型。感覺非常厲害,所以就自己了解了一下。而這個研究也在相應的大學網站上面提供了詳細的資料,包括相關論文、編寫的代碼和訓練涉及到的樣本庫等等。
斯坦福大學:
http://ai.stanford.edu/~asaxena/reconstruction3d/
康奈爾大學:
http://www.cs.cornell.edu/~asaxena/learningdepth/
下面是個人看了下上面的《Learning 3-D Scene Structure from a Single Still Image》這篇論文的一點點理解,暫時還沒涉及到具體的數學模型內容,如果后面自己有機會在這個方向往下做的時候,再做具體的分析了。
人看到一張靜態圖像去理解它的3D結構是一件很容易的事,因為人有圖像里面這些物體的先驗知識(當然得包含生理和心理效應),例如水是在地下的,天空和白雲在上面,大部分的牆壁是直立的平面,桌子是方的,樹是長在地面的,而且上面有葉子,還有山水啊,植物,動物啊等等,人看到它的一面,可以聯想到它的立體結構。這也是為什么人用一個眼睛也能“看到”三維世界的原因。但對於計算機來說,由於投射投影,3D場景投射到2D空間里面,就損失了很多的信息,例如深度信息,同時諸如光照,材料特性、朝向、距離等信息都反映成唯一的測量值——灰度,因而要從這唯一的測量值恢復上述一個或幾個反映物體本質特征的參數是一個病態過程(又稱不適定性問題,即解不唯一。觀測數據不足以約束問題的解,因此要利用先驗知識或引入合適約束)。所以從單張圖像去理解圖像場景的3D結構就很困難了。
以前為了實現3D重構,一般都是通過兩個(模擬人的雙眼)或者多個攝像頭來獲取圖像,再配准的。當然,也有研究單張圖像的,但是都會對場景做很多的假設,例如由明暗恢復形狀shape from shading(SFS)(利用單幅圖像中物體表面明暗變化恢復其表面各點的法向方向進而求得其相對高度),運用光學輔助等,使用有很大的局限性。現在呢,就有很多的深度攝像頭出來了,例如kinect,但還是兩個攝像頭(一個彩色,一個紅外用於測圖像深度,也就是測場景中物體到相機的距離);還有就是去年三星開發的在傳統的cmos圖像傳感器里面增加可以測距的紅外感光元,這樣一個攝像頭就可以獲取彩色和深度圖像了,但是目前技術還不是很成熟,應用還不廣。
那么現在我們是討論怎樣從單張靜態圖像去重構其3D場景(不需要對場景做假設)。
圖像為3D空間在2D平面(圖像傳感器)的投影,那么同一個投影可能是由無限種可能的3D場景投影產生的(還記得投影的概念不?)。這就是重構的困難。但是,不是每一種可能都是合理的,我們要做的就是找到最有可能投影為這張2D圖像的3D場景(是不是有點概率論和貝葉斯的味道了)。因為我們生活的環境是結構性的,也就是說物體大部分是規則和有聯系的,所以我們才可以通過一些描述這類規則和聯系的先驗知識去預測哪一種3D場景的可能性最大,最合理。
我們可以借鑒人的理解原理,將人對場景理解的先驗知識賦予計算機,讓計算機通過分析圖像的特征去獲得額外的3D結構的信息,通過這些信息去進行3D重構。那么現在的第一個問題是:圖像中有哪些信息對場景的理解有用呢?
被觀察對象本身具有某些特征,觀察者即使只用一只眼睛也可以獲得足夠的深度信息,這種特征就稱為單眼線索。人類單眼感知距離的手段包括:遮擋、紋理梯度、明暗線索、線條透視、聚焦調節等。
在空間關系上,處於同一視線上的各物體間相互遮擋,實際所看到的只是離觀察者最近的物體,這一點在美術、工程制圖等方面得到了充分的運用。這種遮擋提供了物體相互間的相對空間關系。
大片的相似景物常常能夠提供足夠的紋理信息,實際上在日常生活中經常會不自覺地利用這一信息,如“近者大,遠者小,近者在圖像的下緣,遠者在圖像的上緣”。這種單眼線索是根據對象的紋理大小、疏密、位置來獲取深度信息的。這種紋理大小、疏密、位置分布被稱為紋理梯度。
明暗和陰影的變化也提供了一種有效的深度線索。對於具有相同質地的物體,明暗提供了關於朝向的信息,這也就得到了相對距離信息。
線條透視是指平面上的對象在面積的大小、線條的長短以及線條之間距離遠近等特征上所顯示的能夠引起深度感的單眼線索。典型的線條透視是在平行的道路、鐵軌等圖像中體現的,在線條輪廓畫中這一特點得到了充分的運用。
前面幾種空間深度感知的單眼線索可以說都是心理性的,是從長期的訓練和適應中形成的。而眼睛的聚焦調節則是具有生理基礎的單眼線索。通過調節水晶體的曲率變化使得物體在視網膜上得到清晰的象。這種調節引起視覺感受器的神經沖動,進而傳入中樞神經系統的運動區,也可以產生深度知覺。
在計算機視覺的研究中,對上述感知手段的模擬產生了一大類稱之為Shape from X的技術。
而在本論文中,其主要的思想如下:我們把圖像划分為很多小的區域(通過聚類算法),每個區域的像素的屬性相似,例如紋理、顏色等,這個區域稱為Superpixels,一個Superpixels一般是結構的一小部分,例如牆壁或者平面的一部分等,我們的工作就是先通過分析像素的相似性去對圖像進行分割(或者聚類),將其划分為多個結構區域(例如2000個),然后再預測這些Super pixels的3D位置和方向。
圖像有用的屬性:
(1)圖像特征與深度:Superpixels的圖像特征與深度(和方向)存在着一定的聯系;
(2)連接結構:除了occlusion的情況,一般相鄰的Super pixels是最有可能互相連接的;
(3)共面結構:相鄰Super pixels很有可能屬於同一個平面,如果他們有相似的特征,而且兩者之間沒有邊緣;
(4)共線結構:圖像中的長直線代表了3D場景中的直線,例如建築物的邊緣、人行道、窗等;
上面說到,我們可以通過一個模型去描述這些Superpixels的3D位置和方向與圖像特征的關系,也即找到一個函數,我們輸入一張圖像的特征,然后這個函數就輸出對應的3D位置和方向,也就實現了3D重構。那么問題是:怎樣的模型才可以比較好的描述這種關系呢?這里用到的是馬爾科夫隨機場Markov Random Field (MRF)。那么什么是MRF?為什么它能很好的描述這種關系?又怎樣去求解這個模型呢?(機器學習:通過提供圖像和相應的深度圖像去訓練得到MRF模型)。借用別人的解釋來說明下:
馬爾科夫隨機場(Markov Random Field),它包含兩層意思:一是什么是馬爾可夫,二是什么是隨機場。
馬爾可夫一般是馬爾可夫性質的簡稱。如果一個過程的“將來”僅依賴“現在”而不依賴“過去”,則此過程具有馬爾可夫性,或稱此過程為馬爾可夫過程。X(t+1) = f(X(t))。拿天氣來打個比方。如果我們假定天氣滿足馬爾可夫性質,其意思就是我們假設今天的天氣僅僅與昨天的天氣存在概率上的關聯,而與前天及前天以前的天氣沒有關系。其它如傳染病和謠言的傳播規律,就是馬爾可夫的。
隨機場包含兩個要素:位置(site),相空間(phase space)。當給每一個位置中按照某種分布隨機賦予相空間的一個值之后,其全體就叫做隨機場。我們不妨拿種地來打個比方。“位置”好比是一畝畝農田;“相空間”好比是種的各種庄稼。我們可以給不同的地種上不同的庄稼,這就好比給隨機場的每個“位置”,賦予相空間里不同的值。所以,俗氣點說,隨機場就是在哪塊地里種什么庄稼的事情。
好了,明白了上面兩點,就可以講馬爾可夫隨機場了。還是拿種地打比方,如果任何一塊地里種的庄稼的種類僅僅與它鄰近的地里種的庄稼的種類有關,與其它地方的庄稼的種類無關,那么這些地里種的庄稼的集合,就是一個馬爾可夫隨機場。
在圖像中MRF定義的直觀意義是,位置s的像素值只受到周圍點Ns的影響,而與其他的點無關。它提供了方便而直接的方法以概率來描述圖像像素具有的一些空間相關的特性。
上面說到,利用二維投影圖像來重構三維物體的可視部分的問題是一個病態問題。那么什么叫病態問題呢?如果一個問題的解是存在的、唯一的,而且連續依賴於初始數據,那么稱其為適定的,當不能全部滿足上述條件時,就稱其為不適定的(沒有唯一解)。不適定性問題(即病態問題),觀測數據不足以約束問題的解,因此要利用先驗知識或引入合適約束。針對我們的問題來說,就是給你一幅圖像(觀測數據),它所代表的3D場景有無限種可能(無數個解),所以我們需要利用先驗知識去增加約束,不滿足約束的解是不正確的,找到一個最優的解。不適定問題(或者病態問題)的典型處理方法有兩種:正則化方法和馬爾可夫隨機場(MRF)的方法。
馬爾可夫隨機場不但可以表征二值紋理,還可以利用吉布斯分布模型表征多值紋理,利用隨機松弛算法或者確定性松弛算法,獲得了圖像分割的MAP估計。
一維MARKOV隨機過程(一階的情況)很好的描述了隨機過程中某點的狀態只與該點之前的一個點的狀態有關系。二維MRF的平面網格結構同樣可以較好的表現圖像中像素之間的空間相關性。
MRF理論可以根據圖像中像素之間的相關模式確定先驗概率。MRF理論在實際應用中常常與統計決策和估計理論相結合,根據一定的最優化准則來確定目標函數。最大后驗概率(MAP)是最常用的最優化准則,也是MRF建模中最常用的最優化准則。