今昔生活费电子产品(家用录制机、数码照相机)中也遍布地应用,自动白平衡

其中的Y为:

   
 白平衡是电视机摄像领域叁个不行重大的定义,通过它能够减轻色彩还原和色调解和管理理的1密密麻麻主题素材。白平衡是随着电子印象再次出现色彩真实而发生的,在标准拍片领域白平衡应用的较早,未来生活费电子产品(家用录像机、单反)中也普随处选取,然则本事的腾飞使得白平衡调治变得更其轻巧轻松,但为数不少使用者还不甚掌握白平衡的工作规律,精晓上存在重重误区。它是贯彻摄像机图像能准确反映被摄物的情调情形,有手动白平衡和电动白平衡等艺术,本文简要的牵线了两种电动白平衡算法。

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

一、原始的灰度世界算法

  灰度世界算法(GrayWorld)是以灰度世界假使为根基的,该倘使感到对于壹幅怀有大量色彩变化的图像,
福睿斯、 G、 B
多少个轻重的平均值趋于同2个灰度K。一般有两种格局来显明该灰度。

      
 (一)直接给定为固定值, 取其各通道最大值的四分之2,即取为1贰柒或12八;

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

       
 算法的第3步是独家总计各通道的增益:

           
 Kr=K/Raver;

       Kg=K/Gaver;

           
 Kb=K/Baver;

       
 算法第一步为依照Von Kries
对角模型,对于图像中的每种像素奥迪Q五、G、B,总括其结果值:

             Rnew = R *
Kr;

       Gnew = G *
Kg;

       Bnew = B *
Kb;

       
 对于上式,计算中也许会存在溢出(>25伍,不会产出小于0的)现象,管理形式有三种。

         a、
直接将像素设置为25伍,那或许会促成图像全部偏白。

         b、
计算机才具斟酌全体奥迪Q伍new、Gnew、Bnew的最大值,然后利用该最大值将将总计后数据重复线性映射到[0,255]内。施行证明那种格局将会使图像全部偏暗,提议选用第贰种方案。

       
一般的话,灰度世界算法的职能照旧比较好的呢,并且该算法的实行进程非常之快,方今也存在了累累对该算法进行革新的功力,有时间本身在关照一下。

   
  图片 1 
 图片 2

   
  图片 3 
 图片 4

   
  图片 5 
 图片 6

                     
               原图                                                    
                       管理后的图

图片 7

二、完美反射算法

     
当初写这一个代码的时候的一部分参考文献一下子也找不到了,就从曾经写好的代码中讲述下该算法的经过吧。

     
原理:完美全反射理论perfect Reflector借使图像上最亮点正是白点,并以此白点为参照对图像实行机动白平衡,最亮点定义为卡宴+G+B的最大值,具体编码步骤如下:

     
(1)计算各类像素的酷威\G\B之和,并保留到一目前内部存款和储蓄器块中。

            for (Y = 0; Y < Height; Y++)
            {
                Pointer = bmp.Pointer + Y * Stride;
                for (X = 0; X < Width; X++)
                {
                    Sum = (short)(*(Pointer) + *(Pointer + 1) + *(Pointer + 2));     // R+G+B
                    HistRGB[Sum]++;
                    *SumP = (short)Sum;
                    Pointer += 3;
                    SumP++;
                }
            }

     (二)按XC60+G+B值的大大小小计算出其前一成或其余Ratio的反革命参考试场点的的阈值T。

            for (Y = 767; Y >= 0; Y--)
            {
                Sum += HistRGB[Y];
                if (Sum > Width * Height * Ratio / 100)
                {
                    Threshold = Y;
                    break;
                }
            }

   
(三)遍历图像中的每种点,总括当中LAND+G+B值大于T的全部点的奥迪Q伍\G\B分量的积存和的平均值。

            for (Y = 0; Y < Height; Y++)
            {
                Pointer = bmp.Pointer + Y * Stride;
                for (X = 0; X < Width; X++)
                {
                    if (*SumP > Threshold)
                    {
                        AvgB += *Pointer;
                        AvgG += *(Pointer + 1);
                        AvgR += *(Pointer + 2);             // 为获得增益做准备
                        Amount++;
                    }
                    Pointer += 3;
                    SumP++;
                }
            }
            AvgB /= Amount;
            AvgG /= Amount;
            AvgR /= Amount;

   (四)对各种点将像素量化到[0,255]之间。

            for (Y = 0; Y < Height; Y++)
            {
                Pointer = bmp.Pointer + Y * Stride;
                for (X = 0; X < Width; X++)
                {
                    Blue = *Pointer * MaxValue / AvgB;                                   // 另外一种算法需要先计算不抑制重新计算的RGB的范围,然后求RGB的最大值,如果最大值大于255,则所有的结果都要除以最大值在乘以255,但实际表明该算法、   不合适;
                    Green = *(Pointer + 1) * MaxValue / AvgG;
                    Red = *(Pointer + 2) * MaxValue / AvgR;
                    if (Red > 255) Red = 255; else if (Red < 0) Red = 0;                // 这里需要判断,因为RGB空间所有的颜色转换到YCbCr后,并不是填充满了0-255的范围的,反转过去就会存在一些溢出的点。
                    if (Green > 255) Green = 255; else if (Green < 0) Green = 0;        // 编译后应该比三目运算符的效率高
                    if (Blue > 255) Blue = 255; else if (Blue < 0) Blue = 0;
                    *Pointer = (byte)Blue;
                    *(Pointer + 1) = (byte)Green;
                    *(Pointer + 2) = (byte)Red;
                    Pointer += 3;
                }
            }

  图片 8 
 图片 9 
 图片 10

     图片 11 
  图片 12 
 图片 13

     图片 14 
  图片 15 
 图片 16

                                原图                  
                               Ratio=10%                                
           Ratio=2%

    从功能上看,该算法应该比灰度世界的作用要好些,不过也依然遭到Ratio这么些参数的影象。越发是第贰个图片,过高的Ration导致图片过于泛白。那么些主题素材得以依然最终量化的哪一步引起的,笔者会抽空再商讨一下别样的量化方式,尽量降低Ration的震慑。

   
针对上述的第二步,看到不少matlab和VC的代码,有好五个人仍旧先用神速排序对充分后的多少开展排序,然后再取其1/10的最大值,对图像的数据开展排序,恐怕正是再迅速的排序都快不起来吧,看到那,或者全国老百姓都笑了。

Bnew = B * Kb;

三、动态阈值算法

      参考杂文:A Novel Automatic White
Balance Method For Digital Still
Cameras

     
同精粹的片段算法一样,算法分为四个步骤:白点检查评定和白点调解。

      白点检查实验:

         
 (一)为了加强算法的鲁棒性,原来的小说将图像分成1贰局地,当中宽高比为四:三,关于这点,作者感到不创立,对图像不是通用的,后文再说。

           
(二)计算各地的Cb\Cr分量的平均值Mb/Mr

           
(叁)按下式计算每个地方的Cb\Cr分量的断然差的积累值Db/Dr

                               
 图片 17

                               
 图片 18

                  上式中N为各个地方的像素数。

       
 (4)如果Db/Dr的值偏小,则大家忽视那一块,因为那标记那1块的水彩布满相比较均匀,而这么的有的对于白平衡倒霉。这么些偏小的规则我们略微再谈。

       
 (5)总括对于除了符合第6条的的任何区域的Mb/Mr/Db/Dr的平均值作为整幅图像的Mb/Mr/Db/Dr值。

        关于这一条,原著的话是:The final
Mb、Mr、Db、Dr are obtained by taking the average
of those regions that pass this additional step。

       作者在实际中做的时候正是个别对每块举办的,就如效果也还不易。

       
 (6)按下述规则初叶鲜明什么点是属于海水绿参考试场点:

                     
 图片 19

                     
  图片 20

       
 (柒)对于伊始决断已经属于乌紫参考试场点的像素,按大小取其亮度值为前一成的位最后明确的灰绿参考试场点。

     
白点调度:

     (壹)总计铁红参考试场点亮度值的平分值Odysseyaver,Gaver,Baver,(各通道分别总括)。

         
(二)按照以下各样计算每一种通道的增益:

           
 图片 21

                     
 图片 22

                   
  图片 23

             
式中,Ymax就是YCbCr颜色空间中Y分量的在整幅图像中的最大值。

         
(3)遵照以下各类总结最后每一个通道的颜色值:

                   
  图片 24

                   
  图片 25

                   
  图片 26

         
当中哈弗/G/B为在本来的水彩空间中的值,注意那里要实行溢出检查测试的。

      
 简单的谈下白点检查实验的分块操作吧,原来的小说把图像分成四*三的1二快,那样专业针对于大家不少数码照片是以此比重的,借使通用,小编感觉应该用种种块的轻重缓急来决定,比方每块为
100*100个像素。

         
那么些算法的效果如下:

   
  图片 27  图片 28  图片 29

   
  图片 30  图片 31  图片 32

   
  图片 33  图片 34  图片 35

                     
     原图                                            
 块大小50*50                    块大小100*100

     
上3图注明:一、该算法效果异常好;二、对块大小不太灵敏,由此格外适合于自动化操作。

      
关于QX56GB到YCbCr的十分的快转换,能够参照:颜色空间种类叁:
卡宴GB和YCbCr颜色空间的调换及优化算法 

     
由于在上述链接的篇章中,YCbCr颜色空间已经被转换来[0,255],由在那之中灰检查测试部分的第(陆)条中的sign函数就不要求了。

   
  一样,提供个编写翻译好的文件给有意思味商讨该算法的敌人看看效果:

   
  http://files.cnblogs.com/Imageshop/AutoWhiteBalance.zip

   后记:

   
 针对动态阈值法,多数情侣反映假若YCbCr的值量化在0到25伍之间的话会产出全数的像素都会被式(陆)起先判别为灰色参考试场点。那样先前时代的专业就失去了意义,算法就成为了近乎于周详反射算法那了,稍微有点差异的地方便是双边选用两点的守则有所区别。就算那样做的末段结出还算不错,但的确和故事集的本意像违背了,前面经过试行,如若把YCbCr的值量化在-127到128之间,式六中的Sgn同样适用,则开端剖断为白点的数会大量的缩减,对于同二个图纸,同一个参数多少个算法的最终的职能相比较如下:

  
更新后的下载链接依然如下,以增添了修正后的效应。

     
图片 36 
图片 37  图片 38

      图片 39 
图片 40 
图片 41

 

 图片 42

 ***************************小编:
laviewpbt   时间: 201三.4.20    联系QQ:  33184777 转发请保留本行消息*************************

 

 

日光

b、
总结有所奥迪Q5new、Gnew、Bnew的最大值,然后选取该最大值将将计算后数据再一次线性映射到[0,255]内。实施注明那种办法将会使图像全部偏暗,建议使用第一种方案。

原图

图片 43

图片 44

事先反复与博主laviewpbt钻探相关的文化,收益匪浅。

Kb=K/Baver;

(一)直接给定为固定值, 取其各通道最大值的拾贰分之5,即取为1二柒或12八;

那边随机摘录部分切实需要。

网络平日有像样招聘如下的招贤纳士新闻: 

灰度法

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

对此上式,计算中可能会存在溢出(>25伍,不会冒出小于0的)现象,管理方式有两种。

图片 45

而据笔者所知,绝大多数的照相机选择的底蕴算法就是灰度世界算法,然后在那算法的基础上再改正。

这边贴出简单达成的C代码:

故灰度法相应可对应为:

简来讲之就是颜色温度调整。

照相机首要本领点为三A算法。

那里只是起到二个示范成效,具体的参数,可按实际上供给酌情实行改造。

 

图片 46

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

日光灯

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

a、 直接将像素设置为255,这大概会促成图像全体偏白。

图片 47

均值法

大家知道常用的摄像采访编码是YUV。

  是以灰度世界假使为底蕴的,该假使认为对于1幅具有大批量情调变化的图像,
奥迪Q5、 G、 B 三个轻重的平均值趋于同1个灰度K。一般有三种办法来明显该灰度。

YUV相关见百度百科:YUV

灰度世界算法(格雷 World)

单从眼睛上去分辨两张图片,的确很难分出优劣。

接下来难点来了,市面上3A算法相关材质都10分稀有,就连相关书籍都很少聊到算法细节,而他们多数都会供给掌握三A算法至少之壹。

基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理、实现及效果

因为倘诺运用取最大值的方案就会招致在一定情景明明不平均,比方该通道大多数的值落在细微值相近,而却存在贰个遥远处的最大值,那么就会变成像素音讯差异过大,就很不佳了。

  1. 贯通camera的3A(AE,AWB,AF)算法原理和企图思路,
    有3A算法的设计经验为佳
  2. 享有丰硕ISP(图象管理器) 开采经历,熟谙高通,QUALCOMM,
    OV等便携式终端上利用的ISP开垦条件。有上述条件下支付经历为佳。
  3. 驾驭数字图像管理原理和基础知识。
  4. 熟知C/C++语言,有开采经历为佳
  5. 有部手提式有线话机/便携式相机三A算法达成/应用经验
  6. 了然CMOS sensor的专门的学问规律

Gnew = G * Kg;

贴上相比较图:

第两种思路,最轻巧易行的另一种创新便是运用灰度法。

透超过实际地衡量,那样的拍卖后效果还不易。

白热光

就此在其次种思路上开始展览更进一步创新比较稳当,因为可用的新闻比较多,不轻易出标题。

Kg=K/Gaver;

那般就会设有评估不够规范的难点,导致各通道像素消息差异过大,形成噪点以及偏色等现象。

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

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

然而本身也只是差不多点一下那一个思路而已,有所积累的人,看到那,应该能够散开出越多的主见。

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;
    } 

gaozhihan@vip.qq.com

任职要求:
一、本科以上文凭,天文,物理,机电、工业自动化,电子相关专门的工作,博士文凭优先思量;
2、本科毕业叁年以上,学士结束学业1年以上的连锁行当相关专业经验须求;
三、纯熟精通C/C++也许FPGA 开垦语言,数据结构,MATLAB,非信号和种类;
肆、精通数字色度学,数字图像管理,数字影像管理的基本知识;
伍、熟习壁画机成像原理;
陆、通晓三A(AF,AE,AWB)算法之一;
7、对于自动化调控,数字非确定性信号采样,滤波,负反馈,PID算法有实在经历;
8、通晓从画面到SENSOEvoque,电机,ISP,编码器,搜集,呈现通道一些列变化。

Kr=K/Raver;

算法的第三步是独家总括各通道的增益:

算法第3步为依赖Von Kries
对角模型,对于图像中的各种像素奥迪Q3、G、B,总结其结果值:

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

正文只是投石问路一下,若有其余相关主题素材恐怕须要也得以邮件联系本人斟酌。

贴一下《依照灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理、落成及成效》灰度世界法的光景内容。

算法的差不离思路便是评估一张图纸昂CoraGB多少个通道的中最能表达该通道富含音讯的值,然后以该值为准绳重新调解像素。

阴天

而这类职位一般都以高薪待遇。 

Camera/ISP 算法程序员
录像机三A算法软件程序员 

 邮箱地址是:

图片 48

  

任职需求:

而三A算法首要指的是全自动对焦(AF)、自动暴露(AE)及自动白平衡(AWB)。
机动白平衡:根据光源条件调节图片颜色的保真程度。

接下去自个儿要说的是切实相机中的钨丝灯等手动白平衡是什么样贯彻的。

那么依照灰度世界那个白平衡算法能够怎么落实那种调度呢?!

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

而至于白平衡算法,相比较不易的素材是那份:

Rnew = R * Kr;

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

图片 49

钨丝灯

相关文章