ADVERTISEMENT
如果我們要修改圖片的長寬比例,比方說把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,看看這個演算法的效果如何。
> Seam Carving也能用於移除物件,左圖為原始圖,小圖的紅色區為欲移除物件,綠色區則為不希望改變比例的物件。處理後圖中已看不到女子,而男子還維持原樣。
>
> 最後一段,紅色跟綠色寫反了
謝謝提醒,已修正
左側建築物 底下被拉扯,
夜間道路圖,右側的建築門簾變形
最下面修改女人的,旁邊電燈桿子異常歪曲
山海涯 由於都是不規則,除了船帆的直桿外,所以找不到破綻
不過這樣修圖很省人力 XD