流像素接口
什么是流媒体像素接口?
在硬件上,一次处理一整帧视频在内存和面积上都有很高的成本。为了节省资源,串行处理在HDL设计中是可取的。Vision HDL Toolbox™块和系统对象操作在像素、行或邻域上,而不是帧上。该块和对象接受并生成视频数据作为像素数据和控制信号的串行流。控制信号指示图像或视频帧内每个像素的相对位置。该协议模拟视频系统的计时,包括帧之间的非活动间隔。每个块或对象在不完全了解图像格式的情况下运行,并且可以容忍不完美的线和帧的时间。
所有Vision HDL Toolbox块和System对象都支持单像素流(每个周期1像素)。一些块和System对象还支持高速率或高分辨率视频的多像素流(每个周期2、4或8像素)。多像素流增加了硬件资源,以支持与小分辨率视频相同的硬件时钟率更高的视频分辨率。系统对象不支持多像素流的HDL代码生成。使用等效块生成多像素算法的HDL代码。
流像素接口是如何工作的?
视频捕获系统从左到右、从上到下扫描视频信号。当这些系统扫描时,它们在活动视频的行和帧之间产生非活动间隔。
的水平消隐间隔由一行结束和下一行开始之间的非活动循环组成。这个间隔通常分为两个部分门廊和后门廊.这些术语来自模拟视频波形中线之间的同步脉冲。的门廊是活动线末端到同步脉冲之间的采样数。的后门廊是同步脉冲和活动线路开始之间的采样数。
的垂直消隐间隔是由不活跃的循环之间结束积极行一个框架和开始积极行下一帧。
扫描模式需要水平和垂直方向的开始和结束信号。Vision HDL Toolbox流像素协议包括空白间隔,并允许您配置活动和非活动帧的大小。
在框架图中,活动框架左右的蓝色阴影区域表示水平下料间隔。活动框架上下的橙色阴影区域表示垂直下料间隔。有关消隐间隔的更多信息,请参见配置消隐间隔.
为什么使用流式像素界面?
格式独立
使用此接口的块和对象不需要为确切的图像大小或非活动区域的大小设置配置选项。此外,如果更改了设计的图像格式,则不需要更新每个块或对象。相反,在序列化步骤中更新一次映像参数。一些块和对象仍然需要一个行缓冲区大小参数来分配内存资源。
通过分离图像格式细节,您可以使用小图像来开发设计,以便进行更快的模拟。然后,一旦设计正确,更新到实际的图像大小。
错误宽容
视频可以来自不同的来源,如相机,磁带存储,数字存储,或开关和插入设备。这些来源可能会带来时间问题。人类的视觉无法检测到视频信号中的微小差异,因此视频系统的定时不需要非常完美。因此,视频处理块必须容忍行和帧的可变时间。
通过使用带有控制信号的流像素接口,每个Vision HDL Toolbox块或对象在行开始信号或帧开始信号处对新像素段开始计算。无论块或对象是否接收到前一段的结束信号,都将进行计算。
该协议允许微小的计时错误。如果启动信号之间有效和无效循环的数量不同,块或对象将继续正确操作。一些Vision HDL Toolbox块和对象需要最小的水平空白区域来容纳内存缓冲区操作。有关更多信息,请参见配置消隐间隔.
使用块和系统对象的像素流转换
在仿真软件®,可以使用帧像素块,将有帧的视频数据转换为符合此协议的像素流和控制信号。控制信号被分组在称为pixelcontrol
.您可以配置块返回一个像素流,每个周期有1、2、4或8个像素。
在MATLAB®,可以使用visionhdl。FrameToPixels
对象将有框的视频数据转换为符合此协议的像素和控制信号流。控制信号按结构数据类型分组。您可以配置该对象以创建一个像素流,每个周期有1、2、4或8个像素。
如果您的输入视频已经是串行格式,您可以设计自己的逻辑来生成pixelcontrol
来自现有串行控制方案的控制信号。例如,请参见转换相机控制信号到像素控制格式而且集成视觉HDL模块到相机链接系统.
支持的像素数据类型
Vision HDL工具箱块和对象包括用于流式像素数据的端口或参数。每个块和对象都支持一种或多种像素格式。根据块或对象执行的操作不同,支持的格式也不同。这个表详细说明了Vision HDL Toolbox支持的常见视频格式。
类型的视频 | 像素格式 |
---|---|
二进制 | 每个像素都用一个布尔 或逻辑 价值。用于真正的黑白视频。 |
灰度 | 每个像素用亮度,即伽玛校正亮度值。该像素是单个无符号整数或定点值。 |
颜色 | 每个像素由2到4个无符号整数或定点值表示,这些值表示像素的颜色成分。视觉HDL工具箱块和对象使用伽马校正颜色空间,如R' g ' b '和Y' cbcr。 若要处理不支持多组件输入的块的多组件流,请为每个组件复制该块。的 若要为彩色视频设置多像素流媒体,可以配置帧像素块返回多组件和多像素流。看到MultiPixel-MultiComponent视频流. |
视觉HDL工具箱块有一个输入或输出端口,像素
,表示像素数据。视觉HDL工具箱系统对象期望或返回一个表示像素数据的参数。下表描述了像素数据的格式。
港口或论点 | 描述 | 数据类型 |
---|---|---|
像素 |
可以使用多像素流接口模拟系统对象,但不能为使用多像素流的系统对象生成HDL代码。要为多像素算法生成HDL代码,请使用等价的Simulink块。 |
支持的数据类型可以包括:
|
请注意
该表中的块支持多像素输入,但不支持多组件像素。该表显示了每个块支持的输入像素的数量。
块 | 数量的像素 |
---|---|
图像滤波 | 2、4或8 |
双边滤波器 | 2、4或8 |
行缓冲 | 2、4或8 |
伽马校正器 | 2、4或8 |
边缘检测器 | 4或8 |
中值滤波器 | 4或8 |
柱状图 | 2、4或8 |
查找表 | 4或8 |
二进制形态学:关闭,扩张,侵蚀,开放 | 4或8 |
这些块支持多像素多组件像素流。该表显示了每个块支持的像素和组件的数量。
块 | 数量的像素 | 数量的组件 |
---|---|---|
像素流FIFO | 2、4或8 | 1、3或4 |
颜色空间转换 | 2、4或8 | 3. |
Demosaic插入器 | 2、4或8 | 3(输出) |
ROI选择器 | 4或8 | 1、3或4 |
像素流对准器 | 2、4或8 | 1、3或4 |
像素控制信号串流
Vision HDL工具箱块和对象包括与每个像素相关的控制信号的端口或参数。这五个控制信号表示像素的有效性及其在帧中的位置。对于多像素流,每个像素值向量都有一组控制信号。
在Simulink中,控制信号端口是非虚拟总线数据类型,称为pixelcontrol
.有关总线数据类型的详细信息,请参见像素控制总线.
在MATLAB中,控制信号参数是一个结构。有关结构数据类型的详细信息,请参见像素控制结构.
单像素串行接口时序图
为了演示流像素协议,本示例将一帧转换为控制信号和数据信号的序列。考虑一个2 × 3像素的图像。为了建模空白间隔,配置序列化图像,使其包括活动图像周围这些区域的非活动像素:
1像素宽后门廊
2-pixel-wide门廊
第一个活动线路前1线
最后一条活动线路后的第1行
属性可以配置活动和非活动区域的维度帧像素块或visionhdl。FrameToPixels
对象。
在图中,活动图像区域位于虚线矩形内,非活动像素围绕在其周围。像素用它们的灰度值标记。
该块或对象从左到右序列化图像,每次一行。时序图显示了与此图像相对应的控制信号和像素数据,这是串行输出帧像素块,配置为单像素流。
的示例使用帧像素块来序列化图像,请参见在Simulink中设计HDL视频处理算法.
的示例使用FrameToPixels
对象来序列化图像,请参见在MATLAB中设计硬件目标图像滤波器.
多像素串行接口时序图
这个例子将一个帧转换为一个多像素流,每个周期有4个像素和相应的控制信号。考虑一个64像素宽的框架,活动图像周围有这些非活动区域。
4-pixel-wide后门廊
4-pixel-wide门廊
第一个活动线路之前有4条线路
最后一条活动线路后4行
的帧像素块配置为多像素流返回由帧中从左到右的每一行的像素组成的像素向量。这个图表显示了框架的左上角。灰色像素表示帧的活动区域,零值像素表示空白像素。每个活动像素上的标签表示像素在帧中的位置。突出显示的框显示了在一个周期上流的像素集。非活动区域的像素也一次流化4个。灰色框显示了在活动帧开始之前循环的四个空白像素。蓝框显示在帧的第一个有效循环上的四个像素值流,橙框显示在帧的第二个有效循环上的四个像素值流。绿色框显示下一个活动行的前四个像素。
此波形显示了同一帧的第一行的多像素流数据和控制信号,每个周期以4像素流。的pixelcontrol
应用于每组四个像素值的信号显示在数据信号下面。因为向量只有一个有效的
信号,向量中的像素要么全部有效,要么全部无效。的hStart
而且音速启动
信号应用于向量中索引最低的像素。的这个到
而且公开发表
信号应用于向量中索引最高的像素。
在显示的时间周期之前,初始垂直消隐像素一次流化四个,所有控制信号设置为假
.这个波形显示了图像第一行的像素流。灰色、蓝色和橙色框对应于框架图中突出显示的区域。在第一行完成后,流有两个周期的水平空白,包含8个无效像素(前门廊和后门廊)。然后,波形显示流中的下一行,从绿色方框开始。
有关使用多像素流的示例模型,请参见过滤多像素视频流.
另请参阅
帧像素|像素帧|visionhdl。FrameToPixels
|visionhdl。PixelsToFrame