数字图像处理-Matlab图像处理工具箱_第1页
数字图像处理-Matlab图像处理工具箱_第2页
数字图像处理-Matlab图像处理工具箱_第3页
数字图像处理-Matlab图像处理工具箱_第4页
数字图像处理-Matlab图像处理工具箱_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab图像处理工具箱一、Matlab简介Matlab是MatrixLaboratory的缩写,是当今很流行的科学计算软件。信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用,在诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其他计算问题,,Matlab软件适时推出,为人们提供了一个方便的数值计算平台。Matlab软件主要由主包、Simulink和工具箱3部分组成。1.1Matlab主包(1)Matlab语言Matlab语言是一种基于矩阵/数组的高级语言,它具有流程控制语句、函数、数据结构、输入输出,以及面向对象的程序设计特性。(2)Matlab工作环境Maltlab工作环境集成了许多工具和程序,用户用工作环境中提供的功能完成他们的工作。(3)句柄图形句柄图形是Matlab的图形系统,它包括一些高级命令,用于实现二维和三维数据可视化、图像处理、动画等功能;还有一些低级命令,用来定制图形的显示,以及建立Matlab应用程序的图形用户界面。(4)Matlab数学函数库Matlab数学函数库是数学运算的一个巨大集合,该函数库既包含了各类简单函数,也包含了矩阵转置、特征值、贝塞尔函数、快速傅里叶变换等复杂函数。(5)Matlab应用程序接口(API)Matlab应用程序接口是一个Matlab语言向C和Fortran等其他高级语言进行交互的库,包括读写Matlab数据文件(MAT文件)。1.2Simulink

Simulink是用于动态系统仿真的交互式系统。Simulink允许用户在屏幕上绘制框图模拟一个系统,并能够动态地控制该系统。Simulink采用鼠标驱动方式,能够处理线性、非线性、连续、离散、多变量以及多级系统。此外,Simulink还为用户提供了SimulinkExtensions(扩展)和Blocksets3(模块集)2个附加项。1.3Matlab工具箱

Matlab工具箱是Matlab用来解决各个领域特定问题的函数库,它是开放式的,可以应用,也可以根据需要进行扩展。Matlab提供的工具箱为用户提供了丰富而实用的资源,工具箱的内容非常广泛,涵盖了科学研究的很多门类。目前,已有涉及数学、控制、通信、信号处理、图像处理、经济、地理等多种学科的20多种Matlab工具箱投入应用。

二、Matlab常用的基本命令1.常用矩阵的生成

(1)全0矩阵

A=zeros(n):生成n×n的全0矩阵。A=zeros(m,n):生成m×n的全0矩阵。A=zeros(a1,a2,a3,…):生成a1×a2×a3×…的全0矩阵。A=zeros(size(B)):生成与矩阵B大小相同的全0矩阵。(2)全1矩阵A=ones(n):生成n×n的全1矩阵。A=ones(m,n):生成m×n的全1矩阵。A=ones([m,n]):生成m×n的全1矩阵。A=ones(a1,a2,a3,…):生成a1×a2×a3×…的全1矩阵。A=onse(size(B)):生成与矩阵B大小相同的全1矩阵。(3)单位矩阵

A=eye(n):生成n×n的单位矩阵。A=eye(m,n):生成m×n的单位矩阵。A=eye([m,n]):生成m×n的单位矩阵。A=eye(size(B)):生成与矩阵B大小相同的单位矩阵。

(4)均匀分布的随机矩阵A=rand(n):生成n×n的随机矩阵。A=rand(m,n):生成m×n的随机矩阵。A=rand([m,n]):生成m×n的随机矩阵。A=rand(a1,a2,a3,…):生成a1×a2×a3×…的随机矩阵。A=rand(size(B)):生成与矩阵B大小相同的随机矩阵。(5)正态分布的随机矩阵A=randn(n):生成n×n的随机矩阵。A=randn(m,n):生成m×n的随机矩阵。A=randn([m,n]):生成m×n的随机矩阵。A=randn(a1,a2,a3,…):生成a1×a2×a3×…的随机矩阵。A=randn(size(B)):生成与矩阵B大小相同的随机矩阵。2.简单矩阵的生成在Matlab中,可以采用多种不同的方式生成矩阵。(1)直接输入矩阵元素对于较小的简单矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法。需要遵循以下几个基本原则。①矩阵每行的元素必须用空格或逗号分开;②在矩阵中,采用分号或回车表明每行的结束;③整个输入矩阵必须包含在方括号中。

(2)从外部数据文件调入矩阵元素用Matlab生成的矩阵存储成二进制文件或包含数值数据的文本文件可以生成矩阵。文本文件中,数据必须排成一个数据表,数据之间用空格分隔,文件的每行包含矩阵的一行,并且每行的元素个数必须相等。(3)利用用户文件创建的M文件矩阵用户可以使用M文件生成自己的矩阵。M文件是一种包含Matlab代码的文本文件,这种文件的扩展名为.m,所包含的内容就是把在Matlab的命令行上输入的矩阵生成命令存入一个文件。3.向量的生成Matlab可以采用多种不同的方式生成向量。(1)利用冒号“:”生成向量冒号“:”是Matlab中常用算子之一,不仅可以作数组下标,对数组元素进行引用、增加和删除,还可以用来生成向量。

冒号“:”使用下列格式生成均匀等分向量:x=j:k如果j<k,则生成向量x=[j,j+1,j+2,…,k];如果j>k,则生成空向量x=[];x=j:i:k如果i>0且j<k或i<0且j>k,则生成向量x=[j,j+i,j+2i,…,k];如果i>0且j>k或i<0且j<k,则生成空向量x=[];三、图像处理工具箱简介

Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。从图像的数字化过程可以知道,数字图像实际上就是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。1.图像采集与导出

图像采集工具箱提供了大量的函数用于采集图像和视频信号。该工具箱支持的硬件设备包括工业标准的PC图像采集卡和相应的设备。Matlab的ImageProcessingToolbox支持多种图像数据格式,这些图像文件格式主要有JPEG、TIFF、HDF、HDF.EOS和DICOM。同时,Matlab中还可以导入/导出AVI格式的数据文件,支持其他工业标准的数据文件格式。2.图像分析与增强

Matlab的ImageProcessingToolbox提供了大量的用于图像处理的函数,利用这些函数,可以分析图像数据,获取图像细节信息,并且设计相应的滤波算子,滤除图像数据所包含的噪声。图像处理工具箱还提供了Radon变换(来重构图像,而离散余弦变换(JPEG图像压缩核心算法)可以作为实现新的压缩算法的核心。在图像处理工具箱中还包含了众多数学形态学函数,这些函数可以用于处理灰度图像或者二值图像,可以快速实现边缘检测、图像去噪、骨架提取和粒度测定等算法。此外还包含一些专用的数学形态学函数,例如填充处理、峰值检测、分水岭分割等,且所有的数学形态学函数都可以处理多维图像数据。3.图像处理

图像处理工具箱提供了很多高层次的图像处理函数,这些函数包括排列、变换和锐化等操作。同样,利用这些函数能够完成裁减图像和尺寸变换等操作。4.数据可视化

Matlab本身就是功能强大的数据可视化工具,可以通过各种形式显示分析数据,例如灰度直方图、等高线、蒙太奇混合、像素分析、图层变换及材质贴图等。利用可视化的图形,不仅能够评估图形图像的特性,还能够分析图像中的色彩分布情况。5.算法开发与发布

Matlab允许用户自己开发算法,并且将其封装起来,不断扩展到工具箱函数中。此外,也可以在支持Matlab的平台上共享用户所开发的算法,并将算法同已有的C代码结合在一起,完成算法的发布工作。除此之外,Matlab还可以将用户开发的GUI、图像处理算法等应用程序发布为C或者C++源代码,进而编译生产COM组件或者Java接口,将Matlab开发的算法同其他开发工具结合起来。四、Matlab中的图像类型及类型转换1.图像和图像数据

Matlab中的数字图像是由一个或多个矩阵表示的。这意味着Matlab强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的语法对Matlab中的数字图像同样适用。在缺省的情况下,Matlab将图像中的数据存储为双精度类型(double),即64bit浮点数。这种存储方法的优点在于,使用中不需要数据类型的转换,因为几乎所有的Matlab及其工具箱函数都可以使用double作为参数类型。然而对于图像存储来说,用64bit表示图像数据会导致巨大的存储量,所以Matlab还支持图像数据的另一种类型无符号整型(uint8),即图像矩阵中的每个数据占用1个字节。Matlab及工具箱中的大多数操作及函数(比如最基本的矩阵相加)都不支持uint8类型。uint8的优势仅在于节省存储空间,在涉及运算时将其转换成double型。2.图像处理工具箱所支持的图像类型

图像处理工具箱支持4种图像类型,它们是:真彩色图像(RGBimages)索引色图像(indeximages)灰度图像(intensityimages)二值图像(binaryimages)此外,Matlab还支持由多帧图像组成的图像序列。3.真彩色图像

真彩色图像用R、G、B3个分量表示1个像素的颜色,所以对1个尺寸为m×n的真彩色图像来说,其数据结构就是一个m×n×3的多维数组。如果要读取图像中(100,50)处的像素值,可以查看三元组(100,50,1∶3).真彩色图像可用双精度存储,此时亮度值的范围是[0,1]。比较符合习惯的存储方法是用无符号整型存储,亮度值的范围为[0,255]。图1真彩色图像的结构4.索引色图像

Matlab中的索引色图像包含2个结构,一个是调色板;另外一个是图像数据矩阵。调色板是一个有3列和若干行的色彩映像矩阵,矩阵的每行都代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。需要注意的是Matlab中的调色板的色彩强度是[0,1]中的浮点数,0代表最暗,1代表最亮。图2索引色图像的结构5.灰度图像

存储灰度图像只需要一个数据矩阵,数据类型可以是double,值域为[0,1],也可以是uint8,值域[0,255]。6.二值图像与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有2个灰度值。二值图像可以采用uint8或double类型存储,工具箱中以二值图像作为返回结果的函数都使用uint8类型。图4是一幅二值图像的结构图4二值图像的结构7.图像序列

图像处理工具箱支持将多帧图像连接成图像序列。图像序列是一个四维的数组,图像帧的序号在图像的长、宽、颜色深度之后构成第四维。比如一个包含了5幅400×300真彩色图像的序列,其大小为400×300×5。要将分散的图像合并成图像序列可以使用Matlab的cat函数,前提是各图像的尺寸必须相同,如果是索引色图像,调色板也必须是一样的。

比如要将A1、A2、A3、A4、A5五幅图像合并成一个图像序列A,Matlab语句为A=cat(4,A1,A2,A3,A4,A5)也可以从图像序列中抽出1帧,比如语句FRM3=MULTI(:、:、:、3)是将序列MULTI中的第3帧抽出来赋给矩阵FRM3。8.Matlab图像类型转换

工具箱中提供了许多图像类型转换的函数,从这些函数的名称就可以看出它们的功能。(1)dither函数

功能:图像抖动。格式:X=dither(I1,map)bw=dither(I2)(2)gray2ind函数功能:将灰度图像转换成索引图像。格式:[X,map]=gray2ind(I,n)

(3)grayslice函数功能:通过设定阈值将灰度图像转换成索引色图像。格式:X=grayslice(I,n)X=grayslice(I,v)(4)imb2bw函数

功能:将灰度图像、索引色图像和真彩色图像转化成二值图像。格式:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)(5)ind2gray函数功能:将索引图像转换成灰度图像。格式:I=Ind2gray(X,map)(6)ind2rgb函数

功能:将索引色图像转换成真彩色图像。格式:RGB=ind2rgb(X,map)(7)mat2gray函数

功能:将一个数据矩阵转换成一幅灰度图像。格式:I=mat2gray(A,[aminamax])I=mat2gray(A)(8)rgb2gray函数功能:将一幅真彩色图像转换成灰度图像。格式:I=rgb2gray(RGB)newmap=rgb2gray(map)(9)rgb2ind函数功能:将真彩色图像转换成索引色图像。格式:RGB=rgb2ind(X,map)

9.图像文件的读写和查询

Matlab为用户提供了特殊的函数,用于从图像格式的文件中读写图像数据。其中,读取图形文件格式的图像需要用imread函数,写入一个图形文件格式的图像需要调用imwrite函数;而获取图形文件格式的图像的信息需要调用imfinfo\ind2rgb函数,以Mat文件加载或保存矩阵数据用load\save函数,显示加载到Matlab中的图像用image\imagesc。

(1)图形图像文件的读取利用函数imread可以完成图形图像文件的读取操作,其语法如下:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[…]=imread(filename)[…]=imread(filename,idx)(只对TIF格式的文件)[…]=imread(filename,ref)(只对HDF格式的文件)

imread函数可以从任何Matlab支持的图形文件中以特定的位宽读取图像。通常情况下,读取的大多数图像均为8bit。当这些图像加载到内存中时,Matlab就将其存储在类uint8中。此外,Matlab还支持16bit的PNG和TIF图像,所以,当读取这类文件时,Matlab就将其存储在类uint16中。需要注意的是,对于索引图像来说,即使图像阵列的本身为类uint8或类uint16,imread函数仍然将颜色映像表读取并存储到一个双精度的浮点类型的阵列中。(2)图形图像文件的写入(保存)

利用imwrite函数可以完成图形图像文件的读取操作,其语法如下imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwrite(...,parameter,value)当利用imwrite函数保存图像时,Matlab缺省的保存方式就是将其简化到uint8的数据格式。在Matlab中使用的许多图像都是8bit,并且大多数的图像文件并不需要双精度的浮点数据。与读取图形图像文件类似,Matlab就将其存储在16bit的数据中。(3)图形图像文件信息的查询

Matlab提供了imfinfo函数用于从图像文件中查询其信息。所获取的信息依文件类型的不同而不同。但是不管哪种类型的图像文件,至少包含下面的内容。文件名。(如果该文件不在当前路径下,还包含该文件的完整路径。)文件格式;文件格式的版本号;文件修改时间;文件的字节大小;图像的宽度(像素);图像的长度(像素);每个像素的位数;图像类型。即该图像是RGB(真彩)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论