1. 空间域滤波

空间域滤波是指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。主要分为线性滤波和非线性滤波两类,根据功能可分为平滑滤波器和锐化滤波器。平滑可通过低通来实现,平滑的目的有两类,一是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小尖端连接起来;二是去噪。锐化则可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。

在matlab中实现空间域滤波,有很多类型,如均值、中值、索贝尔、高斯、拉普拉斯、高斯-拉普拉斯等,但各有差异。下面是用matlab实现的代码:

%空间域滤波
clc;close all;
I=imread('salt.bmp');
w1=fspecial('average',[3 3]);
w2=fspecial('sobel');
w3=fspecial('gaussian',[3 3],0.5);
w4=fspecial('laplacian',0.2);
w5=fspecial('log',[5 5],0.5);
g1=imfilter(I,w1,'replicate');
g2=imfilter(I,w2,'replicate');
g3=imfilter(I,w3,'replicate');
g4=imfilter(I,w4,'replicate');
g5=imfilter(I,w5,'replicate');
g6=medfilt2(I);
subplot(3,3,1);imshow(I);title('原图');
subplot(3,3,2);imshow(g1);title('均值滤波');
subplot(3,3,3);imshow(g2);title('索贝尔滤波');
subplot(3,3,4);imshow(g3);title('高斯滤波');
subplot(3,3,5);imshow(g4);title('拉普拉斯滤波');
subplot(3,3,6);imshow(g5);title('高斯-拉普拉斯滤波');
subplot(3,3,7);imshow(g6);title('中值滤波');

其运行结果如下:

空间域滤波均采用matlab自带的函数,参数也采用默认的值,可见中值滤波的效果最好。

其中各滤波器的原理和优缺点如下:

A)均值滤波:由fspecial函数生成的w1是一个大小为3*3的矩形平均滤波器,再用imfilter这个函数使这个掩模的中心逐个滑过图像的每个像素,输出为模板限定的相应领域像素与滤波器系数乘积结果的累加和。由处理结果可见均值滤波器的效果使每个点的像素都平均到它的领域去了,噪声明显减少了很多,效果较好。

B)索贝尔滤波:w2是一个大小为3*3的sobel滤波器sv,用来近似计算垂直梯度,在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。但是Sobel导数并不是真正的导数,这是因为Sobel算子定义于一个离散空间之上,它真正表示的是多项式拟合,用较大的核的话会在更多像素上进行拟合,会更加正确。而较小的核对噪声会更加敏感,此时用sobel算子近似计算导数的缺点精度比较低,这种不精确性在试图估计图像的方向导数 (使用y/x滤波器响应的反正切得到的图像梯度的方向)。比如对于3*3的Sobel滤波器,梯度角度接近水平或者垂直方向的时候,这样的不准确性会比较明显。由滤波效果可见到图像的边缘凸显了出来,sobel算子主要用于边缘检测。

C)高斯滤波:高斯滤波器是平滑线性滤波器的一种,线性滤波器很适合于去除高斯噪声。而非线性滤波则很适合用于去除脉冲噪声,中值滤波就是非线性滤波的一种。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波器是带有权重的平均值,即加权平均,中心的权重比邻近像素的权重更大,这样就可以克服边界效应。高斯滤波如果采用3×3掩模的具体公式如下:

g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16

其中,f(x,y)为原图像中(x,y)像素点的灰度值,g(x,y)为经过高斯滤波和的值。由处理效果可看出高斯滤波的减噪能力较好。

D)拉普拉斯滤波:拉普拉斯算子是n维欧式空间的一个二阶微分算子。拉普拉斯算子会突出像素值快速变化的区域,因此常用于边缘检测。由效果可见图像的边界得到了增强。

E)中值滤波:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。中值滤波对于斑点噪声和椒盐噪声来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。由上图效果可见中值滤波的效果最好。

由以上分析可知,各种滤波器各有优劣,适用情况也不尽相同,线性滤波器很适合于去除高斯噪声,而非线性滤波则很适合用于去除脉冲噪声,如中值滤波很适合去除椒盐噪声。使用起来要视具体实际情况而定。

2. 频率域滤波

开始时看书看了些原理想自己用算法实现发现有困难,就去百度了一下,写了下面的一些代码:

理想低通滤波:

%频率域滤波
clc;close all;
f=imread('salt.bmp');
f=im2double(f);F=fft2(double(f));%傅里叶变换F=fftshift(F);%将变换的原点移到频率矩形的中心
[M,N]=size(f);%理想低通滤波D0=input('输入截止频率');
h1=zeros(M,N);
for i=1:Mfor j=i:Nif(sqrt(((i-M/2)^2+(j-N/2)^2))<D0)h1(i,j)=1;endend
end
G1=F.*h1;
G1=ifftshift(G1);
g1=real(ifft2(G1));subplot(2,3,1);imshow(f);title('原图');
subplot(2,3,2);imshow(g1);title('理想低通滤波');

其运行效果如下:
高斯低通滤波:

%高斯低通滤波
clc;close all;
I=imread('salt.bmp');
I=im2double(I);
M=2*size(I,1);
N=2*size(I,2);                        %滤波器的行列数
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u,v);
D=sqrt(U.^2+V.^2);
D0=20;
H=exp(-(D.^2)./(2*(D0^2)));          %设计高斯滤波器
J=fftshift(fft2(I,size(H,1),size(H,2)));
G=J.*H;
L=ifft2(fftshift(G));
L=L(1:size(I,1),1:size(I,2));
figure;
subplot(121);imshow(I);
subplot(122);imshow(L); 

其运行效果如下:

巴特沃斯低通滤波:

%巴特沃斯低通滤波
clc;close all;
f=imread('salt.bmp');
f=im2double(f);
M=2*size(I,1);
N=2*size(I,2);                        %滤波器的行列数
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u,v);
D=sqrt(U.^2+V.^2);
D0=50;                                %截止频率
n=6;
H=1./(1+(D./D0).^(2*n));              %设计巴特沃斯滤波器
F=fftshift(fft2(I,size(H,1),size(H,2)));%傅里叶变换
G=F.*H;
L=ifft2(fftshift(G));                   %傅里叶反变换
L=L(1:size(I,1),1:size(I,2));
subplot(121);imshow(f);
subplot(122);imshow(L);

其运行效果如下:

可以看出,低通滤波滤掉了图像频谱中的高频成分,仅让低频部分通过,即变化剧烈的成分减少了,结果是使图像变模糊。比较可见高斯滤波的效果最好。频率域高通滤波和低通滤波实现的原理差不多,只是在设计滤波器时的公式有些差异,我就没有再重复实现了。

Ref: http://blog.csdn.net/sinat_21595363/article/details/45420503

图像处理常用图片下载地址:http://decsai.ugr.es/cvg/dbimagenes/

MATLAB中实现图像的空间域滤波和频率域滤波相关推荐

  1. 传统基本图像处理方法:图像增强(灰度变换、直方图增强、空间域滤波、频率域滤波)、图像分割、图像配准等

    图像处理设计主要有以下几种处理:图像增强(灰度变换.直方图增强.空间域滤波.频率域滤波).图像分割.图像配准等等. 图像增强: 图像增强作为基本的图像处理技术,目的在于通过对图像进行加工使其比原始图像 ...

  2. matlab中的图像类型

    MATLAB中的图像类型 在MATLAB中数组是最基本的数据结构,大部分图像用二维 数组即矩阵表示,矩阵中的一个元素对应一个像素.例如,一个由500行600列不同颜色点组成的图像可以用500*600的 ...

  3. 空间域滤波、频率域滤的关系:

    空间域滤波.频率域滤的关系: 由于空间域滤波和频率域滤波之间可以通过卷积定理等价,那么也就意味着,空间域中的卷积核h ( x , y ) h(x,y)h(x,y)通过傅里叶变换就得到了频率域中对应等价 ...

  4. 空间域滤波、频率域滤波及其关系

    滤波器分类 常见的图像滤波器从是否为线性角度分为线性滤波器和非线性滤波器,非线性滤波器包括统计排序滤波器和形态学滤波器等.从空域还是频域角度又可以分为空域滤波和频域滤波. 本文仅涉及线性滤波器,并通过 ...

  5. Matlab数字图像处理——图像的空间变换

    Matlab空间变换函数 imtransform Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移.旋转.剪切.缩放).投影变换, 该函数可与 maketform 配合 ...

  6. matlab中的图像转换

    matlab中的图像转换包括两个层面的内容,首先是不同图像文件格式之间的转换(例如将BMP格式转换为PNG格式,这里可以由imwrite()函数实现,具体参见):其次是matlab中不同图像存储形式之 ...

  7. Matlab中消除图像噪声之中值滤波器:medfilt2

    Matlab中消除图像噪声之中值滤波器:medfilt2 medfilt2, matlab, 消除噪声, 中值滤波器, 椒盐噪声 在图像处理中,在进行如边缘检测这样的进一步处理之前,通常需要首先进行一 ...

  8. MATLAB中的图像融合

    下面来介绍一下如何在MATLAB中实现图像的融合,具体原理及步骤如下: 图像融合:图像融合是指将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术等,最大限度的提取各自信道中的有利信息, ...

  9. Matlab中完成图像旋转(坐标旋转)

    Matlab中完成图像旋转(坐标旋转) 通过极坐标的转化,将点阵进行旋转,得到旋转后点阵的坐标并绘制出来,以下为代码. y=xlsread("D:\temp\meigu\tianran\un ...

最新文章

  1. 修改 Android Studio 相关模板,以加快项目创建时构建速度,支持Mac,Windows,Linux...
  2. 计算机协会知识讲座,计算机协会第一期电脑维修讲座顺利开展
  3. chrome查看网站字符集编码的方法(不需要安装charset)
  4. 系统调用之Write
  5. React学习文档阅读(一)
  6. js中的同步与异步的理解
  7. java自定义生成js代码_基于JavaScript的代码自动生成工具
  8. 什么是 BI?和报表有什么关系?有了 BI 还要做报表吗?
  9. 大专大一计算机应用基础期末考试题,计算机基础大一考试题及答案
  10. C语言中对程序设计的理解,浅论《C语言程序设计》的学习方法
  11. 使用Python连接谷歌邮箱发送邮件
  12. 【AXI】解读AXI协议中的burst突发传输机制
  13. 无法运行regedit.exe的简单解决方法
  14. 在Debian Linux下用MAME模拟器玩街机游戏
  15. 基于can总线的A2L文件解析(2)
  16. [渝粤教育] 西南科技大学 信息组织与检索 在线考试复习资料2021版
  17. BeanPostProcessor由浅入深
  18. NGS数据分析实践:03. 涉及的常用数据格式[4] - bed和Wiggle/Bigwig/bedgraph格式
  19. Jmeter接口测试-if控制器
  20. vue uniapp 折叠功能实现

热门文章

  1. 在Win10 PC上安装Ubuntu 20.04 系统
  2. 推荐一个超级好用的正则匹配在线的网站
  3. sql查询包含某个字符_MySQL DBA基本知识点梳理和查询优化
  4. 【生活中的逻辑谬误】质的量化和以出身论英雄
  5. Tornado实现多线程、多进程HTTP服务
  6. 一元三次方程的求解(二分法)
  7. 维图PDMS切图软件
  8. html5 swipe滑动选择身高,Swipe 移动端滑动插件使用详解
  9. 是不是程序员总会遇到一个瓶颈期,觉得自己没有进步了,该怎么解决?
  10. C# DevExpress 皮肤控件记住设置