機器人視覺與感知
針孔相機模型
針孔相機模型是關於相機如何把三維世界變成一張平面圖像的簡單、理想化的圖景。想像一個黑暗的盒子,前面只扎了一個極小的孔。世界中某一點發出的光沿直線前進,穿過那唯一的小孔,落在盒子的後壁上,在那裡畫出一幅上下顛倒的圖像。由於每一條光線都必須穿過同一個小孔,這個模型就把相機當作空間中的一個點——而僅憑這一條假設,就足以精確預測現實世界中任何一點會出現在照片的哪個位置。
隨之而來的幾何關係,其實只是相似三角形。距離遠一倍的點看起來就小一半;更根本的規律是,一個物體的成像大小與它的距離成反比——距離翻一倍,成像就減半——再乘以相機的焦距(後壁離小孔有多遠)來放大比例。這正是投影的核心:把表示位置的三個數字壓縮成平面感測器上的兩個數字。這個模型讓機器人能夠反過來推理——給定一個像素,它就知道這個像素可能來自哪一條方向的射線,儘管單憑一張圖像它還無法判斷距離。
真實的鏡頭並不是針孔,所以這個模型是一種近似。它忽略了模糊、玻璃對光線的彎折,以及把直線壓彎成曲線的鏡頭畸變。但它如此簡潔又有用,以至於幾乎所有的機器人視覺都從這裡出發,然後在它之上加一些小的修正,而不是把這個模型整個扔掉。
一台機器人在 4 公尺外給一扇 2 公尺高的門拍照,相機的焦距相當於 800 個像素。按針孔規律,這扇門在圖像裡大約成像為 400 像素高——距離翻一倍,成像就縮小一半。
同一個實物,距離增加一倍,成像大小減半——這正是針孔模型的核心預測。
在真正的針孔後面,圖像確實是上下顛倒成像的;在數學和軟體裡,人們通常把成像面翻到小孔前方的一個虛擬像平面上,讓結果變成正立的。
又稱
另見