Seam Carving 图像演算法,改变图片长宽比例后不违和

如果我们要修改图片长宽比例,比方说把 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,看看这个演算法的效果如何。