如果我們要修改圖片長寬比例,比方說把 4:3 的圖片拉寬成 16:9,最常遇到的問題就是比例失真讓圖片看了不太舒服(人物變得矮胖),然而 Seam Carving 圖像演算法可透過分析,剔除圖像中不重要的部分,讓主要人物或物品比例不受影響。
變形或裁切的兩難
筆者直接以下列範例,來說明改變圖片長寬比例會造成的問題。假設我們將原始比例為 4:3 的圖片,直接放到 16:9 的螢幕,就會發現左右兩側空間沒有內容。
但將畫面拉伸至滿版的話,就會產生建築物比例失真;然而照比例放大的話,則會遇到建築物被裁切、無法顯示完整圖片。
三菱電子研究實驗室(Mitsubishi Electric Research Labs)的 Shai Avidan、以色列 Interdisciplinary Center 學院的 Ariel Shamir 研發的 Seam Carving 圖像演算法,就能解決這個兩難問題。
調整不明顯的區域來改變比例
Seam Carving 圖像演算法的概念,是辨識圖片中哪些區域是重要物件,哪些區域改變比例後失真較輕微,程式就會透過拉伸或壓縮不明顯的區域,來達到改變比例的效果。
實際應用時,程式會先邊緣偵測,產生圖片的能量分布圖(Energy Map),並分析這些數據,找出代表不重要的能量最低區域。接下來程式會根據改變比例為垂直或水平方向,由上到下或由左至右,透過演算法計算出每條「縫合線」權值,權值越高代表該縫合線上的像素越重要。
有了這些數據後,程式會估算各種連接各縫合線的可能方式,找出累積最少能量的連接方式,並反覆計算,找出改變比例後,影響視覺最少的區域,最後就能透過「犧牲」這些區域,改變圖片的比例。
Seam Carving 除了能調整比例,還能應用於其他圖像處理領域,舉例來說,要移除圖中物件,也能透過 Seam Carving 維持圖片視覺的一致性。
如果讀者想更深入了解 Seam Carving,可詳細閱讀開發團隊釋出的白皮書;若想動手玩玩看,可嘗試 Endre Simo 開發的 Caire,看看這個演算法的效果如何。
(本文由 T客邦 授權轉載;圖片來源: