当然能够做商讨的时间被带崽和加班所占用,直方图拉伸和直方图均衡化是广大的直接相比度巩固方法

  近年来直接未有找到感兴趣的切磋课题,下了多少个流行的去雾的舆论,随意看了下,以为都以为着写诗歌而做的舆论,未有怎么立异性,也就从未主张去落实他们。有时见到了部分有关水下图像加强方面包车型客车稿子,闲来无聊试着去探视效果,但是也认为这一个令人大失所望,就像是并不曾特别有效的算法。

  过完年从今未来,一向缠身种种琐事和杂务,本来可以做研讨的日子被带崽和加班所占用,偶然有闲见到一些好文章也只能先备份在那在等之后有空了在去研商。还会有就是QQ里的知音也给自家提供了有个别随想,笔者都把他献身计算机的生龙活虎生机勃勃角落里,为防范那么些好的财富之后被遗忘,特在这里做个备忘。

意气风发、图像加强算法原理

        
图像巩固算法司空见惯于对图像的亮度、相比较度、饱和度、色调等举行调护治疗,扩展其清晰度,减弱噪点等。图像加强往往经过几个算法的重新组合,完毕上述作用,比如图像去燥等同于低通滤波器,扩张清晰度则为MediaTek滤波器,当然加强盛器晚成副图疑似为终极拿到图像有用新闻服务为主。平常的算法流程可为:图像去燥、增添清晰度(相比度)、灰度化或许获得图像边缘特征只怕对图像实行卷积、二值化等,上述三个步骤往往能够通过分化的步骤举办落实,后续将针对此方面内容开展专项论题实验,列举其行使场景和管理特点。

       
本作品是风姿潇洒篇综合性文章,算是风流洒脱篇投砾引珠的小说,有均衡化、升高相比度、减弱相比度的算法。

     
就自己看得几篇小说来讲,那类算法都不是从原理上、或然说某叁个数学模型、抑或是某种先验知识出发,而建议的算法,都是大器晚成种没有何样特强的答辩协助,只是通过某个实际的试验而博得的局地历程而已。这个进程对于杂文本身中提供的测试图像都抱有较为理想的管理效果,而纵然选取风华正茂副其余属性的水下图像,其结果往往难以令人满足。因而,也就一贯不像样于去雾算法界暗通道先验那样不可企及的纯金随笔了。

      生龙活虎: 去雾方面包车型大巴故事集

1.1 基于直方图均衡化的图像加强

      
图像比较度巩固的措施能够分为二种:直接对比度加强方法,直接相比度巩固方法。直方图拉伸和直方图均衡化是广阔的直接相比度巩固方法。直方图拉伸是行使相比较度拉伸对直方图进行调节,扩展前途和背景灰度的间距,这种措施能够通过线性和非线性的法子来落到实处,个中ps中正是应用此办法进步比较度;直方图均衡化则是利用储存函数对灰度值举办调度,落成相比度的增高。

       
直方图均衡化管理原理:将原有图像的灰度图从相比聚焦的某些灰度区间均匀布满在任何灰度空间中,完毕对图像的非线性拉伸,重新分配图像像素值。

算法应用途景:

        
1、算法的庐山面目目是双重分布图像的像素值,扩大了成百上千部分的相比度,全部的相比度没有展开太大转移,所以接受图像为图像有用数据的相比较度周边是,举个例子:X光图像,能够将暴露过度或揭露不足照片实行更加好的来得,也许是背景及前程太亮或太暗的图像极其常有效。

       
2、算法当然也可以有劣点,具体展现为:调换后的图像灰度级减弱,有些细节能减排少;有个别图像有高峰值,则管理后比较度不自然的超负荷巩固。

算法达成特点:

      
1、均衡化进程:直方图均衡化保障在图像像素映射进程中原本的尺寸关系维持不改变,即较亮的区域依然较亮,较暗的仍旧较暗,只是相比较度扩展,无法明暗颠倒;保障像素映射函数的值域在0和255里头。累积布满函数是单增进函数,何况值域是0到1。

         2、积存布满函数达成进程:

        
相比较概率布满函数和堆叠布满函数,前面五个的二维图疑似长短不一的,前者是枯燥依次增加的。直方图均衡化进程中,映射方法是

图片 1

          
当中,n是图像中像素的总和,图片 2是当前灰度级的像素个数,L是图像中恐怕的灰度级总的数量。

来拜望通过上述公式如何得以实现的拉伸。假如犹如下图像:

图片 3

得图像的总括音信如下图所示,并依赖总结新闻完结灰度值映射:

图片 4

照耀后的图像如下所示:

图片 5

算法伪代码:

        1、总括原始灰度图像的像素可能率布满

         2、依据像素可能率遍及获取图像储存分布函数

        3、依据映射函数获取转变后的图像

算法matlab代码:

%直方图均衡化  
I = imread('rice.png');  
[height,width] = size(I);  
figure  
subplot(221)  
imshow(I)%显示原始图像  
subplot(222)  
imhist(I)%显示原始图像直方图  

%进行像素灰度统计;  
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级  
for i = 1:height  
    for j = 1: width  
        NumPixel(I(i,j) + 1) = NumPixel(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
    end  
end  
%计算灰度分布密度  
ProbPixel = zeros(1,256);  
for i = 1:256  
    ProbPixel(i) = NumPixel(i) / (height * width * 1.0);  
end  
%计算累计直方图分布  
CumuPixel = zeros(1,256);  
for i = 1:256  
    if i == 1  
        CumuPixel(i) = ProbPixel(i);  
    else  
        CumuPixel(i) = CumuPixel(i - 1) + ProbPixel(i);  
    end  
end  
%累计分布取整  
CumuPixel = uint8(255 .* CumuPixel + 0.5);  
%对灰度值进行映射(均衡化)  
for i = 1:height  
    for j = 1: width  
        I(i,j) = CumuPixel(I(i,j));  
    end  
end  

subplot(223)  
imshow(I)%显示原始图像  
subplot(224)  
imhist(I)%显示原始图像直方图

       笔者看了三篇小说,第后生可畏篇是Underwater
Image Enhancement Using an Integrated Colour
Model,07年的小说,算法的细路很简短,借用文章中的生龙活虎副流程图来注明下:

           1、Efficient Image Dehazing
with Boundary Constraint and Contextual
Regularization,下载地址:

1.2 基于拉普Russ算子的图像巩固

       
利用拉普Russ算子实行图像巩固本质是应用图像的一回微分对图像举办蜕化,在图像领域中微分是锐化,积分是张冠李戴,利用二遍微分对图像进行蜕化即利用邻域像素升高相比较度。在opencv中也许有拉普Russ函数,但当下生成了灰度图像,越来越多的求取边缘,具体源码还未商量,在那之中规律能够参谋笔者前意气风发篇文章,针对拉普Russ有个详细的介绍。

这次实验应用的卷积核为:

图片 6

         
 图片 7

         
 http://lab.datatang.com/1984DA173065/WebFile/DocWeb/2014012053738649.pdf

1.3 基于对象Log转变的图像巩固

       
对数调换能够将图像的低灰度值部分扩展,展现出低灰度部分越多的内幕,将其高灰度值部分压缩,收缩高灰度值部分的细节,进而达到强调图像低灰度部分的指标。调换情势:

图片 8

        对数调换对图像低灰度部分细节加强的机能过可以从对数图上直观精通:

图片 9

        
x轴的0.4概略对应了y轴的0.8,即原图上0~0.4的低灰度部分通过对数运算后扩充到0~0.8的部分,而整个0.4~1的高灰度部分被投影到唯有0.8~1的间距,那样就达到了扩展和提升低灰度部分,压缩高灰度部分的值的意义。

从上海体育场面还足以看出,对于分歧的底数,底数越大,对低灰度部分的扩展就越强,对高灰度部分的减少也就越强。

 

 

1.4  基于伽马转变的图像加强

       
伽马转变主要用来图像的改正,将灰渡过高依旧灰迈过低的图纸打开纠正,加强相比度。调换公式正是对原图像上每二个像素值做乘积运算:

图片 10

      
伽马转换对图像的更正作用其实就是透过加强低灰度或高灰度的细节达成的,从伽马曲线能够直观通晓:

图片 11

       
γ值以1为分界,值越小,对图像低灰度部分的恢弘成效就越强,值越大,对图像高灰度部分的恢宏效率就越强,通过不一样的γ值,就足以高达拉长低灰度或高灰度部分细节的效果与利益。

       
伽马转变对于图像相比较度偏低,何况完全亮度值偏高(对于于相机过曝)境况下的图像加强效果显然。

   
 相当的轻松的手续,首先是进行相比度拉升,能够当做是看似于PS中的自动比较度,接着将管理后的图像调换成HSI颜色空间,在对S和I分量举办拉升,之后再将HSI空间的数码调换成RubiconGB空间获得终极的图像。在百度上搜寻哪个人下图像巩固,能检索到叁个相关的专利,见http://www.google.com/patents/CN102930512A?cl=zh,那几个专利的从头到尾的经过其实也没啥新意,同样的正是在HSI空间将S和I分量用任何的点子开展了拉升和拍卖,依旧发明专利,呵呵,大家都知晓国内专利是怎么回事。

          效果:

二、测验代码

依据上述讲授,本文利用python举办编制程序实验,代码如下:

def preprocess(filename, i):
    image = cv2.imread(filename)
    image_gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)

#    直方图均衡增强
    image_equal = cv2.equalizeHist(image_gray)
    r,g,b = cv2.split(image)
    r1 = cv2.equalizeHist(r)
    g1 = cv2.equalizeHist(g)
    b1 = cv2.equalizeHist(b)
    image_equal_clo = cv2.merge([r1, g1, b1])

#   拉普拉斯算法增强
    kernel = np.array([ [0, -1, 0],  
                    [-1,  5, -1],  
                    [0, -1, 0] ]) 
    image_lap = cv2.filter2D(image,cv2.CV_8UC3 , kernel)

#    对象算法增强
    image_log = np.uint8(np.log(np.array(image) +1))    
    cv2.normalize(image_log, image_log,0,255,cv2.NORM_MINMAX)
#    转换成8bit图像显示
    cv2.convertScaleAbs(image_log,image_log)

#    伽马变换
    fgamma = 2
    image_gamma = np.uint8(np.power((np.array(image)/255.0),fgamma)*255.0)
    cv2.normalize(image_gamma, image_gamma, 0, 255, cv2.NORM_MINMAX)
    cv2.convertScaleAbs(image_gamma, image_gamma)

     
那篇散文对算法部分的陈诉依旧过于简短,就算相比度拉升给了个公式,但并未分明的表明S和I分量的切切实实处理流程,他给的两篇参谋文献对应的网址也回天乏术开辟了,因而无法对本来的算法实行表明,小编用GIMP的相比较度拉升

    图片 12

三、实验结果及深入分析

图片 13图片 14                              
(src)                                                               
(log)

图片 15图片 16

                           
(laplus)                                                                
(gamma)

图片 17                                                                         
(equal)

图片 18图片 19

                                 
(src)                                                                                           
(log)

图片 20图片 21

                                
(laplus)                                                                                 
(gamma)

图片 22

                                                                                  
(equal)

实践结果剖判为:

       
1、log函数变化对图像加强来说,越来越多是对图像的相比较度有所减弱,究竟函数表现情势为像素值小的变大点,像素值大的变小点,所以比较度减小,亮度增添,正如图像所出示。所以近来线总指挥部的来说log函数照旧慎用,假使提升等函授大学数能够选择分支函数啊。

      
2、gamma函数图像巩固,那几个函数原理能够看看,当r大于1时,能够视作指数函数,小于则为log函数。在考试中大家常用r>1,完结图像相比较度加强。从图像中得以观望,中湖蓝更加黑,暗青更白。

      
3、laplus函数图像加强,本质是微分,所以为图像锐化,在图像锐化是显明呈现图像的内部原因,从而直观上加强图像相比较度。

     
4、equal函数本质是再度布满图像的像素值,直观大家开采图像颜色爆发变化,但比较度是有所进步,当然对于那组的图像的效率,未有彰显。

总计:图像巩固方法区别,应用领域差别,越来越好的运用须求驾驭灵活多变的点子。

  • HSV拉升未能达到杂谈中的效果。 

     2、 Fast image dehazing using guided joint bilateral filter

四、参谋小说

1、OpenCV图像加强算法达成(直方图均衡化、拉普Russ、Log、Gamma):本文基本在那底子上进行编制程序达成,原理可以参照那,同时本人对内部的概念难题张开安详严整。

2、直方图均衡化原理:本文详细介绍了直方图均衡化的原理,并经过opencv实行函数达成。

3、直方图均衡化精解及编程达成:文中对直方图均衡化的选拔特点和瑕玷举办分析,并依据算法原理通过matlab实现了算法。

     
 第二篇和第三篇都以用的图像融入的点子来管理的,分别是Enhancing
Underwater Images and Videos by Fusion以致Effective Single Underwater
Image Enhancement by
Fusion,后意气风发篇是国内合工业余大学学和中国科学技术高校的编辑者写的,很精通能够看得出模仿的笔迹

         http://graphvision.whu.edu.cn/papers/cgi2012.pdf

     
 其实这种经过融入的主意也很简短,正是先找二种算法得到对原图三种差异水平的拉长的结果,然后选择好三个融合周全的总括公式,再展开拉普Ruskin字塔融入,进而提取更加好的结果。Enhancing
Underwater Images and Videos by
Fusion那篇小说正是选取了白平衡的结果(记为I1)作为融合的指标一,
用对I1实行两岸滤波+CALHE之类的算法处理的结果(记为I2)作为融入的对象2。标准的拉普Russ融入的戮力一心算法经常常有:最大值、最小值、平均值,这里则改进为某风度翩翩种权重周全的休戚与共,最后举行拉普Russ融入。

      效果:

     
 因而,那些算法的处理结果的好坏性完全决议于融入的对象,即三个前处清理计算法。但是相仿存在的标题不怕算法的宽泛适应性,某大器晚成种前管理对某大器晚成类合适,对此外的就不自然了。

图片 23

     
 笔者这边通过一些试验,也建议生机勃勃种前处清理计算法,那几个算法的功用能够在GIMP的水彩–》自动–》色调均化中看见。

      3、法斯特 Haze Removal Algorithm for
Surveillance Video  
那是后生可畏篇讲怎么着对录像展开高效去雾的篇章,没涉及到具体的算法,然而可以看看。

     
 即使GIMP是三个好像PS的软件,但相互的光泽均化效果完全两样,查看GIMP的代码就可以精通那是怎么了,作者这里贴出GIMP的那些算法的骨干代码部分:

     二、双边滤波

static void
equalize_lut_setup (GimpLut       *lut,
                    GimpHistogram *hist,
                    gint           n_channels)
{
  gint            i, k, j;
  hist_lut_struct hlut;
  gdouble         pixels_per_value;
  gdouble         desired;
  gdouble         sum, dif;

  g_return_if_fail (lut != NULL);
  g_return_if_fail (hist != NULL);

  /* Find partition points */
  pixels_per_value = gimp_histogram_get_count (hist,
                                               GIMP_HISTOGRAM_VALUE,
                                               0, 255) / 256.0;

  for (k = 0; k < n_channels; k++)
    {
      /* First and last points in partition */
      hlut.part[k][0]   = 0;
      hlut.part[k][256] = 256;

      /* Find intermediate points */
      j   = 0;
      sum = (gimp_histogram_get_channel (hist, k, 0) +
             gimp_histogram_get_channel (hist, k, 1));

      for (i = 1; i < 256; i++)
        {
          desired = i * pixels_per_value;

          while (sum < desired && j < 256)
            {
              j++;
              sum += gimp_histogram_get_channel (hist, k, j + 1);
            }

          /* Nearest sum */
          dif = sum - gimp_histogram_get_channel (hist, k, j);

          if ((sum - desired) > (dif / 2.0))
            hlut.part[k][i] = j;
          else
            hlut.part[k][i] = j + 1;
        }
    }

  gimp_lut_setup (lut, (GimpLutFunc) equalize_lut_func, &hlut, n_channels);
}

void
gimp_lut_setup (GimpLut     *lut,
                GimpLutFunc  func,
                void        *user_data,
                gint         nchannels)
{
  guint   i, v;
  gdouble val;

  if (lut->luts)
    {
      for (i = 0; i < lut->nchannels; i++)
        g_free (lut->luts[i]);

      g_free (lut->luts);
    }

  lut->nchannels = nchannels;
  lut->luts      = g_new (guchar *, lut->nchannels);

  for (i = 0; i < lut->nchannels; i++)
    {
      lut->luts[i] = g_new (guchar, 256);

      for (v = 0; v < 256; v++)
        {
          /* to add gamma correction use func(v ^ g) ^ 1/g instead. */
          val = 255.0 * func (user_data, lut->nchannels, i, v/255.0) + 0.5;

          lut->luts[i][v] = CLAMP (val, 0, 255);
        }
    }
}

   1、Recursive Bilateral Filtering
,那几个在杨庆雄的网址里有下载:http://www.cs.cityu.edu.hk/~qiyang/,他的个人网址下还会有那一个别样的舆论和算法下载。

  gimp的代码看起来优秀晦涩的,可是其实上述算法要描述的意趣相当轻易,正是自个儿梦想本身调动后的图像的直方图在每一种色阶上的遍及可能率都以均等的。其实这几个进度就可以看作是直方图规定化的叁个进度,比如如下:

       
该算法速度特别快,可是效果有一些欠缺。

     图片 24   
 图片 25

    三、单幅图像的焦点光去除

                     原  图      
                                                           
管理后的图

  1、Real-Time Specular Highlight Removal Using
Bilateral Filtering

    图片 26   
 图片 27 
  图片 28

      2、Real-time highlight removal
using intensity ratio

    图片 29   
 图片 30   
 图片 31

      3、Separating Reflection Components
of Textured Surfaces Using a Single Image

    图片 32   
 图片 33   
 图片 34

    四、水下图像加强

        原图B/G/翼虎对应的直方图          
                   待相配的直方图                 
 管理后的直方图

  1、Enhancing Underwater
Images and Videos by
Fusion,这是后生可畏篇通过融入技巧来做实图像的散文,就算不是很复杂,可是小说的思绪应当能普及应用,那也是自家当年重大钻探何达成的小说之大器晚成。

  可知管理后的直方图已尽量向带相称的形式相近,但不容许完全雷同。

     
下载:http://research.edm.uhasselt.be/~oancuti/Underwater_CVPR_2012/

   
 用那个进程管理了几幅散文中带的水下图像,效果如下:

      效果:

 
 图片 35 
  图片 36

   图片 37

 
 图片 38 
  图片 39

图片 40 图片 41

 
 图片 42 
  图片 43

   
如上海体育场所所示,该算法还持有较强的去雾才干。

    最终黄金年代幅图在Enhancing Underwater
Images and Videos by
Fusion一文中的效果是十分棒的,首假如超负荷的很自然,那些相应融入在其效果吧。

 图片 44

   
融入这种管理格局确实四个值得推广的主见,因而那篇散文才会化为2011的CVP大切诺基杂文之生机勃勃的。

*********************************作者:
laviewpbt   时间: 二〇一六.3.16   联系QQ:  33184777
 转发请保留本行音信************************

 图片 45

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

相关文章