iPhone 和 Galaxy高速拍照原理具体分析
版权声明:本文为博主原创文章,未经博主同意不得转载。
https://blog.csdn.net/zoosenpin/article/details/30027263
1 原理分析
首先我们看一下Android系统默认拍照流程是怎么样子的,先上两幅图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem9vc2VucGlu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />
图1
图2
从上面两副图大概描写叙述一下Android是怎样拍照的:
1) 首先停止摄像头的预览功能,然后给摄像头发命令。进入拍照模式;
2) 假设摄像头自带ISP的。那么从摄像头出来的数据就是JPEG了。假设摄像头不带ISP。那么摄像头出来的数据是原始的。这样将原始数据再送给SOC的ISP编码处理并保存为文件;
3) 又一次启动Camera的预览。
为了弄清楚高速拍照的原理,以下我上一个Camera预览原理图:
图3
Camera预览是将摄像头输出图像数据不断的送往Overlay模块处理并叠加到LCD屏幕上,这里我就想了,既然预览是摄像头不断的输出数据。那么我就能够从预览帧中取一帧图像数据并编码保存为照片了,这不就能够了嘛!
但有一个问题是预览的分辨率可能非常小。而拍照的分辨率非常大。须要用软件把预览的图像进行放大。这样用户看到的照片就会造成图像失真。有马赛克的感脚。那怎么解决问题呢?事实上你能够变通一下,将预览的图像设置为最大分辨率进行预览,而拍照仅仅把最大分辨率预览的图像进行缩小,这样问题就好解多了。
从上面分析,修正后的快拍原理图例如以下:
图4
1) 摄像头进行最大分辨率预览;
2) 摄像头出来的图像数据流向一是送给Overlay模块缩小到适合屏幕显示。
3) 摄像头出来的图像数据流向二是送给2D GPU,2D GPU依照用户设置的拍照分辨率进行缩小,然后再送给ISP编码并保存为文件。
综上。我们仅仅要改动Android Camera Service和HAL就能够实现真正的高速拍照。
2 Abbreviations
ZSL:Zero Shutter Lag
iPhone 和 Galaxy高速拍照原理具体分析的更多相关文章
- 2019-2020-1 20199303<Linux内核原理与分析>第二周作业
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...
- 20169212《Linux内核原理与分析》课程总结
20169212<Linux内核原理与分析>课程总结 每周作业链接汇总 第一周作业:完成linux基础入门实验,了解一些基础的命令操作. 第二周作业:学习MOOC课程--计算机是如何工作的 ...
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
- AJAX练习(一):制作可以自动校验的表单(从原理上分析ajax的作用)
继上文(AJAX(一)AJAX的简介和基础)作为联系. 传统网页在注册时检测用户名是否被占用,传统的校验显然缓慢笨拙. 当ajax出现后,这种体验有了很大的改观,因为在用户填写表单时,签名的表单项已经 ...
- 20169210《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...
- wp7之换肤原理简单分析
wp7之换肤原理简单分析 纠结很久...感觉勉强过得去啦.还望各位大牛指点江山 百度找到这篇参考文章http://www.cnblogs.com/sonyye/archive/2012/03/12/2 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第八周作业
2018-2019-1 20189221 <Linux内核原理与分析>第八周作业 实验七 编译链接过程 gcc –e –o hello.cpp hello.c / gcc -x cpp-o ...
- 2018-2019-1 20189221 《Linux内核原理与分析》第七周作业
2018-2019-1 20189221 <Linux内核原理与分析>第七周作业 实验六 分析Linux内核创建一个新进程的过程 代码分析 task_struct: struct task ...
随机推荐
- IP地址分类、私有地址、子网、子网掩码
IP地址分类介绍 这里讨论IPv4,IP地址分成了A类.B类.C类.C类.E类,如下图所示: 解释: A类以0开头,网络地址有7位,主机地址有24位,举例:A类地址:0 10000000 000000 ...
- spoj-SAMER08A-最短路
SAMER08A - Almost Shortest Path #graph-theory #shortest-path #dijkstra-s-algorithm Finding the short ...
- 【SystemTap】 Linux下安装使用SystemTap源码安装SystemTap
转自 http://blog.csdn.net/zklth/article/details/6248558 文章 http://blog.csdn.net/zklth/archive/2010/09/ ...
- wii 入门之路--fatt
wii 入门之路--fatt system menu:系统界面,开机进入后,显示很多应用,4.1用IOS60. Channel:理解为界面中的软件应用和游戏. IOS:IOS(Input Output ...
- IOS-第三方开源库
我找的琐碎框架 1.HZExtend:应用快速开发架构集合了MVC和MVVM的特点https://github.com/GeniusBrother/HZExtend : 1.减少控制器压力以及耦合 2 ...
- Ubuntu 无法获得锁
使用ubuntu安装pip 时,出现以下错误: E: 无法获得锁 /var/cache/apt/archives/lock – open (11 资源临时不可用) E: 无法锁定下载目录 解决方法: ...
- IHTMLDocument2 TO IWebBrowser2
if(NULL != pIHTMLDocument2) { IHTMLWindow2* pIHTMLWindow2 = NULL; hr = pIHTMLDocument2->get_paren ...
- EPANET中的typedef使用
struct Floatlist /* Element of list of floats */{ double value; struct Floatlist *next;};typ ...
- C++复习4.函数设计基础
C/C++ 函数设计基础 20130918 函数式程序的基本功能单元,是模块化程序设计的基础,即使函数的功能正确是不够的,因为函数设计的细微缺点很容易导致函数被错用. 了解函数的基本知识,堆栈和堆的相 ...
- NEU 1496 Planar map 计算几何,点到线段距离 难度:0
问题 H: Planar map 时间限制: 1 Sec 内存限制: 128 MB提交: 24 解决: 22[提交][状态][讨论版] 题目描述 Tigher has work for a lon ...