水下图像增强相关算法的一个简约小结,近日下载的以及部分朋友共享的图像方面的舆论备份

  近日一贯尚未找到感兴趣的商量课题,下了多少个新型的去雾的诗歌,随便看了下,觉得都是为了写诗歌而做的舆论,没有啥样立异性,也就从不想法去落到实处他们。偶尔看看了一部分有关水下图像增强方面的篇章,闲来无聊试着去看看效果,不过也觉得尤其令人白璧微瑕,如同并没有特意实用的算法。

  过完年之后,从来艰辛各样细节和杂务,本来可以做探讨的时光被带崽和加班所占有,偶尔有闲看到有些好文章也只能够先备份在那边在等随后有空了在去研商。还有就是QQ里的至交也给我提供了一些舆论,我都把她位于电脑的依次角落里,为防备这几个好的资源之后被忘记,特在此做个备忘。

     
就自身看得几篇作品而言,那类算法都不是从原理上、或者说某一个数学模型、抑或是某种先验知识出发,而提议的算法,都是一种没有怎么特强的答辩支撑,只是通过有些事实上的试验而博得的一对历程而已。那一个经过对于杂谈本身中提供的测试图像都持有较为理想的拍卖效果,而一旦接纳一副其余属性的水下图像,其结果往往难以令人知足。由此,也就从未像样于去雾算法界暗通道先验那样不可逾越的黄金小说了。

      一: 去雾方面的杂谈

       我看了三篇小说,第一篇是Underwater
Image Enhancement Using an Integrated Colour
Model,07年的篇章,算法的细路很简短,借用文章中的一副流程图来表明下:

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

         
 图片 1

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

 

 

   
 很简短的手续,首先是拓展相比较度拉升,能够当做是相近于PS中的自动相比度,接着将处理后的图像转换来HSI颜色空间,在对S和I分量举行拉升,之后再将HSI空间的多少转换来RGB空间获得终极的图像。在百度上搜寻何人下图像增强,能招来到一个有关的专利,见http://www.google.com/patents/CN102930512A?cl=zh,这一个专利的情节其实也没啥新意,一样的就是在HSI空间将S和I分量用任何的章程展开了拉升和拍卖,依旧发明专利,呵呵,我们都了解国内专利是怎么回事。

          效果:

     
那篇随想对算法部分的描述仍然过于不难,尽管比较度拉升给了个公式,但并没有明显的表达S和I分量的实际处理流程,他给的两篇参考文献对应的网站也无从打开了,由此不能对原有的算法进行验证,我用GIMP的相比度拉升

    图片 2

  • HSV拉升未能达到随想中的效果。 

     2、 Fast image dehazing using guided joint bilateral filter

     
 第二篇和第三篇都是用的图像融合的章程来处理的,分别是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。标准的拉普拉斯融合的融合算法一般有:最大值、最小值、平均值,这里则修改为某一种权重周全的患难与共,最终进行拉普拉斯融合。

      效果:

     
 因而,那一个算法的处理结果的好坏性完全在于融合的靶子,即三个前处理算法。不过同样存在的标题就是算法的大面积适应性,某一种前处理对某一类合适,对其他的就不必然了。

图片 3

     
 我那边透过一些实验,也提议一种前处理算法,那么些算法的功力可以在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的代码看起来卓殊晦涩的,但是实际上述算法要描述的情趣很简短,就是本人期望自己调动后的图像的直方图在每个色阶上的遍布几率都是一律的。其实这一个进程就能够当做是直方图规定化的一个进度,举例如下:

       
该算法速度格外快,然而意义有点毛病。

     图片 4   
 图片 5

    三、单幅图像的高光去除

                     原  图      
                                                           
处理后的图

  1、Real-Time Specular Highlight Removal Using
Bilateral Filtering

    图片 6   
 图片 7 
  图片 8

      2、Real-time highlight removal
using intensity ratio

    图片 9   
 图片 10   
 图片 11

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

    图片 12   
 图片 13   
 图片 14

    四、水下图像增强

        原图B/G/R对应的直方图          
                   待匹配的直方图                 
 处理后的直方图

  1、Enhancing Underwater
Images and Videos by
Fusion,那是一篇通过融合技术来加强图像的篇章,即便不是很复杂,可是小说的笔触应当能广泛应用,那也是自个儿今年任重(英文名:rèn zhòng)而道远切磋何已毕的篇章之一。

  可见处理后的直方图已尽量向带匹配的方式贴近,但不容许完全平等。

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

   
 用那个历程处理了几幅杂文中带的水下图像,效果如下:

      效果:

 
 图片 15 
  图片 16

   图片 17

 
 图片 18 
  图片 19

图片 20 图片 21

 
 图片 22 
  图片 23

   
如上图所示,该算法还存有较强的去雾能力。

    最终一幅图在Enhancing Underwater
Images and Videos by
Fusion一文中的效果是分外棒的,紧要是矫枉过正的很当然,这么些相应融合在其职能吧。

 图片 24

   
融合那种处理格局确实一个值得推广的想法,因而那篇杂文才会变成2012的CVPR诗歌之一的。

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

 图片 25

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

相关文章

admin

网站地图xml地图