实验四 常用图像增强方法
一、实验目的
- 熟悉并掌握 MATLAB 图像处理工具箱的使用;
- 理解并掌握常用的图像的增强技术。
二、实验环境
MATLAB 6.5以上版本、WIN XP 或 WIN2000 计算机。
三、相关知识
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的椒盐噪声
fspecial
fspecial
函数用于产生预定义滤波器,如:
h=fspecial('sobel');%sobel水平边缘增强滤波器
h=fspecial('gaussian');%高斯低通滤波器
h=fspecial('laplacian');%拉普拉斯滤波器
h=fspecial('log');%高斯拉普拉斯(LoG)滤波器
h=fspecial('average');%均值滤波器
基于卷积的图像滤波函数
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);
其他常用滤波举例
中值滤波
medfilt2
函数用于图像的中值滤波,如:
i=imread('e:\w01.tif');
j=medfilt2(i,[M N]);对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*3
拉氏算子锐化图像
i=imread('e:\w01.tif');
j=double(i);
h=[0,1,0;1,-4,0;0,1,0];%拉氏算子
k=conv2(j,h,'same');
四、编码与运行
-
采用二维中值滤波函数
medfilt2
对受椒盐噪声干扰的图像滤波,窗口分别采用 3 × 3 3 \times 3 3×3, 5 × 5 5\times 5 5×5, 7 × 7 7 \times 7 7×7.I = imread('lena.bmp'); J = imnoise(I,'salt & pepper',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二维中值滤波')
-
采用 MATLAB 中的函数
filter2
对受噪声干扰的图像进行均值滤波.I = imread('lena.bmp'); j=imnoise(I,'gaussian',0,0.02);%模拟均值为0方差为0.02的高斯噪声, M= filter2(fspecial('average',9),j)/255; %模板尺寸为9 subplot(2,1,1);imshow(j);title('噪声干扰图像') subplot(2,1,2);imshow(M);title('改进后的图像')