高通MSM8909 CAMERA TUNING 基础 ------ super Good

come from : http://blog.chinaunix.net/uid-7213935-id-5750641.html

一. 重要概念:
1.色温
所谓色温,简而言之,就是定量地以开尔文温度(K)来表示色彩。英国著名物理学家开尔文认为,假定某一黑体物质,能够将落在其上的所有热量吸收,而没有损失,同时又能够将热量生成的能量全部以“光”的形式释放出来的话,它便会因受到热力的高低而变成不同的颜色,如下图:

 


2. 标准光源
是指模拟各种环境光线下的人造光源,让生产工厂或实验室非现场也能获得与这些特定环境下的光源基本一致的照明效果。标准光源通常安装在标准光源箱内,主要用于检测物品的颜色偏差。
人造的标准光源主要有如下10种类型:


在调试的过程中,一般都是基于三种光源类型调试,所用到的光源为D65,D50,TL84,CWF,A,H。


3. 白平衡
所谓白平衡(英文名称为White Balance),就是对白色物体的还原。当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我们看一个白色的物体,感到它是白的;而我们在夜晚昏暗的灯光下,看到的白色物体,感到它仍然是白的。这是由于人类从出生以后的成长过程中,人的大脑已经对不同光线下的物体的彩色还原有了适应性。但是,作为拍摄设备,如数码相机,可没有人眼的适应性,在不同的光线下,由于CCD输出的不平衡性,造成数码相机彩色还原失真。一般情况下,我们习惯性地认为太阳光是白色的,已知直射日光的色温是5200K左右,白炽灯的色温是3000K左右。用传统相机的日光片拍摄时,白炽灯光由于色温太低,所以偏黄偏红。所以通常现场光线的色温低于相机设定的色温时,往往偏黄偏红,现场光线的色温高于相机设定时,就会偏蓝。
为了解决不同色温下,引起的白色漂移现象。由于白色对色温变化的响应最大,通常用白色来作为调整的基色。
4. 自动白平衡
自动白平衡是基于假设场景的色彩的平均值落在一个特定的范围内,如果测量得到结果偏离该范围,则调整对应参数,校正直到其均值落入指定范围。该处理过程可能基于YUV空间,也可能基于RGB空间来进行。对于Sensor 来说,通常的处理方式是通过校正R/B增益,使得UV值落在一个指定的范围内。从而实现自动白平衡。
一般来讲,在优化参数中,自动白平衡  (AWB) 调试模块用于调整参考点、弱光查询表、AWB Bayer 参数和色调校正。
5. 曝光Gain值
曝光等级的强弱,一般由sensor 本省处理能力决定;也可以通过ISP处理能力补强。
6. 光照强度Lux
勒克斯(lux,法定符号lx)照度单位,1 勒克斯等于 1流明(lumen,lm)的光通量均匀分布于 1㎡ 面积上的光照度。
二. 效果参数头文件构架
1. 效果参数文件列表
效果参数一般位于下面路径:

mm-camera\mm-camera2\media-controller\modules\sensors\chromatix\0301\libchromatix,在xxxx_sensor_lib.c 中被加载;文件列表如下:

 


2. 文件构架
所有的效果参数都是在.h头文件中,而头文件有分为两类,

一类是common类,如chromatix_xxxx_common.h,

一类是非common类,如chromatix_xxxx_preview.h。
任何一个复杂的东西,如果把他拆分的足够小,总有你能理解的部分。效果参数也不例外,当你把他们构架细分了的时候,就不会被烦躁的数据所缠扰而不知所云。
1) Chromatix_xxx_common.h 文件构架 
主要包含模块如下: 

Chromatix_xxx_common.h


0x0301,---------------------------------------------------版本
0, // Not compressed
1, // Revision 
{
/*Linearization*/  -------------------------------------线性化
}
{
/*Lens Rolloff */ ---------------------------------------- 镜头衰减
}
{
/*LA Secial Effects---场景特效---*/-----------------场景特效
}

 

线性化:
由于图像感光器所具有的特性,传感器对场景亮度的输出响应不一定是线性的,并且不同照明条件下可能有所不同。

例如,传感器光子响应曲线在强光饱和度条件下几乎是平的。
在黑暗环境下,由于暗电流的原因,传感器输出将不会完全为零。该偏移值取决于使用的具体传感器,并且还取决于集成时间,曝光对应整体增益设置和温度。即使是不饱和区域,R/Gr/Gb/B 通道的响应曲线在线性度方面也可能不完全匹配,从而导致轻微的色偏。

必须为不同照明条件下每个像素的每个通道校正传感器响应的线性度。

镜头衰减:
出于节约成本的考虑以及尺寸方面的原因,手机相机镜头向小型化和低成本方向发展。由于摄像头尺寸小,制造材料品质低,拍摄的图像在靠近边缘处会出现亮度衰减的现象。

因此要对 Bayer raw 图像进行镜头衰减校正,以降低计算负荷。使用 LUT 分段线性近似法代替模拟曲线和多项式运算。每种颜色都有自己的 LUT,因此亮度衰减和色偏问题可同时得到解决。


LA Special Effects
特效场景,如Whiteboard,Blackboard等,不解释。
一般情况下,Linearization不会去调试,如果非要调试,必须要通过工具优化。

Lens Rolloff则需要用工具调试,参见文档:80_NK872_1SC_Chromatix_6_User_Guide___Simplified_Chinese.pdf。
总体而言,Chromatix_xxx_common.h 决定一个模组的基本效果,即使Chromatix_xxx_preview.h再怎么优化,如果Chromatix_xxx_common.h没有优化好,也优化不出最佳的效果。
2) Chromatix_xxx_preview.h 文件
由于preview,video,snapshot等文件构架都一样,此处只分析此类架构。
主要包含模块如下:
chromatix_xxx_preview.h 文件:

0x0301,
0,
1,
{
 /*VFE Blocks*/
{
        /*Black-Level Subtraction*/
}
{
        /*Adaptive Bayer Filter 2 ---ABF2---*/
}
  {
/*Bad Pixel Correction*/
        /*Demosaic3*/
/*Chroma and Luma Filters*/
}
{
/*Color Correction*/
}
{
/*Gamma Tables*/
}
{
/*Color Conversion*/
}
{
/*5x5 ASF  */
    }
{
/*7x7 ASF */
}
{
/*Luma Adaptation   */
/*Chroma Suppression/Memory Color Enhancement  */

}
{
/*Wavelet Denoise*/
},
}
{
/*Manual Whitebalance*/
},
{
/*Auto Whitebalance*/
},
{
/*Bayer AWB Params*/
},
{
/*Exposure  Table*/
},
/*不常用模块*/
{
/*Auto Flicker Detection*/
},
{
/*Auto Scene Detection*/
},

 

三.重点模块调试
1. AEC 曝光表
通过传感器曝光时间和传感器模拟增益控制图像亮度.
a.知识背景:
摄像头sensor使用模拟放大器将像素信息放到来实现传感器增益。也可以将sensor曝光疆场一段时间,使得每个像素都可以收集到更多的光线。之后,可以通过曝光算法控制传感器增益和像素曝光,从而实现与目标值相关的画面、物体或是场景的亮度恒定。
b.chromatix6.0 调试,略去;
c. 手动调试:
代码片段:

 /* Exposure Table */
   {
      1, /* Use Digital Gain */
      367, /* Max Exposure Table Entries for EV0 */
      0, /* Enable Digital Gain for EV Lowlight */
      413, /* Max Exposure Table Entries for EV+2 with digital gain */
      {
         {256, 1}, /* Gain= 1.000 Exposure Index=0 */
         {264, 1}, /* Gain= 1.031 Exposure Index=1 */
         {272, 1}, /* Gain= 1.063 Exposure Index=2 */
         {280, 1}, /* Gain= 1.094 Exposure Index=3 */
         {288, 1}, /* Gain= 1.125 Exposure Index=4 */
         {297, 1}, /* Gain= 1.160 Exposure Index=5 */

 


曝光表不仅仅是上面工具生成的表,还包括很多”target point”,用来做cover,代码片段如下:
/* Low-Light Trigger Points */
      {
         7.200000f, /* Gain Start */
         8.000000f, /* Gain End */
         330, /* Lux Index Start */
         367, /* Lux Index End */
      },
要调试的几个参数:
Luma Target----默认亮度
Fix FPS AEC Table Index------最大帧率下的曝光,影响帧率和亮度

……
2. ABF(Adaptive Bayer Fliter)
a. 知识背景:
常规 2D 卷积滤波会使图像质量劣化(要么图像模糊,噪点少;要么图像锐度高,噪点多),尤其在应用于 Bayer 像素时。而ABF滤波在降噪的同时不钝化边缘,采用的滤波器可根据相邻像素的值调整其内核。
b. 工具调试,略去;
c. 手动优化
不建议手动优化。
3.ASF(Adaptive Spatial Fliter)
a. 知识背景:
自适应空间滤波器 (ASF) 是一种根据边缘检测结果对图像的不同部分执行平滑和锐化处理的自适应滤波器。ASF 针对图像中的不同区域有两种不同的处理方法。它可对细节较少的区域进行平滑处理以实现降噪,对边缘进行锐化处理以提升图像锐度。因此必须为 ASF 滤波器指定两个滤波器,即平滑滤波器和锐化滤波器。

 



b. 工具调试
略去,详细参考:

80_NV105_1SC_5x5_Adaptive_Spatial_Filter_Tuning_Guide__Simplified_Chinese_.pdf
80_NK872_1SC_Chromatix_6_User_Guide___Simplified_Chinese.pdf

c.手动调试:

代码片段:
/* Normal Light */
            {
               10, /* e1 */
               32, /* e2 */
               -32, /* e3 */
               32, /* e4 */
               -32, /* e5 */
               0.750000f, /* k1 */
               0.750000f, /* k2 */
               30, /* sp */
               0, /* sp 5x5 */

 

光照条件 
? 根据光照条件(例如,弱光、正常亮度和强光)确定的ASF参数 

 


曝光指数代表着光照条件,不同光照条件下应使用不同的ASF参数
注意在优化的时候,要兼顾到实际情况,不能随意调试,而各个参数之间也有有关联的。

4. gamma校正table
a.  背景知识
曝光的均值正确了,并不代表整体图像的亮度分布就和人眼所看到的保持一致了。事实上,人眼对亮度的响应并不是一个线性的比例关系,而各种涉及到光电转换的设备的输入输出特性曲线一般也是非线性的,对于sensor来说,其响应倒是接近为线性关系,所以为了在各种设备上正确输出符合人眼对亮度的响应的图像,就需要进行校正。幂函数的指数的倒数就是通常所说的 gamma 值。

 


它能起到的作用很多,它几乎可以影响到图像质量调整的各个方面。在图像质量调整中,Gamma校正的一个重要作用是体现细节,增强对比度。由于人眼对于高亮度的差别感觉不明显,而对低亮度的细小差别感觉较为明显,因此,Gamma校正通过将低亮度部分的差距拉大,而造成低亮度部分的细节能够被人眼明显的感觉出来,而图像的细节部分基本上都是纯在于低亮度部分的。
b. 工具调试略去;
c. 这部分不可能手动优化,但是可以借鉴别的项目的gamma,最好是问FAE要几组他们实验室优化过的gamma table。
5. Color Correction 
 a.  背景知识
由于摄像头系统中使用的光学元件(镜头、色彩滤镜等)和传感器所具有的特性,当图像显示在特定输出介质上时,原始 RGB 数据可能不能真实地呈现给人眼。因此需要进行色彩校正。
b. 工具优化略去。
C.手动优化:
代码片段:

/* TL84 Color Correction */
      {
         1.729600f,    -0.939000f,    0.209400f,
         -0.319300f,    1.277900f,    0.042600f,
         -0.115400f,    -0.994300f,    2.109700f,
         0,    0,    0,
         0
      },

 

如上代码,加粗的对角线依次是R,G,B的饱和度,可以手动调节,注意各个场景下参数。
 
6. Color Conversion 
a. 背景知识:
要拍摄 JPEG 快照图像,必须将 RGB 色彩空间转换为 YCbCr 色彩空间。默认转换矩阵可以在不更改任何信息的情况下将 RGB 值转换为 YCbCr 值。不过,由于人眼和摄像头传感器对光谱响应不同,摄像头捕捉的颜色也与人眼看到的颜色有所不同。要提升还原色彩与人眼感知间的颜色精确度,可对颜色处理管道中的 RGB 至 YCbCr 转换矩阵进行优化,从而最大限度地降低平均色度偏差。高级色度增强 (ACE) 的目的是进一步降低还原色彩与人眼感知间的色差,同时增强期望颜色(例如记忆色)的效果。实际上,ACE 中的很多参数可用于提高转换灵活性,增强空间色彩而尽量不影响其他颜色。
b.工具优化略去;
c.手动调试:

 

代码片段:
/* TL84 Color Conversion */
      /* Noise Weight: 0.000000 */
      /* Saturation: Red - 1.000000, Green - 1.000000, Blue - 1.000000 */
      {
         {
            /* a_m, a_p */
            0.510000f, 0.510000f,
            /* b_m, b_p */
            -0.338000f, -0.338000f,
            /* c_m, c_p */
            0.510000f, 0.5100000f,
            /* d_m, d_p */
            -0.162000f, -0.162000f,
            /* k_cb, k_cr */
            128, 128

 

}
各个量的含义:
a_m:黄色饱和度;
a_p:蓝色饱和度;
b_m:绿色向量;
b_p:红色向量;
c_m:绿色饱和度;
c_p:红色饱和度;
d_m:黄色向量;
d_p:蓝色向量;
通过手动调试片段中加粗的参数,可以到到色彩的微调,尤其是肤色色彩。


7. 白平衡
a. 背景知识
见前重要概念章节所述。
b. 工具优化略去;
c. 手动优化:
   一般分为手动白平衡和自动白平衡。
Manaual Whitebalance
代码片段如下:
/* TL84 Whitebalance - RGB */
   {1.074800f, 1.000000f, 1.717200f},
   /* D50 Whitebalance - RGB */
   {1.300800f, 1.000000f, 1.302100f},
   /* A Whitebalance - RGB */
   {1.000000f, 1.134000f, 2.230100f},
   /* D65 Whitebalance - RGB */
   {1.479100f, 1.000000f, 1.074600f},
   /* Strobe Flash Whitebalance - RGB */
   {1.679100f, 1.000000f, 1.274600f},
   /* LED Flash Whitebalance - RGB */
   {1.288600f, 1.000000f, 1.551900f},

 

每一项下面的三个参数代表RGB的比率,可以按照实际效果手动优化,也可以通过工具优化。
7. Bad Pixel Correction
a. 背景知识
由于半导体工艺(CMOS 或 CCD)存在的缺陷,图像传感器会产生坏点。模块制造过程中也会引入其他瑕疵。这些坏点会表现为亮点(热像素)或暗点(冷像素),有时会成簇出现。坏点/坏点簇可能是: 
?  传感器制造过程中势阱渗漏、像素灵敏度异常或电阻损耗造成的坏点/坏点簇安装镜头时因传感器顶部落有灰尘颗粒而造成的坏像素因老化造成的坏点/坏点簇在噪声滤波和色彩滤镜阵列(CFA) 插值处理前,必须找到并校正坏点。缺陷像素和簇检测的原理是将图像传感器的特定彩色像素值与同种颜色相邻像素值进行比较。
b. 工具优化略去;
c. 手动优化:
此部分不做手动优化。

8. 小波降噪(Wavelet Denoise)
a.知识背景:
小波去噪是基于频域去做的去噪,不同的频率区间按照不同的力度和方式去处理;越是细节的地方频率越高噪声也越多,如果力度加的太强,清晰度也会损失比较多.根据目标芯片的小波功能,该模块可能是硬件小波降噪或者软件小波降噪;MSM8909 是不支持硬件小波降噪功能的,但是支持软件小波降噪,在capture环节有作用,打开后拍出的照片没有红绿噪点。
 /* Denoise Scale Y */
               {
                  10.000000f, 10.000000f, 10.000000f,10.000000f
               },
               /* Denoise Scale Chroma */
               {
                  15.000000f, 15.000000f, 13.000000f, 10.000000f
               },
               /* Denoise Edge Softness Y */
               {
                  10.000000f, 10.000000f, 10.000000f, 10.000000f
               },
               /* Denoise Edge Softness Chroma */
               {
                  15.000000f, 15.000000f, 15.000000f, 15.000000f
               },
               /* Denoise Weight Y */
               {
                  0.000000f, 0.000000f, 0.000000f, 0.000000f
               },
               /* Denoise Weight Chroma */
               {

 

b. 工具优化略去;
c. 手动优化:
     一般情况下可以尝试增大denoise scale去降噪;每组四个值,对应lv0-lv4四个区间力度,值越大去噪力度越强;
Denoise Edge Softness:可直接影响边缘/细节,因此在增大edge softness 值时要格外小心,特别是针对室外场景。
      Denoise Weight:越小去噪能力越强,denoise weight = 0 则是最大化降噪,细节与之关联最大,配合锐度调试,以达到细节和噪声之间的平衡.

 

四. 关于调试
  1. 调试信息
    调试参数的时候,往往要抓log用来跟踪实时数据,一般步骤如下:
a) adb root ---打开root权限;
b) adb shell setprop persist.camera.stats.debug.mask 设置属性
是十进制:

 

STATS_DEBUG_MASK_AEC_LOG = (1 << 0)  >1 曝光
STATS_DEBUG_MASK_AWB_LOG = (1 << 1)  >2 白平衡
STATS_DEBUG_MASK_AF_LOG = (1 << 2)   >4 对焦
STATS_DEBUG_MASK_ASD_LOG = (1 << 3)  >8 自动场景选择
STATS_DEBUG_MASK_AFD_LOG = (1 << 4)  >16 工频干扰消除

 

c) adb logcat 
在调试的适合,我习惯于用adb logcat –v time  | grep xxxx来抓取有用的信息;xxxx选择你所要关注的有效log,如:
previw size;
banding;
AWB;
exp_index;
indoor_index;
FRAMES;
lux_index;
......
在debug的适合,关注log,看连续性和拐点,进而判断问题;
2. 优化心得 
a) 尽量多的从FAE哪里获取帮助
FAE一般有专业的实验室,有可以讨论的团队,有别人不知道的特殊模块参数列表,总之优势明显。当然也有他们解决不了的问题,这个时候也要发挥我们自己的主观能动性,对问题不能置之不理。
b) 调试不能随意
camera 的效果参数很多都是前后有联系的,不能顾此失彼,要综合考虑,同时也要一定的妥协折中,以达到一个稳定和满意的效果。
c) 多总结
不同IC的模组在效果参数上都有很多共性,在调试的时候自己多加总结,比较,总会出现意想不到的效果。

 

come from :https://blog.csdn.net/weijory/article/details/53306545

一、概述

ISP(Image Signal Processor), 即图像信号处理, 主要作用是对前端图像传感器输出的信号做后期处理, 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节。

Cmos YUV sensor 的 ISP 处理流程如图 1 所示:

景物通过 Lens 生成的光学图像投射到 sensor 表面上, 经过光电转换为模拟电信号, 消噪声后经过 A/D 转换后变为数字图像信号, 再送到数字信号处理芯片( DSP) 中加工处理

所以,从 sensor 端过来的图像是 Bayer 图像,经过黑电平补偿 ( black level compensation)、镜头矫正 ( lens shading correction)、坏像素矫正 ( bad pixel correction)、颜色插值 ( demosaic)、Bayer 噪声去除、 白平衡( awb) 矫正、 色彩矫正( color correction) 、 gamma 矫正、 色彩空间转换( RGB 转换为 YUV) 、 在 YUV 色彩空间上彩噪去除与边缘加强、 色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出 YUV( 或者 RGB) 格式的数据, 再通过 I/O 接口传输到 CPU 中处理。

以下对各个模块的处理算法做简要概述。


1.Bayer 

图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红、 绿、 蓝三个分量的信息, 然后将红、 绿、 蓝三个分量的信息合成彩色图像。 该方案需要三块滤镜, 这样价格昂贵,且不好制造, 因为三块滤镜都必须保证每一个像素点都对齐。

通过在黑白 cmos 图像传感器的基础上, 增加彩色滤波结构和彩色信息处理模块就可以获得图像的彩色信息, 再对该彩色信息进行处理, 就可以获得色彩逼真的彩色图像。通常把彩色图像传感器表面覆盖的滤波称为彩色滤波阵列( Color Filter Arrays, CFA) 。

目前最常用的滤镜阵列是棋盘格式的, 已经有很多种类的, 其中绝大多数的摄像产品采用的是原色贝尔模板彩色滤波阵列( Bayer Pattern CFA) , 如图 2 所示, R、 G、 B 分别表示透红色、 透绿色和透蓝色的滤镜阵列单元, 图 3 比较形象地展示了此过程。由于人的视觉对绿色最为敏感, 所以在 Bayer CFA 中 G 分量是 R 和 B 的二倍, 在每个像素点上只能获取一种色彩分量的信息,然后根据该色彩分量的信息通过插值算法得到全色彩图像。

2.BLC(Black level Correction)

a.暗电流

物理器件不可能是理想的, 由于杂质、 受热等其他原因的影响, 即使没有光照射到象素,
象素单元也会产生电荷, 这些电荷产生了暗电流。 而且, 暗电流与光照产生的电荷很难进行
区分。

b.Black Level

Black Level 是用来定义图像数据为 0 时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0) 。 所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号。一般情况下, 在传感器中, 实际像素要比有效像素多, 如下图所示, 像素区头几行作为不感光区( 实际上, 这部分区域也做了 RGB 的 color filter) , 用于自动黑电平校正, 其平均值作为校正值, 然后在下面区域的像素都减去此矫正值, 那么就可以将黑电平矫正过来了。

下面所列图是做了black level 矫正与没做black level 矫正的对比, 很明显, 左边没做black level矫正的图片会比较亮, 影响图像的对比度: 


3.LSC(Lens Shading Correction)

由于镜头本身的物理性质, 造成图像四周亮度相对中心亮度逐渐降低, 以及, 如下图所示, 由于图像光照在透过镜头照射到 pixel 上时, 边角处的焦点夹角大于中心焦点夹角, 造成边角失光。 表现在图像上的效果就是亮度从图像中心到四周逐渐衰减, 且离图像中心越远亮度越暗。 为了补偿四周的亮度, 需要进行 Lens Shading 的矫正。

Lens Shading 的矫正的方法是根据一定的算法计算每个像素对应的亮度矫正值, 从而补偿周边衰减的亮度。 

矫正方法有二次项矫正、 四次项矫正。

4.BPC(Bad Pixel Correction)

a.坏点

坏点为全黑环境下输出图像中的白点, 高亮环境下输出图像中的黑点。

b.坏点修复方法

一般情况下, RGB 信号应与景物亮度呈线性响应关系, 但由于 Senor 部分 pixel 不良导致输出的信号不正常, 出现白点或黑点。


坏点修复方法通常有两种:

一种是自动检测坏点并自动修复, 另一种是建立坏点像素链表进行固定位置的坏像素点修复, 这种方式是 OTP 的方式。

c.坏像素矫正原理

下面以自动检测坏点修复方法为例, 阐述坏像素矫正算法原理。

5.颜色插值

当光线通过 Bayer型 CFA(Color Filter Arrays) 阵列之后, 单色光线打在传感器上, 每个像素都为单色光, 从而理想的Bayer 图是一个较为昏暗的马赛克图。

6.Bayer Denoise

使用 cmos sensor获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时, 当信号经过ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊, 而且丢失很多细节, 所以需要对图像进行去噪处理空间去噪传统的方法有均值滤波、 高斯滤波等。

但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。 


7.AWB(Automatic White Balance)

白平衡的基本原理是在任意环境下, 把白色物体还原成白色物体, 也就是通过找到图像中的白块, 然后调整R/G/B 的比例, 如下关系:
R’= R * R_Gain
G’ = G * G_Gain
B’ = B * B_Gain
R’ = G’= B’

AWB 算法通常包括的步骤如下:

(1)色温统计: 根据图像统计出色温;

(2)计算通道增益: 计算出R 和B 通道的增益;

(3)进行偏色的矫正: 根据给出的增益, 算出偏色图像的矫正。

8.Color Correction

由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响, 得到的RGB 值颜色会存在偏差, 因此必须对颜色进行校正, 通常的做法是通过一个3x3 的颜色变化矩阵来进行颜色矫正。 

9.Gamma Correction

人眼对外界光源的感光值与输入光强不是呈线性关系的, 而是呈指数型关系的。 在低照度下, 人眼更容易分辨出亮度的变化, 随着照度的增加, 人眼不易分辨出亮度的变化。 而摄像机感光与输入光强呈线性关系, 为方便人眼辨识图像, 需要将摄像机采集的图像进行gamma 矫正。

Gamma 矫正是对输入图像灰度值进行的非线性操作, 使输出图像灰度值与输入图像灰度值呈指数关系:

Vout =AVin

这个指数就是 Gamma, 横坐标是输入灰度值, 纵坐标是输出灰度值, 蓝色曲线是 gamma 值小于 1 时的输入输出关系, 红色曲线是 gamma 值大于 1 时的输入输出关系。 可以观察到, 当 gamma 值小于 1 时(蓝色曲线), 图像的整体亮度值得到提升, 同时低灰度处的对比度得到增加, 更利于分辩低灰度值时的图像细节。


10.色彩空间转换

YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。 所以, 可以适当地抛弃部分U、V分量, 达到压缩数据的目的。

Laplacian 算子

YCbCr 其实是YUV 经过缩放和偏移的改动版,Y 表示亮度,Cr、Cb 表示色彩的色差, 分别是红色和蓝色的分量。 在YUV 家族中,YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG 均采用此格式。 一般人们所讲的YUV 大多是指YCbCr。YCbCr有许多取样格式,。

如 4∶4∶4,4∶2∶2, 4∶1∶1和 4∶2∶0。

RGB 转换为YCbCr 的公式如下:

r 0.5 0.4178 0.0813 128

b 0.1678 0.33113 0.5 128

0.299 0.587 0.114

C R G B

C R G G

Y R G B

色彩空间转换这个模块, 是将RGB 转换为 YUV444, 然后在YUV 色彩空间上进行后续的彩色噪声去除、 边缘增强等, 也为后续输出转换为jpeg 图片提供方便。

11.Color Denoise

为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。 例如使用M×N的高斯低通滤波器在色度通道上进行处理。

你可能感兴趣的:(camera)