主要内容

visionhdl。FrameToPixels

将基于帧的视频转换为像素流

描述

visionhdl。FrameToPixels系统对象™将基于彩色或灰度帧的视频转换为像素流和控制结构。控制结构表明每个像素及其在帧中的位置的有效性。像素流格式可以包括活动帧周围的填充像素。您可以通过选择通用视频格式或指定自定义尺寸来配置帧和填充尺寸。有关像素流格式的详细信息,请参见流像素接口

使用此对象为针对HDL代码生成的函数生成输入。该对象本身不支持HDL代码生成。

如果您的设计将帧转换为像素流,然后将流转换回帧,请为FrameToPixels对象和PixelsToFrame对象。

将基于帧的视频转换为像素流:

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

  2. 调用带有参数的对象,就像调用函数一样。

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

创建

描述

例子

免费= visionhdl。FrameToPixels (的名字价值返回一个System对象,该对象将输入帧序列化为像素流。使用一个或多个名值对设置属性。将每个属性名用单引号括起来。

属性

全部展开

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

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

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

用于表示每个像素的值的数目,指定为123.,或4组件。

  • 对于灰度视频,将此属性设置为1

  • 对于彩色视频,例如{R,G,B}或{Y,Cb,Cr},将此属性设置为3.

  • 对于带有alpha通道的彩色视频,将此属性设置为4

visionhdl。FrameToPixels返回一个对象P——- - - - - -NumComponents矩阵,P填充帧中的像素总数。

依赖关系

NumComponents大于1时,必须设置NumPixels财产1

每个循环在流媒体接口上传输的像素数,指定为124,或8.若要启用多像素流媒体并提高高分辨率或高帧率视频的吞吐量,请将此属性设置为24,或8.的visionhdl。FrameToPixels返回一个对象P——- - - - - -NumPixels矩阵,P填充帧中的像素总数。

请注意

可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等效的Simulink®块。

依赖关系

NumPixels大于1时,必须设置NumComponents财产1

视频帧的活动区域和非活动区域的尺寸。要选择预定义的格式,请指定VideoFormat属性作为表第一列中的选项之一。对于自定义格式,请设置VideoFormat“自定义”,并将维度属性指定为整数。框架尺寸在图中标出。

视频帧的活动和非活动区域的尺寸,用它们对应的属性名标记

视频格式 每行活动像素 活跃的视频线 每行总像素 总视频线 开始积极行 结束积极行 门廊 后门廊
240便士 320 240 402 324 1 240 44 38
480便士 640 480 800 525 36 515 16 144
ph值480 720 480 858 525 33 512 16 122
576便士 720 576 864 625 47 622 12 132
720便士 1280 720 1650 750 25 744 110 260
768便士 1024 768 1344 806 10 777 24 296
1024便士 1280 1024 1688 1066 42 1065 48 360
1080便士(默认) 1920 1080 2200 1125 42 1121 88 192
1200便士 1600 1200 2160 1250 50 1249 64 496
2 kcinema 2048 1080 2750 1125 42 1121 639 63
4 kuhdtv 3840 2160 4400 2250 42 2201 88 472
8 kuhdtv 7680 4320 8800 4500 42 4361 88 1032
自定义 用户-
定义
用户-
定义
用户-
定义
用户-
定义
用户-
定义
用户-
定义
用户-
定义
用户-
定义

请注意

使用自定义格式时,为图像的活动和非活动尺寸输入的属性必须与总帧尺寸相加。

对于水平方向,TotalPixelsPerLine必须大于或等于FrontPorch+ActivePixelsPerLine.计算的对象TotalPixelsPerLineFrontPorchActivePixelsPerLine

对于竖直方向,TotalVideoLines必须大于或等于StartingActiveLine+ActiveVideoLines−1。计算的对象EndingActiveLineStartingActiveLine+ActiveVideoLines−1。

如果指定的格式不符合这些规则,对象将报告错误。

请注意

当使用自定义格式时,ActivePixelsPerLine必须大于1。此外,设置水平下料间隔,或+FrontPorch根据这些指导方针。

  • 的总+FrontPorch必须至少是?之后的对象中算法最大内核大小的2倍visionhdl。FrameToPixels对象。如果内核大小大于4,则总玄关必须至少为8像素。

  • 属性值必须至少为6像素。这个属性是一帧中第一个有效像素之前的非活动像素的数量。

有关消隐间隔的更多信息,请参见配置消隐间隔

请注意

当使用多像素流时(NumPixels> 1),这些要求适用。

  • 视频格式的水平尺寸必须能被NumPixels属性值。水平尺寸由以下属性设置:ActivePixelsPerLineTotalPixelsPerLineFrontPorch,.支持标准视频协议480p, 768p, 1024p, 1080p, 1200p, 4k UHD和8k UHDNumPixels等于4或8。

  • 多像素流的最小输入帧大小是18行32列。

  • 选择内核大小和ActivePixelsPerLine这样ActivePixelsPerLine/NumPixels至少是内核宽度。

使用

描述

例子

像素ctrlOut) =免费(转换输入图像矩阵,为像素值向量,像素,以及控制结构的相关向量,ctrlOut.控制结构表明每个像素及其在帧中的位置的有效性。控件指定的输出像素包括活动图像周围的填充VideoFormat财产。

有关像素流格式的详细信息,请参见流像素接口

输入参数

全部展开

输入图像,指定为ActiveVideoLines——- - - - - -ActivePixelsPerLine——- - - - - -NumComponents矩阵,地点:

  • ActiveVideoLines是活动图像的高度。

  • ActivePixelsPerLine活动图像的宽度。

  • NumComponents表示用于表示单个像素的组件数量。

方法设置活动图像的大小VideoFormat财产。如果的维度与指定的尺寸不匹配VideoFormat,该对象返回一个警告。

数据类型:使用uint|int|逻辑|fi||

输出参数

全部展开

像素值,返回为P——- - - - - -NumComponents矩阵或P——- - - - - -NumPixels矩阵,地点:

  • P填充图像中的像素总数是多少TotalPixelsPerLine×TotalVideoLines

  • NumComponents表示用于表示单个像素的组件数量。

  • NumPixels是每个周期在流媒体接口上传输的像素数。当NumPixels大于1,必须设置吗NumComponents1

    请注意

    可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等价的Simulink块。

方法设置填充图像的大小VideoFormat财产。像素值的数据类型与即时通讯

与输出像素相关联的控制结构,返回为P1的向量。P填充图像中的像素总数是多少TotalPixelsPerLine×TotalVideoLines.每个结构包含五个控制信号,指示像素的有效性及其在帧中的位置。对于多像素流,控制信号应用于每一组NumPixels值。看到像素控制结构

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

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

例子

全部折叠

此示例将自定义大小的灰度图像转换为像素流。它使用visionhdl。LookupTable对象来获取负像。然后它将像素流转换回全帧图像。

从文件加载源图像。选择匹配所需测试大小的图像的一部分。

frmOrig = imread (“rice.png”);frmActivePixels = 64;frmActiveLines = 48;frmInput = frmOrig (1: frmActiveLines, 1: frmActivePixels);图imshow (frmInput,“InitialMagnification”标题,300)输入图像的

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

创建一个序列化器对象并指定非激活像素区域的大小。

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

创建一个查找表(LUT)对象来生成输入图像的底片。

tabledata = linspace(255、0256);逆变器= visionhdl.LookupTable (tabledata);

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

[pixIn, ctrlIn] = frm2pix (frmInput);

准备通过预分配输出向量来处理像素。

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

对于流中的每个像素,查找像素值的负数。

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

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

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

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

版本历史

介绍了R2015a

全部展开

Baidu
map