主要内容

处理图像数据MATLAB工作空间

理解图像数据

本文档中的插图将视频流和内存缓冲区的内容显示为单个帧的序列。实际上,每个帧都是多维数组。有关使用多维数组的更多信息,请参阅多维数组. 下图说明了单个帧的格式。

单个帧的格式

以下部分描述工具箱如何

本节还介绍了几种方法查看采集的图像数据

确定图像数据的维数

图像采集设备所使用的视频格式是决定每个图像帧的宽度、高度和频带数量的主要因素。图像采集设备通常支持多种视频格式。金宝app在创建视频输入对象时选择视频格式(见指定视频格式).视频输入对象将视频格式存储在VideoFormat财产。

视频输入对象将视频分辨率存储在视频分辨率财产。

每个图像帧都是三维的;然而,视频格式决定了第三维的频带数量。对于彩色视频格式,例如RGB,每个图像帧有三个波段:分别代表红色、绿色和蓝色数据。其他视频格式,如灰度RS170标准,只有一个波段。视频输入对象将第三维的大小存储在NumberOfBands财产。

请注意

由于设备通常用宽乘高表示视频分辨率,工具箱使用此约定视频分辨率财产。但是,当数据进入MATLAB时®在工作空间中,图像帧尺寸按高度和宽度的相反顺序列出,因为MATLAB将矩阵尺寸表示为逐行逐列。

roi和图像尺寸

当您在捕获的图像中指定感兴趣的区域(ROI)时,ROI的维度决定了返回的图像帧的维度。的视频分辨率属性指定设备提供的图像数据的尺寸;的ROIPosition属性指定记录的图像帧的尺寸。看到ROIPosition属性参考页以获得更多信息。

视频格式和图像尺寸

下面的示例说明了视频格式如何影响返回的图像帧的大小。

  1. 选择一种视频格式-使用imaqhwinfo函数可查看图像采集设备支持的视频格式列表。此示例显示Matrox支持的视频格式金宝app®Orion frame grabber。格式为行业标准,如RS170、NTSC和PAL。这些标准定义了图像分辨率。

    信息= imaqhwinfo(“matrox”);info.DeviceInfo.金宝appSupportedFormats ans = column 1 to 4 'M_RS170' M_RS170_VIA_RGB' M_CCIR' M_CCIR_VIA_RGB' Columns 5 to 8 'M_NTSC' M_NTSC_RGB' M_NTSC_YC' M_PAL' Columns 9 to 10 'M_PAL_RGB' M_PAL_YC' column 9 to 10 'M_PAL_RGB' M_PAL_YC'
  2. 创建一个图像采集对象-此示例使用默认视频格式RS170为Matrox图像采集设备创建视频输入对象。若要在系统上运行此示例,请使用imaqhwinfo函数获取图像采集设备的对象构造函数,并将该语法替换为以下代码。

    vid = videoinput (' matrox ', 1);
  3. 查看视频格式和视频分辨率属性-工具箱使用默认视频格式创建对象。这种格式定义了视频分辨率。

    vid.VideoFormat ans=M_RS170 VideoResolution ans=[640 480]
  4. 将一个单一的框架带入工作区-打电话给获取快照函数将框架带入工作区。

    帧=获取快照(vid);

    返回数据的尺寸反映了图像分辨率和NumberOfBands财产。

    从视频。NumberOfBands = 1大小(帧)ans = 480 640
  5. 启动图像采集对象-打电话给开始函数启动图像采集对象。

    开始(vid)

    对象执行一个立即触发器并开始获取数据帧。

  6. 将多个帧带入工作区-打电话给获取数据函数将多个图像帧带入MATLAB工作区。

    数据=获取数据(vid,10);

    获取数据函数将10帧数据带入工作区。请注意,返回的数据是一个四维数组:每个帧是三维的,而n框架由第四维度表示。

    尺寸(数据)ans=480 640 110
  7. 清理-当不再需要图像采集对象时,请始终从内存中删除图像采集对象以及引用它们的变量。

    删除(vid)清除vid

确定图像帧的数据类型

默认情况下,工具箱返回图像采集设备使用的数据类型中的图像帧。如果没有与对象的本机数据类型匹配的MATLAB数据类型,获取数据选择保持数值精度的MATLAB数据类型。例如,在RGB 555格式中,每个颜色分量以5位表示。获取数据将每种颜色返回为uint8价值。

您可以指定所需的数据类型获取数据用于返回的数据。例如,您可以指定它获取数据返回图像帧作为类的数组.要查看所支持的所有数据类型的列表,请参见金宝app获取数据参考页。

下面的示例演示了返回的图像数据的数据类型。

  1. 创建一个图像采集对象-这个示例为matrix图像采集设备创建一个视频输入对象。要在您的系统上运行此示例,请使用imaqhwinfo函数获取图像采集设备的对象构造函数,并将该语法替换为以下代码。

    vid = videoinput (' matrox ', 1);
  2. 将一个单一的框架带入工作区-打电话给获取快照函数将框架带入工作区。

    帧=获取快照(vid);
  3. 查看返回数据的类-使用函数确定用于返回图像数据的数据类型。

    Class (frame) ans = uint8
  4. 清理-当不再需要图像采集对象时,请始终从内存中删除图像采集对象以及引用它们的变量。

    删除(vid)清除vid

查看获得的数据

将数据带到MATLAB工作区后,可以像查看MATLAB中的任何其他图像一样查看数据。

图像采集工具箱™ 软件包括一个功能,图像内容,可用于查看单个MATLAB图像对象中多帧图像数组的所有帧。图像内容排列框架,使它们大致形成一个正方形。图像内容可用于直观地比较多个帧。

MATLAB包括两个函数,图像显示亮度图像,在图形窗口中显示图像。这两个函数都创建一个MATLAB图像对象来显示帧。您可以使用图像对象属性来控制显示的各个方面显示亮度图像函数自动缩放输入数据。

图像处理工具箱™ 软件包括一个称为imshow.就像图像显示亮度图像,此函数创建一个MATLAB图像对象。然而,imshow还自动设置各种图像对象的属性,以优化显示。