MATLAB数字图像处理.docx
- 文档编号:9265955
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:28
- 大小:345.33KB
MATLAB数字图像处理.docx
《MATLAB数字图像处理.docx》由会员分享,可在线阅读,更多相关《MATLAB数字图像处理.docx(28页珍藏版)》请在冰豆网上搜索。
MATLAB数字图像处理
图像处理与分析实验指导书
图像是一种重要的信息源,图像处理的最终目的就是要帮助人类理解信息的内涵。
数字图像处理技术的研究内容涉及光学系统、微电子技术、计算机科学、数学分析等领域,是一门综合性很强的边缘学科。
随着计算机的迅猛发展,图像处理技术已经广泛应用于各个领域。
“数字图像处理”课程内容主要包括利用计算机对图像信息进行图像采集、图像变换、图像增强与恢复、图像分割、图像分析与理解、图像压缩、图像传输等各种处理的基本理论、典型方法和实用技术。
通过本课程的学习,可使学生掌握有关图像处理与图像分析的基本概念、基础理论、实用技术和典型方法。
通过该系列实验教学与实践,使学生了解和掌握利用各种图像采集设备__图像扫描仪、数码照相机、录像机、数码摄像机等获取多种格式的静态、动态图像数据的方法及手段,了解图像增强、图像分割、图像理解和分析算法的物理意义;了解图像传输、图像编码等相关技术的基本原理、软/硬件构成以及典型的应用;此外对图像远程传输、存贮等网络流媒体远程通信技术、数据库管理与维护、超文本系统等方法也进行必要的了解,为将来的研究和应用打下良好的基础。
应用于图像处理的计算机软件技术平台很多,如VC++、MATLAB等。
本实验指导书选用MATLAB做实验平台,MATLAB是一种基于向量(数组)而不是标量的高级程序语言,而数字图像实际上就是一组有序的离散数据,从而MATLAB从本质上就可以提供对图像处理的技术支持。
实验一:
图像预处理实验(验证性实验)
一、实验目的与要求:
目的:
通过本次实验,学生可以掌握图像读取、显示和保存的方法,掌握空间域增强方法和频率域增强方法。
要求:
上机运行,调试通过。
二、实验方案:
1)对附录中的练习1~11、练习13,进行上机运行和调试。
2)对上述练习,改变一些函数的参数,观察运行结果的变化。
三、实验结果与数据处理
对每个练习,要求学生获得相应的实验结果。
四、结论
可以是对某些MATLAB函数如何使用的认识,也可以是学生的实验后的心得体会。
五、问题与讨论
1)在显示傅里叶频谱前,为什么常常进行对数变换?
2)对实验中遇到的问题,进行讨论。
实验二:
形态学处理、图像分割、表达与描述实验(验证性实验)
一、实验目的与要求:
目的:
要求学生掌握形态学处理、图像分割和图像表达与描述的基本方法,掌握相关的MATLAB函数。
要求:
上机运行,调试通过。
二、实验内容:
1)对附录中的练习15~24、练习26、练习28~32,进行上机运行和调试。
2)对上述练习,改变一些函数的参数,观察运行结果的变化。
三、实验结果与数据处理
对每个练习,要求学生获得相应的实验结果。
四、结论
可以是对某些MATLAB函数如何使用的认识,也可以是学生的实验后的心得体会。
五、问题与讨论
1)在形态学处理中,结构元选取的原则是什么?
举例说明。
2)对实验中遇到的问题,进行讨论。
实验三:
直方图均衡化实验(设计性实验)
实验名称:
直方图均衡化实验
实验项目性质:
设计性实验
所属课程名称:
《图像处理与分析》
计划学时:
2
一、实验目的与要求
1.目的:
通过本次实验,加深学生对直方图均衡化的基本原理的理解,加强学生的算法设计和编程实现的能力。
2、要求:
根据直方图均衡化的原理,设计直方图均衡化的算法,并编程实现直方图均衡化的功能。
二、预习与参考
1.R.C.Gonzalez,R.E.Woods。
《数字图像处理》(第二版)。
北京:
电子工业出
版社,2003。
2.《图像处理与分析实验指导书》的附录。
2.R.C.Gonzalez,R.E.Woods,S.L.Eddins。
《数字图像处理》(MATLAB版)。
北京:
电子工业出版社,2005。
3.徐飞,施晓红。
《Matlab应用图像处理》。
西安:
西安电子科技大学出版社,
2002。
三、实验方案
此方案为参考方案,鼓励学生提出自己的方案。
实现直方图均衡化的实现步骤:
1.列出原始图像的灰度级
其中L是灰度级的个数。
2.统计各灰度级的像素数目
。
3.计算原始图像直方图各灰度级的频数
,其中n为原始图像总的像素数目。
4.计算累积分布函数
。
5.应用以下公式计算映射后的输出图像的灰度级
,P为输出图像灰度级的个数:
其中,INT为取整符号
6.统计映射后各灰度级的像素数目
。
7.计算输出直方图
。
8.用
的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。
四、实验(设计)仪器设备和材料清单
1.计算机1台/每人
五、考核形式
1.验收调试结果;
2.实验报告
六、实验报告要求
1.技术路线;
2.MATLAB程序;
3.运行结果;
4.心得体会
七、思考题
1.直方图均衡化的目的是使图像直方图尽可能地分布均匀,你有什么改进的思路?
2.你是如何理解步骤5的?
3.对实验中遇到的问题,进行讨论。
附录一:
MATLAB数字图像处理
1MATLAB简介
1.1主要用途及特点
主要用途:
算法研究
主要特点:
语句功能强大;不能生成可执行文件。
1.2MATLAB工作环境
1.2.1Matlab桌面
桌面包括5个子窗口:
命令窗口、工作空间窗口、当前目录窗口、历史命令窗口、一个或多个图形窗口(仅在用户显示图形式出现)。
命令窗口是用户在提示符(>>)处键入MATLAB命令和表达式的地方,也是显示那些命令输出的地方。
工作空间窗口显示对话中创建的变量和它们的某些信息。
当前目录窗口显示当前目录的内容(即路径)。
历史命令窗口包含用户已在命令窗口中输入的命令的纪录。
1.2.2使用MATLAB编辑器创建M文件
1.2.3获得帮助
(1)help<函数名>
(2)lookfor<关键词>
2数字图像的读取、显示、保存、数据类型和图像类型、数据类型间的转换、图像类型间的转换
2.1图像的读取
语法:
imread(‘filename’)
说明:
读取图像
格式名称
描述
可识别扩展符
TIFF
加标记的图像文件格式
.tif,.tiff
JPEG
联合图像专家组
.jpg,.jpeg
GIF
图形交换格式
.gif
BMP
Windows位图
.bmp
PNG
可移植网络图形
.png
XWD
XWindow转储
.xwd
语法:
[M,N]=size(‘filename’)
说明:
给出一幅图像的行数和列数
2.2图像的显示
语法:
imshow(f,G)
imshow(f,[lowhigh])
imshow(f,[])
说明:
G是显示该图像的灰度级数;
小于或等于low的值都显示为黑色,大于或等于high的值都显示为白色。
[]自动将变量low设置为f的最小值,将high设置为f的最大值。
2.3图像的保存
语法:
imwrite(f,‘filename’)
说明:
保存图像
练习1
f=imread(‘saturn.tif’);
[M,N]=size(f);
g=imread(‘trees.tif’);
imshow(f);
figure,imshow(g);%显示另一幅图像
imwrite(f,‘s2.jpg’)
2.4数据类型
名称
描述
double
双精度浮点数,范围为-10exp(308)~10exp(308),8字节
uint8
无符号8比特整数,1字节
uint16
无符号16比特整数,2字节
uint32
无符号32比特整数,4字节
int8
有符号8比特整数,1字节
int16
有符号16比特整数,2字节
int32
有符号32比特整数,4字节
single
单精度浮点数,范围为-10exp(38)~10exp(38),4字节
char
字符
logical
值为0或1
四种常用类型:
double,uint8,char,logical。
2.5图像类型
名称
描述
亮度图像
uint8类范围为[0255]、double类归一化为[01]
二值图像
图像取值只有0和1的逻辑数组
索引图像
索引图像
RGB图像
彩色图像
2.6数据类与图像类型间的转换
2.6.1数据类间的转换
语法:
B=data_class_name(A)
举例:
若A是8位图像,则B=double(A)转换为双精度图像。
2.6.2图像类型间的转换
函数名称
将输入转换为
有效的输入图像数据类
im2uint8
uint8
Logical,uint8,uint16和double
im2uint16
uint16
Logical,uint8,uint16和double
mat2gray
double
double
im2double
double
Logical,uint8,uint16和double
im2bw
logical
uint8,uint16和double
练习2
f=[12;34];
g=mat2gray(f);
gb=im2bw(g,0.6)%0.6isathreshold
3亮度变换与空间滤波
3.1亮度变换函数
3.1.1基本亮度变换函数
语法:
g=imadjust(f,[low_inhigh_in],[low_outhigh_out],gamma)
说明:
将图像f中的亮度值影响到g中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值,low_in以下的值映射为low_out,high_in以上的值映射为high_out。
参数gamma指定了映射曲线的形状。
练习3
f=imread(‘pout.tif’);imshow(f);
g1=imadjust(f,[01],[10]);figure,imshow(g1);
g2=imadjust(f,[0.50.75],[10],0.5);figure,imshow(g2);
3.1.2对比度拉伸变换
对数变换方法:
g=c*log(1+double(f))
说明:
对数变换的一项主要应用是压缩动态范围,常用于傅里叶频谱显示。
练习4
f=imread(‘pout.tif’);
F=fft2(f);%FourierTransform
FC=fftshift(F);%将变换原点移到频率矩形的中心。
imshow(abs(FC),[]);
S2=log(1+abs(FC));
figure,imshow(S2,[]);
对比度拉伸方法:
g=1./(1+(m./(double(f)+eps).^E)
说明:
eps是浮点数的相对精度,可避免f出现0值时的溢出现象。
3.2直方图处理与函数绘图
3.2.1生成并绘制图像的直方图
语法:
h=imhist(f,b)
p=imhist(f,b)/num1(f)
说明:
b是用于形成直方图的灰度级的个数。
p是归一化直方图。
num1(f)是求图像所有像素的灰度和的一个形式化的函数,需要自己编写。
例如:
s=sum(f),s=sum(s),这两条语句合在一起,就实现了图像所有像素的灰度求和。
练习5
f=imread(‘pout.tif’);
imhist(f);
3.2.2直方图均衡化
语法:
g=histeq(f,nlev)
说明:
nlev是为输出图像制定的灰度级数。
练习6
f=imread(‘tire.tif’);
imshow(f);
figure,imhist(f);
ylim(‘auto’);%自动设定y轴坐标范围和刻度
g=histeq(f,256);
figure,imshow(g);
figure,imhist(g);
ylim(‘auto’);
3.3空间滤波
3.3.1线性空间滤波
语法:
g=imfilter(f,w,filtering_mode,boundary_options,size_options)
说明:
w为滤波掩模
选项
描述
滤波类型
‘corr’
滤波器通过使用相关来完成。
该值是默认值。
‘conv’
滤波器通过使用卷积来完成
边界选项
P
输入图像的边界通过用值P来扩展。
P的默认值为0。
‘replicate’
图像大小通过复制外边界的值来扩展。
‘symmetric’
图像大小通过反射其边界来扩展。
‘circular’
图像大小通过将图像看成是一个二维周期函数的一个周期来扩展
大小选项
‘full’
输出图像的大小与被扩展图像的大小相同
‘same’
输出图像的大小与输入图像的大小相同
练习7
f=imread(‘saturn.tif’);
w=ones(31);%单位矩阵掩模
gd=imfilter(f,w);
imshow(gd,[]);
3.3.2非线性空间滤波
略。
3.4图像处理工具箱的标准空间滤波器
3.4.1线性空间滤波器
语法:
w=fspecial(‘type’,parameter)
说明:
见下表
练习8
f=imread(‘saturn.tif’);
w4=fspecial(‘laplacian’,0)
w8=[111;1-81;111];
g4=imsubtact(f,imfilter(f,w4,‘replicate’));
g8=imsubtract(f,imfilter(f,w8,‘replicate’));
imshow(f);
figure,imshow(g4);figure,imshow(g8);
3.4.2非线性空间滤波器
语法:
g=ordfilt2(f,order,domain)
说明:
使用邻域的一组排序元素中的第oder个元素来代替f中的每个元素,而该邻域则由domain中的非零元素指定。
语法:
g=medfilt2(f,[mn],padopt)
说明:
中值滤波器。
padopt指定了三个可能的边界填充选项之一。
‘zeros’(默认值)。
‘symmetric’,镜像反射。
‘indexed’,double类图像,以1填充,否则以0填充。
练习9
f=imread(‘eight.tif’);
fn=imnoise(f,‘salt&pepper’,0.2);%加椒盐噪声
gm=medfilt2(fn);
imshow(fn);
figure,imshow(gm);
语法:
J=wiener2(I,[mn],noise)
说明:
进行二维适应性去噪过滤处理(维纳滤波)。
练习10
I=imread('saturn.tif');
J=imnoise(I,'gaussian',0,0.005);%加高斯噪声
K=wiener2(J,[55]);
imshow(J)
figure,imshow(K)
4频域处理
4.1在MATLAB中计算并可视化二维DFT
练习11
f=imread(‘saturn.tif’);
F=fft2(f);%FourierTransform
S=abs(F);%计算傅里叶频谱
imshow(S,[]);
FC=fftshift(F);%将变换原点移到频率矩形的中心。
figure,imshow(abs(FC),[]);
S2=log(1+abs(FC));
figure,imshow(S2,[]);
频域滤波
4.2.1注意事项
假设函数f(x,y)和h(x,y)的大小分别为A×B和C×D,为了避免卷积运算造成的折叠误差(即混叠失真),必须通过对f和g补零,构造两个大小均为P×Q的扩充寒暑,才能在频率域中进行运算。
其中,P、Q必须满足:
4.2.2DFT滤波的基本步骤
1、对f和g进行补零。
2、对f和g分别进行傅里叶变换,得到频域F和H。
3、将变换乘以滤波函数
G=H.*F;
4、获得G的傅里叶逆变换的实部:
g=real(ifft2(G));
5、讲左上部的矩形修建为原始大小:
g=g(1:
size(f,1),1:
size(f,2));
练习12:
根据DFT滤波的基本步骤,进行编程实现。
从空间滤波器获得频率滤波器
语法:
H=fft2(h,M,N)
说明:
M、N是滤波器的行数和列数,由被滤波的图像大小决定,是补零
的结果。
语法:
H=freqz2(h,R,C)
说明:
计算FIR滤波器的频率响应。
练习13
h=[111;1-81;111];
H=freqz2(h,50,50);
在频率域中直接生成滤波器
练习题14:
编程实现在频率域中生成巴特沃兹低通滤波器(或高通滤波器,或高通强调滤波器)。
5形态学图像处理
5.1膨胀和腐蚀
5.1.1膨胀
语法:
A2=imdilate(A,B)
说明:
B是结构元(由0和1组成的矩阵)。
练习15
A=imread(‘text.tif’);
B=[010;111;010];
A2=imdilate(A,B);
imshow(A);
figure,imshow(A2);
5.1.2结构元的生成
语法:
se=strel(shape,parameter)
说明:
见下表。
5.1.3腐蚀
语法:
A2=imerode(A,B)
练习16
A=imread(‘text.tif’);
se=strel(‘disk’,1);
A2=imerode(A,se);
imshow(A);figure,imshow(A2);
5.2膨胀和腐蚀的组合
5.2.1开运算和闭运算
语法:
C=imopen(A,B)和C=imclose(A,B)
练习17
f=imread(‘text.tif’);
se=strel(‘square’,5);
fo=imopen(f,se);
imshow(f);figure,imshow(fo);
fc=imclose(f,se);figure,imshow(fc);
5.2.2击中击不中变换
语法:
C=bwhitmiss(A,B1,B2)
练习18
A=imread(‘text.tif’);
B1=strel([0000;0111;0110]);
B2=strel([1111;1000;1001]);
g=bwhitmiss(f,B1,B2);imshow(g);
5.2.3形态学函数
语法:
g=bwmorph(f,operation,n)
说明:
该函数可基于膨胀、腐蚀和查找表的组合实现许多有用的操作,n是一个用于指定将被重复操作次数的正整数。
Operation说明见下表。
练习19
f=imread(‘circbw.tif’);
G1=bwmorph(f,‘thin’,1);
G2=bwmorph(f,‘thin’,1);
Ginf=bwmorph(f,‘thin’,Inf);
Fs=bwmorph(f,‘skel’,Inf);
imshow(f);
figure,imshow(G1);
figure,imshow(G2);
figure,imshow(Ginf);
figure,imshow(Fs);
5.3标记连通分量
语法:
[L,num]=bwlabel(f,conn)
说明:
conn用于指定连接类型(4连接获8连接),num给出所找到的连接分量总数,L成为标记矩阵。
练习20
f=imread(‘blood1.tif’);
[L,n]=bwlabel(f);
[r,c]=find(L==3);
rbar=mean(r);
cbar=mean(c);
plot(cbar,rbar,‘Marker’,‘o’,‘MarkerEdgeColor’,‘k’,‘MarkerFaceColor’,‘k’,‘MarkerSize’,10);
plot(cbar,rbar,‘Marker’,‘*’,‘MarkerEdgeColor’,‘w’);
5.4形态学重构
语法:
out=imreconstruct(marker,mask)
5.4.1由重构做开运算
练习21
f=imread(‘circbw.tif’);
fe=imerode(f,ones(51,1));
fo=imopen(f,ones(51,1));
fobr=imreconstruct(fe,f);
imshow(f);
figure,imshow(fe);
figure,imshow(fo);
figure,imshow(fobr);
5.4.1填充孔洞
语法:
g=imfill(f,‘holes’)
5.4.2清除边界对象
语法:
g=imclearborder(f,conn)
6图像分割
6.1点、线和边缘检测
6.1.1点检测
点检测模板w:
-1
-1
-1
-1
8
-1
-1
-1
-1
检测方法:
g=abs(imfilter(double(f),w))>=T
练习22
f=imread(‘moon.tif’);
w=[-1-1-1;-18-1;-1-1-1];
g=abs(imfilter(double(f),w));
T=max(g(:
));
T=T*0.5;
g=g>=T;
imshow(f);figure,imshow(g);
6.1.2线检测
水平模板、+45度模板、垂直模板、-45度模板。
练习23
f=imread(‘circbw.tif’);
imshow(f);
w=[2-1-1;-12-1;-1-12];
g=abs(imfilter(double(f),w));
figure,imshow(g);
6.1.3使用edge函数的边缘检测
语法:
[g,t]=edge(f,‘method’,parameter)
说明:
g是一个逻辑数组,其值为:
在f中检测到边缘的位置为1,其他位置为零;t是edge是用的阈值;method为边缘监测器方法,可选为:
‘sobel’,‘prewit’,‘roberts’,‘log’(LoG),‘zerocoss’,‘canny’等;parameter包含两部分:
T为指定的阈值,第二部分为dir(检测边缘的首选方向:
‘horizontal’,‘
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 数字图像 处理