2 AWB简述

2.1 白平衡概念

通俗地来讲,白平衡就是:不管在任何光源下,都能将拍摄的白色物体的图像还原为白色。在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿实现白平衡。

人类视觉系统具有颜色恒常性特点,人类对物体观察不受光源影响。但是Sensor在不同光线下,感知到的物体呈现的颜色不同,在晴朗天空下会偏冷色调,在烛光下会偏暖色调。白平衡的目的就是消除不同光源造成的色彩偏差,使得拍摄出来的照片尽量符合人眼的习惯。

camera sensor在不同光源下对颜色的响应,如下图所示:

白色在人眼中的表现是如下图这样的:

2.2 白平衡原理

第二节抛出一个隐式问题:如何将让camera sensor拍摄的图片和人眼看到的一致呢?我们根据第二节的图片可以这样做:把sensor的R,G,B分量各自乘上一个系数,使RGB三个能量保持相同即可。

白平衡的算法就是计算R、G、B的gain值。一般在实验室中用18%灰卡或者色卡取第22个灰色方块,用软件测出R, G, B的均值,由于G最大,所以以G作为目标进行补偿。
比如原始R=15,G=40,B=30,采用如下的方法计算出白平衡的gain值。

R_gain=40/15
B_gain=40/30
G_gain=1

2.3 实现白平衡算法的基本思路

2.3.1 定参考

首先在灯箱里面不同光源环境下拍摄18%灰卡的图片,例如D75, D65, D50, CWF, TL84, A, H等光源。然后计算每张图片的颜色的比值R/G和B/G,然后把这些点放到坐标轴上,做为参考点(不同传感器在不同光源下测得的灰色 R/G 和 B/G 比率)。打个比方:对于一位分不清颜色的同学,我在红颜色上都做了一个三角形标志,并且告诉他有三角形标志的就是红颜色,那他看到三角形就知道是红色,即使他本身分辨不出来看到的是什么颜色。所以前期定的形状(参考点)越多,相机可以认识的颜色也就越多。

2.3.2 确定灰区

白平衡算法可基于这些参考点创建一个灰色区,从而对给定场景中的统计数据进行筛选。灰色区用于排除来自非灰色物体的统计数据的干扰。

2.3.3 找参考前的算法预处理:统计R/G,B/G值

相机在拍摄照片的时候,会对图像做一个处理,把整个画面分成M* N个块,计算出每一块的基本信息:白色像素的数量及R/G/B通道分量的均值。那我们如何统计 块中 的白色点呢?
思路是:设置一个颜色范围,只要在范围中,就可以认为是白色像素。当然我们还需要去除极值:如果块中的白色像素太少,可以抛弃掉;如果白色像素太多,多到每一个像素点都是,那也要抛弃掉,因为很可能在该区域过曝了。接着把统计到的白色像素点R/G/B取均值,并得到该块的R/G,B/G值。

2.3.4 找参考前的算法预处理:计算当前色温

这个理解起来比较复杂,比如上一步中统计的“白色点”难免会有失误的地方。比较常见的如黄色皮肤容易被误判为低色温下的白点;淡蓝色的窗帘,容易被误判为高色温下的白点。而且当一张图中既有白色,也有黄色,也有蓝色的时候,是不是感觉情况就有点复杂了。这时我们需要一定的策略来正确的判断出到哪个才是真的白。

如上面这样一幅图,该图是在没有开AWB的前提下截取的,可以看到左边白色地方略有偏绿,当前色温是室内白炽灯,大概4000~5000k左右。
首先我们需要找出白区,如下图:

上面这个图中的数字标示出了检测到的白色区域,数字相同的表示一个白区,根据统计信息(白点数,RG/BG值)来区分的。可以看到有误判的地方,比如色卡左上第二块的肤色块。还有最右边从上面数第二块也是容易被判断成低色温白块的情况。
针对这种误判的情况,对不同块根据统计信息进行权重设置,以求让误判的区域对最终结果影响小一些。

上面这个图标注了权重,基本是根据统计信息中白点数来确定的。可以看到图中一片白色被标识了高权重。其它情况被标识了低权重。权重高低一是看块中白色点数量,二是看RG/BG到色温曲线的距离。通过上面两个图,大家就可以明显的找到白色区,并根据曲线来矫正,即使不通过曲线矫正,把白色区的R/G,B/G值向1趋近,让R=G=B,也会得到非常好的白平衡效果。

2.3.5 找参考

接着我们把刚才分成的M* N的这些点都放到刚才那个坐标轴上。靠近某个参考点的坐标点越多,说明当前场景越接近参考点的环境色温。这样我们就可以找到正确的颜色(白点)了。然后根据这个白点计算出AWB的R_gain和B_gain。如果坐标点分布在两个参考点之间,那么白点会根据两个参考点的权重进行插值计算。

2.4 AWB初始调试步骤

调试步骤具体如下:

1.调试AWB参考点,有两种方法:
第一种是相机预览界面为100% FOV 的灰卡,抓取对应光源的R/G, B/G的值

第二种是在chromatix 6导入对应调试光源的100% FOV 的灰卡raw图

调试完参考点后,device导入AWB参数后,启用图片3A log, 在不同光源(D75、D65、D50、CW、TL84、A和H)下拍摄带MCC色卡的正常场景图像,检查第三个灰色块上的R/G和B/G比。R/G 和B/G应介于0.9到1.1之间。

  1. 调试室内和室外指数,即在标准室内光源条件下(非常明亮的场景),光应该显示为白色,室内指数与室外指数之差应大于80,避免AWB跳变问题。

2.5 AWB调试的常用参数

2.5.1 初始AWB增益和CCT

刚启动摄像头时走的便是该参数,该处可修改打开Camera瞬间偏色的问题,因为其只用于打开Camera瞬间,所以若此处根据当前场景更改色温后,当前场景OK,其它场景打开的时候可能会有偏色产生。此外还可调整/* Convergence Factor Camera * /,该值可调整打开camera时的awb收敛速度。
代码位置:

      4100, /* Initial CCT */    //初始色温4100, /* Initial Previous CCT */0, /* AWB Config FULL ROI Camif Size Enable *//* Initial Adjust Gain */{1.805016f, /* Red Gain */       //初始gain值1.000000f, /* Green Gain */2.007156f, /* Blue Gain */},
2.5.2 AWB参考点

具体如何根据参考点创建灰区以及如何根据给定场景中的统计数据进行筛选的算法高通已封装在代码中了,我们暂时无法查看。
代码位置:

        /* AWB Reference Points */{/* D65 AWB Reference Point */{0.446101f, /* R/G ratio outdoor*/0.699809f, /* B/G ratio outdoor*/},/* Shade AWB Reference Point */{0.399000f, /* R/G ratio */0.734900f, /* B/G ratio */},/* A AWB Reference Point */{//0.692100f, /* R/G ratio */0.814343f, /* R/G ratio *///0.416100f, /* B/G ratio */0.375551f, /* B/G ratio */},…}
2.5.3 AWB光源权重

光源权重向量模块会根据不同的CCT和照明条件(即,亮度(Lux 级)不同)给定统计数据不同的权重。也可以这样理解:将CCT比作三维坐标系中的X轴,将lux Level比作三维坐标系中的Y轴,将权重比作三维坐标系中的Z轴,那么我们可以根据X和Y的坐标找到相应的权重值。我们可以通过调节光源权重来决定图像是偏暖色调还是冷色调。调整光源权重可改善白平衡跳变问题。

 /* Weight Vector *//* Region 0 */               //一般有12个Region,根据index分段划分{0, /* Index */{1, /* AWB_DAY_D75 */          //Region下,D75对应的权重1, /* AWB_DAY_D75_D65_1 */…0, /* AWB_CUSTOM_A */0  /* AWB_U30 */},},/* Region 1 */{47, /* Index */…}/* Region 3 */{143, /* Index */…}…
2.5.4 gain adjust

对应调试代码如下:

      /* Gain Adjust */...1, /* Interpolate Gain Adj Enable *//* Gain Adj Bright Light Trigger */{2.000000f, /* Not Applicable */1.000000f, /* Not Applicable */220, /* Lux Index Start */198, /* Lux Index End */},/* Gain Adj Lowlight Trigger */{0.000000f, /* Not Applicable */0.000000f, /* Not Applicable */405, /* Lux Index Start */435, /* Lux Index End */},0, /* Control Method - 1 = Gain, 0 = Lux Index *//* AWB Bright Light Gain Adjust */.../* AWB Gain Adjust */.../* AWB Lowlight Gain Adjust */...

通过 gain adjust ,我们可对应调整 室外/室内/弱光条件下的增益,调整增益最好按照高通调试规则进行调试:

  • 以0.02为增量降低R增益值以将图像向蓝绿色调整。增大该增益值以将图像向红色调整。

  • 以0.02为增量降低B增益值以将图像向黄色调整。增大B增益值以将图像向蓝色调整。

gain adjust 一般是用户对某一场景有特殊要求,比如要求蓝天偏蓝一点。这时我们用gain adjust进行调整,一般调试轻微偏色问题还是先以光源权重调整和CCM调整为先,之后再考虑gain adjust。

2.5.5 Exp Trigger

假如我们在灯箱中测得cwf光源下图片偏黄,且从图片3A log中看到exp_index=189,则非常接近室外shade和室外的插值区,此时我们需要修改室外trigger条件来改善该情况。

      /* Exp Trigger */{140, /* Direct Sun Exp Index */190, /* Outdoor Heuristic Exposure Index Trigger */1, /* Outdoor Heuristic Outdoor Exp Bright Shade Enable */165, /* Outdoor Heuristic Exp Index Bright */190, /* Outdoor Heuristic Exp Index Shade */

<140进入direct sun状态
<190为室外和室外shade启发式trigger状态
<165为室外高亮状态
140-165之间插值,165-190之间插值

ISP Pipeline AWB相关推荐

  1. ISP pipeline、3A(AE、AF、AWB)、Pdaf原理及验证方法、曝光原理。

    ISP pipeline DBS:校准经过OBC之前不同像素暗电流的差值. 因为器件原因,会存在暗电流,存在暗电流的情况下会导致偏色. OBC:sensor电路本身存在暗电流,没有光线的时候,像素会有 ...

  2. Understanding ISP Pipeline - Noise Reduction

    Understanding ISP Pipeline - Noise Reduction 转载于:Understanding ISP Pipeline - Noise Reduction 背景 下图是 ...

  3. ISP pipeline的锐化

    ISP pipeline ISP pipeline算法实现(Python):https://github.com/WaterdropsKun/isppipeline_Python 什么是图像锐化 图像 ...

  4. ISP Pipeline ISO快门光圈曝光

    ISO&快门&光圈&曝光 AE 也跟lens的透光率和光圈有所关系,硬件是固定的,所以需要通过软件调整增益. 光圈越大,通光量就会越多,得到的亮度就越多,那sensor的感光性 ...

  5. ISP Pipeline lens shading

    关于lens shading,我主要阐述lens shading产生的原因和shading 校正的简单模型,然后通过一个例子说明lens shading调试的注意点. 导致shading的几种原因 机 ...

  6. ISP pipeline之lens shading correction

    lens shading基本概念 Lens Shading,一般称为镜头阴影或者镜头暗影,作为通常在成像中肉眼可见的现象一般也有两种,即图像中心和四周的亮度变化和图像中出现的偏色现象,如图所示,通常称 ...

  7. ISP Pipeline AE

    1 AEC简述 人眼是有自动调节功能,sensor是没有调节功能的,环境的亮度可以通过人眼来适应,因此人眼的亮度总是合适的.人眼是非线性化的,而相机是线性化的. 相机视觉的亮度取决于曝光设置.除非曝光 ...

  8. mipi和isp处理_图像信号处理 (ISP) 流水线

    产品描述 The logiISP-UHD Image Signal Processing Pipeline IP core is an Ultra High Definition (UHD, incl ...

  9. 【高通SDM660平台 Android 10.0】(13) --- Camera ISP 之 数字成像系统介绍

    [高通SDM660平台 Android 10.0] --- Camera ISP 之 数字成像系统介绍 一.成像系统的组成 1.1 视角 1.2 曝光 1.3 感光度 ISO 1.4 光源 1.5 光 ...

  10. 【ISP】浅析CCM

       对于正常人而言,睁开眼的一刹那,便能看到五彩斑斓的世界.各种形形色色的物体不断映入我们的眼帘,刷新着我们对这个世界的感知.在遇到美好的场景后,我们通常也会以文字.图画.照片或者视频等方式将其记录 ...

最新文章

  1. FreeSwitch 的初始化及其模块加载过程
  2. 谷歌前CEO对“元宇宙”大泼冷水:AI技术是伪神
  3. 还在用Synchronized?Atomic你了解不?
  4. dl 系列服务器,DL系列服务器内存总结..doc
  5. 使用 SCons 代替 Makefile 快速构建应用程序
  6. Java 面向对象 之 引用传递
  7. Python PIL(图像处理库)使用方法
  8. Leetcode每日一题:57.insert-interval(插入区间)
  9. TensorFlow2.0:tensorboard使用
  10. python 防破解_Python 程序员如何防止数据被修改?
  11. cropper裁切图片并预览上传(1)
  12. albrooks图表解读_【正版全新】日本蜡烛图交易技术分析:详细解读价格行为模式 [美] 艾尔·布鲁克(Al Brooks)...
  13. 计算机学术论文shortessay,英语学术论文与研究方法-北京林业大学外语学院.doc
  14. 老哥教你如何将springboot打包成exe程序
  15. node.js云学堂微信小程序学习系统的设计与实现毕业设计源码011735
  16. Spring security的基础用法(普通的用户认证和授权)
  17. Java实现酒店管理系统(可运行可实现)
  18. php yield Generator 处理大数组
  19. System.Data.SqlClient.SqlException: 用户 'IIS APPPOOL\y3' 登录失败
  20. KNIME服务器安装配置

热门文章

  1. 乌云平台公开漏洞、知识库爬虫和搜索——乌云所有离线数据
  2. switch之enum
  3. 谢烟客---------Linux之深入理解anaconda使用
  4. html实现银行卡中间四位显示为*号,银行卡和手机号中隐藏的数字用*号代替,不能和文字垂直居中,有什么解决方案吗?...
  5. wechat sdk java_使用java集成微信支付sdk。
  6. python 模拟登陆百度
  7. Systick中断延时
  8. 计算机动漫与游戏制作要画画基础吗,动漫制作要有绘画基础吗
  9. web测试----死链检查(Xenu)
  10. git仓库创建及上传