数字图像处理实验报告(matlab)
学院:自动化学院 班级:电081班 姓名:李林树 学号:40850099 2011年10月 实验一 直方图均衡化 一、 实验目的: 1. 熟悉图像数据在计算机中的存储方式; 2. 掌握图像直方图均衡化这一基本处理过程。 二、 实验条件: PC微机一台和MATLAB软件。 三、 实验内容: 1. 读入图像数据到内存中,并显示读入的图像; 2. 实现直方图均衡化处理,显示处理前后图像的直方图。 3. 显示并保存处理结果。 四、 实验步骤: 1.打开Matlab编程环境; 2.获取实验用图像。用’imread’函数将图像读入Matlab;用’imshow’函数显示读入的图像。 3.获取输入图像的直方图:用’imhist’函数处理图像。 4.均衡化处理:用’histeq’函数处理图像即可。 5.获取均衡化后的直方图并显示图像:用’imhist’和’imshow’函数。 6.保存实验结果:用’imwrite’函数处理。 五、 实验程序及结果: 1、实验程序 subplot(6,2,1); i=imread( test1-1.jpg ); imhist(i);title( test1-1 hist ); subplot(6,2,2); i=im2double(i); imshow(i);title( test1-1 ÔͼÏñ ); subplot(6,2,3); s=histeq(i); imhist(s);title( test1-1 balancedhist ); subplot(6,2,4); imshow(s);title( test1-1 ¾ùºâ»¯ºóµÄͼÏñ ); subplot(6,2,5); i=imread( test1-2.jpg ); imhist(i);title( test1-2 hist ); subplot(6,2,6); i=im2double(i); imshow(i);title( test1-2 ÔͼÏñ ); subplot(6,2,7); s=histeq(i); imhist(s);title( test1-2 balancedhist ); subplot(6,2,8); imshow(s);title( test1-2 ¾ùºâ»¯ºóµÄͼÏñ ); subplot(6,2,9); i=imread( test1-3.jpg ); imhist(i);title( test1-3 hist ); subplot(6,2,10); i=im2double(i); imshow(i);title( test1-3 ÔͼÏñ ); subplot(6,2,11); s=histeq(i); imhist(s);title( test1-3 balancedhist ); subplot(6,2,12); imshow(s);title( test1-3 ¾ùºâ»¯ºóµÄͼÏñ ); 2、实验结果 六、 实验思考 1. 数字图像直方图均衡化之后直方图为什么不是绝对平坦的? 答:直方图均衡化是将一已知灰度概率密度分布的图像,经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像。因此在对图像进行均衡化处理时,只将直方图上灰度分布较密的部分拉伸,较稀疏的部分压缩,使图像的对比度在总体上得到增强,因此数字图像直方图均衡化之后直方图为什么不是绝对平坦的。 2. 如何实现图像局部直方图均衡化? 答:对图像中每个像素点所在的淋浴范围求出弧度转换函数,然后仅应用于该中心点处。先在定义的邻域内计算灰度直方图,然后利用这一直方图来获得关于直方图均衡化的灰度变换函数,实现该邻域内中心像素点的增强,然后将邻域的中心移到相邻的像素并重复以上过程。 实验二 频域平滑滤波 一、 实验目的: 1. 熟悉图像数据在频率域的表示; 2. 掌握频域图像增强的基本步骤。 二、 实验条件: PC微机一台和MATLAB软件。 三、 实验内容: 1. 综合利用所学的数字图像基本存储结构、图像变换、图像增强等知识实现频率域图像增强; 2. 在频率域进行用半径值分别为5,15,30,80和230的理想低通滤波器对图像进行平滑,并观察滤波效果。 四、 实验步骤: 1.打开Matlab编程环境; 2.获取实验用图像。用’imread’函数将图像读入Matlab;用’imshow’函数显示读入的图像。 3.将图像’uint8’格式转换为’double’格式,并将各点数据乘以-1的(x+y)次方以便FFT变换后的结果中低频数据处于图像中央。 4.用’fft2’函数对图像数据进行二维FFT变换,得到频率域图像数据。 5.计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图像。 6.在频率图像上去除滤波半径意外的数据(置0)。 7.计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图像。 8.用’fft2’函数对图像数据进行二维FFT逆变换,并用’real’函数取其实部,得到处理过的空间域图像数据。 9.将图像数据各点数据乘以-1的(x+y)次方。 10.用’imshow’函数显示处理结果图像数据,并用’imwrite’函数保存图像处理结果数据。 五、 实验程序及结果: 1、实验程序 I=imread( test2.jpg ); subplot(1,2,1),imshow(I);title( test2 ÔͼÏñ ); f=double(I); g=fft2(f); g=fftshift(g); [M,N]=size(g); m=fix(M/2);n=fix(N/2);clc for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2); if d>r h=0; else h=1; end result(i,j)=h*g(i,j); end end result=ifftshift(result); J1=ifft2(result); J2=unit8(real(J1)); subplot(1,2,2),imshow(J2);title( ÀíÏëµÍͨÂ˲¨´¦ÀíºóµÄͼÏñ ); imwrite(J2, J2.jpg ) 2、实验结果 r=5 r=15 r=30 r=80 r=230 六、 实验思考 1. 在FFT变换前后,为什么要将各点数乘以-1的(x+y)次方?不乘能否实现低滤波? 答:在FFT变换前后,将各点数乘以-1的(x+y)次方,是为了将图像处理后它的中低频数据处于图像中央位置。 2. 与空间域图像增强相比,频率域图像处理有什么优点? 答:频率域图像处理是