为什么80%的码农都做不了架构师?>>>   

本文来自微信多媒体团队高欣玮的技术分享。

1、前言

图像和视频通常包含着大量的视觉信息,且视觉信息本身具有直观高效的描述能力,所以随着信息技术的高速发展,图像和视频的应用逐渐遍布人类社会的各个领域。近些年来,在计算机图像处理,计算机视觉和机器学习等领域中,来自工业界和学术界的许多学者和专家都持续关注着视频图像的超分辨率技术这个基础热点问题。

本文试着讲述超分辨率技术的正确打开方式,浅谈视频图像的超分辨率技术的基本概念和应用场景等问题。

学习交流:

- 即时通讯开发交流群:320837163[推荐]

- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》

(本文同步发布于:http://www.52im.net/thread-1377-1-1.html)

2、什么是超分辨率?

2.1 超分辨率初体验

简单来讲,图像超分辨率就是提高图像的空间分辨率,例如将一幅图片的分辨率由352x288扩大到704x576,方便用户在大尺寸的显示设备上观看。图像的超分辨率,是图像处理相关问题中的基础问题之一,并具有广泛的实际需求和应用场景,在数字成像技术,视频编码通信技术,深空卫星遥感技术,目标识别分析技术和医学影像分析技术等方面,视频图像超分辨率技术都能够应对显示设备分辨率大于图像源分辨率的问题。

简单来说超分辨率技术可以分为以下两种:

1)只参考当前低分辨率图像,不依赖其他相关图像的超分辨率技术,称之为单幅图像的超分辨率(single image super resolution),也可以称之为图像插值(image interpolation);

2)参考多幅图像或多个视频帧的超分辨率技术,称之为多帧视频/多图的超分辨率(multi-frame super resolution)。

这两类技术中,一般来讲后者相比于前者具有更多的可参考信息,并具有更好的高分辨率视频图像的重建质量,但是其更高的计算复杂度也限制了其应用。故,本文后边将以单图超分辨率/图像插值为例,进行超分辨率技术的介绍。

2.2 超分辨率理论描述

这个很直观的超分辨率问题,它的理论描述又是什么样子的呢?如下图所示,超分辨率就是将左图中像素点之间的空间位置用像素点进行填充,使得整个图像具有更多的像素点,更丰富的细节,从信号的角度讲就是补充出更多的高频成分。

通常在处理这个超分辨率问题的时候,我们常常探索这个退化信号是如何从我们希望的理想信号变化得到的(即分辨率的退化过程),如果对退化过程进行精确地描述,往往对其逆问题的求解有重要的意义。

在本文的问题中,即超分辨率的退化模型,可以通过以下公式来描述:

Y = HDX + n

其中Y为低分辨率的视频帧/图像,X为我们理想高分辨率的视频帧/图像,而H和D分别为模糊算子和分辨率下采样算子,n为退化过程中产生的噪声。

由上述公式可知该退化问题存在着病构特性,即多个不同的高分辨率图像X,经过相同的退化过程处理,可以得到同样的低分辨率图像Y。这就导致我们无法直接通过Y求解出一个精确的X,也是视频图像超分辨率问题一直是一个开放性问题的原因(逐渐逼近符合人眼视觉认识的解)。

根据图像超分辨率的技术路线进行分类,图像超分辨率技术大致可以分为以下几类:

基于定参数的线性滤波器技术;

基于图像边缘结构的技术;

基于图像重构约束的技术和基于机器学习的技术。

3、什么时候用超分辨率?

先举一个小例子,一张悠久而经典的低分辨率老照片,怎么在一个先进的高清的显示器上播放?这就是低分辨率图片和高分辨率显示设备之间的不匹配。很明显,这个场景下我们可以使用超分辨率技术,如下图所示。

单从图像的后处理显示的角度来讲,目前在PC和手机的屏幕显示功能上都配有相应的实时的超分辨率技术。

通过观察可知,PC机上的超分辨率技术相对比较简单(比如,临近像素复制or双线性插值),而手机端屏幕的超分辨率技术比PC机显示的超分辨率技术的性能要更好一些,能够提供较好的主观视觉质量,且IOS系统的手机的超分辨率技术相比于一些Andriod系统手机的超分辨率技术性能更高一些。不同的超分辨率算法带来的增强视觉感受的效果不同,一些软件的超分辨率方法在带来更好的视觉质量的同时,也引入了很大的计算代价,不断挑战着显示设备的计算能力。

4、超分辨率能节省带宽吗?

那么,前边赘述了这么多超分辨率的基础概念和使用方法,这个技术看起来就是万能的吗?有些人会有疑问,那就可以借着超分辨率技术用小分辨率的图进行通信就好了?其实并不是这样的!

在传输图片的时候,超分辨率和带宽有什么关系呢?

一般来讲,现在的通信类应用中,图片都是需要经过压缩,传输,再解压缩这样的一系列过程:

最直接的方案A是按照原分辨率和现有带宽来进行压缩和传输,最终直接显示;

而另一种方案B是,先通过下采样的方法将原视频图像的分辨率下采为原分辨率的1/K,然后在低分辨率和现有带宽下进行压缩和传输,接收端在解码后通过超分辨率技术将该视频图像的分辨率以K倍重建后显示。

如下图所示:

这里,超分辨率技术就不单单是一个视频图像的后处理技术,而是基于上下采样的编码传输框架中的一个重要环节。那么问题来了,这种下采样-超分辨率的图片传输方案B能够节省带宽吗?(最终图片的视觉质量一致的前提下),或者说是在相同的带宽限制下,直接压缩传输大图片和压缩小图片再超分辨率显示,哪一种方案对显示的主观质量更好?

由于在这个场景下两个方案之间不能直观的从理论上比较,所以我们通过实验来进行说明,设计了以下实验:

原图压缩方案A,即原始高分辨率图像直接通过编码器进行压缩和传输,在解码端直接得到原始分辨率的重构图像。基于上下采样的图像压缩方案B,即图像首先经过一个分辨率下采样(宽高均为1/2倍)的预处理方法,再将得到的低分辨率图像利用相同的第三方的编解码器WebP进行压缩和传输,最后将在解码端得到的低分辨率图像利用超分辨率技术重建出其高分辨率的图片(这里超分辨率技术选用Google在G+上的方案和一种经典的深度网络的SCN方法)。

下面我们给出两个不同策略下的图像压缩的(图片质量和文件大小)性能的比较,如下图所示:

如图(a)和(b)两幅图像的性能比较所示,图像纵坐标为图像全参考的视觉质量评价方法SSIM指标(用来比较相同分辨率下的原图和在对端最终显示的图像的差异),横坐标为图像经由第三方编码器WebP的压缩码流所占用的存储空间(KB),上下采样压缩曲线的四个数据点对应WebP质量因子分别为40,60,80,100,而原图压缩的四个数据点对应WebP质量因子分别是2,5,15,60。

实验中首先验证得到两个认识:

一个是随着码率(带宽)的增加,直接压缩传输的方案A能快速的达到近无损压缩或无损压缩;

另一个是随着码率(带宽)的增加,超分辨率的方案B具有性能上限的限制,接近上限时,增加码率就只会带来非常微弱视觉性能的提升。

再通过实验曲线可以得出,在低码率范围内,采用原图压缩方案的压缩效率要低于基于采样的图像编码策略(即同等质量下,基于采样的图像编码策略图片文件更小,节省带宽),而在中高码率范围内,采用原图压缩方案的压缩效率要优于基于采样的图像压缩方案(即同等质量下,超分辨率的图像编码策略的图片文件更大,浪费带宽)。

进而我们结合应用环境得出以下结论:

在带宽严重受限的情况下,使用超分辨率技术能够改善其原本较差的视觉质量(即超分辨率技术在同等质量下节省传输带宽);

在带宽良好的情况下,原图分辨率直接压缩传输的方案能够提供更加好的视觉质量(即超分辨率技术在同等质量下浪费传输带宽和后处理计算资源)。

目前,在常见的一些视频图像的应用中,我们给定的码率均为中高码率以满足图像视频的视觉质量,大部分移动终端上的视频图像应用的方案均为在目标分辨率上直接压缩,质量控制在高于WebP质量因子为60的水平,如实验中验证的一样,在这个码率范围下,采用现有的直接压缩原图方案A要优于下采样压缩低分辨率图像再做解压缩超分辨率的方案B。

5、本文小结

视频图像超分辨率技术,是图像处理相关问题中的基础问题之一,也是近些年来学术界研究的热点问题。

视频图像超分辨率技术作为图像的后处理技术能为了匹配更大分辨率的显示设备够提升图像的主观视觉效果。在压缩传输的应用场景中,为了在同等带宽下获得更高的图像质量,超分辨率算法适用于低带宽时低质量图像上的增强,在带宽充足时仍然应该传输高分辨率图像,即下采样—超分辨率的技术,受限于其性能上限,仅仅在低码率传输条件下,采用超分辨率增强的图像质量明显优于的在大图像上直接编码(即同等质量节省带宽)。

综上所述,视频图像超分辨率技术在应用中要考虑计算复杂性限制,传输带宽的限制和视觉性能上限(主观视觉效果)等因素,来选择恰当的应用场景。

附录:QQ、微信团队相关文章汇总

[1] 有关QQ、微信的技术文章:

《微信团队分享:视频图像的超分辨率技术原理和应用场景》

《微信团队分享:微信每日亿次实时音视频聊天背后的技术解密》

《QQ音乐团队分享:Android中的图片压缩技术详解(上篇)》

《QQ音乐团队分享:Android中的图片压缩技术详解(下篇)》

《腾讯团队分享:手机QQ中的人脸识别酷炫动画效果实现详解》

《腾讯团队分享 :一次手Q聊天界面中图片显示bug的追踪过程分享》

《微信团队分享:微信Android版小视频编码填过的那些坑》

《微信手机端的本地数据全文检索优化之路》

《企业微信客户端中组织架构数据的同步更新方案优化实战》

《微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉》

《QQ 18年:解密8亿月活的QQ后台服务接口隔离技术》

《月活8.89亿的超级IM微信是如何进行Android端兼容测试的》

《以手机QQ为例探讨移动端IM中的“轻应用”》

《一篇文章get微信开源移动端数据库组件WCDB的一切!》

《微信客户端团队负责人技术访谈:如何着手客户端性能监控和优化》

《微信后台基于时间序的海量数据冷热分级架构设计实践》

《微信团队原创分享:Android版微信的臃肿之困与模块化实践之路》

《微信后台团队:微信后台异步消息队列的优化升级实践分享》

《微信团队原创分享:微信客户端SQLite数据库损坏修复实践》

《腾讯原创分享(一):如何大幅提升移动网络下手机QQ的图片传输速度和成功率》

《腾讯原创分享(二):如何大幅压缩移动网络下APP的流量消耗(下篇)》

《腾讯原创分享(二):如何大幅压缩移动网络下APP的流量消耗(上篇)》

《微信Mars:微信内部正在使用的网络层封装库,即将开源》

《如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源》

《开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石 [源码下载]》

《微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解》

《微信团队原创分享:Android版微信后台保活实战分享(进程保活篇)》

《微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)》

《Android版微信从300KB到30MB的技术演进(PPT讲稿) [附件下载]》

《微信团队原创分享:Android版微信从300KB到30MB的技术演进》

《微信技术总监谈架构:微信之道——大道至简(演讲全文)》

《微信技术总监谈架构:微信之道——大道至简(PPT讲稿) [附件下载]》

《如何解读《微信技术总监谈架构:微信之道——大道至简》》

《微信海量用户背后的后台系统存储架构(视频+PPT) [附件下载]》

《微信异步化改造实践:8亿月活、单机千万连接背后的后台解决方案》

《微信朋友圈海量技术之道PPT [附件下载]》

《微信对网络影响的技术试验及分析(论文全文)》

《一份微信后台技术架构的总结性笔记》

《架构之道:3个程序员成就微信朋友圈日均10亿发布量[有视频]》

《快速裂变:见证微信强大后台架构从0到1的演进历程(一)》

《快速裂变:见证微信强大后台架构从0到1的演进历程(二)》

《微信团队原创分享:Android内存泄漏监控和优化技巧总结》

《全面总结iOS版微信升级iOS9遇到的各种“坑”》

《微信团队原创资源混淆工具:让你的APK立减1M》

《微信团队原创Android资源混淆工具:AndResGuard [有源码]》

《Android版微信安装包“减肥”实战记录》

《iOS版微信安装包“减肥”实战记录》

《移动端IM实践:iOS版微信界面卡顿监测方案》

《微信“红包照片”背后的技术难题》

《移动端IM实践:iOS版微信小视频功能技术方案实录》

《移动端IM实践:Android版微信如何大幅提升交互性能(一)》

《移动端IM实践:Android版微信如何大幅提升交互性能(二)》

《移动端IM实践:实现Android版微信的智能心跳机制》

《移动端IM实践:WhatsApp、Line、微信的心跳策略分析》

《移动端IM实践:谷歌消息推送服务(GCM)研究(来自微信)》

《移动端IM实践:iOS版微信的多设备字体适配方案探讨》

《信鸽团队原创:一起走过 iOS10 上消息推送(APNS)的坑》

《腾讯信鸽技术分享:百亿级实时消息推送的实战经验》

>> 更多同类文章 ……

[2] 有关QQ、微信的技术故事:

《2017微信数据报告:日活跃用户达9亿、日发消息380亿条》

《腾讯开发微信花了多少钱?技术难度真这么大?难在哪?》

《技术往事:创业初期的腾讯——16年前的冬天,谁动了马化腾的代码》

《技术往事:史上最全QQ图标变迁过程,追寻IM巨人的演进历史》

《技术往事:“QQ群”和“微信红包”是怎么来的?》

《开发往事:深度讲述2010到2015,微信一路风雨的背后》

《开发往事:微信千年不变的那张闪屏图片的由来》

《开发往事:记录微信3.0版背后的故事(距微信1.0发布9个月时)》

《一个微信实习生自述:我眼中的微信开发团队》

《首次揭秘:QQ实时视频聊天背后的神秘组织》

>> 更多同类文章 ……

(本文同步发布于:http://www.52im.net/thread-1377-1-1.html)

转载于:https://my.oschina.net/jb2011/blog/1616174

微信团队分享:视频图像的超分辨率技术原理和应用场景相关推荐

  1. 微信团队分享:微信移动端的全文检索多音字问题解决方案

    本文来自微信开发团队WeMobileDev公众号的技术分享. 1.前言 微信的移动客户端全文搜索中的多音字问题一直是搜索体验的痛点之一.微信客户端全文搜索在上线以后,也经常收到用户关于多音字问题的反馈 ...

  2. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文来自微信开发团队guoling的技术分享. 1.前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称 ...

  3. 微信团队分享:微信支付代码重构带来的移动端软件架构上的思考

    本文原文由微信客户端高级工程师方秋枋原创发表于WeMobileDev公众号,收录时有修订和加工,感谢作者的无私分享. 1.引言 作为一个重要业务,微信支付在客户端上面临着各种问题. 其中最核心问题就是 ...

  4. 微信团队分享:微信直播聊天室单房间1500万在线的消息架构演进之路

    本文由微信开发团队工程师" kellyliang"原创发表于"微信后台团队"公众号,收录时有修订和改动. 1.引言 随着直播和类直播场景在微信内的增长,这些业务 ...

  5. 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

    1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...

  6. 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

    本文由微信开发团队工程是由"oneliang"原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBr ...

  7. 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?

    本文来自微信开发团队yanyang的技术分享. 1.引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历.前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微 ...

  8. 一键提升多媒体内容质量:漫谈图像超分辨率技术

    编者按:作为将模糊的图像变清晰的神奇技术,图像超分辨率技术在游戏.电影.相机.医疗影像等多个领域都有广泛的应用.在这篇文章中,微软亚洲研究院的研究员们为你总结了图像超分辨率问题中的主流方法.现存问题与 ...

  9. 漫谈图像超分辨率技术

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作为将模糊的图像变清晰的神奇技术,图像超分辨率技术在游戏.电影.相 ...

最新文章

  1. 高德引擎构建及持续集成技术演进之路
  2. “桥铁”旅行团春节昌旺 业界称成港人出游新模式
  3. HYSBZ 1010 玩具装箱toy (决策单调DP)
  4. 【虚拟化实战】存储设计之七Block Size
  5. python写入excel特定区域_Python读取Excel中符合特定条件的数据,并写入新的表格中...
  6. git分支合并指定代码_git的几种实用操作(合并代码与暂存复原代码)
  7. MVC4 下DropDownList使用方法
  8. 在tomcat文件夹下启动war项目
  9. 怎么清理计算机后台程序,怎么清理电脑应用插件-电脑插件清理的方法 - 河东软件园...
  10. 【解决】Yandex浏览器Bing搜索遭遇trovi.com劫持
  11. 音量控制面板项目说明
  12. java解析加密excel,java poi 打开加密 excel?该怎么处理
  13. python如何调用数学函数_Python_函数调用_数学函数_组合
  14. CSDN日报20170317——《转行穷三年?未必!》
  15. win10 mac的clover双系统后 win10时间不同步问题
  16. SpringCloud Alibaba实战第九课 分布式事务理论、DevOps运维
  17. html同时播放多个文件夹,怎么把很多文件一起同时放入一个文件夹内
  18. 红米4鸿蒙系统刷机包,小米红米(移动版)刷机包 基于官方4.2.1 极简稳定纯净 完整root权限 V4.0...
  19. python数据可视化之Matplotlib
  20. java计算机毕业设计高校教师工作量管理系统MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. 青藏高原对印度意味着什么呢?
  2. VMware | 装虚拟机后root默认密码
  3. 为什么要购买阿里云服务器?云服务器用途有哪些?
  4. 零基础学前端- 01- HTML基础--基本概念(建议收藏)
  5. matlab2020 安装MinGW-w64 C/C++编译器下载和安装【亲测有用】
  6. 【时间序列】时间序列统计分析相关知识的总结与梳理
  7. cshop是什么开发语言_学会了 C 语言真的可以开发出很多东西吗?
  8. 电子书管理软件Calibre使用
  9. POI在指定excel插入行java
  10. 2014年度总结——软件产品化的简要理解