[转]camera教程
camera教程
Lens一般由几片透镜组成透镜结构,按材质可分为塑胶透镜(plastic)或玻璃透镜(glass),玻璃镜片比树脂镜片贵。塑胶透镜其实是树脂镜片,透光率和感光性等光学指标比不上镀膜镜片。
通常摄像头采用的镜头结构有:1P、2P、1G1P、1G2P、2G2P、2G3P、4G、5G等。透镜越多,成本越高,相对成像效果会更出色(个人理解是光线更均匀、更细致;对光线的选通更丰富;成像畸变更小,但是会导致镜头变长,光通量变小)。
这是摄像头里,光学镜片材质以及数量组成的描述。
摄像头用的镜头构造有:1P、2P、3P、4P、5P、1G1P、1G2P、2G2P、2G3P、 4G、5G 等。数字代表镜片数量,G代表玻璃材质,效果很好,价格较高,P代表塑料材质,效果一般,价格便宜。比如3G要比3P好,3G2P要比2G2P好。
镜片越多,成像效果会更出色,成本也会越高。因此一个品质好的摄像头应该是采用多层玻璃镜头。 现在市场上的多数摄像头产品为了降低成本, 一般会采用廉价的塑胶镜头 或一玻一塑镜头(即: 1P、2P、1G1P、1G2P 等)
DSP是CCM的重要组成部分,它的作用是将感光芯片获得的数据及时地快速地传递到中央处理器并刷新感光芯片,因此DSP芯片的好坏,直接影响画面品质,如:色彩饱和度、清晰度、流畅度等。如果sensor没有集成DSP,则通过DVP的方式传输到baseband芯片中(可以理解为外挂DSP),进入DSP的数据是RAW Data,采集到的原始数据。如果集成了DSP,则RAW Data会经过AWB、color matrix、lens shading、gamma、sharpness、AE和de-noise处理,最终输出YUV或者RGB格式的数据。
DVP分为三个部分:输出总线;输入总线;电源总线;如下图:
=
image
PWDN
是camera的使能管脚,有两种配置方式,一种为standby,一种是normal work,设置为standby的时候,一切对camera的操作都是无效的,包括复位。所以在RESET之前,一定要将PWDN管脚设置为normal模式,否则RESET无效。
RESET
是camera的复位管脚,此方式为硬复位模式,camera的各个IO口恢复到出厂默认状态。只有在XCLK开启后,将RESET置为低,硬复位才有效,否则复位无效。
XCLK
是camera的工作时钟管脚,此管脚为BB提供camera的工作时钟。
IIC
是camera和BB通信的总线通道。
DATA
data为camera的数据管脚。此数据脚可以输出的格式有YUV、RGB、JPEG等。
VSYNC
为camera的帧同步信号管脚。一个VYSNC信号结束表示一帧(即一个画面)的数据已经输出完毕。
HSYNC
为camera行同步信号管脚。一个HSYNC信号结束表示一行的数据已经输出完毕。
PCLK
为像素同步信号管脚。一个PCLK信号结束表示一个像素点的数据已经输出完毕。
AVDD
AVDD为camera的模拟电压。
DOVDD
为camera的GPIO口数字电压。
DVDD
为camera的核工作电压。
彩色深度(色彩位数)
反映对色彩的识别能力和成像的色彩表现能力,实际就是A/D转换器的量化精度,是指将信号分成多少个等级。常用色彩位数(bit)表示。彩色深度越高,获得的影像色彩就越艳丽动人。现在市场上的摄像头均已达到24位,有的甚至是32位。
MCLK
摄像头要 工作,必须要有个时钟进行同步,这个时钟就是MCLK,必须要有,否则摄像头就是一个死物,这个时钟由主控芯片提供,确切的说是有主控芯片的控制器提供,下面会提到。
根据亮度/照度指数进行调试的AEC调试参数都可以使用该策略,使用该策略,可以灵活地通过触发点分割亮度区域的数量,每个区域都将分配到参数调试值。在照度指数处于两个区域之间时,所有参数将通过插值计算得出。
例如featureA包含param1、param2、param3和param4四个参数。在这四个参数内,需要根据亮度\照度指数来调试param1和param2。可根据偏好定义调试区数量,但是不应该超过调试区预定义的最大区域数量,将两个必须根据照度指数/场景亮度进行调试的参数组合到一个子结构中,该子结构定义为主调试结构中的一个数组。将另外两个无需基于区域进行调试的参数直接插入主调试结构。
AEC算法依赖于摄像头传感器特定的曝光表,借其以了解如何配置该传感器从而控制感光度,曝光表从指数0开始,该指数对应帧率不变情况下可能的最低感光度。此设置适用于非常明亮的光源条件下。该曝光表以帧率不变情况下可能的最高感光度指数结束。通常将这一最大指数设置为传感器的全画幅曝光时间和允许的最大增益。曝光表指数每增大一级,感光度将随之变化3%。
400 lux 光源条件的照度指数“lux_idx_under_400”
Trigger[0].start = lux_idx_under_400-100
Trigger[0].end = lux_idx_under_400-60
Trigger[1].start = lux_idx_under_400 + 90
Trigger[1].end = lux_idx_under_400 + 160
/* AWB Reference Points /
{
/ D65 AWB Reference Point /
{
0.383700f, / R/G ratio /
0.781200f, / B/G ratio /
},
/ Shade AWB Reference Point /
{
0.341800f, / R/G ratio /
0.832900f, / B/G ratio /
},
/ A AWB Reference Point /
{
0.696800f, / R/G ratio /
0.436700f, / B/G ratio /
},
/ TL84 AWB Reference Point /
{
0.524900f, / R/G ratio /
0.508300f, / B/G ratio */
},
AWB 基础调试代码跟换点。
image.png
拖动滑块调整相应的指数,室内指数与室外指数只差必须大于80,避免AWB突然变化。
/* Indoor Color Correction /
{
/ D65 /
{
1, / Enable /
/ D65 /
{
1.645500f, -0.721500f, 0.076100f,
-0.157900f, 1.317100f, -0.159300f,
0.086700f, -0.699900f, 1.613100f,
0, 0, 0,
0
},
},
/ D50 /
{
1, / Enable /
/ D50 */
{
1.727600f-0.1, -0.764600f+0.05, 0.037000f+0.05,
-0.186600f+0.05, 1.293300f-0.1, -0.106700f+0.05,
0.040800f+0.05, -0.813000f+0.05, 1.772200f-0.1,
0, 0, 0,
0
},
在3A文件的3370行是color correction gamma调试模块参数更改位置。
ABF调试
bright light 使用1000Lux tl84MCC色卡。
normal light 使用200luxtl84MCC色卡。
lowlight 使用10lux及1000lux*Tl84MCC色卡。
对于lowlight调试,chromatix会通过1000luxMCC色卡RAW图片计算应用于lowlight图片的gain值。
image.png
ABF 可在降噪的同时不钝化边缘。
小波降噪
需要TL84条件下拍摄的1000-10lux的raw图。
对于region 5和6,Chromatix6会通过1000 lux
MCC色卡Raw图片来计算应用于Lowlight图像的gain值
在AEC调试开始,应该使用chromatix工具执行以下步骤:
1.黑电平 2.线性度 3.镜头衰减 4.gamma校正。在isp tuning选项卡上点击edit chromatix data。在header选项卡上选择VFE Blocks > Luma Adaptation > Luma Adaptation Enable,并验证该值是否为 0(禁用)。
亮区
在AEC Fine Tuning选项卡上,打开 bright region tuning面板。清除enable复选框。
在3A头文件里搜索 AEC Bright Region */关键词就是亮区的更改点。
暗区
在 AEC Fine Tuning选项卡上,打开 dark region tuning。取消选中enable复选框。
平面场景检测
在AEC Fine Tuning选项卡上,点击 Edit Header。在3A选项卡上,选择AEC>Flat Region>Flat Scene Detection,并验证该值是否为0。
极限色检测和亮度调整
在AEC Fine Tuning 选项卡上,打开 EXtreme Color Tuning 面板。
取消选中enable 复选框。
直方图AEC亮度调整在AEC Fine Tuning选项卡上,打开Histogram Metering Tunning 面板。取消选中 enable复选框。调试过程中使用的所有图像必须由待调试的设备进行拍摄。
基于多区域的通用AEC调试
基于多区域的通用AEC调试将在chromatix 0x308头文件中引入,该调试策略用于包括以下功能在内的许多AEC功能。
1.亮区目标、亮区、暗区、直方图目标调整、极限色
任何根据亮度/照度指数进行调试的AEC调试参数都可使用策略,使用该策略,可以灵活的通过触发点分割亮度区域的数量,每个区域都将分配到参数调试值,在照度指数处于两个区域之前时,所有参数将通过插值计算得出。
/* WLED Trigger /
{
410, / LED Trigger Start Lux Index /
50, / LED Trigger End Lux Index */
},
增大该值可以再更暗的场景中触发LED闪光灯。减少该值可以在更亮的场景中触发LED闪光灯。
/* Fast Convergence /
{
0, / Frame Skip /
0.100000f, / Aggressiveness /
/ Reserved */
{
0.200000f, 0.400000f, 1.500000f, 1.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f
}
},
在aggressive字段中介于0到1之间的值,数值越小,AE速度越快,建议默认值为0.8。
在frame skip字段输入相应值,默认值为0,如果跳帧值不为0。禁用local tone mapping 以避免预览模式中出现亮度闪烁。
跳帧基于传感器曝光作用时序,在之前的图像帧曝光更新尚未统计数据前,如果再次执行曝光更新,则可能出现AEC震荡,将AEC Fast Convergence的值改为1即可以解决该问题。
将摄像头对准由亮到暗的场景,然后对准由暗到亮的场景,验证预览收敛调试效果。不要调试reserved参数,而是使用默认值。
调试室内室外指数
室内和室外指数参数区分室内室外,以及日光直射与阴天/暗光条件
AWB 参考点指的是不同光源的灰色 R/G 和 B/G 比率。灰色的参考点用来为 AWB 计算确定灰区。由于频谱灵敏度的原因,每个sensor模块的 R/G 和 B/G 比率都不尽相同。需要针对每个sensor模块进行参考点校准。
如果使用基准图片调试对 ISP 模块进行初始调试,基准图片调试过程会根据载入到图像库中的图像自动计算出 AWB 参考点,但是这种方式自动计算出来的参考点没有抓取log得到参考点准确。
抓取log的方式如下:
adb root
adb remount
adb wait-for-device
adb shell setprop persist.vendor.camera.stats.awb.debug 5
adb logcat | findstr "simple-grey-world"
在灯箱D75、D65、D50、TL84、A、U30、CWF光源下对准灰卡,使得灰卡占相机整个FOV,抓取参考点
将这些参考点填写到3A头文件中reference point结构体对应的光源中,noon和custom daylight可以与D50光下咋参考点一致,custom A可以与A光一致,如果需要也可以单独去抓取这些参考点。
AF理解:
image.png
ISP通过IIC控制驱动芯片。10bit数据位,对应0-1023DAC code值,驱动芯片根据IIC数据,识别对应sink VCM回路电流,不同电流值,产生不同推力推动镜头,0-1023code代表0mA电流——max mA电流,线性关系。
ISP通过控制DAC code值来改变输出电流值的大小,而ISP就是通过清晰度来判断给多少DAC值。
image.png
马达驱动芯片输出多大的电流都是由后端来控制。当后端平台给出一点运动指令,马达就会带着镜头向目的奔去。由于音圈马达内固定经镜头的载体采用弹片固定,所以在到达指定的位置后,由于弹片受力的因素,需要震荡一段时间之后才会稳定。马达驱动芯片在设计的时候,就引入一个叫做快速稳定的功能。
调试触控式AEC
触控式AEC可根据预览显示屏幕的特定触摸区域来修改亮度测光权重,
1, /* ROI Enable /1用0不用
0.700000f, / Weight /均衡选定UI区域的亮度和正常AEC亮度。/
/* Reserved */
{
0.000000f, 1.000000f, 0.500000f, 0.000000f, 0.000000f
}
},
光源权重
光源权重向量的基本假设是:在某些对应的亮度范围内,光源有很大概率被判定为特定样本。例如,在曝光指数较低的明亮环境下,光源被判定为A样本的可能性非常低。而与之相反,在曝光指数较低的日光环境下,光源被判定为D50样本的可能性却很高。
调试极端蓝色
极端蓝色调试检测天空颜色,避免出现天空发紫问题。
0.755861f, /* Ref B BG Tl84 /
1.000000f, / Threshold To Identify Extreme Blue Stats /
0.200000f, / Blue Sky Percent /
0.150000f, / Blue Sky Percent Buffer /
0.100000f, / Threshold Extreme B Percent For Blue Sky Check */
bule sky percent
增大该值以提高极端蓝色统计数据百分比,以便调用室外蓝天场景所需的防天空发紫功能。
减小该值可降低触发防天空发紫功能所需达到的极端蓝色统计数据数量。
blue sky percent buffer
减小该值可扩大缓冲区
增大该值可缩小缓冲区
作者:清亮2015
链接:https://www.jianshu.com/p/413782f7c53d
[转]camera教程的更多相关文章
- Android Camera 相机程序编写
Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...
- Ceisum官方教程2 -- 项目实例(workshop)
原文地址:https://cesiumjs.org/tutorials/Cesium-Workshop/ 概述 我们很高兴欢迎你加入Cesium社区!为了让你能基于Cesium开发自己的3d 地图项目 ...
- 硅谷新闻2--禁止viewpager预加载
ContentFragment.java class MyOnPageChangeListener implements ViewPager.OnPageChangeListener { ..... ...
- [转]【eoeAndroid索引】史上最牛最全android开发知识汇总
一.开发环境搭建 (已完成) 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK Eclipse ADT 模拟器 AVD 调试器(DEBUG) DDMS 测试 日志 Logca ...
- 最全的android学习资料
一.开发环境搭建 (已完成) 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK Eclipse ADT 模拟器 AVD 调试器(DEBUG) DDMS 测试 日志 Logca ...
- Directx11教程(8) 一个新的camera类
原文:Directx11教程(8) 一个新的camera类 本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类.并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的 ...
- Android视频录制从不入门到入门系列教程(四)————Camera Parameter
Camera提供了一个叫做setParameters的方法帮助开发者设置相机的相关参数. 通过Camera的getParameters方法可以获取到当前为相机设置的相关参数. 下面简单介绍下,视频录制 ...
- Cesium中级教程3 - Camera - 相机(摄像机)
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Camera CesiumJS中的Camera控制场景的视图.有 ...
- 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
随机推荐
- 微服务迁移记(五):WEB层搭建(5)-集成ueditor编辑器,伪分布式图片上传
一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:< ...
- Day02_CMS前端开发
CMS前端开发 1 Vue.js与Webpack研究 参考链接:https://www.cnblogs.com/artwalker/p/13387386.html 2 CMS前端工程创建 2.1 导入 ...
- Python访问字符串中的值
Python访问字符串中的值: 1.可以使用索引下标进行访问,索引下标从 0 开始: # 使用索引下标进行访问,索引下标从 0 开始 strs = "ABCDEFG" print( ...
- 将BX中的数以二进制形式在屏幕上显示出来。
问题 将BX中的数以二进制形式在屏幕上显示出来. 代码 code segment assume cs:code main proc far start: mov bx,011001100110b ;假 ...
- js POST调用api接口时,由于OPTIONS请求导致服务器异常
1.学习心得 当你搜到这个问题时,就表示你已经知道了脚本POST请求接口时,会先执行一次OPTIONS类型的请求.至于为什么会这样,在此就不做描述了,想知道的小伙伴可以查一下:本文主要将我在现实中遇到 ...
- luogu P5289 [十二省联考2019]皮配 背包
LINK:皮配 我承认是一道很难的题目. 不过对于这道题 部分分的提示显得尤为重要. 首先是 40分的暴力dp 很容易想 但是不容易写. 从40分可以发现我们只需要把蓝阵营和鸭派系的人数给存在起来就行 ...
- 《分享》Graphql入门与实践
最近项目用到了graphql,学习了一些并在公司做了一个小分享,希望对你有帮助 一.介绍 Graphql是一种面向数据的API查询语言 Graphql给前端提供一种强力的查询工具,我们可以根据自己定义 ...
- mysql8的深坑
主要记录下自己的出坑过程,有些其实并不是mysql8的问题,但是由于这个版本产生的阻塞时间最长,所以一并记录: 1-项目代码别人能运行,我本地运行不了 定位后发现是由于本地代码运行数据库连接失败,后来 ...
- Linux下运行windows 系统下编辑的Python脚本显示“: 没有那个文件或目录”的过程及解决方案
今天在 linux 系统下执行一windows下编辑的python脚本,提示(:没有那个文件或目录)英文提示:(:No such file of directory)如下: 查看文件的权限发现并没有问 ...
- Java 添加、删除、格式化Word中的图片
本文介绍使用Spire.Cloud.SDK for Java提供的ImagesApi接口来操作Word中的图片.具体可通过addImage()方法添加图片.deleteImage()方法删除图片.up ...