1、MATLAB图像处理基础图像处理基础典型桌面:典型桌面:1MATLAB图像处理基础图像处理基础一一.读取图像读取图像:将图像:将图像rose-orginal.tif读入图像数组读入图像数组f f=imread(.rose-original.tif);显示图像大小信息:显示图像大小信息:size(f)ans=1024 1024或者将大小信息赋给变量:或者将大小信息赋给变量:M,N=size(f);whos显示更为详细的信息:显示更为详细的信息:whos f Name Size Bytes Class f 1024x1024 1048576 uint8 arrayGrand total is 10
2、48576 elements using 1048576 bytes2MATLAB图像处理基础图像处理基础二二.显示图像显示图像:imshow(f)指定显示的灰度范围指定显示的灰度范围 figure,imshow(f,100 200)情况下显示图像的整个情况下显示图像的整个动态范围:动态范围:figure,imshow(f,)3MATLAB图像处理基础图像处理基础三三.将图像写入磁盘将图像写入磁盘:imwrite(f,rose.jpg)对于对于JPEG压缩格式,可指定质量因子:压缩格式,可指定质量因子:imwrite(f,rose.jpg,quality,25)6quality=100qual
3、ity=50quality=5MATLAB图像处理基础图像处理基础显示图像信息:显示图像信息:imfinfo rose.jpg7MATLAB图像处理基础图像处理基础计算压缩率:将图像信息存储在结构变量中以方计算压缩率:将图像信息存储在结构变量中以方便运算。便运算。8 K=imfinfo(rose.jpg);image_bytes=K.Width*K.Height*K.BitDepth/8;compressed_bytes=K.FileSize;compression_ratio=image_bytes/compressed_bytescompression_ratio=30.0340 文件读写
4、无格式文件数据的读写:fopen,fread,fwrite,fclosemat文件数据的读写:load,save有格式文件数据的读写:imread,imwrite剪切任意形状区域:imshow(f),pixval,c=354 858 2147 2290 776 367,r=3 7 363 2901 3262 3258,BW=roipoly(f,c,r),b=f.*uint8(BW),imview(b)MATLAB图像处理基础图像处理基础四四.MATLAB中的数据类型中的数据类型:10类型名称类型名称描述描述double双精度浮点类型,双精度浮点类型,8字节(字节(MATLAB数值运算基本类型)
5、数值运算基本类型)uint8无符号无符号8位整数(位整数(8位数字图像所用类型)位数字图像所用类型)uint16无符号无符号16位整数(位整数(16位数字图像所用类型)位数字图像所用类型)uint32无符号无符号32位整数位整数int8有符号有符号8位整数位整数int16有符号有符号16位整数位整数int32有符号有符号32位整数位整数single单精度浮点类型,单精度浮点类型,4字节字节char字符类型,字符类型,2字节(字节(Unicode编码)编码)logical逻辑类型(逻辑类型(0或或1),),1字节(二值图像所用数据类型)字节(二值图像所用数据类型)数数值值类类型型MATLAB图像
6、处理基础图像处理基础五五.MATLAB中的图像类型中的图像类型:灰度图像灰度图像(intensity images):元素取值代表灰度级的):元素取值代表灰度级的矩阵。采用不同数据类型时取值范围:矩阵。采用不同数据类型时取值范围:uint8:0,255,uint16:0,65535,double:0,1。二值图像二值图像(binary images):元素取值为):元素取值为0或或1的的逻辑逻辑矩阵。矩阵。注意注意:取值:取值0或或1的数值类型矩阵在的数值类型矩阵在MATLAB中不认为中不认为是二值图像,必须进行转换:是二值图像,必须进行转换:B=logical(A)上述运算将上述运算将A中所
7、有非中所有非0值变为逻辑值值变为逻辑值1。11MATLAB图像处理基础图像处理基础六六.图像类型的相互转换图像类型的相互转换:下表中的函数在图像类型转换:下表中的函数在图像类型转换中会进行必要的数据比例变换。中会进行必要的数据比例变换。12 f=-0.5 0.5;0.75 1.5f=-0.5000 0.5000 0.7500 1.5000 g=im2uint8(f)g=0 128 191 255im2unit8将输入将输入double类型数据中小于类型数据中小于0的的数转换为数转换为0,大于,大于1的数转换为的数转换为255,其余数,其余数据乘以据乘以255再四舍五入到最近整数。再四舍五入到最
8、近整数。MATLAB图像处理基础图像处理基础将将double类型任意矩阵转换为类型任意矩阵转换为double类型图像:类型图像:g=mat2gray(A,Amin,Amax);A中小于中小于Amin的数据变为的数据变为0,大于,大于Amax的数据变为的数据变为1。g =mat2gray(A);则将则将Amin和和 Amax分别设为分别设为A 中元素的最小值和最大值。中元素的最小值和最大值。im2double将图像转换为将图像转换为double类型。如果输入数据已经类型。如果输入数据已经是是double类型,则不对输入数据做任何改变。因此,对于类型,则不对输入数据做任何改变。因此,对于doubl
9、e类型的图像转换,应该使用类型的图像转换,应该使用mat2gray。13 h=uint8(25 50;128 200);g=im2double(h)g=0.0980 0.1961 0.5020 0.7843im2double将输入的将输入的uint8型数据型数据除以除以255,将输入的,将输入的uint16型数型数据除以据除以65535。MATLAB图像处理基础图像处理基础im2bw将灰度图像转换为二值图像。一般形式:将灰度图像转换为二值图像。一般形式:g=im2bw(f,T);将灰度图像将灰度图像f利用门限值利用门限值T转换为二值图像转换为二值图像g。f中中小于小于T的像素值转为逻辑值的像素
10、值转为逻辑值0,其余像素值转为逻,其余像素值转为逻辑值辑值1。T的取值范围是的取值范围是0,1。以下形式默认。以下形式默认T=0.5:g=im2bw(f);14MATLAB图像处理基础图像处理基础几个例子:几个例子:(a)将将double类型图像类型图像f=1 2;3 4转换为二值图像,使其转换为二值图像,使其第一行为第一行为0,第二行为,第二行为1。15 f=1 2;3 4f=1 2 3 4 g=mat2gray(f)g=0 0.3333 0.6667 1.0000 gb=im2bw(g,0.5)gb=0 0 1 1此处更为简单的方法:此处更为简单的方法:gb=f 2gb=0 0 1 1MA
11、TLAB图像处理基础图像处理基础(b)将二值图像将二值图像gb=0 0;1 1转换为转换为double类型图像。类型图像。注意,如果注意,如果gb为为uint8类型类型图像,则转换结果有所不图像,则转换结果有所不同:同:16 gbd=im2double(gb)gbd=0 0 1 1 gb=uint8(gb)gb=0 0 1 1 gbd=im2double(gb)gbd=0 0 0.0039 0.0039MATLAB图像处理基础图像处理基础图像处理的几个简单例子:图像处理的几个简单例子:17原图像(原图像(1024102410241024)rose-original.tif将原图像垂直翻转:将原
12、图像垂直翻转:f=imread(rose-original.tif);fp=f(end:-1:1,:);imwrite(fp,rose-verflip.tif);MATLAB图像处理基础图像处理基础18提取图像的一部分:提取图像的一部分:fc=f(257:768,257:768);imwrite(fc,rose-cut.tif);将图像亚采样为二分之一:将图像亚采样为二分之一:fs=f(1:2:end,1:2:end);imwrite(fs,rose-sample.tif);分析图像中间一行灰度分布:分析图像中间一行灰度分布:plot(f(512,:)MATLAB图像处理基础图像处理基础图像放
13、缩图像放缩:利用函数:利用函数imresize可实现图像放缩,一般形式可实现图像放缩,一般形式为:为:h=imresize(f,m,method);h为待放缩图像,为待放缩图像,m为倍数(小于为倍数(小于1为缩小,大于为缩小,大于1为放大),为放大),method为插值方法,取值为为插值方法,取值为nearest,bilinear,或或bicubic。19原图像(原图像(300300300300)lena.jpglena.jpg f=imread(lena.jpg);h=imresize(f,0.1,bilinear);imwrite(h,lena01.jpg);MATLAB图像处理基础图像处
14、理基础20双线性插值放大:双线性插值放大:hb=imresize(h,10,bilinear);imwrite(hb,lenahb.tif);最近邻插值放大:最近邻插值放大:hn=imresize(h,10,nearest);imwrite(hn,lenahn.tif);一些重要的标准数组一些重要的标准数组:zeros,ones,ture,false,magic,rand,randn一些重要的变量和常量:一些重要的变量和常量:ans,eps,i,j,pi,NaN,nan,realmax,realmin,computer,version编写编写m文件:文件:Function outputs=functionname(inputs)21MATLAB图像处理基础图像处理基础一些重要的函数与命令一些重要的函数与命令:ndims,error,numel,sprintf,break,continue 代码优化:代码优化:1、向量运算替代循环(、向量运算替代循环(30 times fast)2、预分配数组或变量,减少存储器碎片与动、预分配数组或变量,减少存储器碎片与动态分配耗时态分配耗时3、减小、减小I/O操作操作:disp,input,结构体:结构体:S.char=gauss,S.matrix=zeros(2),S.scalar=322MATLAB图像处理基础图像处理基础