Seam Carving 圖像演算法,改變圖片長寬比例後不違和

69

如果我們要修改圖片長寬比例,比方說把 4:3 的圖片拉寬成 16:9,最常遇到的問題就是比例失真讓圖片看了不太舒服(人物變得矮胖),然而 Seam Carving 圖像演算法可透過分析,剔除圖像中不重要的部分,讓主要人物或物品比例不受影響。

變形或裁切的兩難

筆者直接以下列範例,來說明改變圖片長寬比例會造成的問題。假設我們將原始比例為 4:3 的圖片,直接放到 16:9 的螢幕,就會發現左右兩側空間沒有內容。

但將畫面拉伸至滿版的話,就會產生建築物比例失真;然而照比例放大的話,則會遇到建築物被裁切、無法顯示完整圖片。

三菱電子研究實驗室(Mitsubishi Electric Research Labs)的 Shai Avidan、以色列 Interdisciplinary Center 學院的 Ariel Shamir 研發的 Seam Carving 圖像演算法,就能解決這個兩難問題。

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

調整不明顯的區域來改變比例

Seam Carving 圖像演算法的概念,是辨識圖片中哪些區域是重要物件,哪些區域改變比例後失真較輕微,程式就會透過拉伸或壓縮不明顯的區域,來達到改變比例的效果。

實際應用時,程式會先邊緣偵測,產生圖片的能量分布圖(Energy Map),並分析這些數據,找出代表不重要的能量最低區域。接下來程式會根據改變比例為垂直或水平方向,由上到下或由左至右,透過演算法計算出每條「縫合線」權值,權值越高代表該縫合線上的像素越重要。

有了這些數據後,程式會估算各種連接各縫合線的可能方式,找出累積最少能量的連接方式,並反覆計算,找出改變比例後,影響視覺最少的區域,最後就能透過「犧牲」這些區域,改變圖片的比例。

Seam Carving 除了能調整比例,還能應用於其他圖像處理領域,舉例來說,要移除圖中物件,也能透過 Seam Carving 維持圖片視覺的一致性。

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

Seam Carving 圖像演算法,改變圖片長寬比例後不違和

如果讀者想更深入了解 Seam Carving,可詳細閱讀開發團隊釋出的白皮書;若想動手玩玩看,可嘗試 Endre Simo 開發的 Caire,看看這個演算法的效果如何。

(本文由 T客邦 授權轉載;圖片來源: