visionhdl。FrameToPixels
将基于帧的视频转换为像素流
描述
的visionhdl。FrameToPixels
系统对象™将基于彩色或灰度帧的视频转换为像素流和控制结构。控制结构表明每个像素及其在帧中的位置的有效性。像素流格式可以包括活动帧周围的填充像素。您可以通过选择通用视频格式或指定自定义尺寸来配置帧和填充尺寸。有关像素流格式的详细信息,请参见流像素接口.
使用此对象为针对HDL代码生成的函数生成输入。该对象本身不支持HDL代码生成。
如果您的设计将帧转换为像素流,然后将流转换回帧,请为FrameToPixels
对象和PixelsToFrame
对象。
将基于帧的视频转换为像素流:
创建
visionhdl。FrameToPixels
对象并设置其属性。调用带有参数的对象,就像调用函数一样。
要了解更多关于System对象如何工作的信息,请参见什么是系统对象?
创建
描述
返回一个System对象,该对象将输入帧序列化为像素流。使用一个或多个名值对设置属性。将每个属性名用单引号括起来。免费
= visionhdl。FrameToPixels (的名字
,价值
)
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
函数打开它们。
如果属性是可调,您可以随时更改其值。
有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统.
NumComponents
- - - - - -用于表示每个像素的值的数目
1
(默认)|2
|3.
|4
用于表示每个像素的值的数目,指定为1
,2
,3.
,或4
组件。
对于灰度视频,将此属性设置为
1
.对于彩色视频,例如{R,G,B}或{Y,Cb,Cr},将此属性设置为
3.
.对于带有alpha通道的彩色视频,将此属性设置为
4
.
的visionhdl。FrameToPixels
返回一个对象P——- - - - - -NumComponents
矩阵,P填充帧中的像素总数。
依赖关系
当NumComponents
大于1时,必须设置NumPixels
财产1
.
NumPixels
- - - - - -每个时间步流的像素数
1
(默认)|2
|4
|8
每个循环在流媒体接口上传输的像素数,指定为1
,2
,4
,或8
.若要启用多像素流媒体并提高高分辨率或高帧率视频的吞吐量,请将此属性设置为2
,4
,或8
.的visionhdl。FrameToPixels
返回一个对象P——- - - - - -NumPixels
矩阵,P填充帧中的像素总数。
请注意
可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等效的Simulink®块。
依赖关系
当NumPixels
大于1时,必须设置NumComponents
财产1
.
VideoFormat
- - - - - -视频帧中活动区域和非活动区域的尺寸
“1080 p”
(默认)|“240 p”
|“480 p”
|480 ph值
|“576 p”
|“720 p”
|“768 p”
|“1024 p”
|“1200 p”
|“2 kcinema”
|“4 kuhdtv”
|“8 kuhdtv”
|“自定义”
视频帧的活动区域和非活动区域的尺寸。要选择预定义的格式,请指定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
.计算的对象“
=TotalPixelsPerLine
−FrontPorch
−ActivePixelsPerLine
.
对于竖直方向,TotalVideoLines
必须大于或等于StartingActiveLine
+ActiveVideoLines
−1。计算的对象EndingActiveLine
=StartingActiveLine
+ActiveVideoLines
−1。
如果指定的格式不符合这些规则,对象将报告错误。
请注意
当使用自定义格式时,ActivePixelsPerLine
必须大于1。此外,设置水平下料间隔,或“
+FrontPorch
根据这些指导方针。
的总
“
+FrontPorch
必须至少是?之后的对象中算法最大内核大小的2倍visionhdl。FrameToPixels
对象。如果内核大小大于4,则总玄关必须至少为8像素。的
“
属性值必须至少为6像素。这个属性是一帧中第一个有效像素之前的非活动像素的数量。
有关消隐间隔的更多信息,请参见配置消隐间隔.
请注意
当使用多像素流时(NumPixels
> 1),这些要求适用。
视频格式的水平尺寸必须能被
NumPixels
属性值。水平尺寸由以下属性设置:ActivePixelsPerLine
,TotalPixelsPerLine
,FrontPorch
,“
.支持标准视频协议480p, 768p, 1024p, 1080p, 1200p, 4k UHD和8k UHDNumPixels
等于4或8。多像素流的最小输入帧大小是18行32列。
选择内核大小和
ActivePixelsPerLine
这样ActivePixelsPerLine
/NumPixels
至少是内核宽度。
使用
描述
输入参数
纳
- - - - - -输入图像
矩阵
输入图像,指定为ActiveVideoLines
——- - - - - -ActivePixelsPerLine
——- - - - - -NumComponents
矩阵,地点:
ActiveVideoLines
是活动图像的高度。ActivePixelsPerLine
活动图像的宽度。NumComponents
表示用于表示单个像素的组件数量。
方法设置活动图像的大小VideoFormat
财产。如果的维度纳
与指定的尺寸不匹配VideoFormat
,该对象返回一个警告。
数据类型:使用uint
|int
|逻辑
|fi
|双
|单
输出参数
像素
——像素值
矩阵
像素值,返回为P——- - - - - -NumComponents
矩阵或P——- - - - - -NumPixels
矩阵,地点:
P填充图像中的像素总数是多少
TotalPixelsPerLine
×TotalVideoLines
.NumComponents
表示用于表示单个像素的组件数量。NumPixels
是每个周期在流媒体接口上传输的像素数。当NumPixels
大于1,必须设置吗NumComponents
来1
.请注意
可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等价的Simulink块。
方法设置填充图像的大小VideoFormat
财产。像素值的数据类型与即时通讯
.
ctrlOut
-像素流控制信号
向量的结构
与输出像素相关联的控制结构,返回为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)输入图像的
创建一个序列化器对象并指定非激活像素区域的大小。
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)输出图像的结束
版本历史
介绍了R2015aR2022a:更改默认帧尺寸
自定义格式的默认值已更改。在以前的版本中,默认尺寸与1080p格式匹配。从这个版本开始,默认值与帧像素而且像素帧块,它们定义了一个小的自定义框架,如此代码所示。
一个= visionhdl。FrameToPixels (“VideoFormat”,“自定义”)
一个= visionhdl。FrameToPixelswith properties: NumComponents: 1 NumPixels: 1 VideoFormat: 'Custom' ActivePixelsPerLine: 32 ActiveVideoLines: 18 TotalPixelsPerLine: 42 TotalVideoLines: 28 StartingActiveLine: 6 FrontPorch: 5
当您选择标准格式时,对象现在更新帧尺寸属性。此更改意味着您可以引用对象属性来确定格式所使用的维度。
一个= visionhdl。FrameToPixels (“VideoFormat”,“480 p”)
一个= visionhdl。FrameToPixelswith properties: NumComponents: 1 NumPixels: 1 VideoFormat: '480p'
TPPL480 = a.TotalPixelsPerLine
ans = 800
R2022a:两个pixels-per-clock流
对象现在可以生成多像素流,每个时钟周期有2个像素。
可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等价的Simulink块。
R2020a:Multipixel-multicomponent流
该对象现在可以生成多像素多组件流。
可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等价的Simulink块。
R2019b:Multipixel流
对象现在可以生成多像素流。这些流每个时钟周期有4或8像素。您可以设置NumPixels
财产4
或8
.通过这个设置,对象的输出在每个时间步上是一个4或8像素值的向量。
用于多像素流的视频格式必须具有可被NumPixels
属性值。这些水平维度由以下属性设置:ActivePixelsPerLine
,TotalPixelsPerLine
,FrontPorch
,“
.标准视频协议480p、720p、1080p和4k UHD同时支持4或8像素。
可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等价的Simulink块。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。