手机中的计算摄影:光学变焦

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

9202cce6b3a775f9d84a4a6db79884e9.png

本文转载自计算摄影学,作者HawkWang。文章仅用于学术分享。

很多人咨询我,手机上到底有哪些计算摄影的应用和技术。那么接下来就准备抽空写一系列文章做一下介绍。

今天这一篇我来谈谈“光学变焦”,其实这是一个容易误导人的功能名字。因为在传统上,变焦是通过操作相机镜头上的变焦环来完成的,而在绝大多数手机上显然无法承载这么复杂的机械机构。因此手机上的光学变焦,通常是通过在不同焦距的相机之间切换来达成的。

事实上,同时拥有多种形态的摄像头在中高端手机上几乎已经成为了标配,像我下图列出的小米、华为、苹果的旗舰机,都是这样的,它们都拥有不同焦距的摄像头,当在这些摄像头之间切换时,自然也就能实现变焦的功能。

5673ac6bc2b4faa6bf6d04ab640b88dc.png

然而,如果仅仅是生硬的在摄像头之间直接切换,势必会导致图像内容的剧烈变化,这和传统相机上的平滑变焦是截然不同的。而今天所谈的手机上的“光学变焦”,则是在一系列计算摄影算法支撑下的极力模仿传统相机的平滑变焦,如下面的动图所示。

在业界,这个功能被称为SAT,全称是Spatial Alignment Transform,空间对齐变换。现在让我们捋一捋,这里面到底有哪些关键点

让我们先看看,手机上不同镜头拍摄同一个目标时,图像的表现。这里我从某个手机上分别用短焦镜头和长焦镜头获取了一对图像(为了让你明显感觉到两个图像的不同,在左图上我特意保留了大的噪声)

045eed451e9f391ffcc8d9c823d7b6fe.png

你可以看到,图像的视场角,以及目标在图像中的大小、位置都有很大的变化。如果我们直接在手机界面上切换两个镜头,那么你看到的画面会是这样的:

5872b717340747da91b936ba20f96b9b.gif

很显然,其中的切换是突兀的。为了让画面的切换不那么突兀,我们可以先前进一小步:对短焦镜头的画面做平滑的数码中心放大,直到目标尺寸和长焦镜头的一致,然后接着继续对长焦镜头的图像平滑放大,像下面一样:

此时,你可以看到整个放大、切换的过程稍微有点平滑的意思了。但画面中美女的位置在两个相机中是不同的,使得在切换瞬间,依然有突兀的变化。于是,我们可以再前进一步,在放大的画面的同时,逐渐的平移画面中感兴趣的目标位置,使得切换瞬间两个图像中我们感兴趣的目标的位置一致,就像下面这样:

这样,是不是更有平滑变焦的感觉了?不过你肯定已经注意到了,虽然我们让模特的脸部在相机切换前后尽可能保持了位置和大小不变,但背景却出现了明显的跳变。这是很容易理解的,因为手机上不同的摄像头位于不同的位置,因此从空间上讲相机之间有平移,还有轻微的旋转。因此简单的平移图像是无法使得画面上每一个像素都对齐的。

97fbdbc3b558c86e537f0c150f3114c1.png

下面的示意图说明了相机之间的三维旋转关系,这种三维旋转关系比起简单的平移关系更加影响图像在切换时的对齐效果:

3c8abd643bf563a93560473075a448be.png

如果用几何表达的话,是这样的:

cd6138e190d6536058f3a33d525d2234.png

观察刚才的动图的切换瞬间的两帧,你可以很明显的看到图像的旋转,尤其是背景部分的旋转:

2f7795ff2b39463f0d524b9e164c5d95.gif

所以我们不仅仅要消弭镜头的平移带来的影响,还需要消除镜头间的旋转带来的影响。最终可以做到在切换时,我们感兴趣的模特的脸部尺度一致,位置不变,而背景部分只有平移关系,而没有旋转感,就像下图一样:

b8a5ee69f9b0f67a79ae600c42bdbde6.gif

现在来梳理一下我们用到了哪些技术和知识点。

  • 相机标定:获取相机及图像的空间关系

0a6d55c5cbb821b9ff51723b8d9ebcba.png

正如我在上一篇文章手机中的计算摄影1——人像模式(双摄虚化)中所描述的,双摄像头的相机标定可以获取到两个相机的内参数及外参数,从而指导后续对图像的空间变换:

a59a93f0312856036552321622016a00.png
  • 图像的空间变换

我在文章28. 图像扭曲中介绍了图像的空间变换,如下图所示:

a3b84b3bcda2cf52ad0b282516a4ae84.png

让我们看下面这个场景:

0d10d2789eb4b65d0177d90feded9cbf.png

那么对应到我们现在讲的功能,我们假设长焦镜头相对短焦镜头的放大倍率是2.0倍,那么整个过程就是这样的了:

2520a368462dbdc63fa55a016c44cdbe.png d3a657f5189d36f5f3440400fb188508.png

这里最关键的是我们提前算出了总的平移量和旋转量,然后将平移量和放大倍率线性关联起来,这样每放大一点,就会相应的旋转一点、平移一点,最终达到在相机的切换点,两张图像的尺度一致、关键目标的位置刚好对齐,且整个画面没有旋转感,就像下面所示:

图像质量平滑过渡

现在我们已经解决了图像主体在空间上的对齐问题,但两个摄像头通常不仅仅在空间位置上有差异,在图像质量上也有明显的区别,你可以看看下面这个视频,很容易观察到在相机切换的瞬间,图像的亮度、颜色等都发生了突变:

于是,我们还需要计算两个相机的图像质量的差异,并在放大过程中逐步平滑的消弭这种差异,就像下面视频所示:

这里面将会用到略微复杂的颜色空间的映射和查找表的构建,从而准确的对输入图像的质量进行变换:

682c378f6c908e3ba5f997ff70d1cef8.png

以上只是粗略的介绍了SAT功能核心的要点,然而在工程中还有很多细节的问题要处理,例如:

  • 如何处理光学防抖系统工作情况下相机位置的额外变换

  • 如何用最低的功耗,实时的完成上述核心功能

  • 如何在利用系统SOC本身提供的各种图像处理基础能力

  • 如何和系统ISP配合

  • 如何提高量产稳定性和效率

等等,实践过程中我们发现麻烦不断,因此即便我所在团队已经在业界前四的品牌旗舰手机中部署此算法,并且已经做到大部分场景足够满足客户的需求,也还在不断的努力,解决遗漏的问题,并开发新的功能点。例如,将SAT结合上目标检测和跟踪,可以使得你拿起手机后就自动聚焦在最感兴趣的目标上,就像下面的视频所示:

而这里要想做到稳定的跟踪目标,就又涉及到目标检测和跟踪框的空间和时间上的滤波和平滑了,所使用的技术也越来越复杂。

另外,你一定注意到了,我上面演示的视频只是做到了主体切换时不动,但背景还是会有一定的平移,有没有办法做到每一个像素点都不动呢?这是有可能的,如下图所示,同一个倾斜的棋盘格,我们在两个相机之间切换,在图像的任何一点都没有发生跳变,这是用到了我将来会详述的光流技术。

6efceed2343391a27a380bec7364ebe8.gif

然而,在手机平台上实时计算高精度光流是一个非常复杂的技术,这里同时还要考虑图像的视差部分的光流无法计算准确,所以这里面还有巨大的坑等着去填。

所以,正如我在前一篇文章里面所描述的,手机上你也许觉得平淡无奇又或者是觉得很新奇的这么一个小功能,却是很多人废寝忘食的成果,而且里面还使用了很精妙的计算摄影学、计算机视觉的技术。

本文写作过程中,获得了好些同事的帮助,在此表示感谢。另外感谢美女模特提供了素材,整个文章的颜值都提升了不少😃

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

干货领取:

1. 在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

2. 在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

3. 在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

bf6f1baeac78571bff073494a82998ce.png

▲长按加微信群或投稿

eeca7ace537f16c798f57d2cd4cca50c.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定orb-slam3知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

38955ccfbdd5ebe5f65c5db1b24806aa.png

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  bd649a0f9d0434b584d7cf28cf7ec45b.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值