Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 锐化模糊
以上两个效果相对比较简单,姑且称之为入门效果, 它并没有用到太多数字图像处理或者信号处理方面的知识。接下来我们要介绍稍微复杂一点的效果,第一个就是图像的模糊和锐化。
图像的模糊又成为图像的平滑(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滤镜效果 - 锐化模糊相关推荐
- Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果(1)
现在学习Direct3d/HLSL的人非常多,教程也非常多.因为硬件的水平在进步,所以可编程管道的处理能力也在不断的提高.从Direct3D 8开始,Direct3D中引入了可编程管道(Program ...
- Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果 - 伪 HDR/Blow
所谓HDR就是高动态范围的意思.在普通的显示器和位图里,每通道都是8-bit,也就是说RGB分量的范围都是0-255,这用来表示现实中的颜色显然是远远不够的.现实中的图像的动态范围远远大的多,那么如何 ...
- [推荐]HLSL编程实现PhotoShop滤镜效果
本文原创版权归 潘李亮所有,如有转载,请按如下方式于明显位置标明原创作者及出处,以示尊重!! ===================================================== ...
- HLSL编程实现PhotoShop滤镜效果
文章为it168稿件.地址为 http://tech.it168.com/n/2007-03-29/200703291522292.shtml Direct3D提高篇之:HLSL编程实现PhotoSh ...
- ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介...
ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...
- 杨洋python课程提高篇_杨洋老师:全民一起玩Python 基础篇+提高篇,老师幽默严谨不枯燥的学习编程...
课程介绍 本套课程出自杨洋老师的全民一起玩Python 基础篇+提高篇官网售价299元,程保持了杨洋博士老师幽默严谨不枯燥的学习编程,清晰全面的授课风格,配有丰富的教学演示和插图.动画,是初学者学习P ...
- 全民一起玩Python提高篇第十四课:函数式编程初步(上)
函数与数字.字符串.列表等一样,本质上都是某种存放在内存中的数据类型,都可以用一个名字(变量名.函数名 -- )指向它 一个函数与一个数字.字符串等一样,都可以赋值给一个变量.比如,如果 f 是一个函 ...
- java编程提高篇_【Java入门提高篇】Day1 抽象类
基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好 ...
- Matlab编程实现图像滤镜效果(浮雕、怀旧色、连环画、羽化、素描、强光等)
Matlab编程实现图像滤镜效果 实验的目的是按照PhotoShop中实现滤镜效果的步骤进行matlab程序编码,最后实现相应的滤镜效果.主要包含的滤镜效果有:浮雕效果.怀旧色风格.连环画效果.交叉冲 ...
最新文章
- 考研最惨专业排行榜,你上榜了吗?
- 【codeforces 711B】Chris and Magic Square
- 计算机xp怎么做备份,怎样备份xp系统电脑上的所有数据?在xp系统中备份所有文件的方法...
- [C++学习笔记](double*)malloc(n * sizeof(double));
- python之旅(六) - 自省
- 收集的安全网站【公司】
- 大熊猫卸妆后_您不应错过的6大熊猫行动
- 用蒙特卡洛求pi_蒙特卡洛算法(MCS)及其MATLAB实现
- Linux运维 第三阶段 (九)NFS
- 震惊!Spring Boot 内存又泄露,排查太难了!
- 全文检索(LuceneSolr)
- SpringSecurity OAuth2+JWT+网关实现认证授权中心
- 关于java的外语文献_java英文参考文献(涵盖3年最新120个)
- 长视频鏖战15年后 爱奇艺这份财报窥见“新蓝海“
- Java:QQ登录页面的制作(实现成功登录的代码)——含源码
- Ubuntu 下搭建 GCC 交叉编译工具链
- html 网页公式编辑软件,LaTeX 公式编辑器网页版
- Keil 保护视力背景颜色设置
- SourceInight快捷键(英文版)
- Invalid use of SingleClientConnManager: connection still allocated. 解决方法
热门文章
- 在职场上被逼「造反」的文科生,半年后25k,还强硬的说我拿低了...
- 算法选择_快速筛出topK的快速选择算法
- 6寸照片的尺寸是多少_各类证件照标准尺寸大全
- php加密数据库工具,各位用php将密码存入数据库,都用什么方法进行加密的?
- phoenix 根据条件更新_元旦前不必扎堆买新车!北京:出售车辆后,申请更新指标无时限...
- BN层对神经网络神经元数据分布的影响
- python中while。。。。else的用法
- python代码编写规范
- matlab要求 基础,Matlab基础考试要求.doc
- java的写法作文,RxJava系列文章(二) - 网络图片添加水印RxJava写法