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

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

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

         高反差保留 = 原始图像 - 高斯模糊图像 + 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 = ; Y < Height; Y++)
{
Pointer = Scan0 + Y * Stride;
CloneP = Clone + Y * Stride;
for (X = ; X < Width; X++)
{
ValueB = *Pointer - *CloneP + ; // 混合
*Pointer = Clamp(ValueB);
Pointer++;
CloneP++;
}
}
free(Clone);

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

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

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

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

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

其中Amount控制增强的程度,则能起到一定的增强作用。

  

        原图                           Amount = 3                        Amount = 6

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

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

  

  

  

           原图                          Amount = 3                       Amount = 6

不过广泛的测试表明:这个算法使用的范围似乎不广,对于很多图像效果过于明显。

测试程序下载:链接

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

由Photoshop高反差保留算法原理联想到的一些图像增强算法。的更多相关文章

  1. PhotoShop算法原理解析系列 - 像素化---》碎片。

    接着上一篇文章的热度,继续讲讲一些稍微简单的算法吧. 本文来讲讲碎片算法,先贴几个效果图吧:             这是个破坏性的滤镜,拿美女来说事是因为搞图像的人90%是男人,色色的男人. 关于碎 ...

  2. BIRCH聚类算法原理

    在K-Means聚类算法原理中,我们讲到了K-Means和Mini Batch K-Means的聚类原理.这里我们再来看看另外一种常见的聚类算法BIRCH.BIRCH算法比较适合于数据量大,类别数K也 ...

  3. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  4. RSA算法原理

    一直以来对linux中的ssh认证.SSL.TLS这些安全认证似懂非懂的.看到阮一峰博客中对RSA算法的原理做了非常详细的解释,看完之后茅塞顿开,关于RSA的相关文章如下 RSA算法原理(一) RSA ...

  5. LruCache算法原理及实现

    LruCache算法原理及实现 LruCache算法原理 LRU为Least Recently Used的缩写,意思也就是近期最少使用算法.LruCache将LinkedHashMap的顺序设置为LR ...

  6. MySQL索引背后的数据结构及算法原理【转】

    本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...

  7. OpenGL学习进程(13)第十课:基本图形的底层实现及算法原理

        本节介绍OpenGL中绘制直线.圆.椭圆,多边形的算法原理.     (1)绘制任意方向(任意斜率)的直线: 1)中点画线法: 中点画线法的算法原理不做介绍,但这里用到最基本的画0<=k ...

  8. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

  9. 分布式缓存技术memcached学习(四)—— 一致性hash算法原理

    分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...

随机推荐

  1. 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?

    在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalS ...

  2. memcached安装及.NET中的Memcached.ClientLibrary使用详解

    序言 吹吹牛逼先,借我你的20分钟,保证你在.net中使用memcached缓存数据,畅通无阻,提升数据读取效率,分担数据库压力,便不在话下. 本篇主要说下:memcached分布式缓存的负载均衡配置 ...

  3. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)

    center os服务器上搭建discuz论坛初始化程序的时候出现的.我把localhost改成127.0.0.1解决了这个问题.

  4. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  5. SQL Tuning 基础概述08 - SQL Tuning Advisor

    SQL调优顾问 SQL Tuning Advisor的使用案例: 1.构建测试表T 2.定义调整任务 3.修改调整任务参数 4.执行调整任务 5.监控调整任务 6.查看调整任务建议 7.删除调整任务 ...

  6. SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理

    本文出处:http://www.cnblogs.com/wy123/p/6082338.html 现实中遇到过到这么一种情况: 在某些特殊场景下:进行查询的时候,加了TOP 1比不加TOP 1要慢(而 ...

  7. C#开发微信门户及应用(36)--微信卡劵管理的封装操作

    前面几篇介绍了微信支付方面的内容,本篇继续微信接口的一些其他方面的内容:卡劵管理.卡劵管理是微信接口里面非常复杂的一个部分,里面的接口非常多,我花了不少时间对它进行了封装处理,重构优化等等工作,卡劵在 ...

  8. OS存储管理——FIFO,LRU,OPT命中率

    课程设计课题 存储管理程序设计 摘 要 虚拟存储器作为现代操作系统中存储管理的一项重要技术,实现了内存扩充功能.而分页请求分页系统正好可以完美的支持虚拟存储器功能,它具有请求调页功能和页面置换功能.在 ...

  9. ActiveMQ(li)

    一.ActiveMQ 首先,ActiveMQ不是一个框架,它不是struct,webx,netty这种框架,它更像是tomcat服务器,因为你使用它之前必须启动它,activeMQ和JMS的关系有点类 ...

  10. Oracle SQL性能优化

    (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table) ...