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

白平衡的灰度世界算法和镜面算法

假使3A算法主要借助的是自行对焦(AF)、自动曝光(AE)及活动白平衡(AWB)。
电动白平衡:根据光源条件调整图颜色之保真程度。

一、引言

网上经常有近似招聘如下的选聘信息: 

       
色彩是人眼的针对可视光的如出一辙栽感知。对于非透明底物体而言,人眼所形成的色彩感知取决于光照光谱分布、物体表面光的反射性和人眼(或者其他光信号接收器)的光敏特性。在光信号接收器的光敏特性保持不移,物体也保障无转移的图景下,人眼对该物体的色彩感知就在光照的光谱分布。由于人眼视觉的色彩恒常性,当环境光发生变化的时光,我们人类的视觉系统所有某种调节能力,可以叫我们的大脑还原物体表面的无转移特征,但是于像相机这样的仅信号接收器,它不得不如实地记下所接收及的才信号,因此当不同光源下所抱的图像在我们人类看起会时有发生情调的讹,下图所著就是由于光源的异造成同物体色差不同的例证。

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

图片 1

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

 

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

       
为了能够吃照相机等成像设备可具有类似于人眼的视觉调节能力,在不同之光照情况下,使所获得的图像颜色保持一致,对所获取图像所做的拍卖就被做白平衡。在正规的留影领域,相机可以经过调节自己光敏器件对可见光中不同颜色单色光的敏感性来落实对图像的白平衡,以达成摄影师所思要之功效。对于早已获的图像,如果因光照原因出现色彩的偏向的话,我们有时候为寄希望于通过现有图像来赢得图像获取时的普照信息,基于这些信息来对图像进行调整以获在某种标准光源下之图像,于是便产生了很多白眼平衡的算法,其中灰度世界算法和镜面法是比较常用白平衡算法。

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

仲、基本原理——Von
Kries色适应理论

供职要求:

        Von
Kries提出,可用一个对准角矩阵变换来叙述两种植光照条件下一样物体表面颜色之间的关系\[1\]。该理论认为,对于与一个观察者而言,假而于光源A下面,一个体的RGB值为RGB1=[R1,G1,B1],如果当光源B下面与一个物体的RGB值为RGB2=[R2,G2,B2],那么RGB1与RGB2之间存在即正如转换关系。

  1. 通camera的3A(AE,AWB,AF)算法原理及筹划思路,
    有3A算法的计划经验吗佳
  2. 负有丰富ISP(图象处理器) 开发经历,熟悉MTK,QUALCOMM,
    OV等就是携式终端上应用之ISP开发条件。有上述条件下出经历为美好。
  3. 通晓数字图像处理原理和基础知识。
  4. 熟悉C/C++语言,有开发经历啊佳
  5. 生手机/便携式相机3A算法实现/应用经验
  6. 精通CMOS sensor的行事规律

RGB2’=[kr,0,0;0,kg,0;0,0,kb]RGB1’,其中kr、kg和kb分别为R、G、B三只通道的校正系数。我们对接下去就要介绍的灰度世界算法和镜面法的辩护都是立在马上同法则的根底及的,需要留意的是,这个理论在好几条件下是免适用的。

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

老三、灰度世界算法

倘当时仿佛岗位一般都是高薪待遇。 

      3.1算法理论

然后问题来了,市面上3A算法相关材料都坏稀有,就连相关书籍都异常少提及算法细节,而她们基本上都见面要求精通3A算法至少有。

       该理论而:对于同一顺应有着丰富色彩的图纸,图像上R、G、B三独通道的平均值应该对等一个深受称作“灰色”的值K\[2\]。理论遭遇最好关键的一些不怕是“灰色”的概念跟挑选题材。有多种计对理论遭遇之“灰色”进行定义,在斯不详细谈论这一点。至于“灰色”的挑,一种办法是用那定义为各通道极其老价值的一半,还得以索要处理图片三单通道均值的均值作为“灰色”值K。当确定了灰色值K之后,将需处理图片转换到经光源下的逐一校正系数分别吗:kr=K/Rmean,kg=K/Gmean,kb=K/Bmean,其中Rmean,Gmean和Bmean分别吗图像R、G、B通道的均值。

要至于白平衡算法,比较是的材料是即时卖:

     3.2 算法的matlab实现

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

%白平衡灰度世界算法
clc;
clear;
subplot(1,3,1);
I=imread('WB4.jpg');%可以将图片路径换为自己的待校正的图片路径
imshow(I);
title('原始图像');
I=im2double(I);%将8位的RGB图像转为double类型的图像,防止在后面运算各个通道的数值时出现数据损失
%计算图片各个通道的平均值
Rmean=mean(mean(I(:,:,1)));
Gmean=mean(mean(I(:,:,2)));
Bmean=mean(mean(I(:,:,3)));
%计算标准灰度
k=mean([Rmean,Gmean,Bmean]);
%计算各个通道的增益
k_r=k/Rmean;
k_g=k/Gmean;
k_b=k/Bmean;
%生成新的图像
inew_r=k_r*I(:,:,1);
inew_g=k_g*I(:,:,2);
inew_b=k_b*I(:,:,3);
%由于新生成的RGB三通道中有可能出超出255的灰度值,需要将新生成的图像映射到[0,255]这一区间内
%方法1:将各通道中灰度值大于255的像素点的灰度直接设置为255
[M,N]=size(inew_r);
inew_r1=inew_r;
inew_g1=inew_g;
inew_b1=inew_b;
for i=1:M
    for j=1:N
        if(inew_r1(i,j)>1) inew_r1(i,j)=1;end
        if(inew_g1(i,j)>1) inew_g1(i,j)=1;end
        if(inew_b1(i,j)>1) inew_b1(i,j)=1;end
    end
end
inew=cat(3,inew_r1,inew_g1,inew_b1);
inew=im2uint8(inew);
subplot(1,3,2);
imshow(inew);
title('取最大值');
%方法2:将新生成的各个通道的像素进行归一化处理
factor_r=max(max(inew_r));
factor_g=max(max(inew_g));
factor_b=max(max(inew_b));
inew_r2=inew_r;
inew_g2=inew_g;
inew_b2=inew_b;
if(factor_r>1) inew_r2=inew_r/factor_r;end
if(factor_g>1) inew_g2=inew_g/factor_g;end
if(factor_b>1) inew_b2=inew_b/factor_b;end
inew=cat(3,inew_r2,inew_g2,inew_b2);
subplot(1,3,3);
imshow(im2uint8(inew));
title('归一化');

前反复跟博主laviewpbt探讨相关的学识,受益匪浅。

        程序运行效果演示如下图所出示。

倘若据我所知,绝大多数之照相机采用的根底算法就是灰度世界算法,然后在当时算法的底子及重复改善。

图片 2

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

季、镜面法(完美反射法)

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

       4.1 算法原理

灰度世界算法(Gray World)

       算法假设:图像中的“镜面”可以完全发射光源照射在物体上面的光。因此,如果图像中留存一个“镜面”的话,那么以特定光源下,可以以所收获的“镜面”的色彩信息看是时光源的消息。在进行校准的时光,我们而图片上存一个可以了反射光源的“镜面”,那么在经典光源下图片中不怕当存在一个老三刺激值为[255,255,255]纯白色像素点(注意:有多白色点的概念),此时之校系数可以定义也kr=255/Rmax,kg=255/Gmax,kb=255/Bmax,其中Rmax,Gmax和Bmax分别吗图像R、G、B通道的极端深价值。

  是盖灰度世界要为根基之,该要认为于一幅装有大量情调变化的图像,
R、 G、 B 三只轻重的平均值趋于同一个灰度K。一般发生有限种植方式来确定该灰度。

        4.2 算法的matlab实现

(1)直接被一定为固定值, 取其各通道极其可怜价值的一半,即取为127要128;

clc;
clear;
subplot(1,2,1);
I=imread('WB7.jpg');%可以将图片路径换为自己的待校正的图片路径
imshow(I);
title('原始图像');
I=im2double(I);%将8位的RGB图像转为double类型的图像,防止在后面运算各个通道的数值时出现数据损失
%求各个通道的最大值
max_r=max(max(I(:,:,1)));
max_g=max(max(I(:,:,2)));
max_b=max(max(I(:,:,3)));
%求各个通道相对于所选定白光的偏移量,我以RGB三刺激值为[255,255,255],在double类型的情况下就是[1,1,1]的白作为所选定的白光
q_r=1/max_r;
q_g=1/max_g;
q_b=1/max_b;
%根据偏移量计算新的RGB矩阵
new_r=I(:,:,1)*q_r;
new_g=I(:,:,2)*q_g;
new_b=I(:,:,3)*q_b;
%拼合三个通道
inew=cat(3,im2uint8(new_r),im2uint8(new_g),im2uint8(new_b));
inew=im2uint8(inew);
subplot(1,2,2);
imshow(inew);
title('镜面法白平衡');

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

       算法运行效果如下:

算法的老二步是独家计各国通道的增益:

图片 3

Kr=K/Raver;

总结

Kg=K/Gaver;

       
灰度世界算法和镜面法由于简单、计算量小齐优点成为常用的白平衡算法,但是她为分别有个别的症结。由于灰度世界算法是因灰度世界之若,当图片被从不足够长的色彩来类理想图景经常,灰度世界算法的白平衡效果就是差强人意。同样的,如果图片被不存一个较为理想的反射镜面,镜面法的白平衡效果啊不够好。因此于运用中,会依据使用条件之异,对算法进行改进,笔者水平有限只介绍了无以复加基本的情。由于笔者对当时半种植算法的辩护而和演绎还无可知统统知晓,本篇博客中难免出现错误,还恳请各位大牛指正。

Kb=K/Baver;

引用

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

[1]朱贵冬, 沈理, 王今觉.
基于von-Kries色适应的分区颜色校正方法[J]. 计算机工程和科学, 2007,
29(2):50-52.

Rnew = R * Kr;

[2]严世珺.
数字图像白平衡处理算法研究和改善[D]. 上海交通大学, 2008.

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

透过实测,这样的处理后效果还对。

贴上相比图:

图片 4

原图

图片 5

均值法

图片 6

灰度法

才从眼睛上去分辨两张图,的确颇麻烦分来上下。

而是自己耶只是大概点一下者思路而已,有所积攒之丁,看到就,应该可以分流出还多之想法。

搭下自己若说之凡具体相机中的钨丝灯等手动白平衡是如何落实之。

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

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

这边贴发大概实现的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,
};

 

图片 7

阴天

图片 8

日光

图片 9

白热光

图片 10

日光灯

图片 11

钨丝灯

此间才是于至一个示范作用,具体的参数,可按实际上要求酌情进行修改。

正文只是抛砖引玉一下,若发生另外连锁题材或要求呢得邮件联系自己探讨。

 邮箱地址是:

gaozhihan@vip.qq.com

相关文章