实验三 图像平滑与图像锐化

实验要求

1、熟悉并掌握MATLAB图像处理工具箱的使用

2、理解并掌握常用的图像的增强技术

知识点

1.imnoise

imnoise函数用于对图像生成模拟噪声,如:

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

j=imnoise(i,’gaussian’,0,0.02);模拟均值为0方差为0.02的高斯噪声,

j=imnoise(i,’salt&pepper’, 0.04) 模拟叠加密度为0.04的椒盐噪声

2.fspecial

fspecial函数用于产生预定义滤波器,如:

h=fspecial(‘sobel’);%sobel水平边缘增强滤波器

h=fspecial(‘gaussian’);%高斯低通滤波器

h=fspecial(‘laplacian’);%拉普拉斯滤波器

h=fspecial(‘log’);%高斯拉普拉斯(LoG)滤波器

h=fspecial(‘average’);%均值滤波器

3.基于卷积的图像滤波函数

imfilter函数, filter2函数,二维卷积conv2滤波,都可用于图像滤波,用法类似,如:

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

h=[1,2,1;0,0,0;-1,-2,-1];%产生Sobel算子的水平方向模板

j=filter2(h,i);

或者:

h = fspecial(‘prewitt’)

I = imread(‘cameraman.tif’);

imshow(I);

H = fspecial(‘prewitt‘); %预定义滤波器

M = imfilter(I,H);

imshow(M)

或者:

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

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

h=h/9;

j=conv2(i,h);

4.其他常用滤波举例

(1)中值滤波

medfilt2函数用于图像的中值滤波,如:

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

j=medfilt2(i,[M N]);对矩阵i进行二维中值滤波,领域为MN,缺省值为33

(2)利用拉氏算子锐化图像, 如:

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

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,’same’);

实验内容

1、采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波,窗口分别采用3 * 3,5 * 5,7 * 7

close all;
clear all;
clc;
i=imread('图像平滑.png');
i=rgb2gray(i);

j=imnoise(i,'salt & pepper',0.04); %模拟叠加密度为0.04的椒盐噪声
k1=medfilt2(j,[3 3]);%对矩阵i进行二维中值滤波,领域3*3
k2=medfilt2(j,[5 5]);
k3=medfilt2(j,[7 7]);

subplot(2,2,1);imshow(j);title('原图像');
subplot(2,2,2);imshow(k1);;title('3 3');
subplot(2,2,3);imshow(k2);title('5 5');
subplot(2,2,4);imshow(k3);title('7 7');

image-20211130170445360

2、采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波

close all;
clear all;
clc;
i=imread('图像平滑.png');
i=rgb2gray(i);

j=imnoise(i,'salt & pepper',0.04); %模拟叠加密度为0.04的椒盐噪声
k1=filter2(fspecial('average',9),j)/255;

subplot(2,2,1);imshow(j);title('噪声干扰图像');
subplot(2,2,2);imshow(k1);;title('改进后的图像');

image-20211130170505292

3、采用三种不同算子对图像进行锐化处理

close all;
clear all;
clc;
i=imread('图像平滑.png');
i=rgb2gray(i);
j=fspecial('sobel');%应用Sobel算子
k1=filter2(j,i);%Sobel算子滤波锐化

j=fspecial('prewitt');%应用prewitt算子
k2=filter2(j,i);%prewitt算子滤波锐化

j=fspecial('log');%应用log算子
k3=filter2(j,i);%log算子滤波锐化

subplot(2,2,1);imshow(i);title('原图像');
subplot(2,2,2);imshow(k1);;title('Sobel算子锐化图像');
subplot(2,2,3);imshow(k2);title('prewitt算子锐化图像');
subplot(2,2,4);imshow(k3);title('log算子锐化图像');

image-20211130170521584

总结

比较不同平滑滤波器的处理效果,分析其优缺点

中值滤波器对去除椒盐噪声可以起很好的效果,因为椒盐噪声在画面中的部分点上随机出现.所以根据中值滤波可知,通过数据排列的方法,将图像中未被噪声污染的点代替噪声点的值的概率比较大,因此噪声的抑制效果好.均值滤波器对图像处理能达到去噪的效果,并且滤波器的模板越大去噪效果越好,但模板选择过大时,处理的效果会下降.二者相比,中值滤波去图像椒盐噪声的同时,还能保持图像清晰的轮廓.

比较不同锐化滤波器的处理效果,分析其优缺

Sobel算子是滤波算子的形式来提取边缘,X,Y方向各用一个模板,两个模板组合起来构成一个梯度算子。X方向模板对垂直边缘影响最大,Y方向模板对水平边缘影响最大。prewitt算子是加权平均算子,对噪声有抑制作用,但是像素平均相当于对图像进行的同滤波.log算法的特点是由于先进行了高斯滤波,因而可以一定程度上克服噪声的影响。但可能产生假边缘,对一些曲线边缘(curved edges)的定位误差较大