首页 / 专利库 / 电脑零配件 / 硬件 / 基于FPGA和非线性插值的视频缩放方法

基于FPGA和非线性插值的视频缩放方法

阅读:679发布:2020-05-08

专利汇可以提供基于FPGA和非线性插值的视频缩放方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于FPGA和非线性插值的视频缩放方法,包括对原始视频 分辨率 及目的视频分辨率进行行场时序控制;对原始 视频流 数据进行乒乓缓存;对原始视频流数据中的动态视频数据进行写RAM控制;生成目的 像素 点并根据目的像素点映射生成对应的索引地址;实时生成目的像素点的权值;实时读取RAM中的原始数据并根据插值 算法 计算得到目的像素点的像素值,并实现对RAM的readempty控制;重复上述步骤实时生成新的目的像素点的像素值,实现原始视频的缩放。本发明基于FPGA和插值算法,采用行场时序控制、乒乓缓存和反压控制等方式,实现了视频缩放,保证本发明方法的效率, 硬件 资源消耗极小,而且可靠性高,易于实施。,下面是基于FPGA和非线性插值的视频缩放方法专利的具体信息内容。

1.一种基于FPGA和非线性插值的视频缩放方法,包括如下步骤:
S1.对原始视频分辨率及目的视频分辨率进行行场时序控制;
S2.对原始视频流数据进行乒乓缓存;
S3.对原始视频流数据中的动态视频数据进行写RAM控制,从而实现根据写数据的反压控制;
S4.生成目的像素点,并根据目的像素点映射生成对应的索引地址;
S5.实时生成目的像素点的权值;
S6.实时读取步骤S3中RAM中的原始数据,并根据插值算法计算得到目的像素点的像素值,并实现对RAM的readempty控制;
S7.重复步骤S1~S6,实时生成新的目的像素点的像素值,从而实现原始视频的缩放。
2.根据权利要求1所述的基于FPGA和非线性插值的视频缩放方法,其特征在于步骤S1所述的行场时序控制,具体为按输出的分辨率逐行生成,并采用如下算式计算产生的索引地址:
colcount_dst_index_x=src_Width*colcount_dst/dst_Width;
rowcount_dst_index_y=src_Height*rowcount_dst/dst_Height;
式中colcount_dst_index_x为索引列地址值且为变化值,rowcount_dst_index_y为索引行地址值且为变化值,src_Width为源视频的宽度值且为固定值,src_Height为源视频的高度值且为固定值,colcount_dst为实时生成的目的视频的宽度值且为变化值,rowcount_dst为实时生成的目的视频的高度值且为变化值,dst_Width为目的视频的宽度值且为固定值,dst_Height为目的视频的高度值且为固定值。
3.根据权利要求1或2所述的基于FPGA和非线性插值的视频缩放方法,其特征在于步骤S2所述的乒乓缓存,具体为对原始视频流数据进行带反压控制信号的乒乓缓存;当存储接近饱和时采用如下算式计算并产生反压信号,从而保证数据不会丢失:
M-Addr_wr+Addr_rd<=Ram_TH
式中M为一行RAM的存储空间大小;Addr_wr为当前写数据的地址;Addr_rd为当前读数据的地址;Ram_TH为满线;所述的满水线为饱和最大值的80%。
4.根据权利要求3所述的基于FPGA和非线性插值的视频缩放方法,其特征在于步骤S6所述的根据插值算法计算得到目的像素点的像素值,具体为采用如下算式计算得到目的像素点的像素值v0:
v0=v1*s1*s4+v2*s1*s2+v3*s2*s3+v4*s3*s4
其中v1~v4为目的像素点周围的四个已知点P1~P4的像素值;目的像素点的坐标为P0(X0,Y0);P1点的坐标为P1(SX1,SY1),P2点的坐标为P2(SX2,SY2),P3点的坐标为P3(SX3,SY3),P4点的坐标为P4(SX4,SY4);s1为点P0到直线P1P2的距离,s2为点P0到直线P2P3的距离,s3为点P0到直线P3P4的距离,s4为点P0到直线P1P4的距离。

说明书全文

基于FPGA和非线性插值的视频缩放方法

技术领域

[0001] 本发明属于图像处理领域,具体涉及一种基于FPGA和非线性插值的视频缩放方法。

背景技术

[0002] 视频缩放广泛应用于数字图像和视频处理等方面。算法的典型应用就是视频图像的缩放处理,即利用算法将输入的不同尺寸的视频图像按要求进行视频尺寸的重建(包括放大及缩小);重建之后的视频在图像质量及显示效果上要求尽量贴近原视频,达到不失真的要求。
[0003] 当前视频缩放的算法存在很多,其中主流的有最近邻域插值法和双三次插值缩放算法。最近邻域插值法是以离待插值点最近的点的像素值作为待插值点的像素值。该算法计算量小,计算速度快,但是没有考虑周围像素点带来的影响,仅仅将距离最近的像素点的值赋给当前像素点,简单地将原图像放大或者缩小到到指定大小。同时,虽然该算法硬件可实现性好,但是容易产生锯齿状和赛克现象,放大后的图像有较明显的失真。双三次插值缩放算法中,待插值点的像素值是通过矩形网格中最近的16个采样点的加权平均得到,由于采样点增加,各像素点之间的过渡更加平缓,实现后的效果更好,但该算法的计算复杂度也大幅提升,在FPGA上实现占用大量的可配置资源。由于FPGA内部的逻辑资源有限,综合考虑显示效果、延时和硬件可实现性,实际工程中上述两种方法均存在一定局限性,对缩放算法的硬件实现造成了困难。

发明内容

[0004] 本发明的目的在于提供一种可靠性高、易于实施且效果较好的基于FPGA和非线性插值的视频缩放方法。
[0005] 本发明提供的这种基于FPGA和非线性插值的视频缩放方法,包括如下步骤:
[0006] S1.对原始视频分辨率及目的视频分辨率进行行场时序控制;
[0007] S2.对原始视频流数据进行乒乓缓存;
[0008] S3.对原始视频流数据中的动态视频数据进行写RAM控制,从而实现根据写数据的反压控制;
[0009] S4.生成目的像素点,并根据目的像素点映射生成对应的索引地址;
[0010] S5.实时生成目的像素点的权值;
[0011] S6.实时读取步骤S3中RAM中的原始数据,并根据插值算法计算得到目的像素点的像素值,并实现对RAM的readempty控制;
[0012] S7.重复步骤S1~S6,实时生成新的目的像素点的像素值,从而实现原始视频的缩放。
[0013] 步骤S1所述的行场时序控制,具体为按输出的分辨率逐行生成,并采用如下算式计算产生的索引地址:
[0014] colcount_dst_index_x=src_Width*colcount_dst/dst_Width;
[0015] rowcount_dst_index_y=src_Height*rowcount_dst/dst_Height;
[0016] 式中colcount_dst_index_x为索引列地址值且为变化值,rowcount_dst_index_y为索引行地址值且为变化值,src_Width为源视频的宽度值且为固定值,src_Height为源视频的高度值且为固定值,colcount_dst为实时生成的目的视频的宽度值且为变化值,rowcount_dst为实时生成的目的视频的高度值且为变化值,dst_Width为目的视频的宽度值且为固定值,dst_Height为目的视频的高度值且为固定值。
[0017] 步骤S2所述的乒乓缓存,具体为对原始视频流数据进行带反压控制信号的乒乓缓存;当存储接近饱和时采用如下算式计算并产生反压信号,从而保证数据不会丢失:
[0018] M-Addr_wr+Addr_rd<=Ram_TH
[0019] 式中M为一行RAM的存储空间大小;Addr_wr为当前写数据的地址;Addr_rd为当前读数据的地址;Ram_TH为满线;所述的满水线为饱和最大值的80%。
[0020] 步骤S6所述的根据插值算法计算得到目的像素点的像素值,具体为采用如下算式计算得到目的像素点的像素值v0:
[0021] v0=v1*s1*s4+v2*s1*s2+v3*s2*s3+v4*s3*s4
[0022] 其中v1~v4为目的像素点周围的四个已知点P1~P4的像素值;目的像素点的坐标为P0(X0,Y0);P1点的坐标为P1(SX1,SY1),P2点的坐标为P2(SX2,SY2),P3点的坐标为P3(SX3,SY3),P4点的坐标为P4(SX4,SY4);s1为点P0到直线P1P2的距离,s2为点P0到直线P2P3的距离,s3为点P0到直线P3P4的距离,s4为点P0到直线P1P4的距离。
[0023] 本发明提供的这种基于FPGA和非线性插值的视频缩放方法,基于FPGA和插值算法,采用行场时序控制、乒乓缓存和反压控制等方式,实现了视频缩放,在保证本发明方法的效率的前提下,硬件资源消耗极小,而且可靠性高,易于实施。附图说明
[0024] 图1为本发明方法的方法流程示意图。
[0025] 图2为本发明方法的实现框图示意图。
[0026] 图3为本发明方法的乒乓缓存示意图。
[0027] 图4为本发明方法的插值算法的示意图。

具体实施方式

[0028] 如图1所示为本发明方法的方法流程示意图:本发明提供的这种基于FPGA和非线性插值的视频缩放方法,包括如下步骤:
[0029] S1.对原始视频分辨率及目的视频分辨率进行行场时序控制;具体为按输出的分辨率逐行生成,并采用如下算式计算产生的索引地址:
[0030] colcount_dst_index_x=src_Width*colcount_dst/dst_Width;
[0031] rowcount_dst_index_y=src_Height*rowcount_dst/dst_Height;
[0032] 式中colcount_dst_index_x为索引列地址值且为变化值,rowcount_dst_index_y为索引行地址值且为变化值,src_Width为源视频的宽度值且为固定值,src_Height为源视频的高度值且为固定值,colcount_dst为实时生成的目的视频的宽度值且为变化值,rowcount_dst为实时生成的目的视频的高度值且为变化值,dst_Width为目的视频的宽度值且为固定值,dst_Height为目的视频的高度值且为固定值;
[0033] S2.对原始视频流数据进行乒乓缓存;具体为对原始视频流数据进行带反压控制信号的乒乓缓存;当存储接近饱和时采用如下算式计算并产生反压信号,从而保证数据不会丢失:
[0034] M-Addr_wr+Addr_rd<=Ram_TH
[0035] 式中M为一行RAM的存储空间大小;Addr_wr为当前写数据的地址;Addr_rd为当前读数据的地址;Ram_TH为满水线;所述的满水线为饱和最大值的80%;
[0036] S3.对原始视频流数据中的动态视频数据进行写RAM控制,从而实现根据写数据的反压控制;
[0037] S4.生成目的像素点,并根据目的像素点映射生成对应的索引地址;
[0038] S5.实时生成目的像素点的权值;
[0039] S6.实时读取步骤S3中RAM中的原始数据,并根据插值算法计算得到目的像素点的像素值,并实现对RAM的readempty控制;具体为采用如下算式计算得到目的像素点的像素值v0:
[0040] v0=v1*s1*s4+v2*s1*s2+v3*s2*s3+v4*s3*s4
[0041] 其中v1~v4为目的像素点周围的四个已知点P1~P4的像素值;目的像素点的坐标为P0(X0,Y0);P1点的坐标为P1(SX1,SY1),P2点的坐标为P2(SX2,SY2),P3点的坐标为P3(SX3,SY3),P4点的坐标为P4(SX4,SY4);s1为点P0到直线P1P2的距离,s2为点P0到直线P2P3的距离,s3为点P0到直线P3P4的距离,s4为点P0到直线P1P4的距离;
[0042] S7.重复步骤S1~S6,实时生成新的目的像素点的像素值,从而实现原始视频的缩放。
[0043] 如图2所示为本发明方法的实现框图示意图:其中RAM0/RAM1为缓存模,主要用来缓存外部进来的视频流数据,乒乓操作模式,带反压控制信号,当接近存储饱和时,产生反压信号,以保证数据不被丢失;产生反压控制的阈值公式如下:M-Addr_wr+Addr_rd<=Ram_TH;(其中M为一行ram的储存空间大小,Addr_wr为当前写数据的地址,Addr_rd为当前读数据的地址,该反压公式适用于读写指针在相邻行中)
[0044] Bilinear interpolation为双线性插值模块,用于将上下行的4点像素值,根据插值公式生成目的像素值;
[0045] Src Row&&Column count和Dst Row&&Column count为行场计数模块,用于对输入输出的视频流进行行场计数控制,已达到像素图像的数控制;
[0046] FIFO为索引地址缓存模块,用于设置一个深度较小的FIFO主要用于缓存索引目的像素点的地址,将源跟目的数据分隔,实现流水控制;
[0047] Dst pixels为最终的输出数据,为目的像素点的像素值。
[0048] 如图3所示为本发明方法的乒乓缓存示意图:其中写数据控制模块MUX_2to1_wr_Ctrl控制数据的乒乓写操作,写数据受当前RAM状态的反压影响,当前RAM出现反压信号,MUX_2to1_wr_Ctrl不再往RAM中写入数据,将数据缓存在上级FIFO中,等待反压解除;读数据控制模块MUX_2to1_rd_Ctrl控制数据的乒乓读操作,读数据受当前RAM状态是否非空及读指针不能超前写指针的共同影响,当前RAM出现读空标志,MUX_2to1_rd_Ctrl不再发起读操作,直至RAM非空。
[0049] RAM中数据的读取控制需要满足当前RAM非空且读指针不能超前写指针即可,从RAM中取到的数据根据前文的双线性插值公式生成新的像素点值。
[0050] 如图4所示为本发明方法的插值算法的示意图:目的像素点的像素值v0的计算公式为:
[0051] v0=v1*s1*s4+v2*s1*s2+v3*s2*s3+v4*s3*s4
[0052] 其中v1~v4为目的像素点周围的四个已知点P1~P4的像素值;目的像素点的坐标为P0(X0,Y0);P1点的坐标为P1(SX1,SY1),P2点的坐标为P2(SX2,SY2),P3点的坐标为P3(SX3,SY3),P4点的坐标为P4(SX4,SY4);s1为点P0到直线P1P2的距离,s2为点P0到直线P2P3的距离,s3为点P0到直线P3P4的距离,s4为点P0到直线P1P4的距离
[0053] 在具体实施时,通过缩放比例关系计算得到的缩小点为p0(x0,y0),则其4周的点分别为:P1点的坐标为P1(SX1,SY1),P2点的坐标为P2(SX2,SY2),P3点的坐标为P3(SX3,SY3),P4点的坐标为P4(SX4,SY4);
[0054] x0的可能取值为:sx1=(int)x0;sx2=sx1+1;int为取整函数;
[0055] y0的可能取值为:sy1=(int)y0;sy2=sy1+1;int为取整函数;
[0056] 整理可知:
[0057] s1=y0–sy1,
[0058] s2=sx2–x0,
[0059] s3=1.0–s1,
[0060] s4=1.0–s2,
[0061] 其中s1,s2,s3,s4表示长度;假设p1,p2,p3,p4的像素值(24位的RGB数据)分别为v1,v2,v3,v4,则双线性插值计算p0点像素值v0(24位的RGB数据)公式为:v0=v1*s1*s4+v2*s1*s2+v3*s2*s3+v4*s3*s4。
[0062] 本发明提供的这种基于FPGA和非线性插值的视频缩放方法,较其他方案及平台有多种优势,具体体现在:
[0063] 1.FPGA资源有限,采用非线性插值法实现视频缩放,可以在满足视频缩放要求的基础上,进一步避免了由于使用其他复杂算法而过多的消耗FPGA资源,在一定程度上解决了由于视频缩放算法带来的原始图像信息丢失导致的图像失真。
[0064] 2.FPGA基于可编程逻辑实现硬件功能,具有灵活性强,维护方便等优点。
[0065] 3.FPGA内部并行数据处理架构,对于处理大量实时的视频数据,具有处理速度快,效率高的优点。
[0066] 4.基于FPGA的pipeline架构的非线性插值算法,较CPU等软件处理方式,大大提高了数据处理的效率,提高了视频数据的实时性,较软件的实现方式,该算法在FPGA上性能能提升50%以上,经仿真测试表明该算法处理视频帧率能达到60fps,FPGA上实现较为简单,并能实现任意比列的图像缩放。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈