接缝裁剪

科技工作者之家 2020-11-17

接缝裁剪(Seam carving),是一个可以针对照片内容做正确缩放的算法(由Shai Avidan和Ariel Shamir所发表)。概念上,这个算法会找出好几条seams,而这些seams是在照片中最不重要的一连串像素,接着再利用这些seams,对照片做缩放。如果是要缩小照片,则移除这些seams,若是放大,则在这些seams的位置上,插入一些像素。

这样的技术可以用在image retargeting,将照片正确且没有扭曲得放在各种大小的屏幕或位置上,比如说,手机、投影幕等等。

简介接缝裁剪(Seam carving),是一个可以针对照片内容做正确缩放的算法(由Shai Avidan和Ariel Shamir所发表)。概念上,这个算法会找出好几条seams,而这些seams是在照片中最不重要的一连串像素,接着再利用这些seams,对照片做缩放。如果是要缩小照片,则移除这些seams,若是放大,则在这些seams的位置上,插入一些像素。

这样的技术可以用在image retargeting,将照片正确且没有扭曲得放在各种大小的屏幕或位置上,比如说,手机、投影幕等等。1

SeamsSeams 有两种形式,水平或垂直的。若是水平的seam,则它会是一串从照片最左侧到最右侧的像素,而像素的数量等于照片的宽。反之,若是垂直的seam,则是一条从照片顶端到底端的pixel,pixel数量则等于照片的长。1

算法1. 首先,拿到一张需要缩小的照片(这里以缩小举例)

2. 接着计算照片中每一个像素的强度(energy),这一步可以由很多算法完成,这里以gradient magnitude为例。

3. 有了每一个pixel的强度后,可以利用一些算法,像是dynamic programming等等,找到图中数条强度较低的seams。

4. 接着把这些seams拿掉,就可以拿到一张缩小后的照片。

5. 若是需要放大图片,则可以在这些找到的seam的旁边,增加pixel,而pixel的value可以简单的取附近的pixel的平均。1

计算 seams在这个算法中,每次要找出一条照片中能量最小的seam,这里的能量可以想成是频率低,或者是照片中较为不重要的pixel。而找出seam的方法有很多种,可以利用dynamic programming或者其他算法完成。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。