找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[ 行业资讯 ] 【观点】Google用算法实现单反的景深效果和光场相机的先拍照后对焦 ...

2014-04-19 09:31| 发布者: watchmen | 查看: 1224 | 收藏

摘要: 守望者:在享受算法带给我们的便利的时候,你一定感叹google的伟大(有点夸张的手法),但你一定感叹算法的魅力,如果你以前只是听说链表,树,图这些是算法的话,是时候改变了,去钻研那些让你惊叹的算法吧。 ... ...

Google 近日正式推出了新版的Google Camera app。这款 Android 应用的最大亮点是用算法实现单反相机的景深效果—即可以让前景清晰,远景模糊。不过 app 目前仅支持 Android 4.4(KitKat),但官方称后续将支持更多版本。

新版 Google Camera 的版本号为 2.1.037。该应用不仅开发了全新的界面,而且新增了几项令人眼前一亮的新功能,包括镜头模糊功能、改进的全景拍摄,以及照片球等。

其中最重要的新功能就是类似数码单反相机的镜头模糊功能。我们知道,对于业余的摄影爱好者来说,最难掌握的技巧之一就是对景深的把握。哪怕用单反相机也要经过一些相对复杂的设置才能实现前景突出背景模糊的效果。智能手机的相机尽管从分辨率上来看也能与数码相机匹敌,但以往并不具备类似的功能。

比单反相机更强悍的是支持先拍照后对焦的光场相机Lytro。这种相机可以让用户先拍摄照片,然后再根据需要自由对焦。其原理是相机传感器前面布设大量微镜头,通过这些微镜头,相机传感器记录下的不是单一的由镜头、光圈等设置决定的图像,还包括了用复杂的方式记录下来的各个方位的光线,随后 Lytro 软件会根据需要对图像进行解码,从而达到先拍照后对焦的效果。

Google Camera 的原理与 Lytro 类似,只不过前者是软件实现的,后者是硬件实现。Google 工程师 Carlos Hernández 在博客中解释了其镜头模糊功能的机制。Google Camera 事先捕捉的也不仅仅是一张照片,而是在用户拍照前移动手机时捕捉下一系列的帧。然后利用计算机视觉算法对这些图像帧进行处理,创建出对象的 3D 模型,再估算出到达屏幕每一点的距离(景深)。就像下面这组照片的对比(左边是原始效果,右边是镜头模糊效果):


以下是具体实现过程:
(1)App 会筛选出屏幕上的视觉特征,然后在一系列图像中跟踪这些特征。接着利用所谓的运动求取结构(Structure-from-Motion,SfM)算法及光束法平差来计算相机的 3D 定位和定向,以及所有的图像特征在一系列帧中的 3D 位置。

(2)app 再利用多视角立体( Multi-View Stereo,MVS)算法计算参照图上每一个像素的景深。Carlos 解释说,MVS 的原理类似于人的立体视觉:只要知道同一个对象在不同图片中的 3D 位置,我们就能三角定位出该对象的 3D 位置并计算出与该对象的距离。人具有高超的识别对象能力,但机器如何识别两张不同照片里面哪个像素和哪个像素是对应的呢?计算两个像素 RGB 颜色之间的绝对误差和(SAD)。于是景深问题就解决了。

(3)最后就是优化问题。按照 Carlos 的说法,一张最好的景深图应该是所有的相应像素之间相互类似程度最高的。但这样又会导致不同的景深图的匹配度一样。为了解决这个问题,Google 引入了场景的 3D 几何学条件来辅助优化,比方说,可以假设临近的两个像素之间的景深类似。最后,再利用马尔科夫随机场推理法来解决此优化问题(下图中的中间那幅就是景深图,越近颜色越黑,越远颜色越白)。


有了景深图之后,app 就可以对图片进行重新渲染了。渲染的效果可以根据像素深度、光圈以及与焦面的相对位置来进行不同程度的模糊化处理。焦面决定了对哪一像素进行模糊化,app 会根据像素与焦面的距离按比例提高 / 降低模糊度。也就是说用户可以通过 app 确定焦点在哪里,然后实现前景清晰背景模糊或者背景清晰前景模糊(如下图)的效果。


会员评论  

已有0参与评论

推荐阅读

[守望者 算法视频]01_数据存储(链表与数组)
[守望者 算法视频]01_数据存储(链表与
本章重点介绍数据的在计算机的存储方式 :连续存储(数组)与链式存储,同时
[守望者   java初中级视频]22_javaNIO,AIO编程
[守望者 java初中级视频]22_javaNIO,
内容简介:本课程介绍阻塞,非阻塞,同步和异步的基本概念,介绍javaNIO,AIO
[守望者   java初中级视频]00_java初中级课程学习导航
[守望者 java初中级视频]00_java初中
内容简介:全面贾少这套视频课程学习需要具备的理论基础,以及适合的学习人群
【守望者 linux项目】linux下的FTP服务器与客户端,作者 灯下野狐 ...
【守望者 linux项目】linux下的FTP服务
本项目是一个完整的FTP服务器及FTP客户端设计示例,对于需要学习网络编程项目
【守望者 游戏项目】基于cocos2d-x的跑酷游戏项目教程
【守望者 游戏项目】基于cocos2d-x的跑
Cocos2d-x跑酷游戏项目教程Cocos2d-x跑酷游戏项目教程cocos2d-x特性cocos2
【守望者 linux项目】mini WEB服务器设计
【守望者 linux项目】mini WEB服务器设
以下是曾经Watchmen一个朋友学习网络编程时设计的一个简单的MiniWEB服务器。
【守望者 观点】智能路由和Wi-Fi探针是一对好基友
【守望者 观点】智能路由和Wi-Fi探针是
智能路由与Wifi探针可以收集用户行为,同时可以收集用户MAC地址,还可以跟踪
[守望者 linux视频]01_开发工具与开发平台
[守望者 linux视频]01_开发工具与开发
本课主要介绍gcc,gdb等系列开发工具,开始编写程序之旅。要求理解Linux开发平
[守望者 算法视频]08_数据查找_hash算法
[守望者 算法视频]08_数据查找_hash算
守望者:普通逐个查找O(n),组织方式可以无序的数组或者普通链表。已经排序的
【解读】什么样性格的人会被夸性格好
【解读】什么样性格的人会被夸性格好
守望者:性格决定命令。好的性格意识着给别人面子,能接受别人装逼,而且以上
[守望者 linux视频]02 进程内存管理与valgrind的使用
[守望者 linux视频]02 进程内存管理与v
本课主要介绍Linux可执行文件与进程内存结构, Linux进程结构及内存申请与释放
[守望者 C和指针]11_高级指针_C_面向对象
[守望者 C和指针]11_高级指针_C_面向对
(1) 彻底解决指针、取地址后的类型问题。(2) 回调函数示例。
【观点】闲聊阿里“996",全集团ALL IN无线策略及加班之意义 ...
【观点】闲聊阿里“996",全集团ALL IN
守望者:几乎的所有的员工都不喜欢8小时之外的工作,而几乎所有的老板都期望
【守望者 观点】你是哪种人?一个能看穿你的人性和欲望的测试 ...
【守望者 观点】你是哪种人?一个能看
守望者:这个心理测验来自西方,是与人潜意识有关。我10多年前认识个朋友,从
【守望者 Linux项目】二阶段提交应用项目(Two-phase commit protocol )2PC 高并发 . ...
【守望者 Linux项目】二阶段提交应用项
背景:以下是watchmen曾经编写的一个二阶段提交银行系统的项目。这个项目源于

行业聚焦  面试交流  职位推荐  开发视频   技术交流  腾讯微博  新浪微博

友情链接:课课家教育  阿里云  鲜果  W3Cfuns前端网  中国企业家  环球企业家  投资界  传媒梦工场  MSN中文网  Android开发者社区  cnbeta  投资中国网  又拍云存储  美通说传播  IT茶馆  网商在线  商业评论网  TechOrange  IT时代周刊  3W创新传媒  开源中国社区  二维工坊  Iconfans  推酷  智能电视网  FreeBuf黑客与极客  财经网  DoNews  凤凰财经  新财富  eoe移动开发者社区  i黑马  网易科技  新浪科技  搜狐IT  创业家  创业邦  腾讯财经  福布斯中文网  天下网商  TechWeb  雷锋网  新浪创业  和讯科技  品途O2O  极客公园  艾瑞网  抽屉新热榜  卖家网  人民网通信频道  拉勾网  创新派  简单云主机  

手机版|黑名单|守望者在线 在线教育 linux 高级程序设计 C/C++ 大数据 ( 蜀ICP备14029946号

成都守望者科技有限公司 © 2013-2016 All Rights Reserved