主要内容

visionhdl。ROI选择或

从象素流中选择感兴趣区域

描述

visionhdl。ROI选择或系统对象™从视频流中选择活动帧的一部分。框架的总大小保持不变。输出控制信号表示帧的一个新的活动区域。此图以蓝色显示非活动像素区域,以橙色表示请求的输出区域。

输入帧的指定区域作为像素流返回,该区域之外的像素标记为非活动。

您可以为ROI指定一个固定的大小和位置,或者您可以使用输入参数动态地选择帧位置。您可以选择多个区域。通过指定其左上角坐标和维度来定义每个区域。该对象为您指定的每个区域返回一组像素和控制信号。该对象将输出帧中的非活动像素设置为零。

区域是相互独立的,所以它们可以重叠。如果指定一个包含活动帧边缘的区域,则该对象仅返回该区域的活动部分。这个图显示了三个请求区域的输出帧。第二个输出区域不包括帧上方的非活动区域。

三个区域(一个部分落在活动帧之外,另一个重叠)以三个像素流的形式返回。

该对象还提供了垂直重用的模式。在此模式下,必须指定没有垂直重叠并按列对齐的区域。区域的每列共享一个输出像素流。控制信号定义流中的每个区域。这种安排支持对每个列进行并行处理,并重用列中每个区域的下游处理逻辑。要使用此模式,请设置VerticalReuse财产真正的。使用visionhdlframetoregions功能将框架划分为垂直重用的平铺区域。

8个平铺区域作为两个像素流返回,每个像素流包含4个垂直对齐的区域。

从像素流中选择感兴趣的区域:

  1. 创建visionhdl。ROI选择或对象,并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

语法

投资回报率= visionhdl.ROISelector(名称、值)

描述

ROI= visionhdl。ROISelector (的名字价值创建一个System对象,该对象从输入流中选择活动帧的区域。使用一个或多个名称-值对设置属性。将每个属性名用单引号括起来。例如,。'区域',[1 1 32 24]将对象配置为在帧的左上角选择一个32x24像素的区域。

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

选项为区域的每列返回一个像素流,指定为真正的。当您将此属性设置为真正的,必须指定没有垂直重叠并按列对齐的区域。对象的每个区域列都有一个输出像素流。这种安排支持对每个列进行并行处理,并重用列中每个区域的下游处理逻辑。使用visionhdlframetoregions功能将框架划分为垂直重用的平铺区域。

依赖关系

要启用此属性,请设置RegionsSource财产“属性”

输出区域定义的位置,指定为以下值之一:

“属性”—使用地区财产。

输入端口的-通过对象的输入参数指定区域。每个输入参数是一个由四个元素组成的行向量,对应于一个区域。对象的值地区接收时的输入参数音速启动设置为真正的在输入控制结构中。

依赖关系

要启用此属性,请设置VerticalReuse财产

要从输入框中选择的感兴趣的矩形区域,指定为R4矩阵。

R为区域的数目。定义每个区域的四个元素是该区域的左上角起始坐标和维度,并且必须具有该表单hpovPoshSizevSize。坐标从活动框架的左上角开始计数,定义为[1,1]。hSize必须大于1。

当你设置VerticalReuse财产在美国,这些区域是相互独立的,所以它们可以重叠。R不能大于16。

当你设置VerticalReuse财产真正的,该矩阵中的区域必须没有垂直重叠,并按列对齐。此图显示了两个用蓝色虚线勾勒出的无效区域示例。左边的区域与另一个区域垂直重叠。底部的两个区域与列中的其他区域不对齐。这些区域不必覆盖整个框架。平铺区域之外的像素被标记为非活动像素。列数不能大于16。

依赖关系

要启用该参数,请设置RegionsSource财产“属性”

的数量地区对象的输入参数,指定为范围[1,16]的整数。

依赖关系

要启用该参数,请设置RegionsSource财产输入端口的

使用

语法

[pixel1, ctrl1] = ROI (pixelin ctrlin)
[pixel1, ctrl1,…,pixelR,ctrlR] = ROI(pixelin,ctrlin)
[pixel1, ctrl1,…,pixelR,ctrlR] = ROI(pixelin,ctrlin,region1,...,regionR)

描述

[pixel1, ctrl1] = ROI (pixelin ctrlin)返回下一个像素值,pixel1,以及控制信号,ctrl1,这是通过将活动图像帧掩蔽到一个新的区域而得到的结果。属性定义区域地区属性的四元素行向量,hpovPoshSizevSize

[pixel1, ctrl1,…,pixelR,ctrlR] = ROI(pixelin,ctrlin)返回下一个像素值,pixel1,…,pixelR,以及控制信号,ctrl1,…,ctrlR,用于屏蔽活动图像帧而产生的每个流。当你设置VerticalReuse财产,每个输出流包含一个活动区域,流的数量为NumberOfRegions属性的行数或地区矩阵。当你设置VerticalReuse财产真正的,每个输出流包含一组垂直对齐的区域。在这两种情况下,通过设置地区财产的RROI坐标的-4矩阵。

[pixel1, ctrl1,…,pixelR,ctrlR] = ROI(pixelin,ctrlin,region1,...,regionR)返回每个流的下一个像素值,pixel1,…,pixelR,这是由于将活动图像帧掩蔽为1到R新区域,由region1,…,regionR参数。每一个地区输入是ROI坐标的四元素行向量。设置时使用此语法RegionsSource财产输入端口的,NumberOfRegions财产R

此对象使用一个流像素接口,该接口具有用于帧控制信号的结构。该接口使对象能够独立于图像大小和格式进行操作,并与其他Vision HDL Toolbox™对象连接。该对象接受并返回一个标量像素值和一个包含五个信号的结构控制信号。控制信号表明每个像素的有效性及其在帧中的位置。若要将像素矩阵转换为像素流和控制信号,请使用visionhdl。FrameToPixels对象。有关接口的完整描述,请参见流像素接口

输入参数

全部展开

您可以使用多像素流接口模拟System对象,但是使用多像素流的System对象不支持HDL代码生成。金宝app使用等价块生成多像素算法的HDL代码。

像素流中的单个图像像素,指定为表示强度的标量值。

模拟支持数据类型,但不支持HD金宝appL代码生成。

数据类型:uint8|uint16|uint32|int8|int16|int32|fi|逻辑||

伴随输入像素流的控制信号,指定为pixelcontrol包含五个结构逻辑数据类型的信号。信号描述像素的有效性及其在帧中的位置。有关详细信息,请参见像素控制结构

数据类型:结构体

感兴趣的区域,指定为一个由四个正整数组成的行向量,该行向量定义了左上角的坐标和每个所需输出帧的维度。向量必须有形式hpovPoshSizevSize。指定R地区参数,RNumberOfRegions属性值。

依赖关系

要启用此参数,请清除VerticalReuse财产并设置RegionsSource财产输入端口的

数据类型:int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出参数

全部展开

输出像素,作为标量值返回。输出数据类型与输入数据类型相同pixelin论点。默认情况下,输出像素参数的数量为NumberOfRegions属性的行数,或地区属性矩阵。当您设置VerticalReuse真正的,对象的每一列垂直对齐区域都有一个输出像素参数。

象素流控制信号,指示每个输出象素的有效性及其在帧中的位置,作为5个结构返回逻辑信号。有关详细信息,请参见像素控制结构

默认情况下,输出控制参数的数量为NumberOfRegions属性的行数,或地区属性矩阵。当您设置VerticalReuse真正的,对象的每一列垂直对齐区域都有一个输出控制参数。

数据类型:结构体

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

从文件加载源图像,然后显示该图像。

frmOrig = imread (“coins.png”);[frmActiveLines, frmActivePixels] =大小(frmOrig);imshow (frmOrig)标题输入图像的

图中包含一个轴对象。标题为Input Image的axes对象包含一个Image类型的对象。

创建一个序列化器对象并定义非活动像素区域。

frm2pix = visionhdl。FrameToPixels (...“NumComponents”,1,...“VideoFormat”“自定义”...“ActivePixelsPerLine”frmActivePixels,...“ActiveVideoLines”frmActiveLines,...“TotalPixelsPerLine”frmActivePixels + 20,...“TotalVideoLines”frmActiveLines + 20,...“StartingActiveLine”3,...“FrontPorch”10);

创建一个对象来选择感兴趣的区域。通过矩形区域的左上角坐标和尺寸定义矩形区域。

hpo = 80;vPos = 60;hSize = 65;vSize = 50;roicoin = visionhdl。ROISelector (“区域”,[hPos vPos hSize vSize])
roicoin = visionhdl。ROISelectorwith properties: VerticalReuse: false RegionsSource: 'Property' Regions: [80 60 65 50]

通过调用序列化器对象来序列化测试图像。pixIn为强度值向量。ctrlIn是一个矢量控制信号结构。

[pixIn, ctrlIn] = frm2pix (frmOrig);

准备通过预先分配输出向量来处理像素。输出帧与输入帧大小相同,但控制信号指示不同的活动区域。

[~, ~, numPixelsPerFrame] = getparamfromfrm2pix (frm2pix);(numPixelsPerFrame pixOut = uint8 (0, 1));ctrlOut = repmat (pixelcontrolstruct numPixelsPerFrame 1);

对于填充帧中的每个像素,应用区域蒙版。

p = 1:numPixelsPerFrame [pixOut(p),ctrlOut(p)] = roicoin(pixIn(p),ctrlIn(p));结束

创建一个格式与新区域相匹配的反序列化对象。通过调用反序列化对象将像素流转换为图像帧。显示结果图像。

pix2frm = visionhdl。PixelsToFrame (...“NumComponents”,1,...“VideoFormat”“自定义”...“ActivePixelsPerLine”hSize,...“ActiveVideoLines”, vSize);[frmOutput, frmValid] = pix2frm (pixOut ctrlOut);如果imshow(frmOutput)标题输出图像的结束

图中包含一个轴对象。标题为Output Image的axes对象包含一个类型为Image的对象。

算法

全部展开

生成的HDL代码visionhdl。ROI选择或系统对象使用两个32位计数器。对象不为其他区域使用其他计数器。

扩展功能

介绍了R2016a