图像相比较度增强的格局能够分成两种,本来能够做研究的时刻被带崽和加班所占用

  目前直接从未找到感兴趣的钻探课题,下了多少个流行的去雾的舆论,随便看了下,觉得都以为着写杂文而做的舆论,没有怎么立异性,也就从未有过想法去贯彻他们。偶尔看看了有的有关水下图像增强方面包车型地铁稿子,闲来无聊试着去探访效果,不过也以为拾叁分令人壮志未酬,就像并不曾专门实用的算法。

  过完年过后,一贯无暇各样琐事和杂务,本来能够做商讨的日子被带崽和突击所占有,偶尔有闲看到部分好作品也只好先备份在那里在等随后有空了在去钻探。还有便是QQ里的知音也给自身提供了部分舆论,笔者都把她放在电脑的逐条角落里,为严防那一个好的能源之后被淡忘,特在此做个备忘。

1、图像增强算法原理

        
图像增强算法常见于对图像的亮度、比较度、饱和度、色调等开始展览调节和测试,扩张其清晰度,收缩噪点等。图像增强往往通过四个算法的整合,实现上述功用,比如图像去燥等同于低通滤波器,增添清晰度则为德州仪器滤波器,当然增强一副图像是为最终取得图像有用消息服务为主。一般的算法流程可为:图像去燥、扩充清晰度(比较度)、灰度化大概取得图像边缘特征或许对图像实行卷积、二值化等,上述多少个步骤往往能够经过区其余步调举行落到实处,后续将对准此方面内容展开专题实验,列举其采用场景和拍卖特点。

       
本小说是一篇综合性小说,算是一篇一得之见的稿子,有均衡化、提升比较度、降低相比较度的算法。

     
就本人看得几篇作品而言,那类算法都不是从原理上、可能说某三个数学模型、抑或是某种先验知识出发,而提议的算法,都以一种没有怎么特强的反驳支撑,只是通过有个别实际上的试验而赢得的局地历程而已。这个进程对于随想本身中提供的测试图像都具有较为理想的处理效果,而只要采纳一副其他属性的水下图像,其结果往往难以令人满足。由此,也就从未有过接近于去雾算法界暗通道先验那样不可逾越的金子文章了。

      一: 去雾方面包车型客车诗歌

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

      
图像比较度增强的章程能够分为三种:直接比较度增强方法,直接比较度增强方法。直方图拉伸和直方图均衡化是广阔的直接相比较度增强方法。直方图拉伸是选择相比较度拉伸对直方图进行调整,增加前景和背景灰度的差别,那种方式可以经过线性和非线性的法子来兑现,个中ps中正是采纳此形式提升相比度;直方图均衡化则是行使累积函数对灰度值进行调整,达成相比度的滋长。

       
直方图均衡化处理原理:将本来图像的灰度图从相比较集中的某些灰度区间均匀分布在全部灰度空间中,实现对图像的非线性拉伸,重新分配图像像素值。

算法应用场景:

        
壹 、算法的面目是再度分布图像的像素值,扩张了累累有的的相比较度,全体的比较度没有进行太大改变,所以利用图像为图像有用多少的相比度相近是,例如:X光图像,能够将揭露过度或暴光不足照片进行更好的显示,可能是背景及前景太亮或太暗的图像万分实用。

       
② 、算法当然也有通病,具体表现为:变换后的图像灰度级减弱,有些细节收缩;有些图像有高峰值,则处理后相比较度不自然的过度增强。

算法实现特点:

      
① 、均衡化进程:直方图均衡化保障在图像像素映射进度中原本的尺寸关系维持不变,即较亮的区域照旧较亮,较暗的仍然较暗,只是相比较度扩张,不可能明暗颠倒;保险像素映射函数的值域在0和255里头。累积分布函数是单增进函数,并且值域是0到1。

         二 、累积分布函数完结进程:

        
相比较可能率分布函数和积聚分布函数,前者的二维图像是良莠不齐的,后者是干Baba递增的。直方图均衡化进度中,映射方法是

图片 1

          
个中,n是图像中像素的总数,图片 2是最近灰度级的像素个数,L是图像中恐怕的灰度级总数。

来探望通过上述公式如何实现的拉伸。假使有如下图像:

图片 3

得图像的计算音信如下图所示,并根据总结新闻成功灰度值映射:

图片 4

辉映后的图像如下所示:

图片 5

算法伪代码:

        一 、总括原始灰度图像的像素可能率分布

         贰 、依据像素可能率分布获取图像累积分布函数

        三 、依照映射函数获取变换后的图像

算法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年的篇章,算法的细路很简短,借用文章中的一副流程图来表明下:

           ① 、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空间的数码转换来凯雷德GB空间获得终极的图像。在百度上搜索什么人下图像增强,能寻找到3个相关的专利,见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)

实验结果分析为:

       
壹 、log函数变化对图像增强来讲,更加多是对图像的相比较度有所削弱,终究函数表现情势为像素值小的变大点,像素值大的变小点,所以相比较度减小,亮度扩展,正如图像所出示。所以近日线总指挥部的来说log函数仍然慎用,假使升高等函大数可以采用分支函数啊。

      
二 、gamma函数图像增强,这几个函数原理能够看看,当r大于1时,能够用作指数函数,小于则为log函数。在考查中我们常用r>1,达成图像相比度增强。从图像中得以见到,石绿更黑,法国红更白。

      
③ 、laplus函数图像增强,本质是微分,所以为图像锐化,在图像锐化是远近驰名突显图像的细节,进而直观上抓牢图像比较度。

     
肆 、equal函数本质是再一次分布图像的像素值,直观我们发现图像颜色产生变化,但比较度是有所提升,当然对于那组的图像的机能,没有展现。

小结:图像增强方法不一致,应用领域分裂,更好的施用供给掌握灵活多变的法子。

  • HSV拉升未能实现散文中的效果。 

     2、 Fast image dehazing using guided joint bilateral filter

四 、参考小说

1、OpenCV图像增强算法完结(直方图均衡化、拉普拉斯、Log、Gamma):本文基本在此基础上拓展编制程序落成,原理可以参见那,同时协调对中间的概念问题开展详解。

2、直方图均衡化原理:本文详细介绍了直方图均衡化的法则,并因而opencv进行函数完成。

3、直方图均衡化详解及编制程序实现:文中对直方图均衡化的运用特点和瑕疵进行剖析,并基于算法原理通过matlab完结了算法。

     
 第3篇和第2篇都以用的图像融合的方法来处理的,分别是Enhancing
Underwater Images and Videos by Fusion以及Effective Single Underwater
Image Enhancement by
Fusion,后一篇是国内合工大和中国中医药大学的撰稿人写的,很扎眼能够看得出模仿的字迹

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

     
 其实那种经过融合的法子也很简单,正是先找三种算法获得对原图三种不一致档次的增加的结果,然后选拔好三个融合周详的计算公式,再实行拉普罗斯金字塔融合,从而提取更好的结果。Enhancing
Underwater Images and Videos by
Fusion那篇作品正是选取了白平衡的结果(记为I1)作为融合的对象一,
用对I1进行两岸滤波+CALHE之类的算法处理的结果(记为I2)作为融合的靶子2。标准的拉普Russ融合的玉石不分算法一般有:最大值、最小值、平均值,那里则修改为某一种权重全面的齐心协力,最终进行拉普拉斯融合。

      效果:

     
 因而,这一个算法的处理结果的好坏性完全在于融合的靶子,即三个前处清理计算法。然而同样存在的题材尽管算法的广泛适应性,某一种前处理对某一类合适,对其余的就不肯定了。

图片 23

     
 小编那边经过一些尝试,也建议一种前处理算法,这么些算法的机能能够在GIMP的颜料–》自动–》色调均化中看到。

      ③ 、法斯特 Haze Removal Algorithm for
Surveillance Video  
这是一篇讲如何对录像展开快捷去雾的篇章,没涉及到现实的算法,可是能够看看。

     
 即使GIMP是3个接近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);
        }
    }
}

   ① 、Recursive 比拉teral 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/中华V对应的直方图          
                   待匹配的直方图                 
 处理后的直方图

  壹 、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

   
融合这种处理方式确实贰个值得推广的想法,因而那篇随想才会化为二〇一三的CVPENCORE杂谈之一的。

*********************************我:
laviewpbt   时间: 二零一四.3.16   联系QQ:  33184777
 转发请保留本行消息************************

 图片 45

*********************************作者:
laviewpbt   时间: 贰零壹陆.4.6   联系QQ:  33184777
 转载请保留本行消息************************

相关文章