2019-05-29开始二师父的教程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

减小该值可扩大缓冲区
增大该值可缩小缓冲区

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容

  • 转载自VR设计云课堂[https://www.jianshu.com/u/c7ffdc4b379e]Unity S...
    水月凡阅读 1,002评论 0 0
  • public classCamera.Parametersextends Objectjava.lang.Obje...
    冉冉升起的小太阳阅读 10,826评论 0 7
  • 我们目前使用的所有光照都来自于一个单独的光源,这是空间中的一个点。它的效果不错,但是在真实世界,我们有多种类型的光...
    IceMJ阅读 1,126评论 1 1
  • 一.打破传统照明观念,重构照明认知: 1.白炽灯和日光灯大致可以根据瓦数来判断亮度,瓦数越大,电力越多,灯泡也就越...
    灵洁不止阅读 653评论 0 0
  • 今天,我坐在一个餐厅,默默地看着落地窗外,风把树吹得无尽的倾斜,耀眼阳光不经意的就隐去了,似乎要下雨了。 入夏...
    奕迟阅读 204评论 0 1