线性空间滤波器

 工具箱支持一些预定义的二维线性空间滤波器,可通过函数fspecial实现,该函数生成滤波模板W,函数的语法为:w=fspecial(‘type’,parameters)type------------滤波器的类型parameters------------进一步定义指定的滤波器由函数fspecial支持的空间滤波器,其中的一些用于边缘检测
类型 语法及参数
average fspecial(‘average’,[r,c])是矩形平均滤波器,大小为rc,默认值为33.若用单个数代替[r,c],则表示正方形滤波器
disk fspecial(‘disk’,r)为圆形平均滤波器(包含在边长为2r+1大小的正方形内),半径为r。默认半径为5
gaussian fspecial(‘gaussian’,[r,c],sig)为大小为rc的高斯低通滤波器,标准偏移为sig(整数)。默认值为33和0.5.若用一个数代替【r,c】,则表示正方形滤波器
laplacian fspecial(‘laplacian’,alpha)为3*3的拉普拉斯滤波器,形状决定于alapha----一个处于【0,1】函数内的数。alpha默认值为0.2
log fspecial(‘log’,[r c] ,sig)是大小为rc的高斯-拉普拉斯(Log)滤波器,标准偏移为sig(正数)。默认值为55和0.5.若用一个数代替【r,c】则表示正方形滤波器
motion fspecial(‘motion’,len ,theta)用于输出滤波器,当与一副图像卷积时,len像素近似做线性运动(就好像照相机与景物的关系)。运动的方向为theta,以度数为为单位度量,以水平线为参考逆时针转动。默认值为9和0,这代表的是沿水平方向做9个像素点的运动。
prewitt fspecial(‘prewitt’)输出大小为3*3的prewitt滤波器,wv近似于垂直梯度。水平梯度的滤波器模板可以通过置换结果wh=wv来获得
sobel fspecial(‘sobel ’)输出大小为3*3的sobel 滤波器,sv近似于垂直梯度。水平梯度的滤波器模板可以通过置换结果sh=sv来获得
unsharp fspecial(‘unsharp’,alpha)输出大小为3*3的非尖锐的滤波器。alpha控制形状,必须在【0,1】范围内,默认值为0.2.

下面举一个使用函数imfilter实现拉普拉斯滤波器
图像f(x,y)的拉普拉斯算子定义为

通常,二阶导数的数字近似为:



因而有

通过图像与下列空间模板进行卷积,这个表达式可以在图像中的所有点实现:
0 1 0
1 -4 1
1 1 0
另一个可替换的数字二阶导数的定义可取对角线元素,可以使用下面的空间模板实现:
1 1 1
1 -8 1
1 1 1
两种导数有时可以用这里所示的相反符号来定义,得到与前面两个空间模板正好相反的结果。
使用拉普拉斯算子增强的基本公式为:

其中,f(x,y)为输入图像,g(x,y)为增强后的图像。如果模板的中心系数为正,c为1;如果为负,c为-1;
因为拉普拉斯是微分算子,将使得图像锐化,并将恒定区域为0.把结果与原始图叠加,可恢复灰度级色调。
函数fspecial(‘laplacian’,alpha)可实现更为一般的拉普拉斯模板:
Α/1+A 1-A/1+A A/1+A
1-Α/1+A -4/1+A 1-A/1+A
A/1+A 1-A/1+A A/1+A
可以对增强结果进行精细调整。然而,拉普拉斯的主要应用邻域就是基于以上两种模板。

我们使用拉普拉斯滤波器对图像进行增强处理。下面是一副略微有些模糊的月球北极图像。在这种情况下,对图像的增强包括使得图像锐化,同时要尽可能保留图像的灰度层次。

首先,生成并显示拉普拉斯滤波器:

>> Untitled
>> imshow(f)
警告: MATLAB 已通过改用 OpenGL 软件禁用了某些高级的图形渲染功能。欲了解有关详细信息,请点击此处。
>> w=fspecial('laplacian',0)w =0     1     01    -4     10     1     0

注意这个滤波器属于double类,alpha=0的形状是前面讨论过的拉普拉斯滤波器。我们可以人为规定形状为:

>> w=[0 1 0;1 -4 1;0 1 0]

我们用w处理图像f,f属于unit8类:

>> g1=imfilter(f,w,'replicate')
>>  imshow(g1,[])


这个结果看起来是合理的,但是存在如下问题:所有像素都是正的。因为滤波器的中心参数为负,所以通常我们希望得到带有正值和负值的拉普拉斯图像。然而在这种情况下,f属于unit8类,imfilter给出了与输入图像类型相同的输出,所以负值将被截掉。
可以通过在滤波前将f转化为浮点数来解决这个困难:

>> f2=tofloat(f);
>> g2=imfilter(f2,w,'replicate')
>>  imshow(g2,[])

最后我们从原始图像中减去拉普拉斯图像以恢复失去的灰度层次(因为中心参数为负值)


>> g=f2-g2;
>>  imshow(g);

结果显示的结果比起原始图像要清晰。

下面我们继续进行对人工规定的滤波器与增强技术的比较的讨论。
增强问题常常需要从工具箱中指定可用的滤波器。拉普拉斯滤波器就是一个很好的例子。工具箱支持中心为-4的33拉普拉斯滤波器。通常使用中心为-8、周围的值都为1的33拉普拉斯滤波器以得到更加尖锐的图像。这个例子的目的是手工实现这个滤波器,并比较这两种方式得到结果。指令序列如下:

f=imread('b.tif');
w4=fspecial('laplacian',0);
w8=[1 1 1;1 -8 1;1 1 1]
f=float(f)
g4=f-imfilter(f,w4,'replicate');
g8=f-imfilter(f,w8,'replicate');
imshow(f);
imshow(g4);
imshow(g8);

运行后可以看到g8的图像效果要更好一些。

【matlab】线性空间滤波器的实现相关推荐

  1. Matlab实现滤波器,进行ASK、FSK、多音信号的滤波

    目录 绪论 一 :滤波器设计 二:ASK.FSK.多音信号产生 三:滤波 绪论 (1)以下是matlab破解版本的百度网盘资源: 链接:https://pan.baidu.com/s/1ORFFWE4 ...

  2. [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)

    [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计) ​ IIR滤波器主要设计方法先设计一个模拟低通滤波器,然后把它转化为形式上的数字滤波器.但对于FIR滤波器来说,设计方法的关键要求之一 ...

  3. [Matlab]椭圆滤波器设计:低通、高通、带通和带阻(4)

    [Matlab]椭圆滤波器设计:低通.高通.带通和带阻-------(4) ​ 椭圆滤波器(Elliptic filter)又称考尔滤波器(Cauer filter),是在通带和阻带等波纹的一种滤波器 ...

  4. [Matlab]FIR滤波器设计:(线性相位滤波器的特性)

    [Matlab]FIR滤波器设计:(线性相位FIR滤波器的特性) ​ FIR滤波器能够在保证幅度特性满足技术要求的同时,容易实现严格的线性相位特性,且FIR滤波器的单位抽样响应是有限长的,因而滤波器一 ...

  5. [Matlab]FIR滤波器设计:(FIR滤波器的结构)

    [Matlab]FIR滤波器设计:(FIR滤波器的结构) FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是一种在数字信号领域应用非常广 ...

  6. 用matlab进行拉普拉斯滤波,matlab拉普拉斯滤波器

    laplace(拉普拉斯)锐化 matlab 程序 部门: xxx 时间: xxx 整理范文,仅供参考,...高通滤波器可以看成是 1 减去相应低通滤 波器,从低通滤波器的性质可以看出,在...... ...

  7. matlab贝塞尔滤波器设计_DSP之窗函数法设计高通滤波器(MATLAB实现)

    窗函数法是设计滤波器比较简单的一种方法 不论是高通还是低通还是带通还是带阻滤波器,原理设计都是一样的 问题提出: 因为20lg0.01=-40 所以最小阻带衰减要小于-40,通过查表可知选择汉宁窗 假 ...

  8. 利用Matlab设计滤波器(FDAT)

    转自:http://blog.csdn.net/jbb0523/article/details/6782800 在matlab中有一个滤波器设计和分析工具FDAT,可以通过此工具来对滤波器进行设计. ...

  9. fir滤波器应用matlab,fir滤波器应用.ppt

    fir滤波器应用 电子与通信工程 许永全 FIR滤波器应用 内容 数字滤波器概述 FIR滤波器基本介绍 FIR滤波器在matlab及FPGA中的调用程序 FIR滤波器在无线信号处理的一个应用 数字滤波 ...

最新文章

  1. 怎样的财报让百度市值一夜暴涨400亿?净利逆势大涨219%;李彦宏:将在中国经济的复苏中受益...
  2. 《构建之法》问题与思考
  3. 页面判断用户是否登录
  4. Android设置窗体Activity背景透明
  5. linux看是否连上服务器
  6. 全国计算机等级考试题库二级C操作题100套(第28套)
  7. c语言哈夫曼压缩文本,哈夫曼文本压缩C语言实现.doc
  8. SCI、Ei投稿指南
  9. linux安装 lr agent
  10. 关于 WCF Binding 中 OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout 的解释
  11. python调用接口获取文件_Python中做接口自动化如何读取配置ini文件
  12. LaTeX论文模板(附源码)
  13. 万能声卡驱动win10_ASIO驱动(多通道版)-无驱外置USB声卡电音驱动
  14. 硬盘安装fedora14
  15. 计算机专业英语课程内容,《计算机专业英语》课程教学大纲
  16. 英语在计算机专业的作用,计算机专业英语的重要性.doc
  17. openmp矩阵乘法
  18. 如何测试扫码支付二维码?
  19. 1每天Python小例-12306爬虫#WinError 2
  20. 开发润乾报表过程:因为内容过多分页导致的这条线

热门文章

  1. 转移印花技术基础知识及应用方法
  2. Oracle作业job 没有自动调度起来
  3. JavaScript的NaN-唯一 一个自己不等于自己的对象!!
  4. 使用Nginx、Keepalived构建负载均衡
  5. 洛谷 P1137 旅行计划
  6. hdu 4715 Difference Between Primes 2013年ICPC热身赛A题 素数水题
  7. 医疗信息化 医学信息 医院管理 资料下载
  8. ibatis_HelloWorld
  9. dedeCms在首页显示要搜索的关键词
  10. 绕过安全狗_某教程学习笔记(一):23、WAF绕过