2012-03-30 96 views
0

当用户点击捕获照片按钮时,我尝试了两种不同的方法从Android相机硬件捕获图像。一个调用autoFocus,并在autoFocusCallback完成并成功响应后,捕获图像。二,捕捉图像而不调用autoFocus。在这两种情况下,我都注意到传递给onPictureTaken方法的结果字节数组的长度不同。在autoFocus成功完成并调用autoFocusCallback之后,通常至少比autoFocus调用完全忽略时大50K字节。为什么?有人可以投射一些光线吗?我不明白的是,当autoFocus成功完成时,图片是否应该具有良好的质量?典型的质量是代表每个像素的RGB通道的每个字节中的位的值。不管在RGB字节中加载了什么值,像素的总数以及由此表示RGB通道的总字节数应该相同。但显然似乎在执行autoFocus之后,包含更多字节的数据以获得更清晰的图像,而不是普通的清晰度图像。Android Camera相机在自动对焦后拍摄的照片比没有自动对焦更大

已经研究了一个多月了。真的很感激一个快速的答案。

回答

0

所有图像/视频采集驱动程序都使用YUV格式进行采集。在大多数情况下,格式为YUV420或YUV422。请参阅此链接了解YUV格式的更多信息http://www.fourcc.org/yuv.php

正如您所提到的,自动对焦调用后拍摄的照片更清晰(边缘更清晰,对比度更好),并且在未使用自动对焦拍摄的图像中缺少相同的阴影。

如您所知,Jpeg图像压缩用于压缩图像的数据,压缩基于宏块(图像中的方块)。具有更锐利边缘和更多细节的图像需要比具有模糊的图像更多的系数编码,因为大多数相邻像素看起来像已被平均化。这是为什么自动聚焦图像绑定更多的数据,因为它有更多的细节。