文档章节

Matlab数字图像处理之四:图像增强和空域滤波

天蚕宝衣
 天蚕宝衣
发布于 2017/03/16 20:31
字数 2260
阅读 211
收藏 0
点赞 0
评论 0

一、 实验目的

巩固滤波算法,了解几种不同滤波方式的使用和使用的场合,学会使用MatLab对图像作滤波处理,体会滤波效果,培养处理实际图像的能力。

二、 实验原理与函数说明

fspecial 函数

功能:产生预定义滤波器

格式:H=fspecial(type)

产生一个由 type 指定的二维滤波器 H ,返回的H常与其它滤波器搭配使用,如:

H=fspecial(‘gauss’,n,sigma)       高斯低通滤波器

H=fspecial(‘sobel’)              Sobel 水平边缘增强滤波器

H=fspecial(‘prewitt’)            Prewitt水平边缘增强滤波器

H=fspecial(‘laplacian’,alpha) 近似二维拉普拉斯滤波器

H=fspecial(‘log’,n,sigma)      高斯拉普拉斯(LoG)运算滤波器

H=fspecial(‘average’,n)           均值滤波器

H=fspecial(‘unsharp’,alpha)         模糊对比增强滤波器

filter2 函数

功能:计算二维线性数字滤波,它与函数fspecial连用

格式1:Y=filter2(B,X)

说明:filter2使用矩阵B中的二维 滤波器对数据X进行滤波,结果Y是通过二维互相关计算出来的,其大小与 X一样。

格式2:Y=filter2(B,X,’shape’)

说明:filter2返回的Y是通过二维互相关计算出来的,其大小由参数 shape确定,其取值如下:

full 返回二维互相关的全部结果,size(Y)>size(X);

same 返回二维互相关结果的中间部分,Y与X大小相同;

valid 返回在二维互相关过程中,未使用边缘补0部分进行计算的结果部分,有 size(Y)<size(X) 。

filter2函数用于图像滤波

i=imread(‘e:w11.tif’);

h=[1,2,1;0,0,0;-1,-2,-1]; %Sobel算子

j=filter2(h,i);

conv2函数 (conv函数(多维卷积))

功能:计算二维卷积。

格式1:C=conv2(A, B)conv2计算矩阵A和B的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1];

格式2:C=conv2(Hcol, Hrow, A) 

说明:矩阵 A分别与Hcol向量在列方向和Hrow向量在行方向上进行卷积;

格式3:C=conv2(…, ′shape′)

说明:用来指定conv2返回二维卷积结果部分,参数shape可取值如下:

full 为缺省值,返回二维卷积的全部结果;

same 返回二维卷积结果中与 A 大小相同的中间部分;

valid 返回在卷积过程中,未使用边缘补0部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。

利用二维卷积conv2进行线性滤波

i=imread(‘e:w11.tif’);

h=[1,1,1;1,1,1;1,1,1];

h=h/9;

j=conv2(i,h);

medfilt2函数

功能:图像中值滤波

格式:C=medfilt2(A,n)

示例:

A0=imread(‘abao.bmp’);

A=rgb2gray(A0);

I=imnoise(A,’salt & pepper’,0.02); %叠加密度为0.02的椒盐噪声

C=medfilt2(I, [3 3]); %窗口大小为3×3的中值滤波

edge函数

功能:图像边缘检测,提供了许多微分算子模板,对某些模板可以指定水平边缘还是垂直边缘(或者两者都有)敏感(即主要检测是水平边缘还是垂直边缘)。

格式:C=edge(A,type)

说明:type指明了边缘检测所用的算子

示例:

J1=edge(I,’sobel’);

J2=edge(I,‘prewitt’);

J3=edge(I,’log’);

J4= edge(I,’roberts’)

三、 实验内容及步骤

1. 完成对图像加噪声,使用均值滤波器、中值滤波器对不同噪声类型、不同强度的噪声图像进行滤波处理,并评价处理的结果,进行理论上的解释。

(a) 读入图像electric.tif;

(b) 利用imnoise函数在图像上加入高斯噪声;

(c) 利用预定义函数fspecial 产生平均(average)滤波器 ;

(d) 分别采用3×3和5×5的模板,用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

(e) 选择不同大小的模板,对加入某一固定噪声的图像进行处理,观察上述滤波器处理的结果;

(f) 利用imnoise函数在图像上加入椒盐噪声;

(g) 重复(c)~(e)的步骤;

(h) 输出全部结果并进行讨论;

高斯噪声0.02,分别用3×3和5×5的模板,进行平均滤波和中值滤波

A=imread(‘cameraman.tif’);

B=im2double(A);

CX=imnoise(B,’gaussian’,0.02);

A3=fspecial(‘average’,3);

A5=fspecial(‘average’,5);

DX=filter2(A3,CX);

EX=filter2(A5,CX);

FX=medfilt2(CX,[3 3]);

GX=medfilt2(CX,[5 5]);

subplot(2,3,1),imshow(A),title(‘原图’);

subplot(2,3,2),imshow(CX),title(‘高斯噪声 0.02′);

subplot(2,3,3),imshow(DX),title(‘平滤波均3×3′);

subplot(2,3,4),imshow(EX),title(‘平滤波均5×5′);

subplot(2,3,5),imshow(FX),title(‘中值滤波3×3′);

subplot(2,3,6),imshow(GX),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

高斯噪声0.05,分别用3×3和5×5的模板,进行平均滤波和中值滤波

A=imread(‘cameraman.tif ‘);

B=im2double(A);

CY=imnoise(B,’gaussian’,0.05);

A3=fspecial(‘average’,3);

A5=fspecial(‘average’,5);

DY=filter2(A3,CY);

EY=filter2(A5,CY);

FY=medfilt2(CY,[3 3]);

GY=medfilt2(CY,[5 5]);

subplot(2,3,1),imshow(A),title(‘原图’);

subplot(2,3,2),imshow(CY),title(‘高斯噪声 0.05′);

subplot(2,3,3),imshow(DY),title(‘平滤波均3×3′);

subplot(2,3,4),imshow(EY),title(‘平滤波均5×5′);

subplot(2,3,5),imshow(FY),title(‘中值滤波3×3′);

subplot(2,3,6),imshow(GY),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

椒盐噪声0.02,分别用3×3和5×5的模板,进行平均滤波和中值滤波

A=imread(‘cameraman.tif ‘);

B=im2double(A);

CZ= imnoise(B,’salt & pepper’,0.02);

A3=fspecial(‘average’,3);

A5=fspecial(‘average’,5);

DZ=filter2(A3,CZ);

EZ=filter2(A5,CZ);

FZ=medfilt2(CZ,[3 3]);

GZ=medfilt2(CZ,[5 5]);

subplot(2,3,1),imshow(A),title(‘原图’);

subplot(2,3,2),imshow(CZ),title(‘椒盐噪声 0.02′);

subplot(2,3,3),imshow(DZ),title(‘平滤波均3×3′);

subplot(2,3,4),imshow(EZ),title(‘平滤波均5×5′);

subplot(2,3,5),imshow(FZ),title(‘中值滤波3×3′);

subplot(2,3,6),imshow(GZ),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

不同噪声类型和强度,滤波后进行比较:

subplot(3,5,1),imshow(CX),title(‘高斯噪声 0.02′);

subplot(3,5,2),imshow(DX),title(‘平滤波均3×3′);

subplot(3,5,3),imshow(EX),title(‘平滤波均5×5′);

subplot(3,5,4),imshow(FX),title(‘中值滤波3×3′);

subplot(3,5,5),imshow(GX),title(‘中值滤波5×5′)

subplot(3,5,6),imshow(CY),title(‘高斯噪声 0.05′);

subplot(3,5,7),imshow(DY),title(‘平滤波均3×3′);

subplot(3,5,8),imshow(EY),title(‘平滤波均5×5′);

subplot(3,5,9),imshow(FY),title(‘中值滤波3×3′);

subplot(3,5,10),imshow(GY),title(‘中值滤波5×5′)

subplot(3,5,11),imshow(CZ),title(‘椒盐噪声 0.02′);

subplot(3,5,12),imshow(DZ),title(‘平滤波均3×3′);

subplot(3,5,13),imshow(EZ),title(‘平滤波均5×5′);

subplot(3,5,14),imshow(FZ),title(‘中值滤波3×3′);

subplot(3,5,15),imshow(GZ),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

2. 完成对图像的加噪、降噪、边缘增强

A) 在MATLAB中读入名为eight.tif的图像给矩阵X,将X强制类型转换为double,最大值归一化并显示X。

B) 使用imnoise函数对图像矩阵X加噪(均值为零,方差为0.005的高斯噪声),加噪后图像矩阵名为J。

C) 使用平滑滤波模板和conv2函数对加噪图像进行平滑滤波即降噪,输出图像Y1并显示。

D) 使用锐化滤波模板和conv2函数对图像X进行锐化滤波即边缘增强,输出图像Y2并显示。

E) 在一个图形窗口中建立2×2子窗口,分别显示原始图像X, 加噪图像J, 降噪后图像Y1和边缘增强图像Y2。

X=imread(‘eight.tif’);

Y=double(X);

X=(255-Y)./255;

J=imnoise(X,’gaussian’,0,0.005);

d1=0.04.*[1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1; 1,1,1,1,1];

Y1=conv2(J,d1);

d2=[0,-1,0;-1,4,-1;0,-1,0];

Y2=conv2(X,d2);

subplot(2,2,1),imshow(X),title(‘原图’);

subplot(2,2,2),imshow(J),title(‘高斯噪声’);

subplot(2,2,3),imshow(Y1),title(‘降噪 Y1′);

subplot(2,2,4),imshow(Y2),title(‘边缘增强 Y2′)

Matlab数字图像处理之四:图像增强和空域滤波

3. 完成图像的边缘检测

a) 使用edge函数和同样的锐化滤波器对图像X进行锐化滤波即边缘增强,输出图像Y3并显示。

b) 将上述得到的结果图像与第二步的边缘增强结果进行比较,给出合理的解释。

X=imread(‘eight.tif’);

Y=double(X);

X=(255-Y)./255;

J=imnoise(X,’gaussian’,0,0.005);

d2=[0,-1,0;-1,4,-1;0,-1,0];

Y2=conv2(X,d2);

Y3=edge(X,’sobel’);

subplot(1,3,1),imshow(X),title(‘原图’);

subplot(1,3,2),imshow(Y2),title(‘锐化滤波’);

subplot(1,3,3),imshow(Y3),title(‘edge函数’);

Matlab数字图像处理之四:图像增强和空域滤波

四、 思考与回答:

1. 结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?

subplot(1,2,1),imshow(DX),title(‘高斯噪声 0.02 平滤波均3×3′);

subplot(1,2,2),imshow(DZ),title(‘椒盐噪声 0.02 平滤波均3×3′);

Matlab数字图像处理之四:图像增强和空域滤波

平均滤波对两种噪声去噪效果差不多。

subplot(1,2,1),imshow(FX),title(‘高斯噪声 0.02 中值滤波3×3′);

subplot(1,2,2),imshow(FZ),title(‘椒盐噪声 0.02 中值滤波3×3′);

Matlab数字图像处理之四:图像增强和空域滤波

中值滤波明显对椒盐噪声去噪效果好。

2. 结合实验内容,定性评价滤波窗口对去噪效果的影响?

subplot(1,2,1),imshow(FZ),title(‘中值滤波3×3′);

subplot(1,2,2),imshow(GZ),title(‘中值滤波5×5′)

Matlab数字图像处理之四:图像增强和空域滤波

subplot(1,2,1),imshow(DZ),title(‘平滤波均3×3′);

subplot(1,2,2),imshow(EZ),title(‘平滤波均5×5′);

Matlab数字图像处理之四:图像增强和空域滤波

比较可知,滤波窗口越大,去噪效果越好。

© 著作权归作者所有

共有 人打赏支持
天蚕宝衣
粉丝 18
博文 236
码字总数 178069
作品 0
天津
【工具使用系列】关于 MATLAB 图像增强,你需要知道的事

如何进行图像增强 点处理增强 空域变换增强 直接灰度调整 全域线性变换 非线性灰度变换 直方图处理 直方图均衡化 图像间的代数运算 空域滤波增强 平滑滤波器 锐化滤波器 图像平滑 图像锐化 ...

AllenMoore ⋅ 01/27 ⋅ 0

【图像处理】空间滤波、中值滤波(Spatial Filtering and Median Filtering)

实验要求   编写一个能够完成两幅图像之间加、减、乘、除四种算术运算的函数。另外,对于两幅图像的乘法,所编写的乘法程序还要能够完成一幅图像乘以一个常数的功能。使用图Fig1.10(4)和F...

u013165921 ⋅ 01/15 ⋅ 0

图像的空域增强处理—空域滤波(matlab实现)

在这里我描述的是我一个初学者所收集到的一些较实用化的信息,具体原理不做描述; 空域滤波分为:平滑滤波(低通滤波)、锐化滤波(高通滤波); 平滑滤波(低通滤波):过滤掉图像中的高频部...

qwe331822775 ⋅ 03/27 ⋅ 0

OpenCV学习之旅-简介

1、什么是图像,对图像进行处理是神马操作 一副图像可以定义为二维的函数z = f(x,y),其中x、y是其空间坐标,而其值z的大小就是函数在该点的灰度值。 例图.png 比如我用Matlab打开了一张256...

C6C ⋅ 2017/08/28 ⋅ 0

PIL (Python图像处理库) 1.1.7 发布

PIL 1.1.7 发布了,该版本改进了对 PNG 压缩的处理,支持隔行扫描的PNG文件,改进了对各种 TGA 的支持,修复了一些错误等等。 图像处理工具包PIL(Python Image Library),该软件包提供了基本的...

红薯 ⋅ 2011/10/08 ⋅ 1

使用Matlab对二值图像进行轮廓提取

转自:http://blog.csdn.net/q1302182594/article/details/50394576 本文主要总结一下在matlab中可用于进行轮廓提取的函数。 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮...

u013066730 ⋅ 2017/02/22 ⋅ 0

【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程《数字图像处理》及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑、高斯平滑、...

Eastmount ⋅ 2015/06/08 ⋅ 0

Python图像处理库--PIL

PythonWare公司提供了免费的图像处理工具包PIL(Python Image Library),该软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,...

匿名 ⋅ 2011/08/16 ⋅ 0

【图像处理】二维付立叶变换和滤波 (Two-Dimensional Fourier Transform and Filtering)

实验要求   该实验的目的是开发一个2-D FFT 程序包。要求程序能完成下面的功能:   (1.a) 用因子 (-1)x+y 乘以输入图像,以实现滤波的中心化变换;   (1.b) 计算付立叶变换;   (1.c)...

u013165921 ⋅ 01/15 ⋅ 0

python 处理图片2

摘要:本文简单介绍了用Python来完成简单图像处理任务的方法。虽然图像处理的最佳工具是MATLAB的图像处理工具箱,但是在进行一些“简单的”图像处理任务或者大批量的简单图像处理任务的时候,...

Neo_ ⋅ 2012/11/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部