数字图像处理matlab编程课件.ppt
,Matlab&数字图像处理Matlab编程,MATLAB是一种流行的工程软件,英文全称(MatrixLaboratory)即矩阵实验室。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.,MATLAB概述,Matlab的计算能力,Matlab基础,Matlab基础,Matlab基础,-Matlab语句,Matlab&数字图像处理,Matlab基础,基本的数据结构-向量 一维的矩阵 行表示:元素用空格分隔 列表示:元素用分号分隔-矩阵 两维的数组 行内元素用空格分隔 列间元素用分号分隔,元素的访问 x(2)向量 x 的第二个元素A(3,3)矩阵 A 第三个对角元素,创建向量-命令行输入模式基本格式X=(startValue:INC:endValue)注解:INC为递增步长,可正可负 x=1 3 pi 3+5i x=1.0000 3.0000 3.1416 3.0000+5.0000i,Matlab基础,Matlab基础,创建列向量-使用分号作为元素与元素之间的间隔-使用转置运算符“”a=1;2;3;4;5;6或a=(1:6)a=1 2 3 4 5 6,向量元素的访问 访问向量的元素只要使用相应元素的索引即可B=3 2 7 4 9 6 1 8 0 5;B(3)ans=7 B(1 3 7)ans=3 7 1B(1:3:5)ans=3 4,Matlab基础,向量元素的访问关键字end表示向量中最后一 个元素的序号访问向量元素时,序号的数值必须介于1end之间B=3 2 7 4 9 6 1 8 0 5;B(1,3,7)ans=3 7 1B(1:end)ans=3 2 7 4 9 6 1 8 0 5,Matlab基础,B=3 2 7 4 9 6 1 8 0 5;B(3)B(end-3:end)ans=ans=7 1 8 0 5 B(1 3 7)B(1:5,5:-1:1)ans=ans=3 7 1?B(1:3:5)B(1:5;5:-1:1)ans=ans=3 4?,Matlab基础,Matlab基础,B=3 2 7 4 9 6 1 8 0 5;B(3)B(end-3:end)ans=ans=7 1 8 0 5 B(1 3 7)B(1:5,5:-1:1)ans=ans=3 7 1 3 2 7 4 9 9 4 7 2 3 B(1:3:5)B(1:5;5:-1:1)ans=ans=3 4?,Matlab基础,B=3 2 7 4 9 6 1 8 0 5;B(3)B(end-3:end)ans=ans=7 1 8 0 5 B(1 3 7)B(1:5,5:-1:1)ans=ans=3 7 1 3 2 7 4 9 9 4 7 2 3 B(1:3:5)B(1:5;5:-1:1)ans=ans=3 4 3 2 7 4 9 9 4 7 2 3,创建矩阵-直接输入法整个矩阵的元素必须用 括住同一行的矩阵元素之间必须用逗号或空格分隔矩阵的行与行之间用分号分隔,也可以在需要分行的地方用回车键间隔A=1,2,3;4,5,6;7,8,9 A=1 2 3 4 5 6 7 8 9,Matlab基础,创建矩阵-矩阵生成函数,Matlab基础,创建矩阵-矩阵生成函数,Matlab基础,A=zeros(3,3)A=0 0 0 0 0 0 0 0 0,A=eye(3,3)A=1 0 0 0 1 0 0 0 1,A=rand(3,3)A=0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214,A=ones(3,3)A=1 1 1 1 1 1 1 1 1,Matlab基础,矩阵元素的访问-访问矩阵的元素需要使用矩阵元素的索引使用矩阵元素的行列全下标形式A(m,n)使用矩阵元素的单下标形式A(i)矩阵元素的单下标是矩阵元素在内存中存储的序列号,一般地,同一个矩阵的元素在连续的内存单元中(元素的排列以列元素优先),矩阵元素的访问(续),A(1:4,5)A(:,5)A(:,end)A(17:20),A(2:4,2:3)A(2 3 4,2 3),A(1,2)A(5),Matlab基础,-矩阵整形操作 维数查询 size(A);功能:返回行列值 举例:A=1:4;5:8;9:12;m,n=size(A)m=3 n=4,Matlab编程,程序结构-顺序结构 逐条顺序执行程序指令或模块-选择结构 依据条件选择执行程序指令或模块 if 语句%条件选择 switch 语句%多值切换,Matlab编程(续),程序控制语句-选择结构 依据条件选择执行程序指令或模块 if 语句%条件选择 关键词:if,else,和 elseif 基本格式:if logical_expression block of statements end,Matlab编程(续),if 语句一般形式 if logical_expression block of statements elseif logical_expression block of statements else block of statements end,Matlab编程(续),if 语句实例(续)if x 0 disp(x is positive);elseif x 0 disp(x is negative);else disp(x is exactly zero);end,Matlab编程(续),switch 语句 一般形式 switch expression case value1,block of statements case value2,block of statements.otherwise,block of statements end,Matlab编程(续),switch 语句实例 color=.;%color is a string switch color case red disp(Color is Red);case blue disp(Color is Blue);case green disp(Color is Green);otherwise disp(Color is not RGB);end,Matlab编程(续),-循环结构 根据条件重复执行程序指令或模块 for 语句%计数循环 一般形式 for index=expression block of statements end,Matlab编程(续),-循环结构 根据条件重复执行程序指令或模块 for 语句%计数循环 while 语句%条件循环,Matlab编程(续),for 语句实例 x=1:5;%create a row vector sumx=0;%initialize the sum for k=1:length(x)sumx=sumx+x(k);end for x=0:pi/15:pi fprintf(%8.2f%8.5fn,x,sin(x);end,Matlab编程(续),while 语句 一般形式 while expression block of statements end,Matlab编程(续),while 语句实例:循环中断控制 x=rand(1,10);k=1;while k0.8 break end k=k+1;end,Matlab绘图,二维图形-plot 二维曲线绘图函数 基本形式 plot(x,y,s)x,y 是相同类型的等长向量 s 可选用于控制图形属性 原理:点线 输入:点坐标向量 输出:插值曲线,Matlab绘图(续),采样点对绘图的影响-曲线实例:y=sin(x),0 x=0:0.5:2*pi;y=sin(x);plot(x,y,.),提供曲线的插值点稀疏,Matlab绘图(续),采样点对绘图的影响(续)-曲线实例:y=sin(x),0 x=0:0.1:2*pi;y=sin(x);plot(x,y),Matlab绘图(续),函数 Plot 常用的使用格式-plot(x,y):单条曲线-plot(x1,y1,x2,y2,):多条曲线-plot(x,y,s):带属性修饰的曲线-s:属性开关描述自符串变量,Matlab绘图(续),图形颜色、标记和线形参数表,Matlab绘图(续),图形的修饰与控制函数 title 给图形加标题 xlable 给x轴加标注 ylable 给y轴加标注 text 在图形指定的任意位置加标注 axis 控制坐标轴刻度,Matlab绘图(续),图形分割函数 subplot 功能:实现多个图形窗口 clear t=0:pi/10:2*pi;y1=sin(t);y2=cos(t);y3=cos(t+pi/2);y4=cos(t+pi);,%将图形窗口分割成两 行两列,图形画在 第1行第1列的窗口subplot(2,2,1);plot(t,y1);%图形画在第1行第2列subplot(2,2,2);plot(t,y2);,Matlab绘图(续),图形分割函数 subplot(续)%图形画在第2行第1列 subplot(2,2,3);plot(t,y3);%图形画在第2行第2列 subplot(2,2,2);plot(t,y4);,Matlab图像编程,图像的读取 imread语句 example:f=imread(bed.jpg);,图像的大小 size语句 example:f=imread(bed.jpg);size(f),Matlab图像编程,图像的显示 imshow语句 example:f=imread(bed.jpg);imshow(f);g=imread(fly.jpg);imshow(f),figure,imshow(g);,Matlab图像编程,图像的保存 imwrite语句 example:imwrite(f,filename);,Matlab图像编程,图像数据类转换函数 im2uint8 语句im2double 语句,Matlab图像编程,灰度变换函数 imadjust语句 imadjust(f,low_in,high_in,low_out,high_out,gamma);,Matlab图像编程,直方图处理函数 imhist语句 h=imhist(f);histeq语句 h=histeq(f);,Matlab灰度变换实例,0.3r r 0.35,0.105+2.6333(r 0.35)0.35 r 0.65,1+0.3(r 1)r 0.65,S=,图像的空间滤波,噪声函数 g=imnoise(f,type,parameters)Example:(1)高斯噪声 g=imnoise(f,gaussian,0,0.01);(2)椒盐噪声 g=imnoise(f,salt,图像的空间滤波,线性空间滤波函数 g=imfilter(f,w,mode,boundary_options,size_options),图像的空间滤波,中值滤波函数 g=medfilt2(f,m,n,padopt)说明:f表示待处理的图像,m n表示模板的尺寸padopt指定了三个可能的边界填充选项之一:zeros(默认值)。symmetric,镜像反射。indexed,double类图像,以1填充,否则以0填充。,图像的二值处理,标签函数 L,num=bwlabel(f,conn);说明:f 表示待处理的图像,conn 表示指定的期望连接(4 or 8),图像的二值处理,腐蚀函数 imerode(f,se);说明:f 表示待处理的图像,se 表示结构元素,图像的二值处理,膨胀函数 imdilate(f,se);说明:f 表示待处理的图像,se 表示结构元素,图像的二值处理,开运算函数 imopen(f,se);说明:f 表示待处理的图像,se 表示结构元素,图像的二值处理,闭运算函数 imclose(f,se);说明:f 表示待处理的图像,se 表示结构元素,人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。,