2018.02.09 09:00

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

ADVERTISEMENT

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

變形或裁切的兩難

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

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

ADVERTISEMENT

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

ADVERTISEMENT

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

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

ADVERTISEMENT

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

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

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

ADVERTISEMENT

 

如果讀者想要更深入瞭解Seam Carving的話,可以詳細閱讀開發團隊釋出的白皮書,而想要動手玩玩看的話,也可以嘗試由Endre Simo所開發的Caire,看看這個演算法的效果如何。

ADVERTISEMENT