资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,实验一:Matlab图像处理工具箱,针对不同的领域需要不同的图像处理算法,,因此掌握一门高级语言来编写自己的图像处理,程序,,MATLAB,无疑是一个不错的选择。,2.1 Matlab简介,Matlab(Matrix Laboratory)是当今很流行的,科学计算软件。信息技术、计算机技术发展到今,天,科学计算在各个领域得到了广泛的应用,在,诸如,控制论,、,时间序列分析,、,系统仿真,、,图像信,号处理,等方面产生了大量的矩阵及其他计算问,题。Matlab软件适时推出,为人们提供了一个,方便的数值计算和动态仿真平台。,Matlab简介-特点,1 高效、简单的程序环境,2 强大的数值运算功能,3 丰富的工具箱,Matlab是一个交互式的系统,其开发环境是MATLAB语言的基础和核心部分,全部功能都能在开发环境中实现。,提供大量的矩阵及其它运算函数,方便地进行一些很复杂的计算,而且运算效率极高。Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握。,根据各专门领域中的特殊需要提供了许多可选的工具箱,已有涉及数学、控制、通信、信号处理、图像处理、经,济、地理等多种学科的20多种Matlab工具箱投入应用。,可以在提示符后键入各种命令,变量管理中心,可以显示变量的名称、尺寸、字节和类别等信息。,提供当前路径下文件的操作。,显示已执行过的命令及相应时间。,系统中全部程序和帮助文件的管理和启动功能。,Matlab简介-开发环境,Matlab简介-M文件,Matlab通常使用命令驱动方式,当单行命令输,入时,Matlab立即处理并显示结果,同时将运行,说明和命令存入历史命令窗口。Matlab语句的磁,盘文件称作M文件,因为这些文件名的末尾是,.M,形式。,M文件有两种类型:,命令,(Script)文件,函数,(function)文件,2.1 MATLAB基础语法,2.1.1 变量名的命名规则,1.必须以字母开头,后可跟字母,数字和下划线,2.区分大小写,3.不超过31个字符,Matlab常用命令,clear,工作空间中清除所有变量,clc,清除命令窗口中显示内容,help,获得在线帮助,命令 功能,clf,清除图形窗口内容,who,列出当前工作空间中的变量,whos,列出当前工作空间中的变量及信息,2.2 Matlab常用的基本命令,(1)全0矩阵,A=,zeros,(n):生成nn的全0矩阵;,A=zeros(m,n):生成mn的全0矩阵;,A=zeros(a1,a2,a3,):生成a1a2a3的全0 矩,A=zeros(size(B):生成与矩阵B大小相同的全0矩阵。,1.常用矩阵的生成,(2)全1矩阵,A=,ones,(n):生成nn的全1矩阵;,A=ones(m,n):生成mn的全1矩阵;,A=ones(m,n):生成mn的全1矩阵;,A=ones(a1,a2,a3,):生成a1a2a3的全1矩阵;,A=onse(size(B):生成与矩阵B大小相同的全1矩阵。,(3)单位矩阵,A=,eye,(n):生成nn的单位矩阵;,A=eye(m,n):生成mn的单位矩阵;,A=eye(m,n):生成mn的单位矩阵;,A=eye(size(B):生成与矩阵B大小相同的单位矩阵。,(4)均匀分布的随机矩阵,A=,rand,(n):生成nn的随机矩阵;,A=rand(m,n):生成mn的随机矩阵;,A=rand(m,n):生成mn的随机矩阵;,A=rand(a1,a2,a3,):生成a1a2a3的随机矩阵;,A=rand(size(B):生成与矩阵B大小相同的随机矩阵。,*,x=1 2 3 4 5%产生15的数组,*,b=x(3)%寻访数组x的第3个元素,*,b=x(1 2 5)%寻访x的第1、2、5元素,*,b=x(1:3)%寻访前三个元素,*,b=x(3:end)%寻访第三个元素到最后一个,*,b=x(find(x3)%由大于3的元素构成数组,*,b=x(3:-1:1)%由前3个数倒排成数组,*,b=x(1 2 3 4 4 3 2 1)%对元素的重复访问,2.寻访矩阵中的数据,*,x=1,2,3;4,5,6;7,8,9%产生33的矩阵,*,b=x(find(x4)%大于4的元素构成数组,*,x(2,2)=10%第2行第2列值改为10,*,x(3,:)=20%第3行的值改为20,*,x=ones(5)%产生55全为1的矩阵,*,x(2:4,2:4)=0%第2、3、4行的第2、3、4列元素改0,3.修改数据,A=3:6;1:4%产生24的矩阵,s=size(A)%返回s为行数 列数,r,c=size(A)%返回r为行数,c为列数,r=size(A,1)%只返回行数,c=size(A,2)%只返回列数,n=length(A)%返回行数、列数最大者,5.矩阵的规模,2.3 图像处理工具箱简介,Matlab是一种,基于向量(数组),而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。,Matlab对图像的处理功能主要集中在它的,图像处理工具箱,(Image Processing Toolbox)中。,图像处理工具箱是由一系列支持图像处理操作的,函数,组成,可以进行诸如,几何操作,、,线性滤波,和,滤波器设计,、,图像变换,、,图像分析,与,图像增强,、,数学形态学处理,等图像处理操作。,图像处理工具箱主要有:,Image Acquisition Toolbox,Image Processing Toolbox,Signal Processing Toolbox,Wavelet Toolbox,Statistics Toolbox,Bioinformatics Toolbox,Matlab Compiler,Matlab COM builder,2.4 Matlab中的图像类型及类型转换,Matlab中的数字图像是由一个或多个矩阵表示的,Matlab强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的,语法,对Matlab中的数字图像同样适用。,2.4.1 图像和图像数据,缺省:double(64位浮点数)uint8(无符号8位整型),2.4.2 图像处理工具箱所支持的图像类型,图像处理工具箱支持4种图像类型,它们是:,真彩色图像,(RGB images),索引色图像,(index images),灰度图像,(intensity images),二值图像,(binary images),此外,Matlab还支持由多帧图像组成的,图像序列,。,2.4.4 图像文件的显示,Matlab 7.0图像处理工具箱提供了一个高级的图像显,示函数,imshow,。其语法格式如下,,灰度图像 imshow(I),imshow(I,n),imshow(I,low high),其中n为灰度级数目,缺省值为256。low high为图像数据的值域。,2.灰度图像及其显示,一幅灰度图像是一个数据矩阵 I,其中数据均代表了,在一定范围内的颜色灰度值。Matlab 把灰度图像用数,据矩阵的形式进行存储,每个元素则表示了图像中的每,个像素。矩阵元素可以是doudle、uint8整数类型。,多数情况下,灰度图像很少和颜色映像表一起保存,,但在显示灰度图像时,Matlab 仍然在后台使用,系统预,定义的缺省灰度颜色映像表。,(1)灰度图像显示最基本的调用格式,imshow(I),Matlab 中 imshow函数使用一个灰度级系统调色板,(R=G=B),来显示灰度图像。如果I是double型,若,像素值为0.0,则显示为黑色,1.0则显示为白色,0.0,和1.0之间的像素值将显示为灰影。,imshow函数显示灰度图像,imshow(I,n),例如,:以下语句将显示一幅32个灰度级的图像I。,imshow(I,32),(2)使用明确指定的灰度级数目,(3)某些情况下,可能将一些超出数据惯例范围的数,据显示为一幅灰度图像,对于double型数组为0,1,对于uint8型数组为,0,255,为了将超过数据范围的数据显示为图像,用户可以直,接定义数据范围,其调用格式如下,,imshow(I,low high),其中low、high分别为数据的最小和最大值。,如果用户使用一个空矩阵 指定数据范围,imshow将,自动进行数据标度。,补充:多幅图像文件的显示,figure,imshow,功能:新建一个图像窗口,用于显示新图像(从而,不让新的图像覆盖原来图像)。,1.创建新的图像窗口,每个图像显示在一个窗口中,调用imshow函数显示图像,如下页图所示。,I=imread(rice.png);,J=filter2(1 2;-1-2,I);%用模板1 2;-1-2对,图像滤波,imshow(I),figure,imshow(J,),思考,:如果没有figure的话,将产生什么结果?,用imshow显示滤波前后的图像,subplot(m,n,k),imshow,%绘制并显示m行n 列第k个子图,例:,X1=imread(rice.png);,X2=imread(coins.png);,X3=imread(bag.png);,subplot(1,3,1),imshow(X1),subplot(1,3,2),imshow(X2),subplot(1,3,3),imshow(X3),2.用子图、多个图像显示在一个图像窗口中,子图显示效果,图像的运算,imadd(X,Y);,Y可以是另一幅图像,也可以是一个常数。,例1,:,I=imread(rice.png);,J=imread(cameraman.tif);,K=imadd(I,J);,subplot(1,3,1),imshow(I);,subplot(1,3,2),imshow(J);,subplot(1,3,3),imshow(K),图像的加法,例2:,实现亮度的增加,RGB=imread(greens.jpg);,RGB1=imadd(RGB,50);,subplot(1,2,1);imshow(RGB);,subplot(1,2,2);imshow(RGB1);,图像的减法,Z=imsubtract(X,Y);,计算X与Y的像素之差,负数将被截取为0。,Z=imabsdiff(X,Y);,计算X与Y的像素之差的绝对值,结果为非负的。,图像的空间变换,将输入图像的像素映射到输出图像的新位置,如调整,图像大小、旋转、剪切等。,调整图像的大小-imresize,Y=imresize(X,M);,其中M,1表示放大,0,M,1表示缩小。,Y=imresize(X,M N);,产生一个指定的M,N大小的图像Y。,图像的旋转-imrotate,Y=imrotate(X,angle,method);,Y=imrotate(X,angle,method,crop);,其中angle为逆时针旋转的角度,method为插值方法,指定crop参数对旋转后的图像进行剪切。,例:,I=imread(lena.bmp);,J1=imrotate(I,45);J2=imrotate(I,45,crop);,subplot(1,3,1),imshow(I);,subplot(1,3,2),imshow(J1);,subplot(1,3,3),imshow(J2);,
展开阅读全文