数字图像处理实验课件学时版.docx
- 文档编号:29489391
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:27
- 大小:114.41KB
数字图像处理实验课件学时版.docx
《数字图像处理实验课件学时版.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验课件学时版.docx(27页珍藏版)》请在冰豆网上搜索。
数字图像处理实验课件学时版
实验1图像基本操作
1.实验要求
在MATLAB环境下完成下列操作:
读入图像;
保存图像;
图像的显示方法
2.实验类型验证型
3.实验时间2学时
4.实验方法
使用函数imread可以将图像读入MATLAB环境,imread的语法为
imread(‘filename’)
imread所支持的文件格式包括:
TIFF----------.tif.tiff
JPEG--------.jpg.jpeg
GIF-----------.gif
BMP---------.bmp
PNG---------.png
XWD---------.xwd
使用函数imwrite可以将图像保存在磁盘上,imwrite的语法为
imwrite(f,‘filename’)
使用函数size可以察看图像大小,size的语法为
size()
使用函数imfinfo可以察看图像信息,imfinfo的语法为
imfinfofilename
使用函数imshow可以显示图像缩略图,imshow的语法为
imshow()
使用函数imview可以显示图像原图,imview的语法为,不同的是imview是一个工具,可以完成一些基本的图像操作
imview()
使用函数figure可以开辟一个新的窗口,figure的语法为
figure,imshow()
figure,imview()
figure,plot()
…………………
使用数据类型转换函数可以转换图像数据类型,如
im2uint8()------------------convertimagetouint8
im2uint16()----------------convertimagetouint16
mat2gray()-----------------convertimagetodouble,range[0,1]
im2double()----------------convertimagetodouble
im2bw()---------------------convertimagetological
5.实验过程
使用函数imread打开一幅灰度图像(fig0309abc.jpg),使用函数imwrite将图像另存为不同的文件名;在此过程中观察图像矩阵的形式,并用图像矩阵的索引法,观察并记录5×5的矩阵片断;
使用函数size察看图像大小,使用函数imfinfo察看图像信息;记录图像信息;
分别使用函数imshow和函数imview显示图像;记录两种方式的区别;
使用函数imread打开一幅彩色图像(start.jpg),观察图像矩阵的形式;并分别观察和记录RGB三色5×5的矩阵片断;
使用函数rgb2gray将彩色图像转换为灰度图像;
使用im2uint8和im2double转换图像的数据类型,记录5×5矩阵片断在转换前后的变化。
实验2图像点运算
1.实验要求
在MATLAB环境下完成下列操作:
读入图像;
图像灰度变换方法;
灰度的对数扩展法;
绘制灰度直方图;
直方图均衡法;
任意灰度变换实现;
2.实验类型验证型
3.实验时间2学时
4.实验方法
使用函数imadjust可以实现图像灰度变换,imadjust的语法为
imadjust(f,[low_inhigh_in],[low_outhigh_out],gamma)
gamma所表示的意义:
>1----------凹曲线
<1----------凸曲线
=1----------直线
灰度的对数扩展法g=c*log(1+double(f))
目的是使亮区域得到抑制,暗区域灰度得到均匀增强
使用语句
im2uint8(mat2gray(log(1+double(f))))
其中系数c通过mat2gray函数自动调整
灰度直方图反映图像的灰度分布情况,即亮度分布情况;
它说明不同灰度的像素个数或分布概率
使用函数imhist绘制灰度直方图,imhist的语法为
h=imhist(f);
figure,imhist(f);
figure,plot(h);
figure,stem(h);
figure,bar(h);
由于拍摄和处理的原因,导致图像的灰度分布范围过小;
最大熵原理指出:
数据满足均匀分布时,信息量最大;
依据这个原理,通过灰度直方图均衡化将图像灰度分布扩展到整个灰度分布范围,可以使图形信息量最大,即使使得图像对比度增强。
使用函数histeq对图像进行直方图均衡,histeq的语法为
g=histeq(f,nlev);%nlev为输出的灰度级数,通常取256,默认64
figure,imhist(g);
图1
任意灰度变换需要进行分段计算,如图1
α*f,0≤f<a;
g=β*(f-a)+ga,a≤f<b;
γ*(f-b)+gb,b≤f≤c;
5.实验过程
使用函数imread打开一幅灰度图像(fig0222b.jpg),使用函数imadjust实现图像灰度变换;
分别使用:
g1=imadjust(f,[20255],[0255],0.5);
g2=imadjust(f,[20255],[0255],1);
g3=imadjust(f,[20255],[0255],2);
g4=imadjust(f,[0255],[25505],1);
figure,imshow(g1);
figure,imshow(g2);
figure,imshow(g3);
figure,imshow(g4);
观察并记录四种变换差别。
(注意:
请将方括号内的整数需要手工折算成浮点数)
使用函数imread打开一幅灰度图像(fig0305.tif),使用如下语句进行对数扩展
figure,imshow(f2);
g5=im2uint8(mat2gray(log(1+double(f2))));
figure,imshow(g5);
观察并记录均衡前后的差别。
使用函数imread打开一幅灰度图像(fig0222b.jpg),使用函数imhist绘制灰度直方图,直方图有四种表现形式
h=imhist(f3);
figure,imhist(f3);
figure,plot(h);
figure,stem(h);
figure,bar(h);
观察四种直方图的差别。
使用函数imread打开一幅灰度图像(fig0308.tif),说明这幅图像直方图存在的问题。
使用函数histeq对图像进行直方图均衡,比较并记录均衡前后图像的变化
h1=histeq(f3,256);
figure,imhist(h1);
figure,imshow(f3);
figure,imshow(h1);
打开一幅灰度图像(fig0309abc.jpg),编写一个m文件完成图2的灰度变换功能,观察并记录图像变换前后的区别,将程序记录
图2
实验3图像间的运算
1.实验要求
在MATLAB环境下完成下列操作:
图像加法;
图像减法;
图像乘法;
图像除法;
图像与或非等逻辑运算;
2.实验类型验证型
3.实验时间2学时
4.实验方法
图像加法是把图像叠加在一起的操作,使用函数imadd将两幅图像相加。
f1=imread('Fig0206a.tif');%读入图像
f2=imread('Fig0207.tif');%读入图像
f3=imadd(f1,f2);
figure,imshow(f3);
图像减法是从一幅图像中减去另一幅图像,经常被用作检测两幅图像的差别,使用函数imsubtract将两幅图像相减。
下面的操作是根据一幅原始图像,生成其背景亮度图像,然后再从原图像中减去背景亮度图像,从而得到结果。
f4=imread('Fig0404.jpg');%读入图像
bkgrd=imopen(f4,strel('disk',15));
f5=imsubtract(f4,bkgrd);
figure,subplot(1,2,1),imshow(f4);
subplot(1,2,2),imshow(f5);
图像乘法将两幅图像对应点的像素进行相乘操作(MATLAB的点乘),使用函数immultiply对两幅图像进行乘法操作,并将相乘的结果作为输出图像对应点的像素值。
f6=imread('Fig0206a.tif');%读入图像
f7=imread('Fig0207.tif');%读入图像
f8=immultiply(f6,f7);%两幅图像相乘
f9=immultiply(f6,1.2);%图像和一个系数相乘,等于将灰度乘以一个系数
figure,subplot(2,2,1),imshow(f6);
subplot(2,2,2),imshow(f7);
subplot(2,2,3),imshow(f8);
subplot(2,2,4),imshow(f9);
图像除法将两幅图像对应点的像素进行相除操作(MATLAB的点除),使用函数imdivide对两幅图像进行除法操作,并将相除的结果作为输出图像对应点的像素值。
f10=imread('Fig0206a.tif');%读入图像
f11=imread('Fig0207.tif');%读入图像
f12=double(f11);
f13=f12*0.2+50;
f14=uint8(f13);
f15=imdivide(f10,f14);
figure,imshow(f15);
图像间的逻辑运算主要有“与”、“或”、“非”等,把它们组合起来可以构成其他逻辑运算。
当我们对灰度级进行逻辑操作时,像素值作为一个二进制数来处理,逻辑操作按位进行。
“与”和“或”运算通常用作模板,即通过这些操作可以从一幅图像中提取子图像,更加突出子图像的内容。
下面的“与”和“或”运算通过逐点进行。
f=imread('fig0222b.jpg');%读入图像
[m,n]=size(f);
figure,subplot(2,3,1),imshow(f);
f1=zeros(m,n);
f1(20:
150,70:
170)=255;
f1=uint8(f1);
subplot(2,3,2),imshow(f1);
fori=1:
m
forj=1:
n
f2(i,j)=bitand(f(i,j),f1(i,j));
end
end
subplot(2,3,3),imshow(f2);%显示“与”的结果
f3=ones(m,n)*255;
f3(20:
150,70:
170)=0;
f3=uint8(f3);
subplot(2,3,5),imshow(f3);
fori=1:
m
forj=1:
n
f4(i,j)=bitor(f(i,j),f3(i,j));
end
end
subplot(2,3,6),imshow(f4);%显示“或”的结果
fori=1:
m
forj=1:
n
f5(i,j)=bitxor(f(i,j),255);%和1取异或等于求反
end
end
subplot(2,3,4),imshow(f5);%显示“非”的结果
5.实验过程
使用函数imadd将两幅图像相加('Fig0206a.tif')('Fig0207.tif'),观察并记录结果。
使用函数imsubtract将两幅图像相减('Fig0404.jpg'),观察并记录结果。
使用函数immultiply对两幅图像进行乘法操作('Fig0206a.tif')('Fig0207.tif'),并将相乘的结果作为输出图像对应点的像素值,观察并记录结果。
使用函数imdivide对两幅图像进行除法操作('Fig0206a.tif')('Fig0207.tif'),并将相除的结果作为输出图像对应点的像素值,观察并记录结果。
使用点运算进行图像“与”、“或”、“非”操作('fig0222b.jpg'),观察并记录结果。
实验4图像空间运算
1.实验要求
在MATLAB环境下完成下列操作:
均值滤波方法;
中值滤波方法;
边缘检测;
基于边缘检测的图像增强法;
采用边缘检测和灰度变换结合图像增强法;
2.实验类型验证型
3.实验时间2学时
4.实验方法
图像的空间滤波使用函数imfilter实现,imfilter的语法为
imfilter(f,w,{filtering_mode},{boundary_option},{size_option})
f--------imagematrix
w-------imagemask
{}为可选项
均值滤波的掩模
,
,
等
中值滤波的函数medfilt2()
边缘检测的算子
,
,
,
,
,
,
,
,
等
基于边缘检测的图像增强算子
,
,
,
,
,
,
,
,
等
采用边缘检测和灰度变换结合图像增强法
设
是图像经过一阶梯度运算的结果
1.
2.
3.
4.
5.实验过程
使用函数imread打开一幅有噪声的灰度图像(fig0318.tif);
分别使用:
均值滤波的各种掩模过滤噪声,观察并记录各种掩模处理结果的差异,注意掩模的系数
中值滤波观察并记录和中值滤波相比的结果差异
使用函数imread打开一幅灰度图像(fig0316.tif);
分别使用:
使用各种边缘检测的算子检测边缘,观察并记录各种算子处理结果的差异。
使用各种边缘增强的算子处理图像,观察并记录各种算子处理结果的差异。
打开一幅灰度图像(fig0413.tif),编程实现四种采用边缘检测和灰度变换结合图像增强法
设门限T=210,LG=230,LB=50,(这是参考数值,请根据实际情况调整)
记录程序,并且比较四种处理结果的差异
实验5图像频域运算
1.实验要求
在MATLAB环境下完成下列操作:
掌握图像进行二维DFT的方法;
完成简单的图像频域滤波;
采用频域处理对图像增强法;
2.实验类型验证型
3.实验时间2学时
4.实验方法
图像的图像进行二维DFT使用函数fft2()实现,fft2()的语法为
F=fft2(f);
为了显示频谱的实部使用
S=abs(F);
figure,imshow(S,[]);
为了将频谱居中显示,使用函数fftshift()搬移,fftshift()的语法为
Fc=fftshift(F);
figure,imshow(Fc,[]);
为了使频谱的对比度增强,采用对数增强法
S2=log(1+abs(Fc));
figure,imshow(S2,[])
将图像进行IDFT之前,使用函数ifftshift()将频谱反向搬移,然后使用函数ifft2()进行IDFT
生成低通滤波使用函数lpfilter(),生成高通滤波使用函数hpfilter(),(参考函数部分)
H1=lpfilter(‘ideal’,M,N,D0);
H2=hpfilter(‘ideal’,M,N,D0);
对图像进行频域滤波使用函数dftfilt(),(参考函数部分)
G1=dftfilt(f,H1);
G2=dftfilt(f,H2);
figure,imshow(G1,[]);
figure,imshow(G2,[]);
对图像进行高频强调增强,是在保持图像特征的基础上,对高频部分进行一定提升
H3=0.5+2*H2;
G3=dftfilt(f,H3);
figure,imshow(G3,[]);
5.实验过程
使用函数imread打开一幅图像(fig0403.tif),对图像进行DFT,频谱搬移,反搬移,和IDFT
使用函数imread打开一幅灰度图像(fig0413.tif),对图像进行低通滤波,高通滤波,和高频增强
设计一种频域图像增强方法对图像fig0419.tif进行增强,同时采用空间增强方法对结果进行比较
实验6图像退化和复原
1.实验要求
在MATLAB环境下完成下列操作:
完成图像运动模糊退化;
完成有约束的最小二乘方滤波;
完成图像维纳滤波;
完成图像逆滤波;
比较各种方法的优缺点;
2.实验类型验证型
3.实验时间2学时
4.实验方法
创建一个运动模糊退化滤波器(退化滤波器PSF),使用函数fspecial创建退化滤波器PSF,然后调用imfilter对图像进行卷积运算,就可以得到一幅运动退化图像。
I=imread('fig0222b.jpg');%读入图像
figure,subplot(1,2,1),imshow(I);
LEN=31;
THETA=11;
PSF=fspecial('motion',LEN,THETA);%生成退化函数
blurred=imfilter(I,PSF,'circular','conv');
subplot(1,2,2),imshow(Blurred);
然后使用imnoise函数对图像添加随机噪声。
fnblurred=imnoise(blurred,'gaussian',0,0.001);%产生随机噪声图像
figure,imshow(fnblurred);
下面,使用函数deconvwnr对无噪声的运动模糊图像进行复原,这里假设退化函数PSF已知
LEN=31;
THETA=11;
PSF=fspecial('motion',LEN,THETA);
wnr1=deconvwnr(blurred,PSF);
figure,imshow(wnr1);
然而,实际情况是退化函数PSF是未知的,只能通过一些先验参数进行复原,所以,这里采用不同的LEN和THETA参数,进行实验,体会一下退化函数PSF的重要性。
wnr2=deconvwnr(blurred,fspecial('motion',2*LEN,THETA));
figure,subplot(1,2,1),imshow(wnr2);
wnr3=deconvwnr(blurred,fspecial('motion',LEN,2*THETA));
subplot(1,2,2),imshow(wnr3);
接下来,使用函数deconvwnr对一幅有噪声的运动模糊图像进行维纳滤波复原。
wnr4=deconvwnr(fnblurred,PSF);
figure,imshow(wnr4);
从结果中可以看出,复原效果不是很好,这是由于维纳滤波器设计不合适所导致的。
为了使维纳滤波复原的效果变好,必须使用deconvwnr函数的可选参数NSR、NCORR和ICORR,通过改变参数获得不同的复原效果。
pnoise=imnoise(zeros(size(f)),’gaussian’,0,0.001);
NSR=sum(pnoise(:
).^2)/sum(im2double(fnblurred(:
)).^2);%使用信噪比作为约束条件
wnr5=deconvwnr(fnblurred,PSF,NSR);
NP=abs(fftn(pnoise)).^2;
NCORR=fftshift(real(ifftn(NP)));%使用噪声自相关函数
IP=abs(fftn(im2double(fnblurred))).^2;
ICORR=fftshift(real(ifftn(IP)));%使用图像自相关函数
wnr6=deconvwnr(fnblurred,PSF,NCORR,ICORR);
figure,imshow(wnr6);
盲目去卷积法可在对退化情况完全不知情的下(忽略噪声影响)进行逆滤波操作。
可以使用deconvblind函数进行盲目去卷积。
PSF=fspecial('gaussian',7,10);
blurred01=imfilter(I,PSF,'circular','conv');
figure,imshow(blurred01);
UNDERPSF=ones(size(PSF)-4);
[J1P1]=deconvblind(blurred01,UNDERPSF);%使用较小的PSF进行逆滤波
figure,imshow(J1);
OVERPSF=padarray(UNDERPSF,[44],'replicate','both');
[J2P2]=deconvblind(blurred01,OVERPSF);%使用较大的PSF进行逆滤波
figure,imshow(J2);
INITPSF=padarray(UNDERPSF,[22],'replicate','both');
[J3P3]=deconvblind(blurred01,INITPSF);%使用真实的PSF进行逆滤波
figure,imshow(J3);
从结果中可以发现,退化函数PSF对图像复原质量有着非常重要的影响,实际使用中可以通过分析,使用不同大小的PSF对图像进行复原,从中选择一个最合适的PSF使用。
5.实验过程
使用函数fspecial创建退化滤波器PSF,然后调用imfilter对图像进行卷积运算,就可以得到一幅运动退化图像,观察并记录结果。
使用imnoise函数对图像添加随机噪声,观察并记录结果。
使用函数deconvwnr对无噪声的运动模糊图像进行复原,观察并记录结果。
同时采用不同的LEN和THETA参数,进行实验,体会一下退化函数PSF的重要性,观察并记录结果。
使用函数deconvwnr对一幅有噪声的运动模糊图像进行维纳滤波复原,观察并记录结果。
为了使维纳滤波复原的效果变好,必须使用deconvwnr函数的可选参数NSR、NCORR和ICORR,通过改变参数获得不同的复原效果,观察并记录结果。
使用deconvblind函数进行盲目去卷积,采用不同的退化函数,观察并记录结果。
实验7彩色图像处理
1.实验要求
在MATLAB环境下完成下列操作:
学习MATLAB中彩色图像的表示方法
掌握彩色图像空间的转换方法
掌握彩色图像平滑滤波和锐化的方法
2.实验类型验证型
3.实验时间2学时
4.实验方法
令fr,fg,fb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 实验 课件 学时