ISP PIPLINE (六) AWB
What is WB(white balance)?
人的视觉和神经系统在看到白色物体的时候,基本不受环境的变化而出现严重的错觉。比如阴天,晴天,室内,室外,日光灯,白炽灯等的环境下,人依然会将白纸视作白纸。
但是imagesensor这种电子器件没有心理和神经作用。受制于环境色温的影响。拍出的照片会出现偏色的情况。
色温的定义:一个黑体加热之后,随着温度的升高,黑体会先发出红色,然后越来越亮,变成黄光,在变成白光,直至蓝光,这个温度就是色温。
下面看几组照片:


7700k 5100k 3500k
对在其色温下出现白色偏色的图片的修正就是白平衡。比如:7700 ,3500 的图片通过对sensor四通道数字增益达到5100k时的状态就可以实现白平衡。
why go to WB?
为让拍出的图片不受环境色温的影响,接近人眼感受,拍出白色物体不至于受到色温影响偏色。
how to go to wb?
说白了就是调节R,G,B的比例。调节到正常51000K时r;g;b的1:1:1的状态。下面的对角矩阵就是增益。

那么这个对角增益矩阵如何确定呢?
1.可以在不同的色温光源下分别拍图,计算r/g,b/g,gr/gb的比值。以5100k(拍出的白纸视为白色)作为标准色温。
2.通过计算Gain_r/g, Gain_b/g,Gain_gr/gb就有了。假设出现如下关系:

3.增益关系有了之后,我们再引进一个色温对应增益关系,如果知道色温就可以对原始图片进行白平衡了。例如:

上面的就是白平衡的原理了。
那么何为自动白平衡呢?
当然就是色温估计后根据色温增益曲线直接对图片进行白平衡了。
那么色温估计如何做呢?目前的算法如灰度世界法,白点法等等一系列改进的方法。我看了这些算法,总感觉很牵强。有各种各样的问题。
1 目前主流的色温估计方法是使用统计加权白点估计法。
选取图片roi. 分成N*M块. 计算每一块的r,g,b平均值,然后计算r_avr/g_avr , b_avr/g_avr。然后将可能是白点的块保留,统计到色温曲线的距离,看哪些块距离色温曲线近且这样的块多,则认为就是目前的色温。如下图。

2 最新的色温估计直接使用色温传感器,预测的色温精准。这样就大大避开了估计算法的各种问题。例如,华为p20,传感器代替算法来估计色温的方法必将走向普及。

附一段灰度世界的白平衡方法(这个方法不需要模组厂进行wb calibration,方法简单,速度快,常用在车载镜头):
#include <highgui/highgui.hpp>
#include <imgproc/imgproc.hpp>
using namespace cv;
int main()
{
Mat imageSource = imread("sunny123456.jpg");
imshow("原始图像", imageSource);
vector<Mat> imageRGB;
//RGB三通道分离
split(imageSource, imageRGB);
//求原始图像的RGB分量的均值
double R, G, B;
B = mean(imageRGB[0])[0];
G = mean(imageRGB[1])[0];
R = mean(imageRGB[2])[0];
//需要调整的RGB分量的增益
double KR, KG, KB;
KB = (R + G + B) / (3 * B);
KG = (R + G + B) / (3 * G);
KR = (R + G + B) / (3 * R);
//调整RGB三个通道各自的值
imageRGB[0] = imageRGB[0] * KB;
imageRGB[1] = imageRGB[1] * KG;
imageRGB[2] = imageRGB[2] * KR;
//RGB三通道图像合并
merge(imageRGB, imageSource);
imshow("白平衡调整后", imageSource);
waitKey();
}
sensor 插值后的图和白平衡后的图比较。(我同事的肖像,男版lena)

ISP PIPLINE (六) AWB的更多相关文章
- ISP PIPLINE (六) 3A 综述
前言: 上一篇文章: ISP PIPLINE (五) Denoise 下一篇文章: (1)3A定义包括什么 Iris:自动光圈,根据环境自动调节光圈. 既然讲到光圈,就先看一下光圈是什么,以及它如何影 ...
- ISP PIPLINE(零) 知识综述预热
本文为camera isp pipline概述 ISP,即image signal processing.为图像成型做的处理工作.适应不同光学环境下图像的还原. pipline流程如下: 光通过LEN ...
- ISP PIPLINE (十四) AE(自动曝光)
自动曝光可以可以通过调节 模拟增益,数字增益,曝光时间,光圈大小来调剂曝光. 曝光在ISP PIPLINE的位置. (先介绍一个额外的知识点: ) gamma compression(也就是de-ga ...
- ISP PIPLINE (七) gamma
what is the gamma? CCD.CMOS成像方式是通过像点中的"硅"感受光线的强弱而获得画面.而硅感光是物理成像,它真实地反应光线强度的变化,来多少就输出多少,因此它 ...
- ISP PIPLINE (一) BLC 以及 线性化
what is the BlackLevel? 暗电流来源1.raw8为例,单个pixel的有效值是0~255,但是实际AD芯片的精度可能无法将电压值很小的一部分转换出来,芯片厂会刻意添加一个固定的偏 ...
- ISP PIPLINE (十五) AF
主流的AF: CDAF, PDAF, laser assist AF(这个只是辅助,在微距或者拍摄纹理不明显的场景下好用). AF的大致原理就是检测图像锐度或者等价于锐度的参数,推动马达实现合焦或者对 ...
- ISP PIPLINE (九_2) Denoise 之 time domain denoise
时域噪声是空域噪声在时间上波动的一种描述. 1.多帧平均去噪法 1.1 理论: 1.2 帧数增加,噪声减小: 1.3 IIR滤波器的效果 2.1中的两种方法在拍摄视频的时候,如果有运动物体,则会出现拖 ...
- ISP PIPLINE (九_1) Denoise 之 space domain denoise
1.空间域噪声类型 1.gauss+possion 2.椒盐噪声(dpc处理已经处理了) 去除空域噪声有哪些方法? 空域噪声一般的思想是对某pixel邻域的pixels进行加权平均. 比如 1.高斯降 ...
- ISP PIPLINE (十三) CSM/CSC(color space matrix/convert)
1.RGB为何要转换为YCbCr,历史遗留问题! 一般一个技术如果为了保证原有的设备可以继续使用,就需要兼容以前的技术.黑白电视到彩色电视的进化就是转换为YCbCr的原因,同时YCbCr比RGB传输占 ...
随机推荐
- 【linux】linux系统中常见配置文件说明
1.配置文件/proc/sys/fs/file-nr 里文件里显示三个数字 [root@localhost logs]# cat /proc/sys/fs/file-nr 已分配文件句柄的数目 已使用 ...
- 欧拉筛法模板and 洛谷 P3383 【模板】线性筛素数(包括清北的一些方法)
题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入格式 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1 ...
- jvm学习笔记一(垃圾回收算法)
一:垃圾回收机制的原因 java中,当没有对象引用指向原先分配给某个对象的内存时候,该内存就成为了垃圾.JVM的一个系统级线程会自动释放该内存块.垃圾回收意味着程序不再需要的对象是"无用信息 ...
- Lightning Conductor 洛谷P3515 决策单调性优化DP
遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ...
- 【.net】ASP.Net设置和取消设置web项目起始页
#在visual studio中设置和取消web项目的起始页 方法一:在所要设置的页面上右键->设为起始页 方法二:web项目上右键->属性页 website项目: tips:如果取消要取 ...
- Spring Boot集成MyBatis的2种方式
目录 写在前面 准备工作 配置数据库驱动 配置数据源 原生集成MyBatis 依赖配置 注册MyBatis核心组件 定义并使用映射器 通过MyBatis-Spring-Boot-Starter集成 默 ...
- $\be$-QGE 的弱强唯一性
在 [Zhao, Jihong; Liu, Qiao. Weak-strong uniqueness criterion for the $\beta$-generalized surface qua ...
- APPLE-SA-2019-3-25-1 iOS 12.2
APPLE-SA-2019-3-25-1 iOS 12.2 iOS 12.2 is now available and addresses the following: CFStringAvailab ...
- python爬虫解决编码问题
参考 https://blog.csdn.net/qq_38008452/article/details/80423436 问题 解决方法 加上encoding='utf-8'
- 帆软报表(finereport) 复选框多值查询
定义数据集 SELECT * FROM 库存 设计模板 设置控件:控件名称 XX 要与 单元格中 取值公式 =$XX 对应,控件值可更改 下拉复选框控件: 设置控件名称(与模板中=$选仓库 ...