专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Iphone

iPhone 跟 Galaxy快速拍照原理详细分析

发布时间:2010-05-30 00:31:49 文章来源:www.iduyao.cn 采编人员:星星草
iPhone 和 Galaxy快速拍照原理详细分析

我们知道iPhone 和 Galaxy系列手机的拍照速度那是相当的快,这样国内就有很多所谓的公司花大价钱在那研究,其实原理很简单,但是就没有几个公司按照这种模式去做的。

首先我们看一下Android系统默认拍照流程是怎么样子的,先上两幅图:

图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就可以实现真正的快速拍照。


以上原理,版权所有,转载请说明出处,否则本人有追究的权利。

有感兴趣的公司或者个人我们可以一起交流。

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: