my MATLAB.docx
- 文档编号:11528437
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:26
- 大小:986.35KB
my MATLAB.docx
《my MATLAB.docx》由会员分享,可在线阅读,更多相关《my MATLAB.docx(26页珍藏版)》请在冰点文库上搜索。
myMATLAB
课程设计任务书
学生姓名:
鲁敬敬专业班级:
通信1105班
指导教师:
工作单位:
信息工程学院
利用MATLAB仿真软件进行图像的输入、输出和格式变换
设计要求
读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换
时间安排:
1、2014年12月23日,布置课设具体实施计划与课程设计报告格式的要
求说明。
2、2014年1月1日至2014年1月4日,方案选择和程序设计。
3、2014年1月5日至2014年1月9日,程序调试和设计说明书撰写。
4、2014年1月11日,上交课程设计成果及报告,同时进行答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要3
Abstract4
1MATLAB支持的几种图像文件格式5
2MATLAB几种图像类型6
3图像的保存9
4图像的输入10
4.1图像输入函数10
4.2图像输入函数举例11
5图像的输出12
5.1图像输出函数12
5.2图像输出举例13
5.2.1显示灰度图13
5.2.2显示索引图14
5.2.3显示RGB图15
5.2.4显示文件中的图像16
5.2.5特殊图像显示技术--添加颜色条17
6图形类型转换19
6.1灰度图转换成二进制图19
6.2灰度图转换成索引图20
6.3RGB图转换成索引图21
6.4RGB图转换成灰度图23
6.5索引图转换为灰度图24
6.6索引图转换为RGB图25
课程设计总结26
参考文献27
摘要
MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。
作为强大的科学计算平台,它几乎能够满足所有的计算需求。
MATLAB本身就是功能强大的数据可视化工具,可以通过各种形式显示分析数据,例如灰度直方图、等高线、蒙太奇混合、像素分析、图层变换以及材质贴图等。
利用可视化的图形,不仅能够评估图形图像的特性,还能够分析图像中的色彩分布等情况。
本次课程设计介就是MATLAB环境下的一些最基本的图像处理操作,如读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换
关键词:
MATLAB图像处理图像格式变换
Abstract
MATLABisascientificcomputinglanguagethataddsthefunctionofnumericalcomputingandgraphicsprocessing,symbolstogether.Asapowerfulscientificcomputingplatforms,itcanalmostsatisfyallthecalculationsthatneeds.MATLABitselfisapowerfultoolofdatavisualizationthatcandisplaydatathroughvariousforms,suchasgraylevelhistogram,contours,montagemixing,pixelanalysis,thelayertextureandtransformation.Withvisualgraphics,itcannotonlyevaluateimagecharacteristics,butalsoanalyzethedistributionofcolorimage.
ThepurposeofthepracticeofintroducingMATLABenvironmentisthemostbasicofsomeimageprocessingoperations,suchasread,write,imageinformationandimageformat,sizeandgraytelescopic;etc.Throughtheexperimentmasteryofimagehistogramsdepictsmethod,deepenthehistogramimagefeatureandtherelationshipbetweentheshapeofunderstanding,andtodeepentheunderstandingofhistogramequalizationalgorithm.
Keywords:
MATLABimageprocessingimageformatconversion
1MATLAB支持的几种图像文件格式
⑴JPEG(JointPhotogyaphicExpeytsGroup):
一种称为联合图像专家组的图像压缩格式。
⑵BMP(WindowsBitmap):
有1位、4位、8位、24位非压缩图像,8位RLE(RunlengthEncoded)的图像。
文件内容包括文件头(一个BITMAPFILEHEADER数据结构)、位图信息数据块(位图信息头BITMAPINFOHEADER和一个颜色表)和图像数据。
⑶PCX(WindowsPaintbrush):
可处理1位、4位、8位、16位、24位等图像数据。
文件内容包括文件头、图像数据和扩展色图数据。
⑷TIFF(TaggedIamgeFileFormat):
处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。
文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。
⑸PNG(PortableNetworkGraphics):
包括1位、2位、4位、8位和16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。
⑹GIF(GraphicsInterchangeFormat):
任何1位到8位的可交换的图像。
⑺HDF(HierarchialDataFormat):
有8位、24位光栅图像数据集。
⑻ICO(WindowsIconresource):
有1位、4位、8位非压缩图像。
⑼CUR(WindowsCursorresource):
有1位、4位、8位非压缩图像。
⑽XWD(XWindowsDump):
包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。
⑾RAS(SunRasterimage):
有1位bitmap、8位索引、24位真彩色和带有透明度的32位真彩色。
⑿PBM(PortableBitmap)。
⒀PGM(PortableGraymap)。
⒁PPM(PortablePixmap)。
2MATLAB几种图像类型
MATLAB支持五种图像类型,即二值图像、索引图像、灰度图像、RGB图像和多帧图像阵列。
(1)索引图像包括一个数据矩阵X,一个颜色映像矩阵Map。
其中Map是一个包含三列、若干行的数据阵列,其中每个元素的值均为[0,1]之间的双精度浮点型数据。
Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。
在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。
像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,例如,值1指向矩阵Map中的第一行,值2指向第二行,以此类推。
颜色映射表通常和索引图像存在一起,当用户在调用函数imread时,MATLAB自动将颜色映射表与图像同时加载,在MATLAB中可以选择所需要的颜色映射表,而不必局限于使用默认的颜色映射表。
我们可以使用属性CDataMapping来选取其他的颜色映射表,包括用户自定义的颜色映射表。
如果图像数据矩阵是双精度的数据类型,则值1指向矩阵Map中的第一行,值2指向第二行,但如果图像矩阵是8位无符号的整数类型或16位无符号的整数类型,则由于存在一个偏移量,因而使值0指向矩阵Map中的第一行,以此类推。
表1索引图像的特征
双精度类:
Double
(每个元素占8个字节)
整数类:
Unit8
(每个元素占1个字节)
整数类(Unit16)
(每个元素占2个字节)
索引图像
图像数组大小:
m×n
图像元素取值:
[1,p]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素取值:
[0,p-1]
色度矩阵:
p×3
色度元素值:
[0,255]
图像数组大小:
m×n
图像元素取值:
[0,p-1]
色度矩阵:
p×3
色度元素值:
[0,65535]
图1索引图像对应的色度元素值
(2)在MATLAB中,一幅灰度图像是一个数据矩阵I,I中的数据均代表了在一定范围内的图像灰度值。
MATLAB把灰度图像存储为一个数据矩阵,该矩阵中的元素分别代表了图像中的像素。
矩阵中的元素可以是双精度的浮点类型、8位或16位无符号的整数类型。
大多数情况下,灰度图像很少和颜色映射表一起保存,但是在显示灰度图像时,MATLAB仍然在后台使用系统预定义的默认灰度颜色映射表。
表2灰度图像的特征
灰
度
图
像
图像数组大小:
m×n
图像元素值:
[0,1]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素值:
[0,255]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素值:
[0,65535]
色度矩阵:
p×3
色度元素值:
[0,1]
图2灰度图像的色度元素值
(3)二值图像:
在二进制图像中,像素的取值为两个离散数值0或1中的一个,分别代表黑与白。
表3二值图像的特征
二
值
图
像
图像数组大小:
m×n
图像元素值:
0或1
图3二值图像的元素值
(4)RGB图像即真彩色图像,在MATLAB中存储为n×m×3的数据矩阵。
数组中的元素定义了图像中的每一个像素的红、绿、蓝颜色值。
需指出的是,RGB图像不是用windows的颜色映射表,像素的颜色由保存在像素位置上的红、绿、蓝的灰度值的组合来确定。
图形文件格式把RGB图像存储为24位的图像,红、绿、蓝分别占8位,这样可以有1000多万种颜色。
表4RGB图像的特征
双精度类:
Double
(每个元素占8个字节)
整数类:
Unit8
(每个元素占1个字节)
整数类(Unit16)
(每个元素占2个字节)
真
彩
图
像
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,1]
(无调色板)
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,255]
(无调色板)
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,65535]
(无调色板)
图1-4RGB图像的色度元素值
3图像的保存
图像的保存一般有四种方式:
(1)在Figure窗口选择File--Saveas,保存图像,可以保存为fig,egs,jpeg,gif,png,bmp等格式
(2)在Figure窗口选择Edit--->copyfigure,可以将图像复制,再粘贴其他程序,例如,可以粘贴到WORD文档中。
(3)利用Saveas函数保存图像,Saveas函数语法如下:
1)Saveas(h,'filename.ext'):
将图像或带有h手柄文件的Simulink框图保存到filename.ext,文件的格式由分机决定。
2)Saveas(h,'filename','format')将图像或带有h手柄文件的Simulink框图按照一定格式保存到指定文件中。
(4)利用Print函数保存图像。
(5)利用Print函数保存图像,函数格式如下:
imwrite(A,’filename’,’fmt’):
保存无调色板的图像
imwrite(X,map,’filename’,’fmt’):
保存有调色板的图像
imwrite(…,’filename’):
文件名中含格式
imwrite(…,Param1,Vall,Param2,Val2,…):
指定保存参数
(其中imwrite(…,Param1,Val1,Param2,Val2…)可以让用户控制HDF、JPEG、TIFF等一些图像文件格式的输出特性。
)
在MATLAB中,默认的保存类型是uint8。
由于PNG和TIFF格式支持16位的图像,所以保存这类图像时,保存类型就是uint16。
文件格式:
bmp、jpg、pcx、tif。
【例】使用imwrite函数将tif图像保存为jpg图像
[x,map]=imread('trees.tif');
imwrite(x,map,'trees.tif','JPG','Quality',75)
4图像的输入
4.1图像输入函数
在MATLAB中,可以使用imread函数读取程序支持格式的文件该命令相应的格式如下:
(1)A=imread(filename,fmt)
读取由字符串filename指定的文件灰度或彩色图像。
如果该文件不在当前文件夹中,或在MATLAB的路径的文件夹,指定完整的路径名。
文本字符串FMT指定的文件通过其标准的文件扩展名的格式。
返回值A为含有图像数据的数组。
如果该文件包含一个灰度图像,A是一个M-N的数组。
(2)[X,map]=imread(filename)
读取相应文件名的索引图像到X和其相关联的颜色映射到map。
在图像文件中的颜色表的值会自动重新调整到范围[0,1]。
(3)[...]=imread(filename)
试图从它的内容推断出该文件的格式。
(4)[...]=imread(URL,...)
读取来自InternetURL的形象。
URL必须包含协议类型(例如,包含http:
//)。
(5)[...]=imread(...,Param1,Val1,Param2,Val2...)
控制特定格式的操作的各种特性的参数。
4.2图像输入函数举例
采用上述[X,map]=imread(filename)图像输入函数输入图像
【例】
[X,map]=imread('trees.tif');%读取名为“trees.tif”的索引图到X,与其相关的颜色映射到map
读取的图像数据(部分)如下图所示:
图4-1imread函数读取的图像数据(部分)
5图像的输出
5.1图像输出函数
MATLAB提供imshow函数显示图像,并且MATLAB会自动设置图形窗口,坐标轴和图像的属性,在MATLAB中,imshow函数的语法如下:
imshow(I)显示灰度图像I
(2)imshow(I,[lowhigh])
显示灰度图像I,指定显示范围,因为我在[低高]。
值低(小于低的任意值)显示为黑色;值高(大于高任意值)显示为白色。
介于两者之间的值会显示为灰色的中间色调,采用灰度等级数为缺省值。
如果您为[低高]使用一个空矩阵([]),imshow使用[分钟(我(:
))最大(I(:
))],也就是说,在我的最低值显示为黑色,最大值显示为白色。
(3)imshow(RGB)显示真彩色图像的RGB。
(4)imshow(BW)
显示二值图像BW。
imshow具有值0(零)的像素显示为黑色,像素值为1,为白色。
(5)imshow(X,map)
显示索引图像X中的颜色映射图。
颜色映射矩阵可以有任意数量的行,但必须恰好有3列。
每一行被解释为一种颜色,与第一元件指定红色光,第二绿色,第三个蓝色的强度。
色强度可以在间隔0.0至1.0中指定。
(6)imshow(filename)
显示存储在图形文件的文件名的图像。
该文件必须包含可以由imread或dicomread被读取的图像。
imshow呼吁imread或dicomread从文件中读取图像数据,但并不存储在MATLAB工作空间中的图像数据。
如果该文件包含多个图像,imshow显示文件中的第一张图像。
该文件必须在当前目录或在MATLAB的路径。
(7)himage=imshow(...)
返回的句柄由imshow创建的图像对象。
(8)imshow(...,param1,val1,param2,val2,...)
显示图像,指定的参数和用于控制图像显示的各个方面对应的值。
下表按字母顺序列出所有imshow参数。
参数名称可以缩写,并且不区分大小写。
例:
显示灰色图像:
5.2图像输出举例
5.2.1显示灰度图
imshow函数显示灰色图像的语法如下:
(1)imshow(I):
其中I为灰度图像的数据矩阵
(2)imshow(I,[lowhigh]):
其中I为灰度图像的数据矩阵,[lowhigh]用于指定对应灰度颜色映射表中的灰度值;MATLAB将小于等于low的像素设置为黑色,将大于等于high的像素设置为白色。
【例】
使用上述两种函数显示图像的命令如下:
I=imread('cameraman.tif');%输入图像cameraman.tif的数据
subplot(121);imshow(I);%用imshow(I)函数显示灰度图像
subplot(122);h=imshow(I,[080]);
%用imshow(I,[low,high])函数显示灰度图像
灰度图像cameraman.tif显示如下:
图5-1灰度图像显示举例
5.2.2显示索引图
使用imshow函数显示MATLAB的索引图像时,可以同时设置图像的数据矩阵和颜色映射表(调色板矩阵),具体语法形式如下:
Imshow(X,map):
其中,对应X中的每一个像素,imshow都将其显示为存储在map映射表矩阵的相应的行锁对应的颜色。
【例】
使用上述函数显示图像的命令如下:
[X,map]=imread('trees.tif');%输入图片trees.tif的数据
imshow(X,map)%用颜色表map展示索引图X
索引图像trees.tif显示如下:
图5-2索引图像显示举例
5.2.3显示RGB图
使用imshow函数显示RGB图的语法如下:
Imshow(RGB):
其中RGB为一个m×n×3的图像数据阵列。
在MATLAB中,该数据阵列属于double类、uint8类或uint16类。
数据阵列中元素的取值取决于该阵列所属的类型,如果该数据阵列属于double类,则其元素的取值范围是[0,1];如果该数据阵列属于uint8类,则其元素的取值范围为[0,255];如果该数据阵列属于uint16类,则其元素的取值范围为[0,65535]。
【例】
使用上述函数显示图像的命令如下:
RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);figure;imshow(RGB)
RGB图像显示如下:
图5-3RGB图像显示举例
5.2.4显示文件中的图像
显示图像时,该图像的对象数据保存在MATLAB运行内存中的一个或多个变量中。
但是如果用户将图像保存在可以通过imread或dicomread函数读取的图形文件中,则可以通过下面的语法直接将其显示出来。
语法格式如下:
Imshowfilename:
filenema是需要打开的图形文件的路径及文件名。
【例】
使用上述函数显示文件中的图像命令如下:
figure;imshow('xiju.jpg')%在figure窗口中显示图像xiju.jpg
文件中的图像xiju.jpg显示如下:
图5-4文件中的图像显示举例
5.2.5特殊图像显示技术--添加颜色条
在MATLAB的图像显示中,可以利用colorboard函数将颜色条添加到坐标轴对象中。
如果该坐标轴对象包含一个图像对象,则添加的颜色条将指示出该图像中不同颜色的数据值。
【例】
使用coloebar函数为图像添加颜色条的命令如下:
I=imread('moon.tif');%输入图片moon.tif
imshow(I)%显示灰度图I
colorbar%为灰度图I添加颜色条
I1=imread('peppers.png');%输入图片moon.tif
figure%打开一个figure窗口
imshow(I1)%显示图像I1
colorbar%为RGB图添加颜色条
图像及对应的颜色条显示如下:
图5-5图像颜色条显示举例
6图形类型转换
图像类型转换指的是二进制图、索引图、灰度图和RGB图之间的相互转换,可以用下图简单描述各种图像之间的转换关系。
下面将单独举例说明各种图像之间的相互转换。
6.1灰度图转换成二进制图
利用dither函数通过筛选算法将灰度图转换成二进制图,函数语法格式如下:
BW=dither(I)
【例】
用dither函数灰度图转换成二进制图的命令如下:
I=imread('cameraman.tif');%读取图片cameraman.tif
BW=dither(I);%将灰度图I转换成二进制图BW
figure;imshow(I)%显示灰度图I
figure;imshow(BW)%显示二进制图BW
转换结果如下图所示:
图6-1灰度图转换为二进制图举例
6.2灰度图转换成索引图
使用gray2ind函数将灰度图转换成索引图,其语法格式如下:
[X,map]=gray2ind(I,n):
根据指定的灰度级数n和颜色图map,将灰度图像I转换为索引图形X,n的默认值为64
【例】
用gray2ind函数将灰度图转换成索引图的命令如下:
I=imread('cameraman.tif');%读取图片cameraman.tif
[X,map]=gray2ind(I,64);%将灰度图I转换成索引图X
figure;imshow(I)%显示灰度图I
figure;imshow(X)%显示索引图X
转换结果如下图所示:
图6-2灰度图转换为索引图举例
6.3RGB图转换成索引图
通过rgb2ind函数可以将RGB图转换成索引图,可采用的方法包括直接转换、均匀量化、颜色图近似4种。
除直接转换方法外,其他方法在不指定选项nodither时自动进行图像筛选。
其相对应的语法格式如下:
[X,map]=rgb2ind(RGB):
直接将RGB图像转换为具有调色板图map的矩阵X。
[X,map]=rgb2ind(RGB,tol):
用均匀量化法将RGB图像转换为索引图像X,tol的范围为0.0~1.0。
[X,map]=rgb2ind(RGB,n):
用最小方差量化方法将RGB图转换为索引图X,map中包含至少n种颜色,n必须小于或等于65536。
X=rgb2ind(RGB,map
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- my MATLAB