特徵描述子
特徵描述子是一串簡短的數字——也就是一個向量——它概括了某個有趣的點周圍那一小塊影像看起來是什麼樣子,好讓電腦能在另一張圖裡再次認出同一個點。可以把它想成照片中某個位置的「指紋」。攝影機並不能像你那樣理解「這扇窗戶的拐角」;它的做法是抓取拐角周圍那一小片像素鄰域,測量那裡明暗與邊緣的圖案,再把它濃縮成大約 128 個或 256 個數字。兩塊看起來相似的區域,會得到幾乎相同的數字,即便這兩張圖是從略微不同的角度、或在不同光照下拍的。
把一小塊影像壓縮成一個緊湊而穩定的向量,目的在於「匹配」。當機器人從兩個視角看同一個場景,或看影片中的兩幀畫面時,它想知道:圖 A 中的哪個點,和圖 B 中的某個點,對應的是同一個真實物理位置。直接逐像素比較整塊區域既慢,又會在光照或角度一變就失效。改成比較描述子就很快——你只需測量兩串數字有多接近——而一個設計良好的描述子,即使那塊區域被旋轉、縮放、調亮,或從新角度去看,它也大致保持不變。正是這種穩健性,讓匹配能夠熬過真實世界的種種雜亂。
描述子只在精心挑選出的關鍵點上計算,通常是拐角以及其他顯眼、容易再次找到的位置,而不是在每一個像素上都算。經典的人工設計描述子包括 SIFT、SURF、ORB 和 BRIEF;較新的系統則用神經網路從資料中自動學出描述子。無論哪種方式,匹配好的描述子都會成為更大任務的原始黏合劑:把多張照片拼成全景圖、追蹤攝影機如何移動,以及為一處空間構建三維地圖。
要把兩張有重疊的照片拼成全景圖,軟體會在每張圖裡找出拐角,為每個拐角算一個描述子,再把描述子幾乎完全一樣的拐角配成對——這些配對就揭示了兩張照片該如何對齊。
匹配描述子,能告訴軟體兩張圖裡哪些點是同一個點。
描述子描述的是關鍵點「長什麼樣」;而關鍵點偵測器決定的是這些有趣的點「在哪裡」。它們是配成一對、各司其職的兩個獨立步驟。