2022年Matlab操作语法 .pdf
名师整理优秀资源Matlab 图像1 Matlab 基础1.1数据格式Matlab 默认的数据格式为双精度浮点数的矩阵或数组,同时支持其它数据类型。Matlab 将单变量看作 1 1 的数组。 Matlab 支持的数据类型如下:索引值从 1 开始。字符串须用单引号括起来。有些 matlab 函数或操作符只能用于双精度浮点数。1.2 基本运算1.2.1 赋值,如A = 1 2 3 , A = 1,3,5 ,A = 1:3 ,A = 1:0.5:3 ,则 A 是个行向量,各元素值分别为: 1 2 3 1 3 5 1 2 3 1 1.5 2 2.5 3;A = 1;2;3 是列向量。B = 1 2 3;4 5 6 是个 2 3 的矩阵或数组。若再执行B = A,则 B 变为与 A 相同的行向量。B=A 得到 A 的转秩。B = A(r1:r2,c1:c2) 将 A 的一个子块赋给B,该子块在A 中的位置由行号r1,r2(r1=r2) 及列号c1,c2(c1=c2) 决定;A(r1:r2,c1:c2) = B将 B 赋给 A 的一个子块, B 的大小必须是 (r2-r1+1 ) (c2-c1+1) ;A(r1:r2,c1:c2) = B(m1:m2,n1:n2) 将 B 的一个子块赋给A 的一个子块,同样,两个子块的大小必须相等。1.2.2 加+,减 ,要求两个变量的行、列数相等。 对于数组,乘除运算符为.*和 ./,称为点乘和点除,同样要求两个变量的行、列数相等,运算是将相同位置的两个元素相乘或相除。1.2.3 for, while, switch, 2 常用的 Matlab 基本图像处理函数详细内容请参考matlab 帮助。2.1 文件读写读图像: imread A = imread(filename,fmt) ;将图像像素值读出并赋给变量A。X,map = imread(filename,fmt); X 为图像数组,map 是图像的调色板。参数: filename 是文件名, fmt 是图像文件的格式。如果图像文件不在Matlab 默认路径中(当前默认路径可用path 函数查看), 则 filename 必须是全路径名。 fmt 可以是bmp (位图图像) , jpg 或 jpeg(JPEG 图像) ,tif 或 tiff (TIFF 图像)等多种常用格式。如果文件名filename 中含有表示图像格式的后缀名,如test.tif,则参数fmt 可以省略。图像存盘: imwrite imwrite(A,filename,fmt);用于真彩色图像存盘。imwrite(X,map,filename,fmt) ;用于伪彩色图像存盘。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 名师整理优秀资源2.2 显示imshow(X) ,按图形窗口默认的调色板显示图像。imshow(X,map) ,按 map 规定的调色板显示图像。图像数组X 可以是整数或浮点数。若X 是整数,则其取值范围应为0255,0 表示最暗, 255表示最亮;若X 是浮点数,则其取值范围应为01,0 表示最暗, 1 表示最亮。若X 是浮点数,可通过 uint8(X) 强制转换成单字节整数。函数 min() 和 max()用来求向量或矩阵的最小、最大值。对向量V,min(V) 返回其最小值;对于矩阵 X,min(X(:) 返回其最小值。plot 画曲线。2.3 几何运算改变图像尺寸:imresize B = imresize(A,m,method) ;将图像 A 的行、列数变为原来的m 倍,结果图像由B 输出。 method是采用的插值方法,nearest (缺省 ) 采用最临近插值 (零阶插值) , bilinear 采用双线性插值, bicubic 采用双立方插值。如果省略参数method,则采用最临近插值进行变换。图像旋转: imrotate B = imrotate(A,angle,method) ;将图像按逆时针方向旋转angle 度,结果图像由B 输出。顺时针旋转时 angle 为负。B = imrotate(A,angle,method,crop) ;输出图像B 四边被裁减,使其大小与A 相同。参数 method 同上。2.4 统计运算直方图: imhist imhist(I) ;画图像I 的直方图。图像均值: b = mean2(A) ;计算图像A 的像素平均值,即平均亮度。图像方差: b = std2(A) ;计算图像A 的方差。2.5 图像增强灰度调整: imadjust J = imadjust(I,low_in high_in,low_out high_out,gamma);将图像灰度由low_in high_in 调整到 low_out high_out ,gamma 是调整的线性度,缺省为1,即线性调整。原图像I 必须是 double 型,最大灰度区间为0 1,可以用函数im2double() 将图像转为这种格式。可以用im2uint8() 将结果 J 转为 8 位灰度图像。直方图均衡:J = histeq(I) ;采用直方图均衡对图像I 进行增强。imnoise 2.6 边缘提取edge:实现 6 种不同的边缘提取方法:BW = edge(I,sobel) ; BW = edge(I,sobel,TH) ; BW = EDGE(I,sobel,TH,DIR);采用 Sobel 算子增强后进行边缘提取。TH 是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。 DIR 给定边缘提取的方向,可以是horizontal 、vertical edges、或both (the default) 。BW = EDGE(I,prewitt); BW = EDGE(I,prewitt,TH); BW = EDGE(I,prewitt,TH,DIR) 采用 Prewitt 算子增强后进行边缘提取。TH 是提取边缘的阈值,若不给定该参数,则函数自行确定阈值。 DIR 给定边缘提取的方向,可以是horizontal 、vertical edges、或both (the default)。BW = EDGE(I,roberts) ; BW = EDGE(I,roberts,THRESH) 采用 Rroberts 算子增强后进行边缘提取。THRESH 是提取边缘的阈值,若不给定该参数,则函数自名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 名师整理优秀资源行确定阈值。BW = EDGE(I,log) ;BW = EDGE(I,log,THRESH);BW = EDGE(I,log,THRESH,SIGMA);采用 Marr 算子进行边缘提取。THRESH 是提取边缘的阈值,SIGMA 是标准差,缺省值为2,滤波器尺寸为N=CEIL(SIGMA*3)*2+1。BW = EDGE(I,zerocross,TH,H) ;采用用户给定的滤波器H 进行边缘增强后根据过零点提取边缘。BW = EDGE(I,canny) ; BW = EDGE(I,canny,TH) ;BW = EDGE(I,canny,TH,SIGMA);Canny 方法提取边缘。参数定义同Marr 算子。2.7 二维滤波生成特定的二维数字滤波器:fspecial h = fspecial(type) ;h = fspecial(type,parameters) ;滤波器类型type 可以是:sobel for a Sobel horizontal edge-emphasizing filter prewitt for a Prewitt horizontal edge-emphasizing filter gaussian for a Gaussian lowpass filter laplacian for a filter approximating the two-dimensional Laplacian operator log for a Laplacian of Gaussian filter average for an averaging filter unsharp for an unsharp contrast enhancement filter 对于后边五种类型的滤波器,可以设置相应的滤波器参数parameter,若省略则取各自的缺省值。采用频率抽样法生成二维数字滤波器:fsamp2 h = fsamp2(Hd) ;fsamp2 designs two-dimensional FIR filters based on a desired two-dimensional frequency response sampled at points on the Cartesian plane. h = fsamp2(Hd) designs a two-dimensional FIR filter with frequency response Hd, and returns the filter coefficients in matrix h. (fsamp2 returns h as a computational molecule, which is the appropriate form to use with filter2.) 二维滤波: filter2 B = filter2(h,A) ;对图像A 作二维滤波,滤波器由上述方法产生。中值滤波: medfilt2 B = medfilt2(A,m n);对图像A 作中值滤波,邻域大小由m n 决定,缺省为 3 3。2.8 图像变换fft2 ifft2 dct2 idct2 2.9 邻域及块操作blkproc nlfilter 3. 类型转换rgb2gray 4. Matlab 集成环境及自定义Matlab 函数4.1 Matlab 集成环境Matlab 集成环境的主体是它的“Command Window ” ,可在其中输入并执行各种matlab 操作。 比名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 名师整理优秀资源如输入 matlab 命令 path 并回车,则返回matlab 当前默认的工作路径;若输入 path(path,c:toolsgoodstuff) 并回车,则将文件夹c:toolsgoodstuff 添加到当前默认路径中。matlab6.0 及以上版本可以在集成环境中设置(自己去找)。Matlab 的各种处理功能主要由其自带的工具箱中的函数完成,这些函数均存为“.m”文件,要查看一个函数的简单帮助,可以在命令窗口中使用help 命令,如help SpeRead,给出函数SpeRead的基本用法。注意,SpeRead.m必须存放在matlab 的能够识别的路径中,否则返回错误信息。4.2 自定义 Matlab 函数Matlab 的“ .m”文件实际上是文本格式,既可以是Matlab 函数,也可以是一系列操作指令。例如要打开一幅spe图像并显示,可以在命令窗口中依次执行以下操作:X, W, H, T, H = SpeRead (path_name); % 参数 path_name 是图像文件的路径% 和文件名imshow(X/max(X(:) % 显示图像M1 = mean2(X(round(W/2)-10: round(W/2)+10, round(H/2)-10: round(H/2)+10); % 计算图像中心处大小为21 21 的区域的均值。figure,plot(X(round(W/2),:) % 建立一个新的图形显示窗口,绘制图像中心点处的水平% 截面曲线上述操作可以存为M-file ,文件名可以是matlab 认可的任意字符串,后缀名必须是m。例如“新建”一个 M-file ,输入上述各命令行,存盘,比如存为“try.m” ,那么只要在命令窗口中输入“try”并执行就能完成上述操作。上述 M-file 可以看作是matlab 程序。如果其中一部分操作需要多次执行,或者不同的程序中用到相同的操作,可以将这部分操作写成函数形式。定义 matlab 函数的关键字是function ,格式为:function PO1, PO2, = fun_name(PI1, PI2, ) 其中 PI1, PI2, 是函数的形参, PO1, PO2, 是函数的返回参数。如果函数不返回任何值,则函数定义为: function fun_name(PI1, PI2, )。编辑完成的matlab 函数同样存成M-file , 但此时 M-file 的文件名必须与函数名相同,即 fun_name,函数名可按matlab 变量名的规则指定,即首字符是字母,不能出现运算符等。修改后的M-file 在运行之前应存盘,否则执行的是修改前的版本。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 4 页 - - - - - - - - -