一种基于FPGA的warp方法、装置、发送卡及显示控制系统与流程

未命名 07-12 阅读:77 评论:0

一种基于fpga的warp方法、装置、发送卡及显示控制系统
技术领域
1.本公开实施例涉及图像处理技术领域,尤其涉及一种基于fpga的warp方法、装置、发送卡及显示控制系统。


背景技术:

2.视频的帧频越高,人眼的视觉流畅度就越高。相关技术中,帧频提升的方式通常有两种,一种是视频帧复制的方式,即复制前一帧图像形成插入帧,这种方式虽然可以提升一些视觉感受,但是效果提升有限。另一种则是通过先判断出视频内物体的运动信息,并根据运动信息预估插帧的内容。由于直接开发代码及其复杂,这种方式一般会在显卡中进行,但显卡处理只能离线转片,做不到实时插帧处理。
3.因此,有必要改善上述相关技术方案中存在的一个或者多个问题。
4.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本公开实施例的目的在于提供一种基于fpga的warp方法、装置、发送卡及显示控制系统,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
6.第一方面,本公开提供了一种基于fpga的warp方法,该方法包括:
7.将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素;
8.获取并存储所述块中所有像素在原始图像上的位置信息;
9.确定所述位置信息的边界;
10.获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据;
11.根据所述位置信息以及所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。
12.可选地,所述确定所述位置信息的边界的步骤,包括:
13.分别统计所述位置信息中水平方向和垂直方向的最大值及最小值;
14.根据所述位置信息中水平方向和垂直方向的最大值及最小值,确定所述位置信息的边界。
15.可选地,所述获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据的步骤,包括:
16.将所述原始图像上所述位置信息的边界在上下左右四个方向分别向外扩展一个像素,得到所述子图像;
17.获取并存储所述子图像中的像素数据。
18.可选地,所述根据所述位置信息以及所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值的步骤包括:
19.基于所述位置信息,获取所述目标插值点在所述子图像上的原始位置周围的4个像素的位置;
20.基于所述子图像的像素数据,获取所述4个像素的像素值,并进行双线性插值计算得到所述目标插值点的像素值;
21.存储所述块中的各目标插值点的像素值。
22.第二方面,本公开提供了一种基于fpga的warp装置,该装置包括:搭载在fpga上的划分模块、位置信息获取模块、边界确定模块、子图像数据获取模块以及计算模块,其中,
23.所述划分模块,用于将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素;
24.所述位置信息获取模块,用于获取并存储所述块中所有像素在原始图像上的位置信息;
25.所述边界确定模块,用于确定所述位置信息的边界;
26.所述子图像数据获取模块,用于获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据;
27.所述计算模块,用于根据所述位置信息以及所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。
28.可选地,所述边界确定模块,包括:
29.统计单元,用于分别统计所述位置信息中水平方向和垂直方向的最大值及最小值;
30.确定单元,用于根据所述位置信息中水平方向和垂直方向的最大值及最小值,确定所述位置信息的边界。
31.可选地,所述子图像数据获取模块,包括:
32.扩展单元,用于将所述原始图像上所述位置信息的边界在上下左右四个方向分别向外扩展一个像素,得到所述子图像;
33.第一存储单元,用于获取并存储所述子图像中的像素数据。
34.可选地,所述计算模块包括:
35.原始位置获取单元,用于基于所述位置信息,获取所述目标插值点在所述子图像上的原始位置周围的4个像素的位置;
36.插值计算单元,用于基于所述子图像的像素数据,获取所述4个像素的像素值,并进行双线性插值计算得到所述目标插值点的像素值;
37.第二存储单元,用于存储所述块中的各目标插值点的像素值。
38.第三方面,本公开提供了一种发送卡,包括:
39.处理器,所述处理器根据上述任一项所述的基于fpga的warp方法来生成插频后的视频图像信息。
40.第四方面,本公开提供了一种显示控制系统,包括:
41.上位机,所述上位机用于发送视频图像数据;
42.发送卡,所述发送卡用于接收所述视频图像数据进行数据转换,并发送所述视频图像信息;
43.接收卡,所述接收卡用于接收所述视频图像信息,并驱动显示装置进行显示;
44.其中,所述发送卡为前述的发送卡。
45.本公开实施例提供的上述技术方案可以包括以下有益效果:
46.本公开的实施例中,在fpga处理平台上,将要插入的目标图像先分成多个块,再以块为单位,获取该块中的像素对应于原始图像中的位置,并从原始图像中根据上述位置读取对应的子图像的像素数据,得到各块中各目标插值点的像素值,最后再得到整个目标图像的像素值,依此获得预估的视频帧。相对于读取原始图像中的所有像素数据,只读取子图像的像素数据大大提高了数据读取的效率。此外,这种在fpga上以块为单位与原始图像中的子图像进行融合的方式,以fpga的并行性弥补了存储器读写操作的突发性,做到了实时的视频处理。
47.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
48.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1示出本公开示例性实施例中一种基于fpga的warp方法的步骤流程示意图;
50.图2示出本公开示例性实施例中fpga的处理架构示意图;
51.图3示出本公开示例性实施例中图像运动原理示意图;
52.图4示出本公开示例性实施例中一个目标图像的分块示意图;
53.图5示出本公开示例性实施例中目标图像与原始图像位置比对示意图;
54.图6示出本公开示例性实施例中一个插值点在原始图像中的位置示意图;
55.图7示出本公开示例性实施例一种基于fpga的warp装置的模块结构示意图;
56.图8示出本公开示例性实施例中一种发送卡的结构示意图;
57.图9示出本公开示例性实施例中一种显示控制系统的结构示意图。
具体实施方式
58.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
59.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
60.warp是运动估计与运动补偿(motion estimation and motion compensation,memc)中的一个关键技术,用于将运动信息与原始图像融合得到预计的视频帧。在融合的过
程中,需要计算目标图像中的每一个像素,那么在计算前,首先要找到目标图像每一个像素对应于原始图像的位置。然而,由于存储器的突发特性,再加上每一个像素对应到原始图像的位置带有一定的随机性,这样逐像素在原始图像上读取数据生成新的一帧图像效率非常低,存储器的带宽也无法支撑大分辨图像的实时处理。
61.基于此,本示例实施方式中首先提供了一种基于fpga的warp方法,以做到实时的视频处理。参考图1中所示,该方法可以包括以下步骤s101-s105:
62.步骤s101:将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素。
63.步骤s102:获取并存储所述块中所有像素在原始图像上的位置信息。
64.步骤s103:确定所述位置信息的边界。
65.步骤s104:获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据。
66.步骤s105:根据所述位置信息读取所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。
67.上述方法中,在fpga处理平台上,将要插入的目标图像先分成多个块,再以块为单位,获取该块中的像素对应于原始图像中的位置,并从原始图像中根据上述位置读取对应的子图像的像素数据,得到各块中各目标插值点的像素值,最后再得到整个目标图像的像素值,依此获得预估的视频帧。相对于读取原始图像中的所有像素数据,只读取子图像的像素数据大大提高了数据读取的效率。此外,这种在fpga上以块为单位与原始图像中的子图像进行融合的方式,以fpga的并行性弥补了存储器读写操作的突发性,做到了实时的视频处理。
68.在fpga上搭建如图2所示的处理架构以执行上述步骤s101-s105。整个处理架构可以由控制模块、处理核心模块、ddr和ddr仲裁模块组成。其中控制模块用于系统的调度,核心处理模块用于发起读ddr的请求并将结算结果入ddr,ddr仲裁模块用于仲裁多个处理模块的读写ddr的请求。
69.下面,将结合图1至图6对本示例实施方式中的上述方法的各个步骤进行更详细的说明。
70.在步骤s101中,要插入的目标图像为相邻的两帧原始图像中要插入的运动图像。
71.参考图3图像运动原理进行进一步说明,图中的物体在原始视频的第1帧处于a位置,在第2帧处于b位置。如果简单插帧,会将每帧进行复制,例如复制第1帧形成第1.5帧,插入第1帧和第2帧之间,但这样提升效果有限。运动估计法是在第1帧和第2帧之间插入一个运动图像的帧,该帧中图像处于a-b的位置。则图2中a-b位置的运动图像即为要插入的目标图像。
72.本公开中,对要插入的目标图像进行分块时,不限制块的大小,也不限制块的数量。在一些实施例中,每一个块的大小可以是64
×
64像素,也可以是32
×
32像素,亦或者是16
×
16像素。而总共分成的块的数量与要插入的目标图像的整体分辨率以及每一块的大小相关。例如,如图4所示的一个4096
×
2160分辨率的目标图像中,若每个块的大小为64
×
64像素,则整个目标图像就有水平64个块,垂直34个块。在后续图像处理时,可按照从上到下,从左到右的顺序依次计算每个块的目标像素点。
73.在步骤s102中,控制模块将确定要处理的块的初始地址发送到相应的处理核心模块上。当然,处理核心模块可以由多个,也即多个处理核心模块可以同时对多个块进行处理,如此,可进一步提高图像数据处理的效率。
74.具体的,核心处理模块根据相应块的初始地址,向ddr发起读取该块中所有像素在原始图像上的位置信息的请求,ddr仲裁模块按照请求进行响应。当多个核心处理模块同时处理多个块,且向ddr发起多个请求时,ddr仲裁模块按照请求的时间顺序依次进行响应。从ddr中读取到所述块中所有像素在原始图像上的位置信息后,将此位置信息反馈至核心处理模块,最后核心处理模块将该位置信息存储至第一寄存器中,在具体的示例中,该第一寄存器可以是ram_pos中。
75.在步骤s103中,将存储在ram_pos中的位置信息进行遍历后,确定位置信息的边界。
76.具体的,确定边界的过程包括:分别统计所述位置信息中水平方向和垂直方向的最大值及最小值;根据所述位置信息中水平方向和垂直方向的最大值及最小值,确定所述位置信息的边界。
77.可以理解的是,块中某些像素点在原始图像中的位置可能不是整数位而带有小数,因此统计位置信息中水平方向和垂直方向的最大值及最小值,并根据水平方向和垂直方向的最大值及最小值确定边界,可以保证所有的像素点都位于最终确定的边界内,避免漏掉某些不在整数位的像素的位置信息。
78.在步骤s104中,确定好边界后,核心处理模块向ddr发起读原始图像数据的请求,同样,当有多个核心处理模块发起多个请求时,ddr仲裁模块还是按照请求的时间顺序依次进行响应。
79.在根据边界值读取原始图像的过程中,先将原始图像上该边界所在的位置在上下左右四个方向分别向外扩展一个像素,然后得到扩大后的区域所包含的子图像。该扩展过程,也是为了进一步保证不漏掉所有块内包含的像素点在原始图像上的位置。
80.从ddr中读取到该子图像的像素数据后,将此数据反馈至核心处理模块,最后核心处理模块将该子图像的像素数据存储至第二寄存器中,在具体的示例中,该第二寄存器可以是ram_src中。
81.在步骤s105中,核心处理模块根据插值点的顺序在第一寄存器中读取位置信息,再根据该位置信息在第二寄存器中读取相应的像素数据,最后计算出各目标插值点的像素值。
82.可以理解的是,目标插值点在原始图像中的位置不一定是整数也可能带有小数。如图5所示,左侧空心圆表示原始图像,右侧实心圆表示目标插值图像,每个目标像素都由原始的像素计算得到,在光流估计算法会计算出每个目标点的原始位置,这个位置可能带有小数,也就是可能不与原始的图像重合。
83.因此,目标点的原始位置由两部分组成,一部分是水平方向的位置posh和垂直方向的位置posv。例如,在图6示出的实心圆位置示意图中,posh中包含12bit的整数部分hposint和4bit的小数部分hposfrac;hposint表示插值点左侧像素像素点的位置,hposfrac表示插值点距离左侧原始像素点的距离。posv中包含12bit的整数部分vposint和4bit的小数部分vposfrac;vposint表示插值点上方像素像素点的位置,vposfrac表示插值
点距离上方原始像素点的距离。
84.由此,目标插值点的像素值计算方法包括:
85.基于位置信息,获取所述目标插值点在所述子图像上的原始位置周围的4个像素的位置。例如位置用(posh,posv)表示,则在第一寄存器中读取(hposint,vposint)、(hposint+1,vposint)、(hposint,vposint+1)和(hposint+1,vposint+1)这4个位置。
86.然后从第二寄存器中读取上述4个位置的像素值,并进行双线性插值计算得到所述目标插值点的像素值。最终将计算出的各目标插值点的像素值存储至第三寄存器中,在具体的示例中,该第三寄存器可以是ram_dst中。
87.最终,处理控制模块向ddr发起写请求,将第三寄存器中的数据写ddr中,完成一个数据块的处理。其他块的处理同上处理,本公开对此不再赘述。
88.需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤。当然,除了步骤顺序之间可以变化外,也可以将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
89.参考图7所示,本公开还提供了一种基于fpga的warp装置,该装置包括搭载在fpga上的划分模块、位置信息获取模块、边界确定模块、子图像数据获取模块以及计算模块,其中,所述划分模块,用于将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素;所述位置信息获取模块,用于获取并存储所述块中所有像素在原始图像上的位置信息;所述边界确定模块,用于确定所述位置信息的边界;所述子图像数据获取模块,用于获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据;所述计算模块,用于根据所述位置信息以及所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。
90.在一个实施例中,所述边界确定模块,包括:
91.统计单元,用于分别统计所述位置信息中水平方向和垂直方向的最大值及最小值;
92.确定单元,用于根据所述位置信息中水平方向和垂直方向的最大值及最小值,确定所述位置信息的边界。
93.在一个实施例中,所述子图像数据获取模块,包括:
94.扩展单元,用于将所述原始图像上所述位置信息的边界在上下左右四个方向分别向外扩展一个像素,得到所述子图像;
95.第一存储单元,用于获取并存储所述子图像中的像素数据。
96.在一个实施例中,所述计算模块包括:
97.原始位置获取单元,用于基于所述位置信息,获取所述目标插值点在所述子图像上的原始位置周围的4个像素的位置;
98.插值计算单元,用于基于所述子图像的像素数据,获取所述4个像素的像素值,并进行双线性插值计算得到所述目标插值点的像素值;
99.第二存储单元,用于存储所述块中的各目标插值点的像素值。
100.本公开提供的基于fpga的warp装置,通过上述装置中的各个模块,将要插入的目标图像先分成多个块,再以块为单位,获取该块中的像素对应于原始图像中的位置,并从原
始图像中根据上述位置读取对应的子图像的像素数据,得到各块中各目标插值点的像素值,最后再得到整个目标图像的像素值,依此获得预估的视频帧。相对于读取原始图像中的所有像素数据,只读取子图像的像素数据大大提高了数据读取的效率。此外,这种在fpga上以块为单位与原始图像中的子图像进行融合的方式,以fpga的并行性弥补了存储器读写操作的突发性,做到了实时的视频处理。
101.关于上述基于fpga的warp装置,其中各个模块或者单元执行操作的具体方式已经在误码检测方法的实施例中进行了详细描述,此处将不做详细阐述说明。
102.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
103.进一步的,本示例实施方式中,参考图8所示,还提供了一种发送卡。包括:
104.处理器,处理器根据上述实施例中任一项的基于fpga的warp方法来生成插频后的视频图像信息。
105.进一步的,本示例实施方式中,参考图9所示,还提供了一种显示控制系统。包括:
106.上位机,用于发送视频图像数据;
107.发送卡,用于接收视频图像数据并转换为视频图像信息,并发送视频图像信息;
108.接收卡,用于接收视频图像信息,并驱动显示装置进行显示;
109.其中,发送卡为上述实施例中的发送卡。
110.还需要理解的是,其中发送卡和显示控制系统的具体方式已经在有关该对基于fpga的warp方法的实施例中进行了详细描述,此处将不做详细阐述说明。
111.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

技术特征:
1.一种基于fpga的warp方法,其特征在于,包括:将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素;获取并存储所述块中所有像素在原始图像上的位置信息;确定所述位置信息的边界;获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据;根据所述位置信息读取所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。2.根据权利要求1所述基于fpga的warp方法,其特征在于,所述确定所述位置信息的边界的步骤,包括:分别统计所述位置信息中水平方向和垂直方向的最大值及最小值;根据所述位置信息中水平方向和垂直方向的最大值及最小值,确定所述位置信息的边界。3.根据权利要求1所述基于fpga的warp方法,其特征在于,所述获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据的步骤,包括:将所述原始图像上所述位置信息的边界在上下左右四个方向分别向外扩展一个像素,得到所述子图像;获取并存储所述子图像中的像素数据。4.根据权利要求1所述基于fpga的warp方法,其特征在于,所述根据所述位置信息读取所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值的步骤包括:基于所述位置信息,获取所述目标插值点在所述子图像上的原始位置周围的4个像素的位置;读取所述子图像的像素数据,获取所述4个像素的像素值,并进行双线性插值计算得到所述目标插值点的像素值;存储所述块中的各目标插值点的像素值。5.一种基于fpga的warp装置,其特征在于,包括搭载在fpga上的划分模块、位置信息获取模块、边界确定模块、子图像数据获取模块以及计算模块,其中,所述划分模块,用于将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素;所述位置信息获取模块,用于获取并存储所述块中所有像素在原始图像上的位置信息;所述边界确定模块,用于确定所述位置信息的边界;所述子图像数据获取模块,用于获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据;所述计算模块,用于根据所述位置信息以及所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。6.根据权利要求5所述基于fpga的warp装置,其特征在于,所述边界确定模块,包括:统计单元,用于分别统计所述位置信息中水平方向和垂直方向的最大值及最小值;确定单元,用于根据所述位置信息中水平方向和垂直方向的最大值及最小值,确定所述位置信息的边界。
7.根据权利要求5所述基于fpga的warp装置,其特征在于,所述子图像数据获取模块,包括:扩展单元,用于将所述原始图像上所述位置信息的边界在上下左右四个方向分别向外扩展一个像素,得到所述子图像;第一存储单元,用于获取并存储所述子图像中的像素数据。8.根据权利要求5所述基于fpga的warp装置,其特征在于,所述计算模块包括:原始位置获取单元,用于基于所述位置信息,获取所述目标插值点在所述子图像上的原始位置周围的4个像素的位置;插值计算单元,用于基于所述子图像的像素数据,获取所述4个像素的像素值,并进行双线性插值计算得到所述目标插值点的像素值;第二存储单元,用于存储所述块中的各目标插值点的像素值。9.一种发送卡,其特征在于,包括:处理器,所述处理器根据权利要求1至8中任一项所述的基于fpga的warp方法来生成插频后的视频图像信息。10.一种显示控制系统,其特征在于,包括:上位机,所述上位机用于发送视频图像数据;发送卡,所述发送卡用于接收所述视频图像数据进行数据转换,并发送所述视频图像信息;接收卡,所述接收卡用于接收所述视频图像信息,并驱动显示装置进行显示;其中,所述发送卡为权利要求9所述的发送卡。

技术总结
本公开实施例是关于一种基于FPGA的warp方法、装置、发送卡及显示控制系统。该方法包括:将要插入的目标图像划分成大小相等的多个块,每个块具有预设数目的像素;获取并存储所述块中所有像素在原始图像上的位置信息;确定所述位置信息的边界;获取并存储所述原始图像上与所述位置信息的边界相匹配的子图像的像素数据;根据所述位置信息读取所述子图像的像素数据,依次计算并存储所述块中的各目标插值点的像素值。上述方法,以FPGA的并行性弥补了存储器读写操作的突发性,做到了实时的视频处理。理。理。


技术研发人员:邵杰 边巍 胥斌 刘凯
受保护的技术使用者:中国电影器材有限责任公司
技术研发日:2023.03.31
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐