目录
即是通过DemosaicNode,将Raw域的数据直接转化为RGB数据,再RGB域进行一些颜色和白平衡矫正。
一、去马赛克
对拜耳滤镜产生的Raw数据进行插值,还原每个像素的原始RGB信息。
处理原理:我们在进行像素颜色插值时,假定当前像素的颜色和它附近同色点的值相近。通过插值进行颜色还原。
去马赛克处理方法:双线性插值、立体插值、邻近插值、三次采样
引入的图像问题:方向性噪声、色散、摩尔纹
仿真算法:openCV
二、白平衡
由于白色物体对不同颜色的光源反射出不同颜色的光,导致传感器对白色呈现不同的颜色。为了在后期矫正为原始的白色,需要对成像颜色按照一定的算法进行矫正。这一过程目前往往可以在成像过程中自动完成,我们称之为自动白平衡。而要了解白平衡,就需要量化不同光源的光线在不同波段光线的占比,因此,我们定义了一个理想模型:绝对黑体的色温。
黑体: 在发光体中,有这样一种物体,能把投射到它表面的所有可见光全部吸收,既不反射也不透射,具有这种性质的物体称为绝对黑体。色温(CCT):绝对黑体(-273℃)开始持续加温所呈现出来的颜色。
白平衡的形成:
- 由于不同色温光源下,光源所发射出的光的波段组成不同,白色物体反射的光的也呈现不同的颜色。在传感器上的呈现不同。
- 白色光源,经bayerfilter后在传感器上的光灵敏度不同,导致偏色。
白平衡矫正:
- 灰度世界算法假设认为对于一幅有着大量色彩变化的图像, R、G、B 三个分量的平均值趋于同一个灰度K。适用于色彩分布比较均匀的场景。
- 完美反射算法假设图像上最亮点就是白点,并以此白点为参考对图像进行自动白平衡,最亮点定义为R+G+B的最大值。
- (1)计算每个像素的R\G\B之和,并保存到一临时内存块中。
- (2)按R+G+B值的大小计算出其前10%或其他比例的白色参考点的阈值T。
- (3)遍历图像中的每个点,计算其中R+G+B值大于T的所有点的R\G\B分量的累积和的平均值。
- (4)对每个点将像素量化到[0,255]之间。这种算法的缺点是,如果图像中没有可供参考的白点,算法效果将非常不理想。由于不同色温下白点所呈现的数值差异性很大,导致白平衡结果不尽如人意
- 动态阈值算法自动检测+白点矫正,可参考http://files.cnblogs.com/Imageshop/ANovelAutomaticWhiteBalanceMethodforDigital.pdf
- 深度学习算法
三、色彩矫正矩阵
- 什么是color currection?
- 将Camera 输出的camera RGB色彩空间转化到sRGB色彩空间。
- 为什么要进行Correction?
- 由于相机的颜色匹配特性通常不满足卢瑟条件(也就是说sensor的RGB响应通常不是线性无关的),即相机的颜色匹配特性与CIE标准观察者之间并不存在线性关系。因此,我们需要某种方法来校正相机的特性,使其接近标准观察者。在实际的ISP处理中,这种方法通常以3x3矩阵的形式出现,称为色彩校正矩阵(colourcorrection matrix)。
主要作用:
1. 完成了sensor_RGB色彩空间到sRGB色彩空间的转换;
2. 使得相机的颜色匹配特性满足卢瑟条件Camera linear-------->> RGBCCM--------->>sRGB
四、Gamma曲线
数码图像中的每个像素都有一定的亮度,即从黑色(0)到白色(255)。这些像素值就是输入到电脑显示器里面的信息。但由于技术的限制,纯平(CRT)显示器只能以一种非线性的方式输出这些值,即:输出=输入/伽马
Gamma曲线是一种特殊的色调曲线,当Gamma值等于1的时候,曲线为与坐标轴成45°的直线,这个时候表示输入和输出密度相同;高于1的Gamma值将会造成输出暗化,低于1的Gamma值将会造成输出亮化。
RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称为Gamma值,一般为2.2,而这个换算过程,称为Gamma校正。
功率为50%的灰色,人眼实际感知亮度为: 2.20.5×100%=72.97%
而人眼认为的50%中灰色,实际功率为: 0.52.2×100%=21.76%