【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

时间:2022-10-12 13:56:51


大家好,这是专栏《计算摄影》的第九篇文章,这一个专栏来自于计算机科学与摄影艺术的交叉学科。

                                            作者&编辑 | 言有三

今天要介绍的一个问题,叫做Image Retargeting,这是一个非常小众,小众到做CV的绝大多数人都不知道的领域,但却是实实在在有应用价值的领域。

1 什么是Image Retargeting 

1.1 图像重定向(image retargeting)

很多的时候,我们需要将一个尺度的图像,放到一个尺寸不匹配的地方,比如相机拍摄的照片,放置到各种移动设备,需要特定的分辨率和长宽比,这个问题叫做image retargeting,可以翻译为图像重定向,从而获得不同构图比例的图片,下图展示了一些常见的设备比例(1:1,4:3,16:10,16:9等)和一个16:9的构图结果。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图1 常见的构图比例

1.2 为什么要研究image retargeting

图像重定向需要适配不同分辨率,所以要通过增加或去掉像素来改变图片的尺寸。除了为了适应显示区域而缩小图片外,图像缩小技术更多的是被用来产生预览图片,用于博客等平台。图像放大技术则一般被用来令一个较小的图像填充一个大的屏幕。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图2 缩略图应用

接下来我们就介绍经典的Image Retargeting相关算法。

2 Image retargeting算法

如下图3,展示了一幅图采用不同的Image Retargeting方法,生成的高度不变,宽度是原始图像一半大小的结果。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图3 经典Image Retargeting方法比较

图3中的方法从左到右分别是

(1) CR,即manually chosen cropping window人工裁剪方法

(2) SV,即streaming video方法

(3) Multi-operator,即multiop多算子方法

(4) SC,即seam-carving接缝裁剪方法

(5) SCL,即simple scaling operator简单尺度缩放方法

(6) SM,即shift-maps漂移图方法

(7) SNS,即scale-and-strech缩放与拉伸方法

(8) warp,即nonhomogeneous warping非均匀变形方法

由于文章篇幅问题,下面我们对其中算法的原理进行简单介绍,每一种算法的具体细节与实现,请大家阅读论文原文和相应代码进行补充。

2.1 CR方法

人工剪裁(CR)是Retargeting最直接的解决思路,相较于其他的retargeting方法,CR得到的结果不会引入任何的形变,但是其损失重要信息的可能性也越大。

一般来说,剪裁会借助显著图或者物体检测的方法来选择剪切的区域,然后根据目标尺寸的大小进行剪切,比如下图4就是获得显著图然后进行裁剪,图像显著性是图像中重要的视觉特征,体现出人眼对图像各区域的重视程度。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图4 基于显著区域的裁剪

2.2  SCL方法

除了剪切的方法,比例缩放也是解决图像重定向的另一个直接思想,相较于直接剪裁带来的严重信息损失,比例缩放可以“基于全局”来进行整体的缩放,尤其能够保留原图像的构图信息。但是这种操作可能会过于压缩或者拉伸目标,如下图5,这严重影响整图的美观。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图5 缩放变形示意图

2.3  SC方法

2007年以色列的两名研究员提出了seam-carving,它通过设置一个能量函数来计算图像中不同的位置像素点的能量”,重要内容的地方对应能量大;反之,可有可无的位置能量就小。

然后找出一系列的接缝(即图像中最不重要的一连串像素),接着利用接缝对图像做删减或增加。如果是要缩小图像,则移除这些接缝,若是放大,则在这些接缝的位置处插入一些像素。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图6 SC方法

比如上图6左边是原图,红色线表示接缝,中间的表示梯度图,右上角是seam-carving结果,右下角是缩放结果。假如要减少宽度,找到接缝线后,以图像第一行或最后一行为开始行,然后开始迭代,所有位于最小能量线右边的像素点左移一个单位,从而实现图像缩小宽度缩小一个单位,移除的时候 为了让图像看起来自然,需要在移除缝线的地方进行平均。

这类算法的核心是找到一个合理的能量函数。这个能量函数可以是梯度,梯度大的地方亮度变化剧烈、纹理丰富,一般是重要内容;梯度小的位置亮度变化小,比如蓝天,删除一条缝隙对图像影响较小。

SC方法的优点是可以很好的保护原图像中的重要内容,但是当缩放的比例过大的时候,可能引入形变。

2.4 SM方法

SM方法为原图匹配一个与原图同等大小的“运动路线图”(shift map),原图中的每个像素都依据“运动路线图”来变化位置,最终有的像素实现了“短距离漂移”,有的则相当于被“流放”而不会出现在结果图中。如果迭代的次数等于SC方法中要去除的列,每一次迭代只改变一个像素宽,则SM方法就是SC方法,所以它可以看作是SC方法的泛化版本,它们的主要区别在于SM方法一次去除一个目标,而不仅仅是一条缝。SM方法对原图的内容也有一定的保护,但是在结果中可能出现物体的割裂或者部分缺失,这是该方法失效的主要原因。

2.5 warp方法

warp方法通过将原图进行网格化,然后对每一个小格子进行不同程度的扭曲,这需要评估图像不同区域的重要性。对于重要的小格子,扭曲程度低一些,不重要的格子,扭曲程度高些。如下图7对视频中的显著目标,人脸目标,运动区域进行检测,然后合并起来获得重要性图,最后用于优化目标不同位置的权重。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图7 warp方法

2.6 SNS方法

SNS方法通过使用梯度和显著图来评估图像中的区域重要性进,然后对重要的区域使用均匀缩放来保持形状,而对不重要区域进行变形缩放,如下示意图。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图8 SNS方法

2.7  multiop方法

即多算子的方法,它是指对一张图像,分别借助不同的算法来进行处理,包括seam carving,scaling等,如下图9展示了融合seam carving(图d),scaling(图e)的结果(图c)。每一种算法称之为一个算子,得到一个由多个算法共同指导的缩放结果。由于“集百家之所长”,多算子的结果在多数情况下,一般可以被接受。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图9 multi-crop方法

2.8 SV方法

SV方法是一个依赖于重要性图进行变形的方法,其重要性图的定义依赖于显著目标,线段检测,以及其他人工交互式的标记,如下图10。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图10 SV方法

除此之外,还有对各种方法的改进,不再一一列举。从上面的这些方法来看,其实可以归为两大类:

第1类:基于变形(warping)与缩放(scaling)的方法 ,其中重点在于找到重要的区域,对重要区域和不重要区域进行不同程度的变形与缩放,并且要保证目标的尺度。

第2类:基于复制删除(seam-carving)的方法,这一类方法就是基于最优路径,在不重要的区域插入与删除元素。

另外,我们以前还介绍过自动构图的算法,也是一类可以用于Retargeting的方法,见:

******

这里的CR方法也可以归为构图算法一类,构图方法与Retargeting方法的主要区别在于:构图算法首先在图中选择窗口然后再进行缩放,可以保持原图像的局部连续性,也不会出现变形问题,但可能丢失重要目标,而且它不能对图像进行放大填充。

3 Image retargeting的比较

Image Retargeting算法结果没有唯一正确的答案,因此设计合适的评估指标是一个很关键的问题,尽管对于不同的人和不同的图片,评价标准难以一概而论,但是仍然具有一定共性。文[1]作者建立了一个包含80张图的benchmark,名为RetargetMe,图的种类包括:

(1) 人像以及人脸图(people and faces)

(2) 具有线条或者明显边界的图(lines and/or clear edges)

(3) 具有明显的前景图像的图(evident foreground objects)

(4) 具有纹理元素或者重复格式的图(texture elements or repeating patterns)

(5) 具有特殊的几何结构或者对称的图(specific geometric structures, and symmetry)

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图11 RetargetMe示意图

对于方法的评测,主要考虑以下几个因素:

(1) 保留原图的重要信息,获得content-aware的方法,这一般需要借助显著图;

(2) 减少视觉缺陷(preventing artifacts人工痕迹);

(3) 保存原始图像的结构信息(perserving structure),比如构图信息;

对于评测方法,作者采用了主观人工打分排序评测和两类no-reference comparison方法,两类no-reference comparison方法是edge histogram和color layout,都可以对于任意大小的图片,输出固定的特征。

这里我们以主观的评测结果来比较各种方法,在给定原图参考时,排名如下,从左到右依次降低:

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图12 人工评测结果

总结起来,对所有的缩放方法来说,

(1) 除去人工裁剪CR操作,SV方法和MULTIOP是最受人欢迎的,三种有相当的排名。SV方法需要对图像中的重要信息进行复杂的分析,而MULTIOP方法,则是将许多简单的特征和操作进行融合,虽然是两种最好的方法,却采用了两种截然不同的思路。

(2) SCL,SC,WARP方法是最不受欢迎的。被测试者对图像内物体变形比较敏感,尤其是包含人脸信息或者内容具有良好的对称性的图片,此时人们宁愿牺牲内容信息也不愿意见到图像内物体变形扭曲。

最后,还比较了人工方法和no-reference comparison两种方法的一致性。这是一篇很传统,经典的,干货非常多,值得读的文章,包含了:

(1) 数据集的建立,并提供了数据集和代码的下载链接。

(2) 方法的比较。

(3) 人工主观指标评测。

(4) 自动定量指标评测。

(5) 一个包含了比较方法介绍以及评测指标计算细节的supplement文件。

(6) 甚至对于主观评测和自动评测指标的一致性,还进行了比对。

4 展望

总的来说,当前Image Retargeting主要在两个方向上有研究的意义:

其一,Image Retargeting方法的评价,由于难以建立直接而客观的标准,不同人的审美差异不同,导致不同方法的比较还需要研究;

其二,基于深度学习模型的研究,如文[2]自动学习偏移特征图,实现端到端的Retargeting,这也是更加值得关注的方向。

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图13 基于深度学习的Image Retargeting

参考文献

[1] Rubinstein M, Gutierrez D, Shamir A, et al. A comparative study of image retargeting[C]// ACM SIGGRAPH Asia. ACM, 2010:160.

[2] Cho D ,  Park J ,  Oh T H , et al. Weakly- and Self-Supervised Learning for Content-Aware Deep Image Retargeting[J]. IEEE, 2017.

更多摄影图像处理相关的内容细节,请参考我最近出版的新书,《深度学习之摄影图像处理》,介绍如下:

​言有三新书来袭,业界首本深度学习计算摄影书籍,科技与艺术的结合​

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

总结

本文介绍了Image Retargeting问题,这是一个比较小众的研究领域,有实际的应用价值,传统方法研究较多,基于深度学习的研究方向较少,对这一块技术感兴趣的朋友可以了解学习。

有三AI秋季划-图像质量组

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?

图像质量小组需要掌握与图像质量相关的内容,学习的东西包括8大方向:图像质量评价,图像构图分析,图像降噪,图像对比度增强,图像去模糊与超分辨,图像风格化,图像深度估计,图像修复。了解详细请阅读以下文章:

​【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?​

转载文章请后台联系

侵权必究

【计算摄影】如何让拍摄的照片适配不同分辨率的设备?