一图像输入与输出基本操作.docx
《一图像输入与输出基本操作.docx》由会员分享,可在线阅读,更多相关《一图像输入与输出基本操作.docx(19页珍藏版)》请在冰豆网上搜索。
一图像输入与输出基本操作
图像输入与输出基本操作
一、实验题目:
图像输入与输出操作
二、实验目的
学习在MATLAB环境下对图像文件的I/O操作,为读取各种格式的图像文件和后续进行图像处理打下基础。
三、实验内容
利用MATLAB为用户提供的专门函数从图像格式的文件中读/写图像数据、显示图像,以及查询图像文件的信息。
四、预备知识
熟悉MATLAB开发环境。
五、实验步骤:
(1)利用imread函数完成对图像文件的读取操作。
源代码:
I=imread('Couple.bmp');
imshowCouple.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的灰度图像,其灰度级范围从0
-255。
(4)利用imfinfo函数查询图像文件的有关信息。
源代码:
info=imfinfo('Couple.bmp')
显示结果:
info=
Filename:
'Couple.bmp'
FileModDate:
'29-Apr-200910:
11:
48'
FileSize:
66616
Format:
'bmp'
FormatVersion:
'Version3(MicrosoftWindows3.x)'
Width:
256
Height:
256
BitDepth:
8
ColorType:
'indexed'
FormatSignature:
'BM'
NumColormapEntries:
256
Colormap:
[256x3double]
RedMask:
[]
GreenMask:
[]
BlueMask:
[]
ImageDataOffset:
1078
BitmapHeaderSize:
40
NumPlanes:
1
CompressionType:
'none'
BitmapSize:
0
HorzResolution:
2834
VertResolution:
2834
NumColorsUsed:
0
NumImportantColors:
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,[33]);
qw=medfilt2(J,[55]);
er=medfilt2(J,[99]);
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');
[f1f2]=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);
[f1f2]=freqspace(size(I),'meshgrid');
D=10;%截止频率
n=4;
Hd=ones(size(I));
r=sqrt(f1.^2+f2.^2);
fori=1:
size(I,1);
forj=1:
size(I,2);
t=r(i,j)/(D*D);
Hd(i,j)=1/(t^n+1);%构造滤波函数
end
end
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);
[f1f2]=freqspace(size(I),'meshgrid');
D=25;%截止频率
n=4;
Hd=ones(size(I));
r=sqrt(f1.^2+f2.^2);
fori=1:
size(I,1);
forj=1:
size(I,2);
t=r(i,j)/(D*D);
Hd(i,j)=1/(t^n+1);%构造滤波函数
end
end
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)编程实现频域增强处理。
源代码:
clc
clearall
image=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.30.7],[01]);
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_inhigh_in],[low_outhigh_out],gamma);
figure
(2);
subplot(221);
imshow(J);
title('灰度变化图像增强效果');
%锐化空域滤波增强图像
h=[-1-1-1;-18-1;-1-1-1];%锐化滤波器模板
y=imfilter(image,h);
subplot(222);
imshow(uint8(y));
title('锐化空域滤波增强效果');
%频率滤波处理
[f1f2]=freqspace(size(image),'meshgrid');%生成频率序列矩阵
D=0.5;%截止频率
n=4;
Hd=ones(size(image));
r=sqrt(f1.^2+f2.^2);
fori=1:
size(image,1);
forj=1:
size(image,2);
t=(D*D)/r(i,j);
Hd(i,j)=1/(t^n+1);%构造butterworth高通滤波函数
end
end
Y=fft2(double(image));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia=ifft2(Ya);
subplot(223);
imshow(Ia);
title('butterworth高通滤波效果');
%带通滤波
[f1f2]=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');
[mn]=size(image);
image_ln=zeros(m,n);
fori=1:
m
forj=1:
n
image_ln(i,j)=log(double(image(i,j)));
end
end
image_ln_fft=fft2(image_ln);
image_ln_fft=fftshift(image_ln_fft);
[f1f2]=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);
fori=1:
m
forj=1:
n
Ya(i,j)=exp(double(Ya(i,j)));
end
end
figure(3);
imshow(uint8(Ya));
title('同态滤波输出效果');
图像显示: