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

大家好 , 这是专栏《计算摄影》的第九篇文章 , 这一个专栏来自于计算机科学与摄影艺术的交叉学科 。
作者&编辑 | 言有三
今天要介绍的一个问题 , 叫做Image  , 这是一个非常小众 , 小众到做CV的绝大多数人都不知道的领域 , 但却是实实在在有应用价值的领域 。
1 什么是Image
1.1 图像重定向(image )
很多的时候 , 我们需要将一个尺度的图像 , 放到一个尺寸不匹配的地方 , 比如相机拍摄的照片 , 放置到各种移动设备 , 需要特定的分辨率和长宽比 , 这个问题叫做image  , 可以翻译为图像重定向 , 从而获得不同构图比例的图片 , 下图展示了一些常见的设备比例(1:1 , 4:3 , 16:10 , 16:9等)和一个16:9的构图结果 。
图1 常见的构图比例
1.2 为什么要研究image
图像重定向需要适配不同分辨率 , 所以要通过增加或去掉像素来改变图片的尺寸 。除了为了适应显示区域而缩小图片外 , 图像缩小技术更多的是被用来产生预览图片 , 用于博客等平台 。图像放大技术则一般被用来令一个较小的图像填充一个大的屏幕 。
图2 缩略图应用
接下来我们就介绍经典的Image 相关算法 。
2 Image 算法
如下图3 , 展示了一幅图采用不同的Image 方法 , 生成的高度不变 , 宽度是原始图像一半大小的结果 。
图3 经典Image 方法比较
图3中的方法从左到右分别是
(1) CR , 即人工裁剪方法
(2) SV , 即 video方法
(3) Multi- , 即多算子方法
(4) SC , 即seam-接缝裁剪方法
(5) SCL , 即简单尺度缩放方法
(6) SM , 即shift-maps漂移图方法
(7) SNS , 即scale-and-缩放与拉伸方法
(8) warp , 即 非均匀变形方法
由于文章篇幅问题 , 下面我们对其中算法的原理进行简单介绍 , 每一种算法的具体细节与实现 , 请大家阅读论文原文和相应代码进行补充 。
2.1 CR方法
人工剪裁(CR)是最直接的解决思路 , 相较于其他的方法 , CR得到的结果不会引入任何的形变 , 但是其损失重要信息的可能性也越大 。
一般来说 , 剪裁会借助显著图或者物体检测的方法来选择剪切的区域 , 然后根据目标尺寸的大小进行剪切 , 比如下图4就是获得显著图然后进行裁剪 , 图像显著性是图像中重要的视觉特征 , 体现出人眼对图像各区域的重视程度 。
图4 基于显著区域的裁剪
2.2 SCL方法
除了剪切的方法 , 比例缩放也是解决图像重定向的另一个直接思想 , 相较于直接剪裁带来的严重信息损失 , 比例缩放可以“基于全局”来进行整体的缩放 , 尤其能够保留原图像的构图信息 。但是这种操作可能会过于压缩或者拉伸目标 , 如下图5 , 这严重影响整图的美观 。
图5 缩放变形示意图
2.3 SC方法
2007年以色列的两名研究员提出了seam- , 它通过设置一个能量函数来计算图像中不同的位置像素点的能量” , 重要内容的地方对应能量大;反之 , 可有可无的位置能量就小 。
然后找出一系列的接缝(即图像中最不重要的一连串像素) , 接着利用接缝对图像做删减或增加 。如果是要缩小图像 , 则移除这些接缝 , 若是放大 , 则在这些接缝的位置处插入一些像素 。
图6 SC方法
比如上图6左边是原图 , 红色线表示接缝 , 中间的表示梯度图 , 右上角是seam-结果 , 右下角是缩放结果 。假如要减少宽度 , 找到接缝线后 , 以图像第一行或最后一行为开始行 , 然后开始迭代 , 所有位于最小能量线右边的像素点左移一个单位 , 从而实现图像缩小宽度缩小一个单位 , 移除的时候为了让图像看起来自然 , 需要在移除缝线的地方进行平均 。
这类算法的核心是找到一个合理的能量函数 。这个能量函数可以是梯度 , 梯度大的地方亮度变化剧烈、纹理丰富 , 一般是重要内容;梯度小的位置亮度变化小 , 比如蓝天 , 删除一条缝隙对图像影响较小 。
SC方法的优点是可以很好的保护原图像中的重要内容 , 但是当缩放的比例过大的时候 , 可能引入形变 。
2.4 SM方法
SM方法为原图匹配一个与原图同等大小的“运动路线图”(shift map) , 原图中的每个像素都依据“运动路线图”来变化位置 , 最终有的像素实现了“短距离漂移” , 有的则相当于被“流放”而不会出现在结果图中 。如果迭代的次数等于SC方法中要去除的列 , 每一次迭代只改变一个像素宽 , 则SM方法就是SC方法 , 所以它可以看作是SC方法的泛化版本 , 它们的主要区别在于SM方法一次去除一个目标 , 而不仅仅是一条缝 。SM方法对原图的内容也有一定的保护 , 但是在结果中可能出现物体的割裂或者部分缺失 , 这是该方法失效的主要原因 。
2.5warp方法
warp方法通过将原图进行网格化 , 然后对每一个小格子进行不同程度的扭曲 , 这需要评估图像不同区域的重要性 。对于重要的小格子 , 扭曲程度低一些 , 不重要的格子 , 扭曲程度高些 。如下图7对视频中的显著目标 , 人脸目标 , 运动区域进行检测 , 然后合并起来获得重要性图 , 最后用于优化目标不同位置的权重 。
图7 warp方法
2.6 SNS方法
SNS方法通过使用梯度和显著图来评估图像中的区域重要性进 , 然后对重要的区域使用均匀缩放来保持形状 , 而对不重要区域进行变形缩放 , 如下示意图 。
图8 SNS方法
2.7 方法
即多算子的方法 , 它是指对一张图像 , 分别借助不同的算法来进行处理 , 包括seam  , 等 , 如下图9展示了融合seam (图d) , (图e)的结果(图c) 。每一种算法称之为一个算子 , 得到一个由多个算法共同指导的缩放结果 。由于“集百家之所长” , 多算子的结果在多数情况下 , 一般可以被接受 。
图9 multi-crop方法
2.8 SV方法
SV方法是一个依赖于重要性图进行变形的方法 , 其重要性图的定义依赖于显著目标 , 线段检测 , 以及其他人工交互式的标记 , 如下图10 。
图10 SV方法
除此之外 , 还有对各种方法的改进 , 不再一一列举 。从上面的这些方法来看 , 其实可以归为两大类:
第1类:基于变形()与缩放()的方法  , 其中重点在于找到重要的区域 , 对重要区域和不重要区域进行不同程度的变形与缩放 , 并且要保证目标的尺度 。
第2类:基于复制删除(seam-)的方法 , 这一类方法就是基于最优路径 , 在不重要的区域插入与删除元素 。
另外 , 我们以前还介绍过自动构图的算法 , 也是一类可以用于的方法 , 见:
******
这里的CR方法也可以归为构图算法一类 , 构图方法与方法的主要区别在于:构图算法首先在图中选择窗口然后再进行缩放 , 可以保持原图像的局部连续性 , 也不会出现变形问题 , 但可能丢失重要目标 , 而且它不能对图像进行放大填充 。
的比较
Image 算法结果没有唯一正确的答案 , 因此设计合适的评估指标是一个很关键的问题 , 尽管对于不同的人和不同的图片 , 评价标准难以一概而论 , 但是仍然具有一定共性 。文[1]作者建立了一个包含80张图的 , 名为 , 图的种类包括:
(1) 人像以及人脸图( and faces)
(2) 具有线条或者明显边界的图(lines and/or clear edges)
(3) 具有明显的前景图像的图()
(4) 具有纹理元素或者重复格式的图(or)
(5) 具有特殊的几何结构或者对称的图(, and )
图11 示意图
对于方法的评测 , 主要考虑以下几个因素:
(1) 保留原图的重要信息 , 获得-aware的方法 , 这一般需要借助显著图;
(2) 减少视觉缺陷( 人工痕迹);
(3) 保存原始图像的结构信息( ) , 比如构图信息;
对于评测方法 , 作者采用了主观人工打分排序评测和两类no- 方法 , 两类no- 方法是edge 和color  , 都可以对于任意大小的图片 , 输出固定的特征 。
这里我们以主观的评测结果来比较各种方法 , 在给定原图参考时 , 排名如下 , 从左到右依次降低:
图12 人工评测结果
总结起来 , 对所有的缩放方法来说 , 
(1) 除去人工裁剪CR操作 , SV方法和是最受人欢迎的 , 三种有相当的排名 。SV方法需要对图像中的重要信息进行复杂的分析 , 而方法 , 则是将许多简单的特征和操作进行融合 , 虽然是两种最好的方法 , 却采用了两种截然不同的思路 。
(2) SCL , SC , WARP方法是最不受欢迎的 。被测试者对图像内物体变形比较敏感 , 尤其是包含人脸信息或者内容具有良好的对称性的图片 , 此时人们宁愿牺牲内容信息也不愿意见到图像内物体变形扭曲 。
最后 , 还比较了人工方法和no- 两种方法的一致性 。这是一篇很传统 , 经典的 , 干货非常多 , 值得读的文章 , 包含了:
(1) 数据集的建立 , 并提供了数据集和代码的下载链接 。
(2) 方法的比较 。
(3) 人工主观指标评测 。
(4) 自动定量指标评测 。
(5) 一个包含了比较方法介绍以及评测指标计算细节的文件 。
(6) 甚至对于主观评测和自动评测指标的一致性 , 还进行了比对 。
4 展望
总的来说 , 当前Image 主要在两个方向上有研究的意义:
其一 , Image 方法的评价 , 由于难以建立直接而客观的标准 , 不同人的审美差异不同 , 导致不同方法的比较还需要研究;
其二 , 基于深度学习模型的研究 , 如文[2]自动学习偏移特征图 , 实现端到端的 , 这也是更加值得关注的方向 。
图13 基于深度学习的Image
参考文献
[1]M,D,A, et al. Astudy of image [C]// ACMAsia. ACM, 2010:160.
[2]Cho D , Park J , Oh T H , et al. - and Self-for -Aware Deep Image [J]. IEEE, 2017.
更多摄影图像处理相关的内容细节 , 请参考我最近出版的新书 , 《深度学习之摄影图像处理》 , 介绍如下:
言有三新书来袭 , 业界首本深度学习计算摄影书籍 , 科技与艺术的结合
总结
本文介绍了Image 问题 , 这是一个比较小众的研究领域 , 有实际的应用价值 , 传统方法研究较多 , 基于深度学习的研究方向较少 , 对这一块技术感兴趣的朋友可以了解学习 。
有三AI秋季划-图像质量组
图像质量小组需要掌握与图像质量相关的内容 , 学习的东西包括8大方向:图像质量评价 , 图像构图分析 , 图像降噪 , 图像对比度增强 , 图像去模糊与超分辨 , 图像风格化 , 图像深度估计 , 图像修复 。了解详细请阅读以下文章:
【【计算摄影】如何让拍摄的照片适配不同分辨率的设备?】【CV秋季划】图像质量提升与编辑有哪些研究和应用 , 如何循序渐进地学习好?