数字图像处理报告.doc
图像输入与输出基本操作一、实验题目: 图像输入与输出操作二、实验目的学习在MATLAB环境下对图像文件的I/O操作,为读取各种格式的图像文件和后续进行图像处理打下基础。三、实验内容利用MATLAB为用户提供的专门函数从图像格式的文件中读/写图像数据、显示图像,以及查询图像文件的信息。四、预备知识熟悉MATLAB开发环境。五、实验步骤:(1)利用imread函数完成对图像文件的读取操作。源代码:I=imread('Couple.bmp');imshow Couple.bmp图像显示:(2)利用imwrite函数完成图像的写入(保存)操作。源代码:I=imread('Couple.bmp'); imwrite(I,'111.bmp')图像显示:(3)利用imshow函数显示图像。源代码:I1=imread('lena.bmp'); I2=imread('image1.jpg'); I3=imread('Couple.bmp'); I4=imread('image2.jpg'); subplot(2,2,1), imshow(I1); subplot(2,2,2), imshow(I2);subplot(2,2,3), imshow(I3); subplot(2,2,4), imshow(I4);图像显示:在一个图形窗口中显示多幅图像源代码:I=imread('Couple.bmp'); imshow(I); colorbar;图像显示:显示图像并加入颜色条从上图可知,该图像是数据类型为uint8的灰度图像,其灰度级范围从0255。(4)利用imfinfo函数查询图像文件的有关信息。源代码:info=imfinfo('Couple.bmp')显示结果: info = Filename: 'Couple.bmp' FileModDate: '29-Apr-2009 10:11:48' FileSize: 66616 Format: 'bmp' FormatVersion: 'Version 3 (Microsoft Windows 3.x)' Width: 256 Height: 256 BitDepth: 8 ColorType: 'indexed' FormatSignature: 'BM' NumColormapEntries: 256 Colormap: 256x3 double RedMask: GreenMask: BlueMask: ImageDataOffset: 1078 BitmapHeaderSize: 40 NumPlanes: 1 CompressionType: 'none' BitmapSize: 0 HorzResolution: 2834 VertResolution: 2834 NumColorsUsed: 0NumImportantColors: 0图像平滑与滤波一、实验题目: 图像平滑与滤波二、实验目的: 在熟悉图像平滑的基本原理和方法的基础上,在理论指导下,能在MATLAB环境下对图像进行平滑处理。本实验要求用线性平滑滤波、中值平滑滤波、频域低通滤波的方法进行程序设计。经过平滑处理,对结果图像加以比较,得出自己的实验结论。三、实验内容:(1)利用MATLAB为用户提供的专门函数实现均值滤波。(2)利用MATLAB为用户提供的专门函数实现中值滤波。(3)编写频域理想低通、巴特沃斯低通及高斯低通滤波函数。四、预备知识:(1)熟悉平滑滤波原理。(2)熟悉频域滤波原理。(3)熟悉在MATLAB环境下对图像文件的I/O操作。五、实验步骤:(1)对给定的图像添加均值为0,方差分别为200、400的高斯噪声,以及概率分别为0.1、0.2的椒盐噪声,显示添加噪声后的图像。源代码:a)加入噪声强度为d=0.2的椒盐噪声:I=imread('Couple.bmp'); J=imnoise(I,'salt & pepper',0.2);%给图像加入椒盐噪声 subplot(1,2,1);imshow(I);title('原始图像'); subplot(1,2,2);imshow(J);title('加入椒盐噪声的图像')图像显示:b)加入噪声强度为d=0.1的椒盐噪声:I=imread('Couple.bmp'); J=imnoise(I,'salt & pepper',0.1);%给图像加入椒盐噪声 subplot(1,2,1);imshow(I);title('原始图像'); subplot(1,2,2);imshow(J);title('加入椒盐噪声的图像')图像显示: 原始图像和加入椒盐噪声后的图像c)加入均值m=0,方差v=200的高斯噪声:I=imread('Couple.bmp');J=imnoise(I,'gaussian',0 ,200);%给图像加入高斯噪声subplot(1,2,1);imshow(I);title('原始图像');subplot(1,2,2);imshow(J);title('加入高斯噪声图像')图像显示:d)加入均值m=0,方差v=400的高斯噪声:I=imread('Couple.bmp');J=imnoise(I,'gaussian',0 ,400);% 给图像加入高斯噪声subplot(1,2,1);imshow(I);title('原始图像');subplot(1,2,2);imshow(J);title('加入高斯噪声图像')图像显示:(2)对加噪图像分别进行3×3、5×5、9×9的均值滤波,显示并比较滤波结果。源代码:I=imread('Couple.bmp'); J=imnoise(I,'salt & pepper',0.2);% 给图像加入椒盐噪声 h=fspecial('average',3); s=fspecial('average',5); p=fspecial('average',9); gd=imfilter(J,h); qw=imfilter(J,s); er=imfilter(J,p); subplot(2,2,1);imshow(J);title('加入椒盐噪声的图像');subplot(2,2,2);imshow(gd);title('3*3模板均值滤波');subplot(2,2,3);imshow(qw);title('5*5模板均值滤波');subplot(2,2,4);imshow(er);title('9*9模板均值滤波');图像显示:(3)对加噪图像分别进行3×3、5×5、9×9的中值滤波,显示并比较滤波结果。源代码:I=imread('Couple.bmp'); J=imnoise(I,'salt & pepper',0.2);% 给图像加入椒盐噪声% h=fspecial('average',3); %s=fspecial('average',5); %p=fspecial('average',9); gd=medfilt2(J,3 3); qw=medfilt2(J,5 5); er=medfilt2(J,9 9); subplot(2,2,1);imshow(J);title('加入椒盐噪声的图像');subplot(2,2,2);imshow(gd);title('3*3模板中值滤波');subplot(2,2,3);imshow(qw);title('5*5模板中值滤波');subplot(2,2,4);imshow(er);title('9*9模板中值滤波');图像显示:(4)对加噪图像进行截止频率D0分别为10、25的理想低通、巴特沃斯低通及高斯低通滤波,显示并比较滤波结果。理想低通源代码:I=imread('lena.bmp');I=imnoise(I,'gaussian');f1 f2=freqspace(size(I),'meshgrid'); %生成频率序列矩阵Hd=ones(size(I); %构造低通滤波器大小r=sqrt(f1.2+f2.2); %构造低通滤波器决策函数Hd(r>0.5)=0; %构造低通滤波器Y=fft2(double(I); %对图像I进行Fourier变换Y=fftshift(Y); %频谱平移Ya=Y.*Hd; %低通滤波 Ya=ifftshift(Ya); %反变换Ia=ifft2(Ya);imshow(I); %输出title('加噪图像');figure(2);imshow(uint8(Ia);title('理想低通滤波后图像');%保存结果imwrite(uint8(Ia),'after_lvbo','bmp');显示结果:巴特沃斯低通滤波:源代码:D0=10% Butterworth低通滤波器I=imread('Couple.bmp');I=imnoise(I,'salt & pepper',0.2);f1 f2=freqspace(size(I),'meshgrid');D=10; %截止频率n=4;Hd=ones(size(I);r=sqrt(f1.2+f2.2);for i=1:size(I,1); for j=1:size(I,2); t=r(i,j)/(D*D); Hd(i,j)=1/(tn+1); %构造滤波函数 endend Y=fft2(double(I);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=ifft2(Ya);figure(1);imshow(I);title('加噪后图像');figure(2);imshow(uint8(Ia);title('butterworth 滤波后图像');显示结果:源代码:D0=25% Butterworth低通滤波器I=imread('Couple.bmp');I=imnoise(I,'salt & pepper',0.2);f1 f2=freqspace(size(I),'meshgrid');D=25; %截止频率n=4;Hd=ones(size(I);r=sqrt(f1.2+f2.2);for i=1:size(I,1); for j=1:size(I,2); t=r(i,j)/(D*D); Hd(i,j)=1/(tn+1); %构造滤波函数 endend Y=fft2(double(I);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=ifft2(Ya);figure(1);imshow(I);title('加噪后图像');figure(2);imshow(uint8(Ia);title('butterworth 滤波后图像');图像显示:图像增强一、实验题目: 图像增强二、实验目的:(1)了解图像增强的内容和意义;(2)掌握基于空域的图像增强方法;(3)掌握基于频域的图像增强方法。三、实验内容:(1)综合运用直方图均衡、灰度变换、锐化空域滤波等方法编程实现对图像的空域增强处理;(2)编程实现图像的频域增强处理。四、预备知识:(1)熟悉MATLAB图像输入输出操作;(2)熟悉图像的模板操作;(3)熟悉图像的频域变换处理;(4)熟悉二维频谱的显示方法。五、实验步骤:(1) 读入图像;(2) 针对图像特点设计方案,综合运用直方图均衡、灰度变换、锐化滤波等空域增强方法编程实现对图像的增强处理;(3) 编程实现频域增强处理。 源代码:clcclear allimage=imread('Couple.bmp');figure(1);subplot(221);imhist(image);title('原始图像直方图');subplot(222);imshow(image);title('原始图像');b=histeq(image,256); %将直方图均衡化为256级subplot(223);imhist(b);title('均衡化后的直方图');subplot(224);imshow(b);title('直方图均衡图像增强后效果');图像显示: 图像灰度调整:源代码:Im=imread('Couple.bmp');J=imadjust(Im,0.3 0.7,0 1);subplot(2,2,1);imshow(Im);title('原图');subplot(2,2,2);imhist(Im);title('原图直方图');subplot(2,2,3);imshow(J);title('灰度调整结果');subplot(2,2,4);imhist(J);title('灰度调整后的直方图');图像显示:%利用灰度变化进行图像增强low_high_in=stretchlim(image); %得到图像的灰度变化范围low_in=low_high_in(1);high_in=low_high_in(2);low_out=0.2; %灰度变化后图像灰度最小值(归一化)high_out=0.8; %灰度变化后图像灰度最大值(归一化)gamma=0.55; %gamma大于1时图像变暗,小于1时图像变亮 J=imadjust(image,low_in high_in,low_out high_out,gamma); figure(2); subplot(221); imshow(J); title('灰度变化图像增强效果'); %锐化空域滤波增强图像h=-1 -1 -1;-1 8 -1 ;-1 -1 -1; %锐化滤波器模板y=imfilter(image,h);subplot(222);imshow(uint8(y);title('锐化空域滤波增强效果');%频率滤波处理f1 f2=freqspace(size(image),'meshgrid'); %生成频率序列矩阵D=0.5; %截止频率n=4;Hd=ones(size(image);r=sqrt(f1.2+f2.2);for i=1:size(image,1); for j=1:size(image,2); t=(D*D)/r(i,j); Hd(i,j)=1/(tn+1); %构造butterworth高通滤波函数 endendY=fft2(double(image);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=ifft2(Ya);subplot(223);imshow(Ia);title('butterworth高通滤波效果'); %带通滤波f1 f2=freqspace(size(image),'meshgrid'); %生成频率序列矩阵r=sqrt(f1.2+f2.2);gd=ones(size(image);gd(r>=0.6)=0;gd(r<=0.2)=0;image_fft=fft2(image);image_fft=fftshift(image_fft);Y=image_fft.*gd;Ya=ifftshift(Y);Ya=ifft2(Ya);subplot(224);imshow(Ya);title('带通滤波进行图像增强后效果'); %同态滤波(滤波系统采用低通滤波)image=imread('Couple.bmp');m n=size(image);image_ln=zeros(m,n);for i=1:m for j=1:n image_ln(i,j)=log(double(image(i,j); endendimage_ln_fft=fft2(image_ln);image_ln_fft=fftshift(image_ln_fft);f1 f2=freqspace(size(image),'meshgrid'); %生成频率序列矩阵r=sqrt(f1.2+f2.2);gd=ones(size(image);gd(r>0.3)=0;Y=image_ln_fft.*gd;Ya=ifftshift(Y);Ya=ifft2(Ya);for i=1:m for j=1:n Ya(i,j)=exp(double(Ya(i,j); endendfigure(3);imshow(uint8(Ya);title('同态滤波输出效果');图像显示: