由2D照片重建物體之3D模型

指導教授:賴尚宏
姓名:許秉慧
學校:清華大學
系級:資工03級

1. Introduction:

本次專題的目的在於藉由數位相機的拍攝,得到一張或多張物體的照片(由不同的角度拍攝這個物體),再利用這些照片,來重建出物體在三度空間中的立體模型。

一般來講,對於一個具有立體形狀的物體,想要知道他的結構, 一定得要知道長寬高等資訊,對於比較小的物體,像是小盒子, 小箱子這類物品得到這些資訊,用一般的尺量就可以很容易的得到了。但對於一棟高聳的建築物,除了以專門的測量儀器,請專業人士幫忙測量之外,便很難有比較簡單的方法可以得到他的結構資訊,於是開始研究是否可用更簡單的方法來收集必要的資料,然後藉由電腦的幫助復原出物體在空間中的3D形狀呢。我這一次的專題,就是希望可以藉著攝影—一種很方便的方法,拍下的物體照片,作為收集資料的方法,再將照出的照片用來算出物體在3度空間中真正的座標。

2. Theory:

我們舉物體的任一Edge為例,他在照相機中成像的原理如下圖所示:


Image plane可以視作是照相機的底片(實際上應該是在+Z的位置,而非圖中的-Z,但就成像原理來講,放在+Z或-Z都沒有差別),Camera Coordination System的原點可以視作是照相機鏡頭的位置,3D line則是建築物的某個邊。首先,我們知道3D空間中的線都可用兩個參數(v,d)表示出來,其中 v 為線的方向向量而d為線上某點,這個點是在線上的所有點中,離原點最近的那一個點。

由(1)推出(2):

理論上,由(2)可知,真正的Rj及wTc會使下面兩個等式滿足。

但實際上只要滿足使CA1,C2最小的Rj及wTc就被視作是真正的所求。求出預測的3D line座標跟圖中被標出的線之間的誤差。用來選擇使總誤差最小的Rj及wTc

將Rj及wTc帶入下面的公式中,使產生的Error最小,就是我們要的旋轉及平移矩陣了。

 

3. Algorithm:

    1. 輸入資料(User input) => 輸入數位相機所拍的物體照片。定義出世界座標。 (可以任意定義,例如可以把他想成是在地球上,以地心 為原點,物體的3D座標系)
    2. 取出資料中有用資訊(get information) => 現在,將輸入的圖片,可以看到的edge以滑鼠標示出來,當輸入的圖片數目大於一張時,我們必須在標示的同時,對邊線標號,這樣做的目的是要讓不同照片中,實際上相同的edge可以統合在一起。名詞解釋:邊線(EDGE)=>是指物體的邊,舉例來說,
      一個長方體物體,便具有12條邊線。
    3. 電腦所做的運算(Photogrammetric Modeling System) => 利用Step2中所得到的edge座標,以algorithm A算出每張照片被拍攝時,照相機相對於物體的可能位置(=照相機座標,以相對於世界座標的矩陣R及位移矩陣T表示),然後採用Algorithm B來決定最後可能的的矩陣R及位移矩陣T,及藉此算出的edge,此edge對應回原照片後,他跟照片上觀察到的edge間,誤差會最小, 最後利用R及T,將由圖取出的edge座標資訊,轉換為在世界座標中的可能座標位置。
    4. 結果 => 得到了以同一個座標系(即世界座標),所表示的邊線資訊(我是選擇以線的方向向量v及距離原點最近距離點d來表示邊線的位置),將所有的邊線資訊組合起來,就可以建構出物體的立體模型了。

     

4. Experimental Results:


Input - 綠色的線即為標示出的 edge。



Reconstructed 3D model under different view points.

 

5. References:

http://www.cis.upenn.edu/~cjtaylor/projects/Facade/Facade.html