手机中的计算摄影:多摄融合

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

干货第一时间送达

9cc85dcfe0a42157b4f67cab6e0a3d36.png

来源丨计算摄影学

作者丨HawkWang

前几天,荣耀发布了Magic 3系列手机,通过多主摄融合的计算摄影技术,带来全焦段的高清体验。根据荣耀官方的数据,在彩色黑白融合时,进光量最大提升13%, 清晰度最大提升18%。在主摄和广角镜头融合时,中心清晰度最大提升80%, 在主摄和长焦镜头融合时,中心清晰度最大提升180%!

16b05e5e64e64d3aad2c10d28874b905.png

我想,这些惊人的数据一定让你感到好奇——这背后是什么样的计算摄影技术在支撑呢?今天我这篇文章,就来谈一谈“多摄融合”技术,这是除双摄虚化、光学变焦之外,另外一个我很感兴趣的领域。

在真正讲技术前,请允许我回顾一下历史。

如果我调研的没错,最早在手机上提出异种摄像头融合提升图像质量的,是以色列公司Core Photonics,这家公司在2014年时在业界第一次展示了3种不同的通过手机双摄融合提升最终图像质量的系统,这包括了能提供2倍变焦能力的HummingBird系统,能进行RGB+MONO融合的Night Owl系统,以及能进行3倍变焦的"Falcon"系统和能进行4倍变焦的"HawkEye"系统。

b8900b4959bbee55783765bccb64feca.png

我对上面的系统印象深刻,是因为我当时所在的公司协助Core Photonics在几乎没有高通公司支持的情况下在工程手机上点亮了这些模组,并成功运行了Core Photonics的融合算法。

在Core Photonics的官网上,他们展示了很多和竞品的对比照片,我们来欣赏一下。由于都是2014年左右发布的系统,因此官网上展示的也是和早几年的手机的对比,但并不影响我们的直观感受:双摄融合后的图像清晰度确实远高于普通摄像头的结果!

1ad4aed59db87b571ff41a3e36006438.png 99cd77eaf020a51875ae6e7ec37abd00.png

虽然早期的双摄手机非常简陋,但中国手机企业确实在那时候就已经不仅仅是在山寨国外的产品了,对新技术非常敏感,非常热衷。下面是一个2014年的工程样机,你可以清晰的看见它的双摄像头模组,其中包括一个长焦镜头和广角镜头

1eb053242aea0a767b44cadfdc79e730.png

从2014年到现在,整个手机工业界都经历了天翻地覆的发展,不管是摄像头模组,还是手机芯片的算力,还是计算摄影的算法,都跟当年完全不一样了,最终效果也提高了很多。在荣耀新发布的Magic 3系列手机之前,已经有不少手机厂商发布了在特定摄像头之间进行融合提升图像质量的产品,比如:

3b78838674998e0f08cb8408e736c0ac.png

现在让我们进入到技术环节

来看看一个广角镜头和一个长焦镜头融合时,会发生什么。先来看看原图。你可以明显看到,两个摄像头拍摄的画面在尺度上有明显的区别。

43e7f527ffa7d2e7b5bbc49c7c8b6f4a.png

而且,因为镜头、传感器等各方面的因素,长焦相机的图像质量确实高于广角相机的图像质量,我们看看细节图对比一眼可知(左:长焦相机, 右:广角相机)

2dc3bec348031ecab6fc4fb4bca96777.png a8ff48f7c3be1646f8270bee1558d70b.png

你还可以观察到,它们不仅仅在尺度上有区别,由于两个摄像头的空间位置不同,所以实际上两个图像之间还有平移和旋转,这一点在我上一篇文章中已有描述:

ac6646e027dc3640361130377b64884c.png

事实上,现在的手机模组组装形态多种多样,这就使得不同摄像头拍摄的图像之间空间和尺度差异也是多种多样的

610488a22d89158d52ed97c38263d220.png

d3632ae4ce2560f26defb522c7d78a90.png

因此,要把不同摄像头拍摄的图像进行融合,就需要分成如下的步骤了:

e571ca1db4a7c8b35e0b1d2faffac53e.png

1. 尺度对齐

如果我们提前获取到两个摄像头的关键参数,包括焦距、像素尺寸、FOV等信息,那么是能够直接计算出图像的尺度差异的。

即便是不知道上述参数,要对齐图像的尺度,也是很容易的一件事情:只需要先对图像做稀疏特征点的对齐,然后对其中一个图像做单应变换即可。如下图所示,两个图像的许多特征点被找到并匹配上,从而可以求取出它们之间的变换矩阵。右图中,红框部分的图像经过裁剪和放大,即可和左图保持尺度对齐了,当然也可以将左图缩小到右图红框的尺寸,具体是怎么做,实际上在产品执行中不同场景下会有不同的考量。

9b25d989901fea8cd5cc673453bda45d.png

总之,经过这些操作,我们就得到了一对图,你如果仔细观察的话,会发现虽然这对图片里面物体的尺寸是一致的,但很明显有旋转和平移的关系,所以接下来还需要对它们进行像素对齐。

467b4125fda0564375ae080b5da776b1.png

391c7fa5bad1072881c5f2a462c16b70.gif

2. 像素对齐

要想把这两个在空间上有旋转和平移的图像进行像素级别的对齐,至少有两个流派的方法。

流派1遵循严谨的多视角几何的方法,认为拍摄同一个目标时,图像和空间物体之间满足对极几何约束的关系,我在文章双摄虚化中也提到了这一点。这样,如果将图像转换为只有视差关系,没有旋转关系,接下来就可以通过求取每个像素点的视差,并在视差方向进行图像的扭曲变换来达到对齐图像的目的了。

9fc8b81dfe2c64f2aad778aa8646e615.png

然而,这个方案的缺点是必须对两个相机进行标定,并以此对两个图像进行极线校正,然后是视差计算。相对来说,流程比较复杂和冗长,而且标定势必会影响生产效率。在前面讲的Core Photonics公司的官网上有其方案的总体流程图,可以看出他们就是采用了这个方法。

a3176e401975836cfafa43df35366d93.png
Core Photonics官网展示融合流程图

这里面,最重要的一环还是立体匹配,关于立体匹配求取视差图,我在文章双摄虚化中已经做过阐述。我所在团队现在已经可以在极端复杂的场景下产生高精度的视差图了,但因为上面的缺点,我们还是未采用此类方法。

流派2则是观察到手机上两个摄像头之间的空间位置差异不会太大,因此图像之间的运动也不会很大。那么就比较适合计算它们之间的光流,并用光流信息来对齐每个像素。光流算法回答一个问题:左图中每个像素点Pl在右图的对应点Pr的坐标是什么?或者说Pl经过什么方向和大小的运动,才能和右图中的对应像素Pr对齐。

f1d5983047910bd6199e128af9d5c2c1.png

立体匹配是在一维上搜素匹配点,已经很困难了。而光流则是在二维上搜索匹配点,就更加困难了。它本质上是在最小化下面这个代价,其中等式左边是两个图像对应像素的亮度、颜色差异的统计值。

9ed213c725173782a2eb041910d73baf.png

这实际上是一个欠定问题,传统上求取光流场会用到局部的平滑性,或者通过加入某种正则项后进行全局求解,还有些方法是通过马尔科夫随机场将某些区域的光流信息逐渐的传播到其他区域。总之,困扰立体匹配精度的很多问题,一样会困扰光流算法。而由于光流算法在二维上进行搜索,还需要考虑更多的问题,例如计算量,以及因为某些像素的运动过大导致的匹配困难的问题。

05a97e37342d2acd282b4990d5e2eb85.png

当然,正如我在上一篇文章中所讲,我们已经采用了深度学习来完成光流场的计算,效果也很不错。这里展示一个和OpenCV自带的DISFlow算法的效果对比,先看输入,你能明显看到两张图的不同(注意观察红发的姑娘)

fd1ee9657d785763abe408b05e247e81.png

再看看输出结果对比,这里展示的是伪彩色的光流幅值,你能明显看出我们算法的优势:

4cf057aebd99c232a959a90fd70dcaad.png

总之,当计算了光流后,就可以很容易的对图像做变换,从而对齐像素。下面动图展示了对齐后的结果局部图。

09725c20fb90463f84e99a65b2162678.gif

3. 融合策略和图像图像融合

当对齐了图像后,就可以对图像进行融合了。在文章11. 图像合成与图像融合中,我介绍了各种各样图像融合的算法。传统上表现的比较好的是金字塔融合:

7c20bdce5cd50390323e7a8598dc8b0a.png

但实际上,有如下一些原因,导致简单的融合算法并不能完全解决真实问题:

  • 经过光流变换后的图像,可能会产生局部的扭曲,尤其是在视差边缘:

684d9c3a692d871c1eca5a08ffa53041.png cacb604267e605f7e55fc8c4ec4f3bcd.png
  • 某些时候,长焦距的图像质量并非在每一个局部区域都优于短焦距图像

  • 简单的融合,会导致融合区域和非融合区域产生明显的突变。

所以这里面有很多复杂的技术问题需要解决。目前我们用一个融合策略模块比较好的处理了这些问题,能得到比较自然的基本没有明显错误的融合结果。下面是这个模块给出的融合权重示意图,可以看到图像的不同区域权重是明显不同的

fc0976611f45552fdd1f607dd679ec4c.png

最后展示几个场景的融合结果和融合前的对比:

全图对比:

cc2f2dc535377dda7158838197daacd2.png

局部细节:

8d81ebc60adee14e231a5ffe9b90abaa.png 0339170d55ed823ef947b8198342d5d0.png 2b7a934280e7f31643e3707aedc411d8.png

全图对比:

3d61533a018c81e12383d33f0d1fda56.png

局部细节:

4aae1e690e4aa9baea0d02ee5a910738.png

9ab046b967ee2431e05481017b403193.png

目前这么一套多摄融合算法,已经能够在各种复杂的摄像头模组组合情况下产生优异的结果了。这既包括了前面说的不同焦距摄像头之间的组合,也包括了黑白、彩色摄像头的组合。相比彩色摄像头之间的组合,黑白+彩色会要求更高一些。因为人眼对颜色是非常敏感的,些许的问题也会被人眼捕捉到,所以真实发布的产品凝聚了许多工程师的心血。这里再展示一组在实验室拍摄的图像,来说明黑白彩色相机的融合。

输入图:

e7bcb2901f9edd59596a001da419482a.png

对比下细节,可以看出黑白图像清晰很多,彩色图像在细节处已经产生了混叠

62041509cb7a19f67c55eb6f49c604b6.png

把黑白图的细节叠加到彩色图上,得到输出图(左:输入彩色图,右:输出彩色图)

cac6f0faaf5932e1dfda09c03b88bc87.png

细节部分(左:输入彩色图,右:输出彩色图):

cf92d6e4a6d4e75d2c80fae950a7acc2.png 03921fc94c0ae86bf55c7515b0b8aa71.png

总结一下上面所说的流程:

a6a353409143ea94982c838b94484a8e.png

其中,像素级别的对齐,以及图像的融合,是整个算法成功的关键。在这个过程中会遇到各种各样的问题,例如:

  1. 如何尽可能在有限的算力需求内进行尽可能准确的融合

  2. 如何处理融合区域和非融合区域的突变

  3. 如何判断哪些像素需要融合

  4. 在融合图像时两个输入图像的权重各自为多少

  5. 如何利用底层系统硬件支持,做到高效运算

  6. 如何和相机系统的其他功能紧密配合

等等,这些问题的解决需要工程师付出大量的时间和精力。

此时此刻,我的同事刚从某客户的研发中心返回不久,我们在此之前一直为了处理好多摄图像的融合问题而废寝忘食,每天加班到很晚。我不得不再次重复相同的话:大家在手机发布会上看到的惊艳一刻,或者拿着心爱的手机拍出满意的照片,这背后都有无数工程师的辛苦付出。而当计算摄影技术加持的多摄融合能够得到大家的认可时,工程师们也是最开心的!

这篇写作过程中,获得了好些同事的帮助,在此表示感谢。再次感谢美女模特素颜出镜! 文章同步发表在我的微信公众号和知乎专栏“计算摄影学”,欢迎扫码关注,转载请注明作者和来源

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

计算机视觉精品课程推荐:

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视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

04d29f7751e9e4953b59472744e96788.png

▲长按加微信群或投稿

e27d4b9fe210fab0ff01ff2c8a503dda.png

▲长按关注公众号

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

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

af664e09f70b9145e3b60473b0f71238.png

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

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

在视频监控应用中,如何有效实现宽视场范围视频的完整获取,是视频监控系统的关键功能之一。本文针对像头硬件平台,重点研究 360 度全景视频拼接的实现技术。在保证高质量的拼接图像的前提下,满足实际应用场景的实时性要求是本文算法设计的要目标。针对全景拼接在视频监控领域这一应用背景,本文对像头系统全景拼接存在的一些优势和约束进行详细分析,并在此基础上,采用个广角镜头进行视频图像采集,实现像头个数和单个镜头视角之间的合理折中。在控制成本的前提下,有效实现水平方向 360 度无盲区监控。 针对全景视频拼接算法的实时性能和拼接效果,本文重点在以下几个方面开展了研究工作: 1、本文采用普通的监控 CCD 单板机和广角镜头组装像单元,对像单元通道采用线程同步视频采集。针对普通监控镜头采集图像质量不高的问题,提出基于颜色校正板的颜色校正方法,对输入图像进行预处理,有效改善图像质量。并采用基于灰度均值的方法,对相邻图像的重叠区域进行亮度调整。 2、本文基于经典的直线标定法思想,提出两步法镜头矫正方案。通过所提出的直线标定法对镜头进行一次矫正,然后通过手动设置并调节畸变参数,对矫正后的图像进行二次矫正,所提出的算法能保证良好的镜头矫正效果。 3、研究了柱面投影模型的原理,提出将柱面映射的投影中心修正为镜头畸变中心,克服了由于畸变和透视失真等因素造成的重叠区物体成像尺寸不一致的问题。然后,利用所提出的坐标映射表的方式,一次性实现镜头畸变矫正和柱面映射,有效提高了算法执行速度。 4、分析了基于 Harris 特征和 SIFT 特征的配准算法原理。SIFT 特征配准算法鲁棒性高,但难以满足硬件系统的实时性要求;基于 Harris 特征的配准算法复杂度低,但难以应对广角镜头畸变引起的图像质量差的问题,匹配性能较差。最后采用了基于积分图像的快速归一化互相关配准方案,实验验证了算法的可行性和有效性。 5、此外,在图像融合方面,基于经典的频带融合算法,结合线性融合的思想,优化了一种简单的分辨率线性融合方法。在保证融合质量的基础上,提升了速度。 关键字:镜头传感器;图像配准;全景拼接;实时监控;广角镜头
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值