预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用MATLAB进行图像处理 李东晓 MATLAB的矩阵运算可直接用于图像处理 MATLAB图像处理工具箱 可方便地实现各种复杂的图像处理算法 主要可完成如下图像处理功能: 图像的几何操作 邻域和块处理 线性滤波 图像变换 图像分析和增强 图像恢复 图像编码 二值形态学处理等等 2012/9/202 一.MATLAB7.0支持的图像文件格式 2012/9/203 二.读取图像 imread('filename') 例:>>f=imread('lenna512.bmp'); >>f=imread(’D:\myimages\lenna.bmp'); >>f= imread(‘.\myimages\lenna.bmp’); 将BMP图像lenna读入图像数组f 若filename中不包含任何路径信息,则imread 会从当前目录中寻找并读取图像文件,若当前目 录中没有所需要的文件,则会尝试在MATLAB搜 索路径中寻找该文件 2012/9/204 函数size可给出图像的行数和列数: >>size(f) ans= 512512 在可用如下格式获得一幅图像的大小: >>[M,N]=size(f); 该语句将返回图像f的行数(M)和列数(N) 2012/9/205 函数whos可以显示出一个数组的附加信 息 >>whosf 返回: NameSizeBytesClass f512x512262144uint8array Grandtotalis262144elementsusing 262144bytes 2012/9/206 三.显示图像 一般使用函数imshow来显示一幅图像 imshow(f,G) f是要显示的图像数组,G是显示所用的灰度级数 若将G省略,则默认的灰度级数是256 imshow(f,[lowhigh]) 将所有值小于或等于low的像素都显示为黑色, g(x,y) M g所有值大于或等于high的像素显示为白色,值在 low和high之间的像素值将以默认的灰度级数 256显示为中间亮度。 如imshow(f,[20,100]) 0lowhighMff(x,y) 2012/9/207 imshow(f,[]) 将图像的最小值作为low,将图像的最大值作为 high 在显示时自动调整了图像的动态范围 在新窗口显示一幅图像 >>figure,imshow(g) 语句figure用于开一个新的窗口 Imshow也可用于从文件直接显示一幅图像 imshow('boat.bmp') 函数pixval能实现交互地显示单个像素的亮 度值(V7.1改用impixelinfo) 2012/9/208 四.保存图像 用函数imwrite可以将图像写到文件夹中 imwrite(f,'filename') 其中filename中包含的字符串必须带一种可识别 的文件格式扩展 文件格式也可由第三个输入参量明确指定 >>imwrite(f,'cameraman.tif') >>imwrite(f,'cameraman.tif','tif') 若filename中不包含路径信息,则imwrite 将文件保存到当前的工作目录中 2012/9/209 保存为JPEG图像 imwrite(f,'filename.jpg','quality',q) q是一个在0到100间的整数(q越小则,图像质量 越差,压缩越高) 如:imwrite(f,'myimage.jpg','quality',50) 保存窗口中显示图像 用显示窗口菜单上的Save或saveas命令 2012/9/2010 五.MATLAB的图像数据存贮类型 MATLAB用于运算的图像数据类型为双精 度浮点数(double,64位) 但一般图像存贮采用8位或16位无符号整数 ,MATLAB分别采用uint8和uint16类型的 数组存放8位图和16位图 MATLAB还采用logical类型存放二值图像,每个像 素1bit,取值0或1 MATLAB工具箱中函数大多不支持uint8和 uint16类型 运算时一般需要转换成double型 double类图像的取值范围是[0,1] 2012/9/2011 (1)数据类型间的转换 B=data_class_name(A) 例如,B=double(A) 若A是一个uint8类数组,则命令会产生一个双精度数组B。 例如,D=uint8(C) 设C是一个取值范