对Retinex的历史有了更进一步理解,y)举行高斯模糊而赢得

  近日再一次看了一晃IPOL网站,有一篇近来见报的篇章,名字就是Multiscale
Retinex,感觉自己对那么些早已主导通晓了,但要么进入看了看,也有一部分拿走,于是抽空把他们有点整理了下,原始小说及其配套代码详见:http://www.ipol.im/pub/art/2014/107/

   
Retinex那些词是由视网膜(Retina)和大脑皮层(Cortex)
七个词组合构成的。Retinex理论主要含有了七个地点的情节:物体的水彩是由物体对长波、
中波和短波光线的反光能力控制的,而不是由反射光强度的相对值控制的;物体的色彩不受光照 非均匀性的震慑,具有一致性
。 

      相关小说可知:带色彩復苏的多尺度视网膜增强算法(MSRCR)的法则、达成及采纳。

     
往日在自我的 带色彩恢复生机的多尺度视网膜增强算法(MSRCR)的法则、达成及使用 一文中早就较为详细的描述了Multiscale
Retinex的基本原理和使用,那里就不再做过多的注明。为发挥方便,依旧贴出其主导的乘除原理:

   
按照Retinex理论,人眼感知物体的亮度取决于环境的照明和物体表面对照射光的反光,其数学表达式为:

   
 从历史的相继上讲,本篇应该置身MSRCR此前的,只是出于明日大抵论文都是描述的MSRCR,由此我也是先读书MSRCR的。

    图片 1

           
I(x,y)=L(x,y)*R(x,y)                            (2-1)

   
 前些天,无意中找寻一些Retinex资料,搜索到一篇小说《Retinex in
matlab》,原以为是MSRCR之类的matlab完结,结果仔细一看,和MSRCR算法的描述完全差别。于是找了一些资料,对Retinex的野史有了越发明白,以下复制一些杂文中的文档以供表明:

  上式中,I为原始输入图像,F是滤波函数,一般为高斯函数,N为基准的数目,W为各种尺度的权重,一般都为1/N,
R代表在对数域的图像的出口。

  式中: I(x,y)代表被阅览或照相机接收到的图像信号;L(x,y)代表环境光的照射分量
;R(x,y)表示带领图像细节音信的目的物体的反光分量 。

   
 ******************************************************************************************************************************************************************************

  由于R是对数域的出口,要转移为数字图像,必须将他们量化为[0,255]的数字图像范畴,关于那几个量化的算法,有这极为首要的意思,他的优劣直接控制了最终输出的图像的灵魂。

   
将(2-1)式两边取对数,则可抛开入射光的属性得到物体的本来风貌,即有关系式

   
作品地址:http://www.doc88.com/p-993974139685.html

  近日,结合上述小说中提议的有些进度,有4种办法展开拍卖:

       Log[R(x,y)] =
Log[I(x,y)]-Log[L(x,y)];                
     (2-2)

   
近期,在当代生历史学和心思学的启示下,美利哥数学家Land等人布署出了Retinex(视网膜皮层)模型,并在适合人眼的颜色恒常性理论前提下,提议了基于Retinex的图像增强算法。那种算法建立的基本功是只要人眼感知目标的亮度和颜色由环境光照和对象表面的反射光照决定,保持目标的水彩恒常性主要就是估量环境光照,并删除环境光照的映像。这样就赢得了规范的靶子颜色和亮度音讯。由于Retinex算法具有高动态范围减小、高色彩保真度和优质的一部分细节增强等风味,引起了大气的国外学者的趣味。为规范估量亮度分量,选用统计路径常见有一维和二维的差别。早期,Land指出选拔随机路径,并对路线所通过的像素举办添加总括亮度,那种方式的欠缺在于当前像素点的亮度和自由路径上的像素亮度有关和其世界周围的像素亮度大概非亲非故,使得增强后的图像出现亮度不总是的场所。随后出现了二种迭代分段线性路径,即McCann99
Retinex 和Frankle-McCann
Retinex,相比较随机路径的Retinex而言,他们的增高成效较好。但是,他们的联合缺陷在于总计复杂度相比高,且迭代次数的选取对增进功效的影响主要。二〇〇四年,Ciurea和Funt发表了自动选用迭代次数的舆论后,这一难点才足以缓解。
Land分析了一维路径选用的老毛病,指出了二维路径的选项形式,即着力/环绕Retinex算法。那种艺术下,当前像素点周围领域内像素亮度值作为总结依照,且Jobson等人谨慎的印证了高斯卷积函数满足基本/环绕函数要求…………………………………….(以下就是SSR\MSR\MSRCR…等等)。

  第一种,也是最简单想到的就是,直接线性量化,即选取下式举行处理:

   
对上面的辩解的拓展一个粗略的笺注吧。把这些技术使用到图像处理上,就是本着大家明天早已收获的一副图像数据I(x,y),总结出相应的R(x,y),则R(x,y)认为是进步后的图像,现在的机若是如何赢得L(X,Y)。Retinex理论的发起人提议这一个L(x,y)可以由此对图像数据I(x,y)举办高斯模糊而取得,很多随想中都列出了卓殊主题/围绕函数以及要求归一化的K值,搞的重重新手都不知情是如何了,其实就是一个歪曲而已。从骨子里运用的角度来说,也足以用均值模糊来取代高斯模糊。

   
 ******************************************************************************************************************************************************************************

    
  图片 2

   
 因此那么些算法的细路就很粗略了,具体步骤如下:

   
由以上描述可见,Frankle-McCann Retinex选拔了一维路径寻找办法推断亮度,而MSRCR是二维的,后者则更进一步复杂。

  那种方法,由于Retinex数据处理后的高动态特性,数据分布很广,会冒出严重的两极化现象,一般难以得到满足的结果。

     1、输入:
原始图像数据I(x,y),尺度(也就是所谓的歪曲的半径)

   
关于FMR算法的原理呢,我瞬间也讲不清,那里稍微对算法的有的经过举办简易的牵线吧。

  第两种,就是在经典的MSRCR作品《A
Multiscale Retinex for Bridging the Gap Between Color Images and the
Human Observation of Scenes》中指出的Canonical Gain/Offset
算法。总括公式如下:

     2、处理:(1)
总结原始图像按指定尺度进行模糊后的图像 L(x,y);

   
首先,算法的输入需假如[0,1]范围的浮点数,并且是按对数分布的,这一个普通要求将[0,255]按对数格局量化到[0,1]范围内。

      
  图片 3    

              (2)
按照2-2式的盘算方法统计出 Log[R(x,y)]的值。

   
然后按照下图所示的门道对各种点的多寡开展对照、想乘、复位和平均操作。

  其中G和b为涉世参数。

              (3)
将 Log[R(x,y)]量化为0到255限制的像素值,作为末了的出口。

                 
 图片 4

  第三种,实在上述小说中提到的Simplest
Color
Balance(我简写为SCR)形式,那种办法的拍卖类似于Photoshop中的自动色阶,他把多少按照一定的百分比去除最小和最大的局地,然后中间的局地重新线性量化到0和255里头。

   
能够看得出,算法很简单,其中央的东西如故在于高斯模糊的贯彻。关于高斯模糊,网上有成百上千飞速优化的作品参考,具体的参阅代码可能很少有好人提供的。

     
那些自家其实是说不清楚了,给多少个链接我们温馨看看啊:

  第四种,就是GIMP的Retinex算法,那一个可详见 带色彩復苏的多尺度视网膜增强算法(MSRCR)的原理、达成及使用 一文的讲述。

   
注意到一些,就像是在量化的时候没有哪个人会将 Log[R(x,y)]举办Exp函数的演算而平昔拿走R(x,y),至于怎么,我无能为力提交明确的答案。

      据悉心情物医学评价和偏好映射的高动态范围图像的颜色映射算子的统筹

  还有一种方法,就是豪门知晓HDR的经过吧,他也是将高动态的数码量化到图像的可视范围,因而得以一向将这类算法应用与那几个难点上。我也做了尝试,效果如同一般。

   
量化的法子实际上有成百上千种,而以此点子在很大的程度上对拍卖的职能有所决定性的熏陶。至今我没来看有哪一篇杂谈对这一块讲的很精通,也不通晓他们的这几个结果是何许获得的,一种最简单易行的措施就是总括出Log[R(x,y)]的最大值马克斯和微小值Min,然后对每一个值Value,进行线性量化,公式为:

        据悉色彩恒常性的图像去雾技术

  在用第三种或第三种方法处理时,最好还必要有个Color
Restoration的进度,因为一旦一向对MSR处理的结果开展量化,得到的图像往往全部偏灰度,那是由于原有的彩色值经过log处理后的多寡范围就相比小了,那样各通道之间的歧异也很小,而之后的线性量化比log曲线要平滑很多,由此全部就丧失了五颜六色。

            R(x,y) = (
Value – Min ) / (Max – Min) * (255-0)                          
(2-3)

      Retinex in
Matlab

  诗歌中指出了校对情势如下:

    效果测试:

     
最终把拍卖的数目从对数域转换来[0,255]限定内(那里要求使用exp函数哦)。

          图片 5

 
  图片 6  图片 7  图片 8 

     
大家依然把日子放在算法效果的粗略分析上。

          图片 9

                     
   原图                                  
经过Retinex(尺度为10)增强后的图像            
 经过Retinex(尺度为300)增强后的图像

   
 图片 10

          图片 11

 
  图片 12  图片 13  图片 14

   
 一般景色下,可以认为FMR算法唯有迭代次数一个参数。由上图可知,迭代次数越小,图像的对待度越小,连读越亮,动态压缩范围越小。迭代次数越大,图像的相比较度越强烈。从直方图上看,迭代次数小时,直方图汇集集在一起,随着迭代次数等追加,直方图渐渐分布到所有动态范围内。
当迭代次数越发大时,图像会和原有图像很接近。

 

                     
 原图                                  
经过Retinex(尺度为10)增强后的图像                
经过Retinex(尺度为300)增强后的图像

     
大家在贴一些该算法处理的结果。

  
其中β=46,α=125为涉世参数,但是最后我的辨析以为β不容许取那样大,取1考试标明效果还不易。

   
杂文中说,尺度取值较时辰, 可以较好地达成动态范围的缩减,暗区域的底细能获取较好地增强,但输出颜色易失真;取值较大时,色感一致性较好。
我倒是没看到尺度小有什么利益。

   
  图片 15  图片 16  图片 17

  
对于有些原始图像HUE较为合理的图,若是用经典的MSRCR算法,会导致处理后的图不难偏色,上述杂文提议了对图像的Intensity数据举行Retinex处理,然后再把数量依照原有的RGB的比重映射到种种通道,这样就能在保存原始颜色分布的底子上提升图像,小说中称其为MSRCP。

   
以上算法所落成的进程一般倍称作为SSR(Single Scale
Retinex,单尺度视网膜增强);

   
  图片 18  图片 19  图片 20

  那么些算法的编码随想的附带代码里早就有了很好的例子了,其实正是很简短的干活,须求的心上人自己去参考。

   
为了取得更好的功力,人们又开发出所谓的多尺度视网膜增强算法(MSR,
Multi-Scale
Retinex),最为经典的就是3准绳的,大、中、小,既能完毕图像动态范围的削减,又能维系色感的一致性较好。同单尺度比较,该算法有在盘算Log[R(x,y)]的值时步骤有所不相同:

   
  图片 21  图片 22  图片 23

  我自己做了5种算法的相比较,分别是:

    (1)
须求对原本图像进行每个尺度的高斯模糊,得到模糊后的图像Li(x,y),其中小标i表示原则数。

                     
 原图                                                迭代四次          
                                     迭代10次

      MSRCRGIMP    -    Gimp内嵌的Retinex增强算法

     (2)
 对各样尺度下进展添加计算  Log[R(x,y)] =  Log[R(x,y)] + Weight(i)*
( Log[Ii(x,y)]-Log[Li(x,y)]);
 其中Weight(i)表示每个尺度对应的权重,要求各尺度权重之和必须为1,经典的取值为等权重。

   
 可见,对部分偏暗的图像的增加效率依旧很肯定。

      MSRCRStandard  -    按照《A
Multiscale Retinex ….  the Human Observation of
Scenes》一文写的算法,其中G=30,B=-6,β=1,α=125

   
 其余的步调和单尺度的从未有过区分。

   
 经过测试评释,这一个算法对于我们在常规光照下拍摄的相片的拍卖有意料之外的功用,能够暴发类似HDR的效应,贴出如下:

      MSRCRSCR      –        
 使用Color Restoration + Simplest Color Balance算法量化得到的结果

   
 图片 24 
 图片 25   图片 26

   
 图片 27  图片 28

        MSRCPSCR      –        
 使用Intensity数据 + Simplest Color Balance算法量化得到的结果

                     
  原图                                    
 经过SSR(尺度为300)增强后的图像              
经过MSR(最大口径为300,尺度数为3)增强后的图像

   
 图片 29  图片 30

      MSRHSV      -    对HSV空间的V分量举办(用的SCR量化)Retinex处理并回到RGB空间后的结果

   
 图片 31 
 图片 32 
 图片 33

                     
         原图                                                          
                   处理后

  他们的效能相比较如下:

                     
     原图                                    
 经过SSR(尺度为300)增强后的图像            
 经过MSR(最大标准为300,尺度数为3)增强后的图像

 
 其它,该算法对偏色图像也有早晚的考订能力,比如下图。

图片 34 图片 35 图片 36

  
 SSR和MSR在最大原则相同的时候什么人好哪个人坏我还真讲不清。

                     
   图片 37                       
                         
 图片 38

        original                    
    MSRCRGIMP                              
    MSRCRStandard

   
 在上述的两幅测试图像中,越发是第二幅,大家看来明明的偏色效果,那就是SSR和MSR普遍都存在的题材。给一段相比较经典的舆论中的原话供大家参考:

 
 图片 39 
 图片 40

图片 41 图片 42 图片 43

      The general
effect of retinex processing on images with regional or global
gray-world violations is a “graying out” of the image, either globally
or in specific regions. This desaturation of color can, in some cases, be
severe (see Fig. 4, middle). More rarely, the gray-world violations
can simply produce an unexpected color distortion (see Fig. 4,top
left).

                     
           原图                                                        
                    处理后

        
  MSRCRSCR                        MSRCPSCR    
                   MSRHSV

*** ***  
 为此,研讨者又开发出一种叫做带色彩复苏的多尺度视网膜增强算法(MSRCR,Multi-Scale
Retinex with Color Restoration) ,具体探究的进程详见 <A Multiscale
Retinex for Bridging the Gap Between Color Images and the Human
Observation of
Scenes>那篇诗歌,那里要说的是,我认为杂文里的措施不起其余功效,并且杂谈里为了那么些又引入了太多的可调参数,扩充了算法的错综复杂,不便于自动化已毕。

 
 贴出一段比较粗糙的落到实处该函数的matlab代码:

图片 44 图片 45 图片 46

   
从自己眼前的摸底来看,GIMP的contrast-retinex.c文件里应用的算法很好,效果也很好。他一贯从量化的方式上起先,引入了均值和均方差的概念,再加上一个决定图像动态的参数来促成无色偏的调试进度,简要描述如下。

 

        original                    
      MSRCRGIMP                            
   MSRCRStandard

   
(1)分别计算出 Log[R(x,y)]中R/G/B各通道数据的均值Mean和均方差Var(注意是均方差)。

function Test()
    clear all
    rgb=imread('c:\222.jpg');%需要处理的图片
    m=size(rgb,1);
    n=size(rgb,2);
    rr=zeros(m,n);
    gg=zeros(m,n);
    bb=zeros(m,n);
    for i=1:m
        for j=1:n
            rr(i,j)=logm(double(rgb(i,j,1))+eps);
            gg(i,j)=logm(double(rgb(i,j,2))+eps);
            bb(i,j)=logm(double(rgb(i,j,3))+eps);
        end
    end
    rr=rr/max(max(rr(:)));
    gg=gg/max(max(gg(:)));
    bb=bb/max(max(bb(:)));
    rrr= retinex_frankle_mccann(rr, 4);
    ggg= retinex_frankle_mccann(gg, 4);
    bbb= retinex_frankle_mccann(bb, 4);
    for i=1:m
        for j=1:n
            rrr(i,j)=round(exp(rrr(i,j)*5.54));
            ggg(i,j)=round(exp(ggg(i,j)*5.54));
            bbb(i,j)=round(exp(bbb(i,j)*5.54));
        end
    end
    rgb=cat(3,uint8(rrr),uint8(ggg),uint8(bbb));
    rgb=max(min(rgb,255),0);
    imshow(rgb);
end

function [ Retinex ] = retinex_frankle_mccann( L, nIterations )
    global RR IP OP NP Maximum
    RR = L;
    Maximum = max(L(:));                                 % maximum color value in the image
    [nrows, ncols] = size(L);
    shift = 2^(fix(log2(min(nrows, ncols)))-1);          % initial shift
    OP = Maximum*ones(nrows, ncols);                     % initialize Old Product
    while (abs(shift) >= 1)
        for i = 1:nIterations
            CompareWith(0, shift);                         % horizontal step
            CompareWith(shift, 0);                         % vertical step
        end
        shift = -shift/2;                                 % update the shift
    end
    Retinex = NP;
end

function CompareWith(s_row, s_col)
    global RR IP OP NP Maximum
    IP = OP;
    if (s_row + s_col > 0)
        IP((s_row+1):end, (s_col+1):end) = OP(1:(end-s_row), 1:(end-s_col)) + ...
            RR((s_row+1):end, (s_col+1):end) - RR(1:(end-s_row), 1:(end-s_col));
    else
        IP(1:(end+s_row), 1:(end+s_col)) = OP((1-s_row):end, (1-s_col):end) + ...
            RR(1:(end+s_row),1:(end+s_col)) - RR((1-s_row):end, (1-s_col):end);
    end
    IP(IP > Maximum) = Maximum;                          % The Reset operation
    NP = (IP + OP)/2;                                    % average with the previous Old Product
    OP = NP;                                             % get ready for the next comparison
end

图片 47 图片 48 图片 49

 
  (2)利用类似下述公式统计各通道的Min和马克斯值。

   
同样,提供个编译好的文书给有趣味研讨该算法的敌人看看效果:

       MSRCRSCR                    
       MSRCPSCR    
                   MSRHSV

            Min = Mean

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

图片 50 图片 51 图片 52

  • Dynamic * Var;  

 

        original                    
      MSRCRGIMP                            
   MSRCRStandard

            Max = Mean

 ***************************作者:
laviewpbt   时间: 2013.4.18    联系QQ:  33184777
 转发请保留本行音讯*************************

图片 53 图片 54 图片 55

  • Dynamic * Var;
        (3)  对Log[R(x,y)]的每一个值Value,进行线性映射: 

 

         MSRCRSCR                  
         MSRCPSCR    
                   MSRHSV  

           R(x,y) = (
Value – Min ) / (Max – Min) * (255-0)
,同时要小心扩展一个溢出判断,即:

  孰好孰坏给位自己去探讨吧。

           if (R(x,y)
> 255)  R(x,y) =255; else if (R(x,y) < 0) R(x,y)=0;

  算法效果测试:http://files.cnblogs.com/Imageshop/Retinex%E7%BB%BC%E5%90%88.rar

   
 就是由此如此简单的拍卖,实践申明可以赢得极度好的效率,上边贴出一些甩卖后的效率。

  很久没有写博客了,其实也从未江郎才尽的觉得,就是吧没有想写的激动。现在写也无在此此前那么认真了,感觉就是像计流水账一样。算了,记账就记账吧。

 
 图片 56  图片 57  图片 58

 图片 59

   
 MSR(最大标准为300,尺度数为3)增强图像        
  MSRCR(最大条件为300,尺度数为3,Dynamic=2)增强图像
  MSRCR(最大规格为300,尺度数为6,Dynamic=2)增强图像

****************************小编:
laviewpbt   时间: 2014.6.26    联系QQ:  1664462947
 转发请保留本行音讯********************

 
  图片 60  图片 61  图片 62

 

     
MSR(最大原则为300,尺度数为3)增强图像        
 MSRCR(最大口径为300,尺度数为3,Dynamic=2)增强图像
  MSRCR(最大标准为300,尺度数为6,Dynamic=2)增强图像

 

       
 由以上三幅图的功能得出的定论:

       
(1)MSRCR效果要比MSR好很多,基本扫除了色偏。

       
(2)对于MSRCR,尺度数对结果的形象不是更加大,然而随着标准化数的充实,算法耗时会线性增加,由此,一般标准数取3就相比较合适了。

       
 继续贴图做相比较:

 
  图片 63  图片 64  图片 65

               
MSRCR(Dynamic=1)增强图像                          
 MSRCR(Dynamic=2)增强图像                            
 MSRCR(Dynamic=5)增强图像

 
 图片 66 
 图片 67  图片 68 
   

               
 MSRCR(Dynamic=1)增强图像                          
 MSRCR(Dynamic=2)增强图像                        
 MSRCR(Dynamic=5)增强图像

   
  由以上三幅图的功用得出的结论:

   
(3)Dynamic取值越小,图像的相比较度越强。

   
(4)一般的话Dynamic取值2-3中间能得到比较明确的增长功用,即能博得很自然过渡效果,又能维持图像的清晰度适度压实。

   
 关于最大标准,个人提议取值以高于100为佳。

   
 retinex算法的功用对于部分正规的图像处理后的成效并倒霉,大家得以认为他就是为那多少个在外围环境不理想的情况下拍摄的图像增强而规划的,更加的,对于航拍的雾天图片,经济学上的成像图片等成像条件恶劣的图有很明确的效益,再列出有些肖像处理效果。

 
  图片 69 
 图片 70 
 图片 71

 
  图片 72 
 图片 73 
 图片 74

 
  图片 75 
 图片 76 
 图片 77

 
  图片 78 
 图片 79  图片 80

 
  图片 81   图片 82 
 图片 83

 
  图片 84   图片 85 
 图片 86

                   
原始图像                                             MSRCR增强的职能    
                                   NASA的Retinex增强结果

   
上述照片均选择最大条件为300,尺度数为3,Dynamic=2时的成效。

   
由上述几组照片,能够看看,Retinex在图像去雾、宇航图、历史学图像、老照片等图像的拍卖上功效至极明确。

   
NASA的处理效果要比自己那里的MSRCR好有的,那本来无可厚非,人家是什么样单位呀。

   
关于NASA对Retinex技术的使用,可以参见:http://dragon.larc.nasa.gov/retinex/

   
关于去雾效果,我们在来和美图秀秀、可牛影象、光影魔术手等现有的软件做个简易的相比:

  图片 87 
 图片 88   图片 89

                     
原图                                             MSRCR                  
                                 美图秀秀 

  图片 90 
 图片 91

               
 可牛影象                                                
 光影魔术手

  图片 92 
 图片 93  图片 94

                     
 原图                                                 MSRCR            
                                    美图秀秀 

  图片 95 
  图片 96

                
可牛印象                                                
光影魔术手

   
关于何人是何人非,为幸免不需要的口舌之争,那里依旧提交给位看管去分辨吧。

   
同样,提供个编译好的文本给有趣味探讨该算法的爱人看看效果:

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

 

 
  图片 97

   
关于Rentinex,在共享两篇比较经典的英文杂文:

    Multi-Scale
Retinex for Color Image
Enhancement

    A Multiscale
Retinex for Bridging the Gap Between Color Images and the Human
Observation of
Scenes

   
关于完结代码,提供GIMP的contrast-retinex.c的下载链接(要像完全看懂其中的持有代码的趣味很困难,然而要提取其中的算法部分就不那么复杂了)。

   
http://files.cnblogs.com/Imageshop/contrast-retinex.rar

 

 图片 98

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

相关文章