相机中白平衡的算法模拟完结海洋世界

照相机首要技术点为三A算法。

而3A算法主要指的是机关对焦(AF)、自动暴光(AE)及自动白平衡(AWB)。
机动白平衡:依据光源条件调整图片颜色的保真程度。

网上平时有类似招聘如下的选聘消息: 

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

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

此处随机摘录部分切实可行供给。

任职供给:
一、本科以上学历,天文,物理,机电、工业自动化,电子相关专业,大学生学历优先考虑;
二、本科结业三年以上,博士毕业一年以上的连锁行业相关工作经验须要;
叁、熟稔精通C/C++或许FPGA 开发语言,数据结构,MATLAB,功率信号和体系;
4、驾驭数字色度学,数字图像处理,数字影象处理的基本知识;
5、熟识水墨画机成像原理;
六、理解3A(AF,AE,AWB)算法之一;
7、对于自动化控制,数字时限信号采集样品,滤波,负反馈,PID算法有实在经验;
八、精晓从画面到SENSOEscort,电机,ISP,编码器,采集,呈现通道一些列变化。

供职供给:

  1. 贯通camera的叁A(AE,AWB,AF)算法原理和设计思路,
    有三A算法的筹划经验为佳
  2. 全体丰富ISP(图象处理器) 开发经历,纯熟MediaTek,QUALCOMM,
    OV等便携式终端上选用的ISP开发条件。有上述条件下开发经历为佳。
  3. 精通数字图像处理原理和基础知识。
  4. 精通C/C++语言,有付出经历为佳
  5. 有手提式有线电话机/便携式相机三A算法实现/应用经验
  6. 掌握CMOS sensor的办事原理

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

而那类职位1般都是高薪待遇。 

下一场难题来了,市面上三A算法相关资料都格外数一数二,就连相关书籍都很少谈到算法细节,而她们基本上都会供给明白三A算法至少之一。

而关于白平衡算法,相比较科学的材质是那份:

依照灰度世界、完美反射、动态阈值等图像自动白平衡算法的法则、实现及效益

事先反复与博主laviewpbt研究相关的学问,收益匪浅。

而据笔者所知,绝超过50%的照相机采取的基本功算法正是灰度世界算法,然后在那算法的底蕴上再革新。

贴一下《依照灰度世界、完美反射、动态阈值等图像自动白平衡算法的法则、达成及职能》灰度世界法的大体内容。

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

灰度世界算法(Gray World)

  是以灰度世界假若为根基的,该假如认为对于一幅具有大批量色彩变化的图像,
Highlander、 G、 B 三个轻重的平均值趋于同3个灰度K。一般有三种办法来明确该灰度。

(1)间接给定为固定值, 取其各通道最大值的五分之3,即取为12七或12八;

(2)令 K = (Raver+Gaver+Baver)/三,在那之中Raver,Gaver,Baver分别表示红、 绿、
蓝七个通道的平均值。

算法的第二步是各自总结各通道的增益:

Kr=K/Raver;

Kg=K/Gaver;

海洋世界,Kb=K/Baver;

算法第2步为基于Von Kries
对角模型,对于图像中的每种像素锐界、G、B,总计其结果值:

Rnew = R * Kr;

Gnew = G * Kg;

Bnew = B * Kb;

对此上式,总括中恐怕会存在溢出(>25五,不会冒出小于0的)现象,处理方式有二种。

a、 直接将像素设置为25伍,那只怕会造成图像全部偏白。

b、
总括有所LANDnew、Gnew、Bnew的最大值,然后利用该最大值将将总计后数据重复线性映射到[0,255]内。实践表明那种办法将会使图像全部偏暗,提议使用第1种方案。

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

算法的大致思路就是评估一张图片奥迪Q5GB多个通道的中最能发挥该通道富含信息的值,然后以该值为尺度重新调整像素。

如此那般就会存在评估不够标准的标题,导致各通道像素音信差别过大,形成噪点以及偏色等景色。

因为借使运用取最大值的方案就会招致在一定情景肯定不平均,例如该通道超越二五%的值落在微小值周围,而却存在三个遥远处的最大值,那么就会造成像素消息差别过大,就很不好了。

从而在第一种思路上开始展览进一步改进相比较妥当,因为可用的音讯比较多,不便于出标题。

其次种思路,最简便的另壹种革新正是选用灰度法。

均值法: 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

钨丝灯

那边只是起到1个演示作用,具体的参数,可按其实须求酌情进行修改。

正文只是一得之见一下,若有其余相关题材如故须要也得以邮件联系自个儿商量。

 邮箱地址是:

gaozhihan@vip.qq.com