图像增强实验

  • 格式:pdf
  • 大小:616.48 KB
  • 文档页数:6

下载文档原格式

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

一、实验目的

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);