图像增强实验
- 格式:pdf
- 大小:616.48 KB
- 文档页数:6
一、实验目的
1掌握灰度直方图的概念及其计算方法;
2熟练掌握直方图均衡化原理;
3熟练掌握空域常用的平滑和锐化方法;
4熟练掌握频域低通滤波、高通滤波原理;
5利用MATLAB程序进行图像增强。
二、实验内容
1、图像空域增强:
1)采用直方图均衡化方法增强图像。
2)采用平滑算法去噪增强图像。
3)采用锐化算法增强图像。
2、图像频域增强
1)频域低通滤波
2)频域高通滤波
三、实验步骤及结果
1、图像空域增强:
1)采用直方图均衡化方法增强图像。
选择2017.png为原始图像,使用直方图均衡化函数histeq处理图像,使其直方图分布更均匀。
代码清单:
function junheng(im1)
A=imread(im1);
B=histeq(A);
subplot(2,2,1);imshow(A);title('原始图像');%输出原始图像
subplot(2,2,2);imhist(A);title('原始直方图');%输出原始直方图
subplot(2,2,3);imshow(B);title('均衡化图像');%输出均衡化图像
subplot(2,2,4);imhist(B);title('均衡化直方图');%输出均衡化直方图
结果:
图1 直方图均衡化
2)采用平滑算法去噪增强图像。
选择lena.png为原始图像,使用imnoise函数模拟噪声的产生对原始图像叠加椒盐噪声,然后使用模板大小为3*3和7*7的中值滤波器medfilt2分别平滑加噪图像;再使用百分比滤波器ordfilt2,设计5*5大小的最大值、最小值滤波器分别平滑加噪图像。
代码清单:
function pinghua(im2)
A=imread(im2);
B=imnoise(A);
C=medfilt2(A);
D=medfilt2(A,[7,7]);
E=ordfilt2(A,1,ones(5,5));
F=ordfilt2(A,9,ones(5,5));
subplot(2,3,1);imshow(A);title('原始图像');%输出原始图像
subplot(2,3,2);imshow(B);title('椒盐噪声图像');%输出加椒盐噪声图像
subplot(2,3,3);imshow(C);title('3*3平滑加噪图像');%输出模板大小为3*3的中值滤波器加噪图像subplot(2,3,4);imshow(D);title('7*7平滑加噪图像');%输出模板大小为7*7的中值滤波器加噪图像subplot(2,3,5);imshow(E);title('最小值平滑加噪图像');%输出最小值滤波器平滑加噪图像subplot(2,3,6);imshow(E);title('最大值平滑加噪图像');%输出最大值滤波器平滑加噪图像
结果:
图2 平滑算法去噪
3)采用锐化算法增强图像。
选择lena.png为原始图像,使用高斯函数模糊方法对原始图像进行高斯模糊,使用filter2滤波函数对图像锐化滤波,分别使用sobel、prewitt方法锐化图像。
代码清单:
function ruihua(im)
A=imread(im);
guass=fspecial('gaussian',[179 179],10);%gauss函数
B=imfilter(A,guass);
C=edge(A,'sobel');
D=edge(A,'prewitt');
subplot(2,2,1);imshow(A);title('原始图像');%输出原始图像
subplot(2,2,2);imshow(B);title('高斯模糊图像');%输出高斯模糊处理的图像
subplot(2,2,3);imshow(C);title('sobel锐化图像');%输出sobel锐化图像
subplot(2,2,4);imshow(D);title('prewitt锐化图像');%输出prewitt锐化图像
结果:
图3 锐化算法增强图像
2、图像频域增强
1)频域低通滤波
选择barb.png为原始图像,读入图像数据,给出其频域变换结果图像,编写程序实现巴特沃斯低通滤波器H1,并用该滤波器实现对频域图像的滤波,再使用傅里叶逆变换函数(ifft2)给出滤波后图像。
代码清单:
function dtlb(I)
f=imread(I);
subplot(2,2,1);imshow(f);title('原始图');%输出原始图像
g=fft2(f); % 傅立叶变换
g=fftshift(g); % 转换数据矩阵
subplot(2,2,2);imshow(log(1+abs(g)),[]);
title('傅里叶频谱'); %输出傅里叶频域图
%**************************butterworth低通滤波***************************
[M,N]=size(g);
nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器
d0=10;
m=floor(M/2); n=floor(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数
result(i,j)=h*g(i,j);
end
end
subplot(2,2,3);imshow(log(1+abs(result)),[]);
title('butterworth低通滤波'); %显示butter worth低通滤波处理后的频域图
result=ifftshift(result);