主要内容

visionhdl。HVCounter

统计流媒体视频的活动像素尺寸

描述

visionhdl。HVCounter系统对象™分析视频流并返回当前每帧的行数和每行的像素数。该对象还延迟像素流的控制信号以与计数结果相对应。将此对象用于在感兴趣的帧或区域中使用像素位置的算法。

该波形显示每行有10个像素的视频帧的前两行的像素流控制信号和产生的计数器输出。的visionhdl。HVCounter对象返回当前计数器值的延迟时间为两个周期。

计算像素流的每帧活动行数和每行活动像素数:

  1. 创建visionhdl。HVCounter对象并设置其属性。

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

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

HVcntr = visionhdl。HVCounter返回一个System对象,用于计算帧或感兴趣区域内的行和像素位置。使用属性默认值的对象可以计数最多(511像素)×(355行)的帧。

例子

HVcntr = visionhdl。HVCounter (的名字价值返回System对象使用一个或多个名称-值对设置属性。将每个属性名用单引号括起来。例如,HVcnt = visionhdl.HVCounter('ActivePixelsPerLine',1920,'ActiveVideoLines',1080)创建一个对象,该对象可以计算最多(2047像素)到(2047行)的帧。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

每行最大像素,指定为正整数。对象实现了一个像素计数器装天花板(日志2ActivePixelsPerLine))位。例如,对于每行320像素的帧,计数器有9位。对于每行1024像素的帧,计数器有11位。

每帧最多行数,指定为正整数。对象实现了具有的行计数器装天花板(日志2ActiveVideoLines))位。例如,对于每行240像素的帧,计数器有8位。对于每行1080像素的帧,计数器有11位。

使用

描述

例子

hcountvcountctrlout* * * * * * * * * * * *ctrlin更新水平和垂直位置计数器hcount而且vcount基于像素流控制信号,ctrlin.的ctrlout的延迟输出版本ctrlin它与计数器值的计时相匹配。

这个System对象使用与像素流的每个像素相关联的帧控制信号的结构。该接口使对象能够独立于图像大小和格式进行操作。所有Vision HDL工具箱™系统对象使用相同的流接口。对象接受并返回一个包含五个控制信号的结构。控制信号指示每个像素的有效性及其在帧中的位置。若要将像素矩阵转换为像素流和控制信号,请使用visionhdl。FrameToPixels系统对象。有关接口的完整描述,请参见流媒体像素接口

输入参数

全部展开

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

数据类型:结构体

输出参数

全部展开

一行内的像素位置,作为正整数返回。该对象在每行开始时清除像素计数。如果每行输入的像素超过计数器的大小,则对象返回一个饱和值,直到下一行开始。

数据类型:fi(0,装天花板(log2 (ActiveVideoLines)), 0)

感兴趣的帧或区域内的行位置,作为正整数返回。该对象在每帧开始时清除行数。如果每帧的输入行数超过计数器的大小,该对象将返回一个饱和值,直到下一帧开始。

数据类型:fi(0,装天花板(log2 (ActiveVideoLines)), 0)

与输出像素流一起返回的控制信号pixelcontrol结构包含五个逻辑数据类型信号。信号描述像素的有效性和它在帧中的位置。详情请参见像素控制结构

数据类型:结构体

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

获取感兴趣区域(ROI)内的当前像素位置。

加载一个输入帧。

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

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

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

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

hPos = 80;vPos = 60;hSize = 15;vSize = 20;Roicoin = visionhdl。ROISelector (“区域”,[hPos vPos hSize vSize]);

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

[pixIn,ctrlIn] = frm2pix(frmOrig);

准备通过预分配输出向量来处理像素。来自ROI对象的输出帧与输入帧大小相同,但控制信号指示不同的活动区域。计数器块返回与计数器值一致的控制信号的延迟版本。

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);pixROIOut = uint8(零(numPixelsPerFrame,1));ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1);ctrlOut2 = repmat(pixelcontrolstruct,numPixelsPerFrame,1);

编写一个创建并调用visionhdl的函数。HVCounter系统对象™。该对象返回表示感兴趣区域内当前像素位置的水平和垂直计数值。您可以从这个函数生成HDL代码。

函数[hCount,vCount,ctrlOut] = pixelCount(ctrlIn)% pixelCount返回当前每行活动像素数、hCount和活动像素数%行计数,vCount,基于像素流控制信号。% ctrlIn和ctrlOut是包含相关控制信号的结构%与像素。该对象实现了容纳上述下一个2的幂的计数器%每个属性值。该配置最多可以计数(512)帧%像素)-by-(256行)。您可以从这个函数生成HDL代码。持续的hvcount;如果Isempty (hvcount) hvcount =视觉hdl。HVCounter (...“ActivePixelsPerLine”, 320,...“ActiveVideoLines”, 240);结束[hCount,vCount,ctrlOut] = hvcount(ctrlIn);结束

对于填充框架中的每个像素,应用区域掩码,然后调用计数器以指示活动像素位置。如果输入控制信号表明该位置有一个非活动的像素,则对象返回hCount而且vCount设置为0。

oldvCount = 0;p = 1:numPixelsPerFrame [pixROIOut(p),ctrlOut(p)] = roicoin(pixIn(p),ctrlIn(p));[hCount,vCount,ctrlOut2(p)] = pixelCount(ctrlOut(p));如果(vCount ~=0 && vCount ~= oldcount) fprintf('\n行#%d中的有效像素:', vCount);oldvCount = vCount;结束如果hCount ~= 0 fprintf(“# % d ', hCount);结束结束
有效像素行# 1:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 2:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15 # 3:有效像素行# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15 # 4:有效像素行# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 5:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 6:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 7:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15 # 8:有效像素行# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 9:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15 # 10:有效像素行# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素# 11行:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 12:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15 # 13:有效像素行# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15 # 14:有效像素行# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 15:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 16:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 17:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素行# 18:# 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # 12 # 13 # 14 # 15个有效像素# 19行:#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15行的有效像素#20:#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15

扩展功能

版本历史

在R2019a中引入

另请参阅