第八章图像、视频和声音第八章图像、视频和声音第一节图像第二节影片第三节图像和影片的相互转换第四节声音第一节图像一、图像格式二、图像的类型三、图像的读取和显示第六章图形处理功能第八章图像、视频和声音第二章数组的运算基础一、图像格式函数调用格式为:info=imfinfo(’文件名’,文件格式)info=imfinfo(’文件名’)由该函数获取的信息依赖于文件类型的不同而不同,但至少应包含一些内容:Filename文件名FileMdeDate文件最后一次修改的时间第六章图形处理功能第八章图像、视频和声音第二章数组的运算基础第六章图形处理功能第八章图像、视频和声音FileSize文件的大小,单位:字节Format文件格式FormatVersion文件格式的版本号Width图像的宽度,单位:像素Height图像的高度,单位:像素BitDepth每个像素的位数ColorType图像类型:RGB图像、亮度图像、索引图像【例8-1】利用“imfinfo”函数显示图像文件的信息。info=imfinfo('C:\Matlab71\toolbox\images\imdemos\penoy.jpg')info=Filename:[1x44char]FileModDate:[1x20char]FileSize:558806Format:'jpg'FormatVersion:''Width:1280Height:960BitDepth:24ColorType:'truecolor'FormatSignature:''NumberOfSamples:3CodingMethod:'Huffman'CodingProcess:'Sequential'Comment:{}第六章图形处理功能第八章图像、视频和声音第六章图形处理功能二、图像的类型Matlab的图像数据矩阵大致有3种类型,即:索引图像、灰度图像和真色彩图像(也称RGB图像),下面简单介绍一下这三种图像类型。索引图像包括一个数据矩阵X和一个颜色映射矩阵Map。Map是一个包含3列和若干行的数据矩阵。Map的每一行分别表示红色、绿色和蓝色的颜色值。在Matlab中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map。第八章图像、视频和声音灰度图像是一个矩阵I,其中I的数据代表了在一定范围内的颜色灰度值。Matlab把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点类型、8位或16位无符号整数类型。RGB图像,即真彩色图像,在Matlab中存储为m×n×3数据矩阵。数组中的元素定义了图像中每一个像素的红、绿和蓝颜色值。图像文件格式把RGB图像存储为24位的图像,红、绿、蓝分别各占8位,这样可以有将近1000万种颜色(即224=16777216)。Matlab的RGB数组可以是双精度的浮点类型、8位或16位无符号整数类型。在RGB的双精度数组中,每一种颜色用0~1之间的数值表示。例如,(000)显示的是黑色;(111)显示的是白色。每一像素的3个颜色值保存在数组的第三维中。第六章图形处理功能第八章图像、视频和声音第六章图形处理功能三、图像的读取和显示1.图像的读取在Matlab中,利用函数imread来实现图像文件的读取。其函数调用格式主要包括以下几种类型。(1)a=imread(filename,fmt)上述语句可以读取字符串“filename”指定的灰度或彩色图像,并且“fmt”指出了该图像文件的格式。在imread函数返回数组a表达的图像数据时,如果读取的是灰度图像,那么a是m×n的二维数组;如果读取的是彩色图像,那么A就是一个m×n×3的三维数组。(2)[X,map]=imread(filename,fmt)该语句是用于读取索引色图像,“X”用来存储索引色图像数据,“map”用来存储与该索引色图像相关的颜色映射表。第八章图像、视频和声音第六章图形处理功能(3)[…]=imread(filename)该语句在读取图像时必须从图像文件“filename”的内容中推断该图像的类型。“[…]”表示根据准备读取的图像数据的相应颜色映射表的序号值来确定采用不同语句形式。2.图像的显示imshow函数imshow函数可以自动创建句柄图形图像对象,并自动设置各种句柄图形属性和图像特征,以优化显示效果。当用户使用imshow函数显示一幅图像时,该函数将自动设置图像窗口、坐标轴和图像属性。这些自动设置的属性包括图像对象的CData属性、CDataMapping属性、坐标轴第八章图像、视频和声音的CLim属性和图像窗口对象的Colormap属性。函数imshow的调用格式主要有以下几种:imshow(a)imshow(a,n)imshow(X,map)imshow(RGB)h=imshow(...)这里,a代表所显示的图像的数据矩阵;n为整数,代表所要显示的图像的灰度等级数;X为索引图像的数据矩阵,map为色图;RGB是m×n×3的矩阵。第八章图像、视频和声音第六章图形处理功能imview函数函数imview是用来实现打开图像的浏览器,当然被打开的图像文件必须位于Matlab的当前路径下。该函数有以下几种调用格式:imview(I)imview(RGB)imview(X,map)h=imview(...)【例8-2】读入一幅图像,并在图形窗口显示之,如图8-1所示:a=imread('C:\Matlab71\toolbox\images\imdemos\penoy.jpg');imshow(a);axisoff;size(a)%取消坐标轴ans=194425923第八章图像、视频和声音第六章图形处理功能图8-1显示牡丹花图像第八章图像、视频和声音第六章图形处理功能可见,所读的图像是一个真彩色图像。例8-1所提供的图像信息是本例的图像信息。若所读的图像不在Matlab的搜索路径内,将会出现错误提示信息,如,a=imread('lily.jpg');???Errorusing==imreadFilelily.jpgdoesnotexist.这表明,“lily.jpg”这个图片不在当前路径下。第八章图像、视频和声音第六章图形处理功能四、图像的写操作在Matlab中,用函数imwrite来实现图像文件的写入操作,函数调用格式为以下几种:(1)imwrite(A,filename,fmt)该语句是把图像数据A写到filename指定的输出文件中,存储的格式由fmt来指定,如指定的输出文件“filename”不在Matlab的目录下,必须得指明其完整路径。第八章图像、视频和声音第六章图形处理功能(2)imwrite(X,map,ilename,fmt)该语句是写入索引色图像的,“X”表示图像数据数组,“map”表示其关联的颜色映射表。(3)imwrite(…,filename)该语句在写图像到文件中时,根据filename的扩展名推断图像的文件格式,但必须注意此扩展名是Matlab支持的类型。(4)imwrite(…,Param1,Val1,Param2,Val2…)该语句可以指定HDF、JPEG、PBM、PGM、PPM和TIFF等不同类型图像文件的不同参数。第八章图像、视频和声音第六章图形处理功能第二节影片在Matlab中,函数getframe和movie提供了捕获和演示影片所需要的工具。函数getframe对当前的图像进行一次快照,得到影片的一个帧。我们知道,影片是由若干帧构成的,所以getframe通常用在for循环内,它组织影片的帧序列,movie播放由getframe所记录的影片的帧。movie(M)播放影片一次,movie(M,N)播放影片N次,若N是负数,除了顺时针播放影片外,还逆时针播放该影片。第八章图像、视频和声音第六章图形处理功能【例8-3】影片播放示例。x=1:.1:4;y=1:.1:4;%平面矢量数据[X,Y]=meshgrid(x,y);%产生网格图R=(X+Y).^2;%生成平面上的数据点Z=sin(R)./R;%生成三维数据meshc(Z);%画三维图形axisvis3doff;%关闭坐标轴colormap(spring);%渲染表面效果fori=1:20%旋转和捕捉每一帧view(-37.5+15*(i-1),30)%改变每一帧的视角m(i)=getframe;%旋转和捕获每一帧endmovie(m)%播放影片一次第八章图像、视频和声音图8-2影片播放中某时刻的画面第八章图像、视频和声音第六章图形处理功能第三节图像和影片的相互转换函数im2frame和fram2im可以实现被索引图像和影片之间的转换,将影片中的某帧动态图像转换成一个静态图像的调用格式为:x=frame2im(M(n))。这条命令将影片矩阵M的第n帧画面转换成一个被索引图像x。【例8-4】将例8-3中的某帧动态图像转换成静态图像。figure%新建一个图形窗口a=frame2im(m(5));%m(5)帧的画面image(a)%显示该帧图像第八章图像、视频和声音第六章图形处理功能图8-3影片中的某帧图像第八章图像、视频和声音第2章大规模可编程逻辑器件第四节声音在Matlab中,播放*.wav的声音文件的函数格式是:wavplay('filename')。【例8-5】读一个*.wav的声音文件,并画声音的波形图。a=wavread('bird');%鸟鸣声的声音文件plot(a)%画鸟鸣声的波形图第六章图形处理功能图8-4鸟鸣声的波形图第八章图像、视频和声音第六章图形处理功能为了清楚显示声音的波形,可以选取某段声音波形来显示,图8-5是前2000点的声音波形图。plot(a(1:2000))图8-5部分鸟鸣声的波形图第八章图像、视频和声音第六章图形处理功能图8-5虽然较图8-4较清晰显示了部分声音波形,但还是无法分辨其波形形状,我们可以进一步缩短波形的显示长度,见图8-6。plot(a(2000:2500))第八章图像、视频和声音第六章图形处理功能图8-6长度为500的鸟声声音波形图第八章图像、视频和声音