運動恢復結構
運動恢復結構,是這樣一種巧辦法:只用一組普通的二維照片——相機一邊四處移動、一邊在不同位置拍下的——就把場景的三維形狀,連同每張照片拍攝時相機所在的位置,一併恢復出來。單獨一張平面照片把深度資訊丟掉了——光看一張圖,你說不出任何東西離你有多遠。但若把相機挪上幾步再拍一張,畫面中近處的東西移動得比遠處的東西更明顯,正如你坐在車裡,路邊的籬笆樁飛快地從車窗掠過,而遠山卻幾乎紋絲不動。運動恢復結構,正是從這種位移裡反推出世界的佈局和相機走過的路徑。
它由兩個相互咬合的部分組成,這兩部分的名字也正是它得名的由來。首先,它要在許多張照片之間找到同一些物理點——某扇窗戶的某個角、路面上的同一道裂縫——辦法是在每張影像裡挑出有辨識度的特徵、再把它們匹配起來。然後,它去解一道巨大的拼圖:基本上只存在唯一一組自洽的相機位置、和唯一一種自洽的三維點擺放方式,能夠恰好產生出每張照片裡所看到的那些匹配。解開這道拼圖,就同時得到了「結構」(那些三維點)和「運動」(相機的各個位姿),二者還互相幫著把對方釘得更準。
由此帶來的好處是:一台普通的、移動著的相機,搖身一變成了三維掃描儀。一架繞著建築物盤旋的無人機,把它的影片變成一個三維模型;一部繞著物體走一圈的手機,建起一個可供列印的網格;一個在走廊裡探索的機器人,既恢復出地圖、也恢復出自己穿行其中的軌跡。它的輸出通常是由那些匹配點構成的一團稀疏點雲,連同恢復出的相機路徑,後續步驟可以把它加密成完整的曲面。
數百張從各個角度、歷經多年拍下的同一座大教堂的遊客照片,可以餵給運動恢復結構軟體,它會同時恢復出這座建築的三維模型,以及每位拍攝者當時所站的位置。
輸入許多張平面照片,輸出一個三維場景,外加所有相機的位置。
僅憑照片,恢復出的模型沒有真實世界的尺度——它的形狀是對的,但既可能是個娃娃屋、也可能是座大教堂——直到一個已知的測量值或第二個感測器把尺寸釘定下來。