图像相比较度增强的点子可以分为三种,本来可以做商讨的光阴被带崽和加班所占有

  近日径直尚未找到感兴趣的商量课题,下了多少个新型的去雾的随想,随便看了下,觉得都是为了写杂文而做的舆论,没有啥样立异性,也就从不想法去完结他们。偶尔看看了有些有关水下图像增强方面的篇章,闲来无聊试着去探访效果,不过也觉得分外令人失望,就好像并没有特意有效的算法。

  过完年之后,向来无暇各样琐事和杂务,本来可以做研讨的时日被带崽和突击所占据,偶尔有闲看到一些好小说也不得不先备份在这边在等随后有空了在去研商。还有就是QQ里的相知也给自身提供了有的舆论,我都把她位于电脑的逐一角落里,为防备那一个好的资源之后被忘记,特在此做个备忘。

一、图像增强算法原理

        
图像增强算法常见于对图像的亮度、相比度、饱和度、色调等进行调剂,增添其清晰度,减弱噪点等。图像增强往往由此几个算法的咬合,达成上述意义,比如图像去燥等同于低通滤波器,增添清晰度则为高通滤波器,当然增强一副图像是为尾声得到图像有用信息服务为主。一般的算法流程可为:图像去燥、扩充清晰度(比较度)、灰度化或者取得图像边缘特征或者对图像进行卷积、二值化等,上述多少个步骤往往可以透过不相同的步子举行落实,后续将对准此方面内容展开专题实验,列举其利用场景和处理特点。

       
本小说是一篇综合性作品,算是一篇投砾引珠的篇章,有均衡化、提升相比较度、下跌比较度的算法。

     
就自己看得几篇小说而言,那类算法都不是从原理上、或者说某一个数学模型、抑或是某种先验知识出发,而提出的算法,都是一种没有怎么特强的反驳匡助,只是经过有些实际的考查而获取的有些进度而已。那些进程对于随想本身中提供的测试图像都有所较为理想的处理效果,而只要接纳一副其他属性的水下图像,其结果往往难以令人满意。由此,也就从未有过看似于去雾算法界暗通道先验那样不可逾越的金子作品了。

      一: 去雾方面的舆论

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 基于拉普拉斯算子的图像增强

       
利用拉普拉斯算子举办图像增强本质是运用图像的二次微分对图像进行蜕化,在图像领域中微分是锐化,积分是模糊,利用二次微分对图像举办蜕化即利用邻域像素进步比较度。在opencv中也有拉普拉斯函数,但那时生成了灰度图像,越多的求取边缘,具体源码还没研讨,其中规律可以参见我前一篇作品,针对拉普拉斯有个详细的介绍。

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

图片 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空间的数量转换来RGB空间得到终极的图像。在百度上寻找何人下图像增强,能寻找到一个有关的专利,见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图像增强算法已毕(直方图均衡化、拉普拉斯、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。标准的拉普拉斯融合的融合算法一般有:最大值、最小值、平均值,那里则修改为某一种权重周全的相濡以沫,最后进行拉普拉斯融合。

      效果:

     
 因而,这么些算法的处理结果的好坏性完全在于融合的靶子,即多个前处理算法。然则同样存在的题材即使算法的常见适应性,某一种前处理对某一类合适,对其它的就不必然了。

图片 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/R对应的直方图          
                   待匹配的直方图                 
 处理后的直方图

  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

   
融合那种处理格局确实一个值得推广的想法,由此那篇随想才会成为2012的CVPR小说之一的。

*********************************作者:
laviewpbt   时间: 2014.3.16   联系QQ:  33184777
 转发请保留本行信息************************

 图片 45

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

相关文章