zoukankan      html  css  js  c++  java
  • 由Photoshop高反差保留算法原理联想到的一些图像增强算法。

    原地址:http://blog.csdn.net/laviewpbt/article/details/20577683

    关于高反差保留的用处说明呢,从百度里复制了一段文字,我觉得写得蛮好的:

      高反差保留就是保留图像的高反差部分,再说得真白些,就是保留图像上像素与周围反差比较大的部分,其它的部分都变为灰色。拿一个人物照片来举例,反差比较大的部分有人的眼睛,嘴,以及身体轮廓。如果执行了就反差保留,这些信息将留下来(与灰色形成鲜明对比)。它的主要作用就是加强图像中高反差部分。还以人物照片为例子,一般为了使人物皮肤美观,通常需要执行模糊,执行模糊后人物的线条也被模糊了。在执行模糊之前复制图像两个副本,其中一个执行模糊,另一个执行高反差保留,把高反差保留后的图层放置在模糊图层的上方,然后执行柔光混合模式,这样人物的线条就更清楚些。 

         那么高反差保留算法本身的执行过程是如何的呢,简单的表达就是: 

             高反差保留 = 原始图像 - 高斯模糊图像 + 127

         加上127的目的是为了不让太多的像素由于不在有效范围内而导致图像太黑,从而丢失信息。

         简单的代码如下:

    unsigned char *Pointer , *CloneP;
    unsigned char * Clone = (unsigned char *) malloc (Height * Stride );
    memcpy(Clone, Scan0, Height * Stride);                //    复制一个图层
    GuassBlur(Clone, Width ,Height, Stride, Radius);      //    对该图层经进行高斯模糊
    for (Y = 0; Y < Height; Y++)
    {
        Pointer = Scan0 + Y * Stride;
        CloneP = Clone + Y * Stride;
        for (X = 0; X < Width; X++)
        {
            ValueB = *Pointer - *CloneP + 127 ;           //    混合
            *Pointer = Clamp(ValueB);
            Pointer++;
            CloneP++;
        }
    }
    free(Clone);

      高斯模糊是一种低通滤波器,执行后,图像中较为平坦的地方变化不大,而边缘部分被模糊了,如果用原图 - 高斯模糊则得到的则是强化的边缘值,高反差保留在PS的英文版中对应的单词是HighPass,即高通,也就是这个意思。

          我这里并不是想强调高反差保留的功能,虽然该算法也有着广泛的应用。 我这里就是想通过类似于原图 - 高斯模糊这样的过程来增强图像。

          很多图像都需要增强,特别是一些医学图像,由于拍摄的硬件或拍摄的场合不理想,得到的图像往往细节都被隐藏起来,因此,细节的增强显得尤为重要,而原图 - 高斯模糊正好是图像的细节部位的信息的一种表达,因此,如果在模糊图的基础上再加上这个细节, 则即减少了噪音,又保持了边缘等细节(边缘和噪音都属于高频部分的),能有效的增强图像的信息。  

          因此,如果用这样的方式来得到一副图像:

          增强图像 = 模糊图像 + Amount *(原始图像 - 高斯模糊图像)

          则能起到一定的增强作用。 

        

            原图                           Amount = 3                        Amount = 6 

      更好的一种方式测试采用双边滤波器来处理,即使用双边滤波来代替上述高斯模糊的过程。

      比如用双边模糊,上述效果则更好,如下图所示。

       

       

       

               原图                          Amount = 3                       Amount = 6 

         不错测试这个算法使用的范围似乎不广。

         测试程序下载:链接

    *****************************基本上我不提供源代码,但是我会尽量用文字把对应的算法描述清楚或提供参考文档*******************************

    *************************************因为靠自己的努力和实践写出来的效果才真正是自己的东西,人一定要靠自己***************************

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

  • 相关阅读:
    [20141124]sql server密码过期,通过SSMS修改策略报错
    [20141121]无法通过powershell读取sql server性能计数器问题
    深入解析Windows操作系统笔记——CH3系统机制
    深入解析Windows操作系统笔记——CH2系统结构
    [MySQL Reference Manual] 8 优化
    [20140928]创建连接到MySQL的连接服务器
    [20140829]spinlock导致cpu居高不下
    Percona XtraBackup User Manual 阅读笔记
    [MySQL Reference Manual] 7 备份和恢复
    [Linux 存储管理] LVM结构
  • 原文地址:https://www.cnblogs.com/lanye/p/3777303.html
Copyright © 2011-2022 走看看