购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 图像显示函数

本节主要介绍了MATLAB视频创建/播放、多帧图像显示、颜色条显示工具等函数。掌握这些函数,可方便读者在MATLAB应用过程中进行图像显示和视频播放。

1.1.1 immovie——创建视频结构数组

【功能】 由多帧图像创建视频结构数组。

【语法介绍】

·mov=immovie(X,map) 由多帧索引图像创建视频结构数组mov。参量map为一列数为3的矩阵,表示颜色表;参量X是维数为M×N×1×K的数组,表示多帧索引图像,K表示帧数。

·mov=immovie(RGB) 由多帧真彩色图像创建视频结构数组mov。参量RGB是维数为M×N×3×K的数组,表示多帧真彩色图像,K表示帧数。

【实例】 加载MATLAB自带图像mri得到索引图像和颜色表,根据索引图像和颜色表创建视频,并播放3次。

图1.1 播放视频

1.1.2 implay——在视频播放工具中播放视频

【功能】 在视频播放工具中播放视频、录像或图像序列。

【语法介绍】

·implay 打开视频播放工具播放视频、录像或图像序列。

·implay(filename) 打开视频播放工具,播放字符串参量filename指定的视频文件。

·implay(I) 打开视频播放工具,显示二值、灰度、真彩色图像序列或视频结构数组I的第一帧。其中,当I表示二值或灰度图像序列时,I必须是三维数组,即M×N×K,K表示帧数;当I表示真彩色图像序列时,I必须是四维数组,且第三维的维数为3,即M×N×3×K,K表示帧数;当I为视频结构数组时,I必须是四维数组,且第三维的维数为1,即M×N×1×K,K表示帧数。

·implay(..,FPS) 指定视频播放的帧速。参量FPS为帧速,单位为帧/秒,默认FPS=20。

【实例1】 打开一个视频播放工具。

图1.2 打开一个视频播放工具

【实例2】 播放图像序列。

【实例3】 播放AVI文件。

图1.3 播放图像序列界面

图1.4 播放AVI文件

【实例4】 播放图像序列,设置帧速为10帧/秒。

图1.5 播放图像序列的视频界面

1.1.3 imshow——显示图像

【功能】 显示图像。

【语法介绍】

·imshow(I) 显示灰度图像I。参量I为矩阵,其元素范围为[0 255]。

·imshow(I,[low high]) 指定灰度图像显示范围[low high],显示灰度图像I。参量low 和high为标量。其中,图像像素值低于或等于low值时显示为黑色,像素值大于或等于high值时显示为白色,在low和high之间的像素值显示中间灰度,并使用默认的灰度等级。如果[low high]为空,则等价于imshow(I,[min(I(:)) max(I(:))]),min(I(:)) 和max(I(:))分别表示I的最小值和最大值。

·imshow(RGB) 显示真彩色图像RGB。参量RGB为三维数组,第三维的维数为3。

·imshow(BW) 显示二值图像BW。参量BW为矩阵,矩阵元素由0和1组成。imshow 将0显示为黑色,将1显示为白色。

·imshow(X,map) 显示索引图像X。参量X为一矩阵。参量map为一列数为3的矩阵,表示颜色表。map中的每行表示一种颜色,每行中第一、第二、第三个元素分别指定红色、绿色、蓝色的亮度。

·imshow(filename) 显示图像文件名称为filename的图像文件。字符串参量filename表示图像文件的完整路径名或MATLAB的相对路径名。如果该图像文件包括多个图像,则imshow将显示图像文件中的第一个图像。

·himage=imshow(...) 返回imshow生成的图像对象句柄给himage。

·imshow(...,param1,val1,param2,val2,...) 指定图像显示参数paramN的值 valN。参量paramN和valN的取值参见表1.1。

表1.1 imshow函数参数表

【实例1】 显示存储在文件中的图像。

图1.6 显示存储在文件中的图像

【实例2】 显示索引图像。

图1.7 显示索引图像

【实例3】 显示灰度图像。

【实例4】 显示灰度图像,调整灰度显示范围。

图1.8 显示灰度图像

图1.9 显示灰度图像,调整灰度显示范围

【实例5】 指定显示图像对象的父对象的坐标轴。

图1.10 在同一个图形窗口中显示两幅图像

图1.11 改变坐标轴后图像的显示

1.1.4 colorbar——显示颜色条

【功能】 显示颜色条。

【语法介绍】

·colorbar 在当前坐标轴的右侧添加一个新的颜色条。如果在当前坐标轴的右侧已存在一个颜色条,则用新的颜色条覆盖旧的颜色条。

·colorbar('off')、colorbar('hide')和 colorbar('delete') 删除与当前坐标轴有关的所有颜色条。

·colorbar(...,'peer',axes_handle) 在句柄为axes_handle的坐标轴的右侧创建颜色条。如果在该坐标轴的右侧已存在一个颜色条,则用新的颜色条覆盖旧的颜色条。

·colorbar(...,'location') 在坐标轴中的指定位置添加颜色条。字符串参量location用于指定颜色条的位置,具体意义参见表1.2。

·colorbar(...,'PropertyName',propertyvalue) 指定颜色条的标注名PropertyName和属性值propertyvalue。参量PropertyName和propertyvalue均为字符串。

·cbar_axes=colorbar(...) 返回颜色条的句柄给cbar_axes。

·colorbar(cbar_handle,'PropertyName',propertyvalue,...) 设置句柄为cbar_handle的颜色条的标注名PropertyName和属性值propertyvalue。

表1.2 location参数表

【实例1】 在轴边上显示颜色条,y轴的标注用文本字符串。

【实例2】 在轴的下方水平显示颜色条。

图1.12 显示颜色条并标注名称

图1.13 在轴的下方水平显示颜色条

1.1.5 imtool——显示图像工具

【功能】 显示图像工具。

【语法介绍】

·imtool 打开图像工具。

·imtool(I) 在图像工具中显示灰度图像I。参量I为矩阵,其元素范围为[0 255]。

·imtool(I,[low high]) 指定灰度图像显示范围[low high],在图像工具中显示灰度图像I。参量low和high为标量。其中,图像像素值低于或等于low值时显示为黑色,像素值大于或等于high值时显示为白色,在low和high之间的像素值显示中间灰度,并使用默认的灰度等级。如果[low high]为空,则等价于 imtool(I,[min(I(:)) max(I(:))]),min(I(:))和max(I(:))分别表示I的最小值和最大值。

·imtool(RGB) 在图像工具中显示真彩色图像RGB。参量RGB为三维数组,第三维的维数为3。

·imtool(BW) 在图像工具中显示二值图像BW。参量 BW为一矩阵,矩阵元素由 0 和1组成。imtool将0显示为黑色,将1显示为白色。

·imtool(X,map) 在图像工具中显示索引图像X。参量X为一矩阵,参量map为一列数为3的矩阵,表示颜色表。map中的每行表示一种颜色,每行中第一、第二、第三个元素分别指定红色、绿色、蓝色的亮度。

·imtool(filename) 在图像工具中显示图像文件名为filename的图像文件。字符串参量filename表示图像文件的完整路径名或MATLAB的相对路径名。如果该图像文件包括多个图像,则imshow将显示文件中的第一个图像。

·hfigure=imtool(...) 返回imtool生成的图像对象句柄给hfigure。

·imtool close all 关闭所有图像工具。

·imtool(...,param1,val1,param2,val2,...) 指定图像显示属性参数param和参数值val在图像工具中显示图像,参数具体意义参见表1.3。其他参量及结果同上。

表1.3 imtool函数参数表

【实例1】 在图像工具中显示文件中的图像。

图1.14 在图像工具中显示文件中的图像

【实例2】 在图像工具中显示索引图像。

图1.15 在图像工具中显示索引图像

【实例3】 在图像工具中显示灰度图像。

图1.16 在图像工具中显示灰度图像

【实例4】 在图像工具中显示灰度图像,返回图像工具句柄并设置灰度显示范围。

图1.17 在图像工具中显示灰度图像,并且设置灰度显示范围

1.1.6 montage——在矩形框中显示多帧图像序列

【功能】 在矩形框中显示多帧图像序列。

【语法介绍】

·montage(filenames) 在矩形框中显示图像文件名为filename的图像文件。如果该图像文件中包含索引图像,montage将使用第一个索引图像中的颜色表,并自动排列所有图像对其进行拼接,使其接近于正方形。字符串参量filename表示图像文件的完整路径名或MATLAB的相对路径名。

·montage(I) 在矩形框中显示多帧图像序列I中的所有帧图像。参量I为多维数组,表示二值、灰度、真彩色图像序列。其中,当I为二值或灰度图像序列时,I必须是三维数组,即M×N×K,K表示帧数;当I为真彩色图像序列时,I必须是四维数组,且第三维的维数为3,即M×N×3×K,K表示帧数。

·montage(X,map) 在矩形框中显示多帧索引图像X的所有帧。参量X必须是四维数组,且第三维的维数为1,即M×N×1×K,K表示帧数;参量map为一列数为3的矩阵,表示颜色表。map中的每行表示一种颜色,每行中第一、第二、第三个元素分别指定红色、绿色、蓝色的亮度。

·montage(...,param1,val1,param2,val2,...) 以自定义的方式在矩形框中显示图像。参量paramN、valN用于定义图像拼接方式,具体取值参见表1.4。

·h= montage(...) 返回图像对象的句柄给h。

表1.4 montage函数参数表

续表

【实例1】 在矩形框中显示filenames指定的图像,montage将以默认方式排列图像接近于正方形。

图1.18 在矩形框中,以默认方式排列指定的图像

【实例2】 以自定义的排列方式(2行5列)显示同一组图像。

图1.19 自定义2行5列图像排列方式的框图显示

实例3和实例4分别演示如何自定义显示图像的数目及图像的对比度。

【实例3】 首先显示完整的多帧图像,然后显示前9帧图像。

图1.20 显示完整的图像序列

图1.21 显示图1.20中前9帧图像序列

【实例4】 首先显示完整的多帧图像,然后不使用颜色表,最大化D中图像的对比度,显示图像。

图1.22 默认索引图像框图显示

图1.23 最大化图1.22对比度的框图显示

1.1.7 subimage——在图形窗口或窗口的分区中显示图像

【功能】 在图形窗口或窗口的分区中显示图像。

【语法介绍】

·subimage(X,map) 在图形窗口或窗口的分区中显示索引图像X。参量X为矩阵;参量map为一列数为3的矩阵,表示颜色表。map中的每行表示一种颜色,每行中第一、第二、第三个元素分别指定红色、绿色、蓝色的亮度。

·subimage(I) 在图形窗口或窗口的分区中显示灰度图像I。参量I为矩阵,其元素范围为[0 255]。

·subimage(BW) 在图形窗口或窗口的分区中显示二值图像。参量BW为矩阵,矩阵元素由0和1组成。subimage将0显示为黑色,将1显示为白色。

·subimage(RGB) 在图形窗口或窗口的分区中显示真彩色图像。参量RGB为三维数组,第三维的维数为3。

·subimage(x,y,...) 将图像按指定的坐标系(x,y,…)显示。

·h=subimage(...) 返回图像对象的句柄给h。

【实例1】 显示两幅真彩色图像。

图1.24 显示两幅真彩色图像

【实例2】 显示三幅灰度图像,返回图像句柄。

图1.25 显示三幅灰度图像并返回图像句柄

1.1.8 warp——将图像显示到纹理映射表面

【功能】 将图像显示到纹理映射表面。

【语法介绍】

·warp(X,map) 将索引图像X纹理映射到矩形平面上显示。参量X为矩阵;参量map为一列数为3的矩阵,表示颜色表。map中的每行表示一种颜色,每行中第一、第二、第三个元素分别指定红色、绿色、蓝色的亮度。

·warp(I,n) 将灰度图像I纹理映射到矩形平面上显示。参量I为矩阵,其元素范围为[0 255];参量n为灰度颜色表的长度。

·warp(BW) 将二值图像BW纹理映射到矩形平面上显示。参量BW为矩阵,矩阵元素由0和1组成。

·warp(RGB) 将真彩色图像RGB纹理映射到矩形平面上显示。参量RGB为三维数组,第三维的维数为3。

·warp(z,...) 将图像纹理映射到曲面z上显示。参量z为矩阵。

·warp(x,y,z,...) 将图像纹理映射到曲面(x,y,z,…)上显示。参量x,y,z为同维矩阵。

·h=warp(...) 返回纹理映射图形句柄给h。

【实例1】 将图像纹理映射到矩形平面上显示。

图1.26 图像纹理映射到矩形平面

【实例2】 将图像纹理映射到球面上显示。

图1.27 图像纹理映射到球面

1.1.9 image——显示图像对象

【功能】 显示图像对象。

该命令通过将矩阵中每一个元素解释为图像色图中的一个指标或直接作为RGB值而生成一个图像对象。Image命令有两种使用格式:

(1)高级函数。调用命令 newplot,可以确定在何处放置图像与坐标轴的范围刚好围住图像;使刚生成的图像放置在坐标轴的刻度线与格栅线之上;属性Ydir设置为rervse;属性View为[0 90]。

(2)低级函数。不调用命令newplot,增加图像到当前坐标轴,在低级函数使用形式中,只能对指定属性进行设置操作。用户在命令的输入参量中可以输入属性名/属性值、结构数组、细胞数组等。

【语法介绍】

·image(C) 把矩阵C作为一图像进行显示。矩阵C中的每一个元素指定了“图像”矩形中的相应部分的颜色。

·image(x,y,C) 在(x,y)确定的位置上画矩阵C中的元素。其中,x和y都为2×2矩阵,分别指定x轴与y轴的范围,其效果基本与image(C)相同,只是进行了恰当的比例缩放。

·image(x,y,C,'PropertyName',PropertyValue,…) image的高级函数形式,指定属性名(PropertyName)/属性值(PropertyValue)。在执行该命令之前,先执行命令 newplot。其他参量及结果同上。

·image('PropertyName',PropertyValue,…) image的低级函数形式,它只接受属性名/属性值的输入。

·handle=image(…) 返回刚生成的图像对象的句柄给handle。用户可以从上面的任何形式的调用后获得图像句柄。

【实例1】 导入包含真彩色图像的mat文件,并且使用自带的颜色表显示图像。

图1.28 显示真彩色图像

【实例2】 显示MATLAB自带的索引图像,设置x轴和y轴的范围。

图1.29 显示索引图像

图1.30 设置x轴和y轴的范围,显示图1.29的图像

1.1.10 movie——播放视频

【功能】 播放录制好的视频。

【语法介绍】

·movie(M) 在当前轴中播放视频结构数组M。参量M通常由函数getframe(getframe用于生成视频帧,可循环使用getframe以创建视频结构数组)或immovie(immovie用于生成视频结构数组)产生。

·movie(M,n) 在当前轴中播放视频结构数组M n次。参量n可为整数或向量。如果n是一个负整数,则正序播放M一次后,再逆序播放M一次。如果n是一个向量,则第一个元素表示播放视频的次数,其余元素表示待播放的视频帧。如n=[10 4 4 2 1],则movie(M,n)表示播放视频10次,每次先播放第4帧,再播放第4帧,然后播放第2帧,最后播放第1帧。

·movie(M,n,fps) 在当前轴中以指定帧速fps(单位:帧/秒)播放视频结构数组M n次。参量fps为正整数,默认值为12帧/秒。如果帧速太高以至计算机达不到要求,则播放速度为计算机能够达到的最大帧速。

·movie(h,...) 在句柄为h的图形窗口或轴上播放视频。

·movie(h,M,n,fps,loc) 在句柄为h的图形窗口或轴上的指定位置以指定的帧速fps播放视频结构数组M n次。参量loc为一个四元素向量(loc的第三个元素和第四个元素值固定为0,即[loc(1)loc(2) 0 0]),指定视频在图形或轴中播放的位置。loc(1)和loc(2)表示视频相对于图形或轴的左下角点的相对位置,单位是像素。

【实例1】 通过调整Z的尺寸,动画显示peaks函数。

图1.31 动画显示peaks函数

【实例2】 调用movie函数时设定图形框,以使视频图像和图形框相一致。

图1.32 播放视频,调用movie函数设置图形框

【实例3】 对于比较大的视频图像,首先调整图形窗口的大小以使其与视频图像一致。

图1.33 调整图形窗口的大小

1.1.11 line——创建线条

【功能】 创建线条对象。Line在当前坐标轴创建线条对象,可以指定线条的颜色、宽度、类型等属性。

【语法介绍】

·line('XData',x,'YData',y,'ZData',z) 使用默认颜色画出线条。参量x,y,z为同型向量,表示线条坐标。

·line(X,Y) 在当前的坐标轴中画出线条。参量 X,Y为同型向量或矩阵,表示线条坐标。若X与Y为同型的矩阵,则对X与Y的每一列画出一线条。

·line 等效于line([0 1],[0 1])。

·line(X,Y,Z) 在三维空间中绘制由同型矩阵X,Y,Z定义的线条。

·line(X,Y,Z,'PropertyName',PropertyValue,…) 在三维空间中绘制由同型矩阵X,Y,Z定义的线条,并设置属性 PropertyName的值为PropertyValue。PropertyName和PropertyValue的取值参见表1.5。

·h=line(…) 返回所有线对象对应的句柄向量给h。

表1.5 line函数PropertyName和PropertyValue参数意义

续表

【实例1】 给曲线创建阴影线条。

【实例2】 在三维坐标轴中创建线条。

图1.34 给曲线创建阴影线条

图1.35 在三维坐标轴中创建线条 cfRrkO4na5JdMUTvF3u7PIqBUYJ55VQnDnfjvSFjWRj5DEEydfDSD5Ql1xIUspBT

点击中间区域
呼出菜单
上一章
目录
下一章
×