影像拼接
影像拼接是把數張重疊的照片合併成單一張無縫廣角影像的過程,也就是當你的手機要你緩慢橫掃一片風景時所得到的全景。挑戰有兩重:第一,找出能把每張照片與其鄰居對齊的幾何變換,使同一個建築轉角落在同一個像素上;第二,融合重疊區域,使沒有任何可見的接縫、亮度跳變或重影洩漏出這個結果是由碎片組裝而成的。做得好,拼接能把一連串狹窄的視野化成一個相機在單張快門中永遠無法捕捉的連貫場景。
對齊這一半奠基於本領域的一切。在每張影像中偵測關鍵點(SIFT、ORB)、描述它們,並用比值測試在重疊的成對影像之間比對描述子。由於許多配對是錯的,要用 RANSAC 穩健地估計每一對之間的幾何關係。當相機繞其中心旋轉、或場景實際上是個遠方平面時,那個關係就是單應性,所以拼接本質上是把多個單應性串接起來,把所有影像帶入一個共同的座標框。對於多影像全景,接著用一個全域的束調整(bundle adjustment)聯合精修所有相機方向,把對齊誤差均勻分配,並避免在繞 360 度一圈時累積漂移。
在融合之前,影像會被變形到一個共同的曲面上。對於寬廣的全景,平面是個糟糕的畫布(當視野接近 180 度時,它會把邊緣拉伸到無窮遠),因此影像被投影到圓柱或球面上,全景再從那個曲面攤開;這就是為什麼手機全景看起來微微彎曲。變形會用估計出的變換與內插,把每張來源影像重新取樣到全景的座標系統中。
融合這一半隱藏接縫。即便對齊良好的照片,曝光與白平衡仍有差異,因此光度調整(增益補償)會先把各影像間的亮度均衡。接著在重疊區中選出一條接縫,常沿著一條穿過影像彼此一致之區域的路徑(圖割接縫尋找,graph-cut seam finding),以避免切過一個移動中的人而製造重影。最後,影像以多頻帶融合(multi-band blending)合併,它在寬的過渡區上混合低空間頻率、在窄的過渡區上混合高頻率,使大的亮度差異平滑淡化、同時細微細節保持銳利。經典的完整系統是 Brown 與 Lowe 的 AutoStitch;現代手機流程加入了運動處理、去重影與學習式元件,但「特徵比對、RANSAC 單應、變形、融合」這個骨架依然存在。
用單一單應性拼接,唯有在相機繞其光學中心旋轉、或場景為平面時才有效。若你拍攝 3D 場景時橫向走動,視差會讓近物與遠物移動不同的量,沒有任何單應性能同時對齊兩者,於是你會得到重影。解法是原地旋轉拍攝,或採用完整的 3D/多平面方法。