实验三 图像的平滑与锐化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三图像的平滑与锐化
(实验类型:综合性;学时:4)
一、实验目的
1. 理解图像空域滤波的基本原理及方法,学会采用邻域平均滤波、中值滤波等方法对图像进行平滑增强,以消除或尽量减少噪声的影响,改善图像质量;
2. 理解图象锐化的概念,掌握常用空域锐化增强技术,学会编写程序对图像进行锐化增强,感受不同的模板对图像锐化效果的影响。

二、实验环境
Matlab 7.0
三、实验原理
1. 图像平滑
MATLAB图像处理工具箱提供了基于卷积的图像滤波函数filter2。

filter2的语法格式为:Y = filter2(h, X)
其中Y =filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。

fspecial函数用于创建预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type, parameters)
参数type指定算子类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数parameters为n,代表模版尺寸,用向量表示,默认值为[3,3]。

type= 'gaussian',为高斯低通滤波器,参数parameters有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。

type= 'laplacian',为拉普拉斯算子,参数parameters为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。

type= 'log',为拉普拉斯高斯算子,参数parameters有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5
type= 'prewitt',为prewitt算子,用于边缘增强,无参数。

type= 'sobel',为的sobel算子,用于边缘提取,无参数。

MATLAB图像处理工具箱中,也提供了medfilt2函数用于实现中值滤波。

Medfilt2函数的语法格式为:
B = medfilt2(A) %用3×3的滤波窗口对图像A进行中值滤波。

B = medfilt2(A,[m n]) %用指定大小为m×n的窗口对图像A进行中值滤波。

.1 噪声模拟
例1.利用函数imnoise为指定图像分别添加高斯(gaussian)噪声和椒盐噪声。

I=imread('cameraman.tif');
subplot(1,3,1),imshow(I);
title('(a)原始图像');
I1=imnoise(I,'gaussian',0,0.01);
subplot(1,3,2),imshow(I1);
title('(b)加高斯噪声图像');
I2=imnoise(I,'salt & pepper');
subplot(1,3,3),imshow(I2);
title('(c)加椒盐噪声图像');
运行程序,效果如图1.1。

图1.1 图像的噪声模拟
.2 图像的均值滤波
例2.对指定图像进行均值滤波。

I=imread('cameraman.tif');
I2=imnoise(I,'salt & pepper',0.02);
J=filter2(fspecial('average',3),I2)/255;
subplot(1,3,1),imshow(I);
title('(a)原始图像');
subplot(1,3,2),imshow(I2);
title('(b)加噪声图像'); ;
subplot(1,3,3),imshow(J);
title('(c)均值滤波后图像');
运行程序,效果如图1.2。

图1.2 图像的均值滤波
例3.利用加权平均实现数字图像的平滑。

I=imread('cameraman.tif');
I2=imnoise(I,'salt & pepper',0.02);
%%I2=rgb2gray(I2);
a=double(I2);
[m,n]=size(a);
b=zeros(m,n);
c=[1 2 1;2 4 2;1 2 1];
c=c/16;
for i=2:m-1
for j=2:n-1
b(i,j)=a(i-1,j-1)*c(1,1)+a(i-1,j)*c(1,2)+a(i-1,j+1)*c(1,3)+... a(i,j-1)*c(2,1)+a(i,j)*c(2,2)+a(i,j+1)*c(2,3)+...
a(i+1,j-1)*c(3,1)+a(i+1,j)*c(3,2)+a(i+1,j+1)*c(3,3);
end
end
b=mat2gray(b);
subplot(1,3,1),imshow(I);
title('(a)原始图像');
subplot(1,3,2),imshow(I2);
title('(b)加噪声图像'); ;
subplot(1,3,3),imshow(b);
title('(c)加权平均滤波后图像');
运行程序,效果如图1.3。

图1.3 图像的加权平均滤波1.3 图像的中值滤波
例4.对指定图像进行均值滤波。

I=imread('cameraman.tif');
I2=imnoise(I,'salt & pepper',0.02);
J=medfilt2(I2,[5,5]);
subplot(1,3,1),imshow(I);
title('(a)原始图像');
subplot(1,3,2),imshow(I2);
title('(b)加噪声图像'); ;
subplot(1,3,3),imshow(J);
title('(c)中值滤波后图像');
运行程序,效果如图1.4。

图1.4 图像的中值滤波
2.图像锐化
图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。

直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。

直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。

.1 拉普拉斯锐化增强
拉普拉斯算子具有各向同性的特点,这种滤波器的响应与滤波器作用的图像的突变方向无关。

即各向同性滤波器旋转不变,原图像旋转后进行滤波后处理给出的结果与先对图像滤波然后再进行旋转地结果相同。

例5.对指定图像进行拉普拉斯锐化。

I=imread('cameraman.tif');
h=fspecial('laplacian');
h1=[0 -1 0;-1 5 -1;0 -1 0];h2=[0 -2 0;-2 9 -2;0 -2 0];
I1=imfilter(I,h,'replicate');
I2=imfilter(I,h1,'replicate');
I3=imfilter(I,h2,'replicate');
subplot(1,4,1),imshow(I);
title('(a)原始图像');
subplot(1,4,2),imshow(I1);
title('(b)锐化后的图像'); ;
subplot(1,4,3),imshow(I2);
title('(c)锐化后四邻域a=1的图像');
subplot(1,4,4),imshow(I3);
title('(c)锐化后四邻域a=2的图像');
运行程序,效果如图2.1。

图2.1 图像的拉普拉斯锐化
2.2 一阶微分锐化增强
Sobel、Priwitt算子等都是突出图像的细节或者是增强被模糊了的细节。

因此要对图像实现锐化处理,可以用空间微分来完成,但是,这样图像的微分增强了边缘和其他的突变(如噪声)并削弱了灰度变化缓慢区域。

设计程序,分别实现Sobel、Priwitt算子的锐化处理。

观察处理前后图像效果,分析实验结果和算法特点。

例6.对指定图像分别利用Sobel、Priwitt算子进行锐化。

I=imread('cameraman.tif');
h=fspecial('sobel');
h1=fspecial('prewitt');
I1=imfilter(I,h,'replicate');
I2=imfilter(I,h1,'replicate');
subplot(1,3,1),imshow(I);
title('(a)原始图像');
subplot(1,3,2),imshow(I1);
title('(b)sobel算子锐化后的图像'); ;
subplot(1,3,3),imshow(I2);
title('(c)prewitt算子锐化后的图像');
运行程序,效果如图2.2。

图2.2 图像的一阶微分锐化
四、实验内容及报告要求
1. 分别采用不同大小的模板对加有噪声的图像进行均值滤波和中值滤波,分析滤波前后图像的效果;采用大小相同的模板对采用大小相同的模板对加有噪声的图像分别进行均值滤波和中值滤波,比较不同滤波方法对图像的增强效果;
2. 对任一幅图像通过利用Laplacian算子,Prewitt和Sobel边缘检测算子等方法对其进行锐化处理,比较和分析锐化后图像的效果。

相关文档
最新文档