美学原理相机中白平衡的算法模拟实现

照相机主要技术点为3A算法。

若果3A算法主要靠的凡半自动对焦(AF)、自动曝光(AE)及机动白平衡(AWB)。
自行白平衡:根据光源条件调整图颜色之保真程度。

网上经常出接近招聘如下的招贤纳士信息: 

 ———————————————- ———————————————-

Camera/ISP 算法工程师
摄影机3A算法软件工程师 

这边随机摘录部分切实要求。

供职要求:
1、本科以上学历,天文,物理,机电、工业自动化,电子相关专业,硕士学历优先考虑;
2、本科毕业3年以上,硕士毕业1年以上的相干行业相关工作更要求;
3、熟练掌握C/C++或者FPGA 开发语言,数据结构,MATLAB,信号及网;
4、掌握数字色度学,数字图像处理,数字影像处理的基本知识;
5、熟悉摄影机成像原理;
6、掌握3A(AF,AE,AWB)算法有;
7、对于自动化控制,数字信号采样,滤波,负反馈,PID算法有实在经历;
8、理解从镜头及SENSOR,电机,ISP,编码器,采集,显示通道有列变化。

供职要求:

  1. 贯通camera的3A(AE,AWB,AF)算法原理和统筹思路,
    有3A算法的宏图经验吗佳
  2. 享有丰富ISP(图象处理器) 开发经历,熟悉MTK,QUALCOMM,
    OV等便携式终端上使的ISP开发条件。有上述条件下支付经历啊理想。
  3. 通晓数字图像处理原理及基础知识。
  4. 熟悉C/C++语言,有开发经历为佳
  5. 出部手机/便携式相机3A算法实现/应用经验
  6. 精通CMOS sensor的劳作规律

 ———————————————- ———————————————-

一经这类似职位一般都是高薪待遇。 

下一场问题来了,市面上3A算法相关材料都十分难得,就连相关书籍都不行少提及算法细节,而他们大多都见面要求精通3A算法至少有。

万一关于白平衡算法,比较科学的素材是即时卖:

基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的规律、实现同功能

事先反复和博主laviewpbt探讨相关的知识,受益匪浅。

倘若据我所知,绝大多数底相机采用的基础算法就是灰度世界算法,然后于当时算法的基本功及重新改善。

贴一下《据悉灰度世界、完美反射、动态阈值等图像自动白平衡算法的法则、实现与职能》灰度世界法的横内容。

 ———————————————- ———————————————-

灰度世界算法(Gray World)

  是为灰度世界而为底蕴之,该要认为对一幅具大量色彩变化的图像,
R、 G、 B 三个轻重的平均值趋于同一个灰度K。一般生星星点点栽方式来规定该灰度。

(1)直接吃一定为固定值, 取其每通道极其老价值的一半,即取为127或者128;

(2)令 K = (Raver+Gaver+Baver)/3,其中Raver,Gaver,Baver分别代表红、 绿、
蓝三个通道的平均值。

算法的老二步是分别计各国通道的增益:

Kr=K/Raver;

Kg=K/Gaver;

Kb=K/Baver;

算法第三步为基于Von Kries
对角模型,对于图像遭到之每个像素R、G、B,计算其结果值:

Rnew = R * Kr;

Gnew = G * Kg;

Bnew = B * Kb;

对此上式,计算着或者会见设有溢出(>255,不见面并发小于0的)现象,处理方式有星星点点种植。

a、 直接拿如从设置也255,这恐怕会见导致图像整体偏白。

b、
计算有所Rnew、Gnew、Bnew的无比深价值,然后以该绝特别价值将将计后数再度线性映射到[0,255]外。实践证明这种办法以会如图像整体偏暗,建议用第一种植方案。

 ———————————————- ———————————————-

算法的约思路就是是评估一摆设图RGB三单通道的面临极能够达该通道富含信息之价,然后为该值为条件重新调整像从。

如此这般虽会存在评估不足够标准之题目,导致各通道像从信息差距过那个,形成噪点以及偏色等情景。

因若利用取最好酷价值的方案就会见导致在特定情景明明不平均,例如该通道大多数之值落在无限小价周围,而也有一个遥远处的极端酷价值,那么尽管会见招像从信息差距过怪,就特别不好了。

故在次种植思路上开展更改善比较稳,因为可用之音信比多,不易于发生问题。

仲种植思路,最简单易行的旁一样种改进就是利用灰度法。

均值法: K = (Raver+Gaver+Baver)/3 

我们了解常用之视频采访编码是YUV。

YUV相关见百度百科:YUV

其中的Y为:

Y =0.299*R + 0.587*G+0.114*B

故灰度法相应可针对承诺为:

K=0.299*Raver + 0.587*Gaver+0.114*Baver

经过实测,这样的处理后效果还不易。

贴上对比图:

美学原理 1

原图

美学原理 2

均值法

美学原理 3

灰度法

唯有由眼睛上去分辨两摆图,的确颇麻烦分来上下。

而我哉只是大概点一下是思路而已,有所积累的人数,看到这,应该可以散开出还多之想法。

连接下自己若说的凡具体相机中之钨丝灯等手动白平衡是哪兑现之。

简单易行的游说不怕是色温调节。

那么根据灰度世界是白平衡算法可以怎么落实这种调节也?!

此间贴出简约实现的C代码:

switch (preset)
    {
    case AUTO: 
        Raver = (SumR / numberOfPixels);
        Gaver = (SumG / numberOfPixels);
        Baver = (SumB / numberOfPixels);
        break;
    case CLOUDY: 
        Raver = (SumR *1.953125 / numberOfPixels);
        Gaver = (SumG*1.0390625 / numberOfPixels);
        Baver = (SumB / numberOfPixels);
        break;
    case DAYLIGHT: 
        Raver = (SumR *1.2734375 / numberOfPixels);
        Gaver = (SumG / numberOfPixels);
        Baver = (SumB*1.0625 / numberOfPixels);
        break;
    case INCANDESCENCE: 
        Raver = (SumR *1.2890625 / numberOfPixels);
        Gaver = (SumG / numberOfPixels);
        Baver = (SumB*1.0625 / numberOfPixels);
        break;
    case FLUORESCENT: 
        Raver = (SumR *1.1875 / numberOfPixels);
        Gaver = (SumG / numberOfPixels);
        Baver = (SumB*1.3125 / numberOfPixels);
        break; 
    case TUNGSTEN:
        Raver = (SumR / numberOfPixels);
        Gaver = (SumG*1.0078125 / numberOfPixels);
        Baver = (SumB*1.28125 / numberOfPixels);
        break;
    default:
        break;
    } 

  

enum WB_PRESET{
    //自动白平衡
    AUTO,
    //阴天 7500k
    CLOUDY,
    //日光 6500k 
    DAYLIGHT,
    //白热光 5000k 
    INCANDESCENCE,
    //日光灯 4400k
    FLUORESCENT,
    //钨丝灯 2800k 
    TUNGSTEN,
};

 

美学原理 4

阴天

美学原理 5

日光

美学原理 6

白热光

美学原理 7

日光灯

美学原理 8

钨丝灯

这里只是自及一个演示作用,具体的参数,可循其实需要酌情进行修改。

正文只是抛砖引玉一下,若发生其它有关问题要么要求为足以邮件联系自己追。

 邮箱地址是:

gaozhihan@vip.qq.com