以上两个效果相对比较简单,姑且称之为入门效果, 它并没有用到太多数字图像处理或者信号处理方面的知识。接下来我们要介绍稍微复杂一点的效果,第一个就是图像的模糊和锐化。

图像的模糊又成为图像的平滑(smoothing),人眼对高频成分是非常敏感的。如果在一个亮度连续变化的图像中,突然出现一个亮点,那么我们很容易察觉出来。类似的,如果图像有个突然的跳跃—明显的边缘,我们也是很容易察觉出来的。这些突然变化的分量就是图像的高频成分。人眼通常是通过低频成分来辨别轮廓,通过高频成分来感知细节的(这也是为什么照片分辨率低的时候,人们只能辨认出照片的大概轮廓,而看不到细节)。但是这些高频成分通常也包含了噪声成分。图像的平滑处理就是滤除图像的高频成分。

那么如何才能滤除图像的高频成分呢?先来介绍一下图像数字滤波器的概念。

简单通俗的来说,图像的数字滤波器其实就是一个n *n的数组(数组中的元素成为滤波器的系数或者滤波器的权重,n称为滤波器的阶)。对图像做滤波的时候,把某个像素为中心的n*n个像素的值和这个滤波器做卷积运算(也就是对应位置上的像素和对应位置上的权重的乘积累加起来),公式如下

其中x , y 为当前正在处理的像素坐标。

通常情况下,滤波器的阶数为3已经足够了,用于模糊处理的3x3滤波器如下

经过这样的滤波器,其实就是等效于把一个像素和周围8个像素一起求平均值,这是非常合理的---等于把一个像素和周围几个像素搅拌在一起—自然就模糊了J

用来对一个图像做滤波处理的函数如下:

剩下的工作就是定义一个用来进行模糊的滤波器模板,并调用dip_filter这个函数就可以了。代码如下:

以上的模糊滤波器称为BOX滤波器,是最简单的滤波器,如果考虑到离开中心像素的距离对滤波器系数的影响,我们通常采用更加合理的滤波器---高斯滤波器—一种通过2维高斯采样得到的滤波器,它的模板如下:

很容易看出来,离开中心越远的像素,权重系数越小。

对于锐化操作,常用的锐化模板是拉普拉斯(Laplacian)模板,这个模板定义如下:

容易看出拉普拉斯模板的作法:先将自身与周围的8个象素相减,表示自身与周围象素的差别;再将这个差别加上自身作为新象素的灰度。如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,这就增强了图像的细节。

下面三副图分别表示了经过BOX滤波。高斯滤波和拉普拉斯滤波后的图像


BOX 模糊


高斯模糊


拉普拉斯锐化

高斯模糊和拉普拉斯锐化效果的HLSL和BOX的代码基本一致,就是filter的系数不同,这里不在列出。

通过这个两个效果,我们介绍了图像的滤波操作,这样的操作,也称为模板操作。它实现了一种邻域运算(Neighborhood Operation),即某个象素点的结果灰度不仅和该象素灰度有关,而且和其邻域点的值有关。模板运算在图像处理中经常要用到,可以看出这是一项非常耗时的运算。有一种优化的方法称为可分离式滤波,就是使用两个pass来进行x/y方向分别滤波,能让运算次数大大减少。而且滤波器阶数越高,优势越明显。

数字图像滤波的时候,同样还需要注意边界像素的问题,不过幸好,HLSL能让边界处理更加的透明和简单。

Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 锐化模糊相关推荐

  1. Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果(1)

    现在学习Direct3d/HLSL的人非常多,教程也非常多.因为硬件的水平在进步,所以可编程管道的处理能力也在不断的提高.从Direct3D 8开始,Direct3D中引入了可编程管道(Program ...

  2. Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow

    所谓HDR就是高动态范围的意思.在普通的显示器和位图里,每通道都是8-bit,也就是说RGB分量的范围都是0-255,这用来表示现实中的颜色显然是远远不够的.现实中的图像的动态范围远远大的多,那么如何 ...

  3. [推荐]HLSL编程实现PhotoShop滤镜效果

    本文原创版权归 潘李亮所有,如有转载,请按如下方式于明显位置标明原创作者及出处,以示尊重!! ===================================================== ...

  4. HLSL编程实现PhotoShop滤镜效果

    文章为it168稿件.地址为 http://tech.it168.com/n/2007-03-29/200703291522292.shtml Direct3D提高篇之:HLSL编程实现PhotoSh ...

  5. ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...

    ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...

  6. 杨洋python课程提高篇_杨洋老师:全民一起玩Python 基础篇+提高篇,老师幽默严谨不枯燥的学习编程...

    课程介绍 本套课程出自杨洋老师的全民一起玩Python 基础篇+提高篇官网售价299元,程保持了杨洋博士老师幽默严谨不枯燥的学习编程,清晰全面的授课风格,配有丰富的教学演示和插图.动画,是初学者学习P ...

  7. 全民一起玩Python提高篇第十四课:函数式编程初步(上)

    函数与数字.字符串.列表等一样,本质上都是某种存放在内存中的数据类型,都可以用一个名字(变量名.函数名 -- )指向它 一个函数与一个数字.字符串等一样,都可以赋值给一个变量.比如,如果 f 是一个函 ...

  8. java编程提高篇_【Java入门提高篇】Day1 抽象类

    基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好 ...

  9. Matlab编程实现图像滤镜效果(浮雕、怀旧色、连环画、羽化、素描、强光等)

    Matlab编程实现图像滤镜效果 实验的目的是按照PhotoShop中实现滤镜效果的步骤进行matlab程序编码,最后实现相应的滤镜效果.主要包含的滤镜效果有:浮雕效果.怀旧色风格.连环画效果.交叉冲 ...

最新文章

  1. 考研最惨专业排行榜,你上榜了吗?
  2. 【codeforces 711B】Chris and Magic Square
  3. 计算机xp怎么做备份,怎样备份xp系统电脑上的所有数据?在xp系统中备份所有文件的方法...
  4. [C++学习笔记](double*)malloc(n * sizeof(double));
  5. python之旅(六) - 自省
  6. 收集的安全网站【公司】
  7. 大熊猫卸妆后_您不应错过的6大熊猫行动
  8. 用蒙特卡洛求pi_蒙特卡洛算法(MCS)及其MATLAB实现
  9. Linux运维 第三阶段 (九)NFS
  10. 震惊!Spring Boot 内存又泄露,排查太难了!
  11. 全文检索(LuceneSolr)
  12. SpringSecurity OAuth2+JWT+网关实现认证授权中心
  13. 关于java的外语文献_java英文参考文献(涵盖3年最新120个)
  14. 长视频鏖战15年后 爱奇艺这份财报窥见“新蓝海“
  15. Java:QQ登录页面的制作(实现成功登录的代码)——含源码
  16. Ubuntu 下搭建 GCC 交叉编译工具链
  17. html 网页公式编辑软件,LaTeX 公式编辑器网页版
  18. Keil 保护视力背景颜色设置
  19. SourceInight快捷键(英文版)
  20. Invalid use of SingleClientConnManager: connection still allocated. 解决方法

热门文章

  1. 在职场上被逼「造反」的文科生,半年后25k,还强硬的说我拿低了...
  2. 算法选择_快速筛出topK的快速选择算法
  3. 6寸照片的尺寸是多少_各类证件照标准尺寸大全
  4. php加密数据库工具,各位用php将密码存入数据库,都用什么方法进行加密的?
  5. phoenix 根据条件更新_元旦前不必扎堆买新车!北京:出售车辆后,申请更新指标无时限...
  6. BN层对神经网络神经元数据分布的影响
  7. python中while。。。。else的用法
  8. python代码编写规范
  9. matlab要求 基础,Matlab基础考试要求.doc
  10. java的写法作文,RxJava系列文章(二) - 网络图片添加水印RxJava写法