内容发布更新时间 : 2024/12/25 0:31:39星期一 下面是文章的全部内容请认真阅读。
伪装侦察;手迹、人像、印章的鉴定识别;过期档案文字的复原;集装箱的不开箱检查等。
(5)其他应用
图像的远距离通信;多媒体计算机系统及应用;电视电话;服装试穿显示;理发发型预测显示;电视会议;办公自动化、现场视频管理等。
2.3 图像处理文件格式
2.3.1 MATLAB图像文件格式
MATLAB支持以下几种图像文件格式:
(1)PCX(Windows Paintbrush)格式。可处理1,4,8,16,24位等图像数据。文件内容包括:文件头(128字节),图像数据、扩展颜色映射表数据。
(2)BMP(Windows Bitmap)格式。有1,4,8,24位非压缩图像,8位RLE(Run-length Encoded )图像。文件内容包括:文件头(一个BITMAP FILEHEADER数据结构),位图信息数据块(位图信息头BITMAP INFOHEADER和一个颜色表)和图像数据。
(3)HDF(Hierarchical Data Format)格式。有8位,24位光栅数据集。
(4)JPEG(Joint Photographic Experts Group)格式,是一种成为联合图像专家组的图像压缩格式。
(5)TIFF(Tagged Image File Format)格式。处理1,4,8,24位非压缩图像,1,4,8,24位packbit压缩图像,一位CCITT压缩图像等。文件内容包括:文件头,参数指针表与参数域,参数数据表和图像数据四部分。
(6)XWD(X Windows Dump)格式。1,8位Zpixmaps,XYbitmaps,1
11
位XYpixmaps。
(7)PNG(Portable Network Graphics)格式。
2.3.2 图像类型
MATLAB中,一幅图像可能包含一个数据矩阵,也可能包含一个颜色映射表矩阵。MATLAB中有四种基本的图像类型:
(1)索引图像
索引图像包括图像矩阵与颜色图数组,其中,颜色图是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵包含一个值,这个值就是颜色图中的索引。颜色图为m*3双精度值矩阵,各行分别指定红绿蓝(RGB)单色值。Colormap=[R,G, B],R,G,B为值域为[0,1]的实数值。
图像矩阵与颜色图的关系依赖于图像矩阵是双精度型还是uint8(无符号8位整型)类型。如果图像矩阵为双精度类型,第一点的值对应于颜色图的第一行,第二点对应于颜色图的第二行,依次类推。如果图像矩阵是uint8,有一个偏移量,第0点值对应于颜色图的第一行,第一点对应于第二行,依次类推;uint8长用于图形文件格式,它支持256色。
(2)灰度图像
在MATLAB中,灰度图像是保存在一个矩阵中的,矩阵中的每一个元素代表一个像素点。矩阵可以是双精度类型,其值域为[0,1];也可以为uint8类型,其数据范围为[0,255]。矩阵的每个元素代表不同的亮度或灰度级。
(3)二进制图像
二进制图像中,每个点为两离散值中的一个,这两个值代表开或关。二进制图像保存在一个由二维的由0(关)和1(开)组成的矩阵中。从
12
另一个角度讲,二进制图像可以看成为一个仅包括黑与白的灰度图像,也可以看作只有两种颜色的索引图像。
二进制图像可以保存为双精度或uint8类型的双精度数组,显然使用uint8类型更节省空间。在图像处理工具箱中,任何一个返回二进制图像的函数都是以uint8类型逻辑数组来返回的。
(4)RGB图像
与索引图像一样,RGB图像分别用红,绿,蓝三个亮度值为一组,代表每个像素的颜色。与索引图像不同的是,这些亮度值直接存在图像数组中,而不是存放在颜色图中。图像数组为M*N*3,M,N表示图像像素的行列数。
13
3 MATLAB基本知识介绍
3.1 MATLAB的概述
MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。
MATLAB包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.
开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.
3.2 MATLAB产生的历史背景
在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.
到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK
14
程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传.
1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.
1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发.
在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位.
在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很
15