掌桥专利:专业的专利平台
掌桥专利
首页

一种基于FPGA的二线性差值算法的视频压缩系统

文献发布时间:2024-04-18 19:53:33


一种基于FPGA的二线性差值算法的视频压缩系统

技术领域

本发明属于视频缩放技术领域,涉及一种视频压缩系统,尤其是一种基于FPGA的二线性差值算法的视频压缩系统。

背景技术

插值算法是图像缩放中的一项基本且重要的算法;在图像缩放中,输出图像像素点坐标可能对应输入图像上几个像素点之间的位置,这个时候就需要通过灰度插值处理来计算出该输出点的灰度值。图像插值是图像超分辨率的重要环节,不同的插值算法有不同的进度,插值算法的好坏也直接影响着图像的失真程度。常用的插值算法有以下三种:最近邻插值算法、双线性插值算法以及双三次插值算法。双线性插值算法又叫一阶插值法,是对最邻插值算法的一种改进,先对水平x方向进行一阶线性插值(需要两次一阶线性插值),然后在在垂直y方向进行一阶线性插值(只需要一次一阶线性插值)。相对于其他两种算法,双线性插值算法在处理时间上适中,具有低通滤波的性质,广泛应用在信号处理,数字图像和视频处理等方面。

现有技术大多采用传统的微控制器,依据数学模型可以很容易实现双线性插值算法,但是计算性能和稳定性完全取决于它所依赖的处理器性能,导致占用资源多和处理速度慢的缺点。

发明内容

本发明的目的在于克服现有技术的不足,提出一种设计合理、处理速度快且占用资源少的基于FPGA的二线性差值算法的视频压缩系统。

本发明解决其现实问题是采取以下技术方案实现的:

一种基于FPGA的二线性差值算法的视频压缩系统,包括:视频数据采集模块、输入控制模块、RAMFIFO控制器和读控制器;

所述视频数据采集模块用于采集待压缩视频的源数据,该视频数据采集模块的输出端与输入控制单元相连接,该输入控制单元的输出端与RAMFIFO控制器相连接,用于控制能够写入RAMFIFO控制器进行缓存的源数据;

所述RAMFIFO控制器包括四个RAM存储器和两组寄存器,所述四个RAM存储器分别与两组寄存器相连接;所述四个RAM存储器用于依次循环地对源数据的某一行进行存储;所述两组寄存器用于存储四个RAM存储器的输出数据;每一组寄存器被划分为四个存储块,寄存器A中存储第m列(x坐标)数据,寄存器B中存储第m+1列(x坐标)数据;

所述读控制器的输出端与RAMFIFO控制器相连接,当RAMFIFO控制器中缓存有两行数据后,该读控制器模块开始工作,输出地址和使能至RAMFIFO控制器,找到列坐标m,即读地址,从而能够一次读出坐标数据(m,i)即f(0,0);(m+1,i)即f(0,1);(m,i+1)即f(1,0);(m+1,i+1)即f(1,1),进而计算输出坐标数据,完成缩放数据输出。

而且,所述RAM存储器为双口RAM,一次能够读出两个地址的数据。

而且,所述找到列坐标m的具体方法为:

根据如下公式找到列坐标m:

srcX=dstX*(srcWidth/dstWidth),

srcY=dstY*(srcHeight/dstHeight);(公式2)

其中,srcX为源图像的X点坐标数据,srcY为源图像的Y点坐标数据,dstX为目标图像的X点坐标数据,dstY为目标图像Y点坐标数据,srcWidth为源图像分辨率X,srcHeight为源图像分辨率Y,dstWidth为目标分辨率X,dstHeight为目标分辨率Y。

而且,所述计算输出坐标数据的方法为:

对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v)(其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1) (公式1)

本发明的优点和有益效果:

1、本发明提出一种基于FPGA的二线性差值算法的视频压缩系统,采用硬件实现实时数字视频的分割、插值放大,通过并行处理机制,保证了视频的实时处理和画面流畅,硬件设计的控制器可以实现实时高分辨率数字图像处理、高阶数字滤波等高端图像处理技术于一身,具有强大的快速处理能力。

2、本发明采用FPGA处理构架,采用硬件设计的控制器可以实现实时高分辨率数字图像处理、高阶数字滤波等高端图像处理技术于一身,具有强大的快速处理能力。

附图说明

图1是本发明的系统框图;

图2是本发明的仿真波形图;

图3是本发明的资源使用情况统计图。

具体实施方式

以下结合附图对本发明实施例作进一步详述:

一种基于FPGA的二线性差值算法的视频压缩系统,如图1所示,包括:视频数据采集模块、输入控制模块、RAMFIFO控制器和读控制器;

所述视频数据采集模块用于采集待压缩视频的源数据,该视频数据采集模块的输出端与输入控制单元相连接,该输入控制单元的输出端与RAMFIFO控制器相连接,用于控制能够写入RAMFIFO控制器进行缓存的源数据;

所述RAMFIFO控制器包括四个RAM存储器和两组寄存器,所述四个RAM存储器分别与两组寄存器相连接;所述四个RAM存储器用于依次循环地对源数据的某一行进行存储;所述两组寄存器用于存储四个RAM存储器的输出数据;每一组寄存器被划分为四个存储块,寄存器A中存储第m列(x坐标)数据,寄存器B中存储第m+1列(x坐标)数据;

所述读控制器的输出端与RAMFIFO控制器相连接,当RAMFIFO控制器中缓存有两行数据后,该读控制器模块开始工作,输出地址和使能至RAMFIFO控制器,找到列坐标m,即读地址,从而能够一次读出坐标数据(m,i)即f(0,0);(m+1,i)即f(0,1);(m,i+1)即f(1,0);(m+1,i+1)即f(1,1),进而计算输出坐标数据,完成缩放数据输出。

所述读控制器的输出端还与参数控制模块相连接,用于根据如下公式实时计算输出图像各个坐标点所对应的输出坐标:

f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1) (公式1)

其中,

coeeff00对应(1-u)*(1-v)

coeeff01对应(1-u)*v

coeeff10对应(u)*(1-v)

coeeff11对应(u)*(v);

输出的f(0,0)对应f(i,j)

f(0,1)对应f(i,j+1)

f(1,0)对应f(i+1,j)

f(1,1)对应f(i+1,j+1)

在本实施例中,所述RAM存储器为双口RAM,一次可以读出两个地址的数据。

在本实施例中,所述找到列坐标m的具体方法为:

根据如下公式找到列坐标m:

srcX=dstX*(srcWidth/dstWidth),

srcY=dstY*(srcHeight/dstHeight); (公式2)

其中,srcX为源图像的X点坐标数据,srcY为源图像的Y点坐标数据,dstX为目标图像的X点坐标数据,dstY为目标图像Y点坐标数据,srcWidth为源图像分辨率X,srcHeight为源图像分辨率Y,dstWidth为目标分辨率X,dstHeight为目标分辨率Y。

在本实施例中,所述计算输出坐标数据的方法为:

对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v)(其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1) (公式1)

本发明的工作原理是:

1、双线性差值算法描述:

对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v)(其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1) (公式1)

其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。

在图像处理的时候,我们先根据

srcX=dstX*(srcWidth/dstWidth),

srcY=dstY*(srcHeight/dstHeight)(公式2)

来计算目标像素在源图像中的位置,srcX为源图像的X点坐标数据,srcY为源图像的Y点坐标数据,dstX为目标图像的X点坐标数据,dstY为目标图像Y点坐标数据,srcWidth为源图像分辨率X,srcHeight为源图像分辨率Y,dstWidth为目标分辨率X,dstHeight为目标分辨率Y。这里计算的srcX和srcY一般都是浮点数,比如f(1.2,3.2)这个像素点是虚拟存在的,先找到与它临近的四个实际存在的像素点,写成f(i+u,j+v)的形式,则u=0.2,v=0.2,i=1,j=3。

以上为二线性差值的基本实现算法,硬件实现过程中的难点是找到目标像素坐标对应原项目坐标的四个邻近数据。

以下为本发明的实现过程,重点为对源输入数据邻近坐标数据的寻找:

首先介绍数据输入控制单元,用来控制哪一行的源坐标数据可以被输入,依据输入输出分辨率(公式1),可以很容易的控制将源数据的第i行数据和第i+1行数据输入到RAMFIFO控制器中,本发明设计了四个RAM存储器,依次循环的对源数据的某一行进行存储,RAM存储器为双口RAM,一次可以读出两个地址的数据,RAMFIFO控制中,四个RAM的输出数据被存储到两组寄存器中,每一组寄存器被划分为四个存储块,寄存器A中存储第m列(x坐标)数据,寄存器B中存储第m+1列(x坐标)数据,当RAMFIFO控制器中缓存有两行数据后,读控制器模块开始工作,依据(公式2)找到列坐标m,即读地址,从而可以一次读出坐标数据(m,i)即f(0,0),(m+1,i)即f(0,1),(m,i+1)即f(1,0),(m+1,i+1)即f(1,1),依据公式1,可以计算输出坐标数据。

实际运算过程,对小数进行移位放大操作。四个RAMFIFO用来加快计算速度,数据输入输出可以同时进行。

下面通过具体算例对本发明作进一步说明:

如图2所示,本发明对5*5的8位坐标数据缩小到3*3,

输入数据第一行为0-4;第二行为5-9;第三行为10-14;第四行为15-19;第五行为20-24;

输出数据第一行为0,1,3;第二行为8,9,11,第三行为16,18,19。

从图2中仿真波形可以看出,数据输入的同时不影响数据输出,数据完成两行输入后,经过10个时钟周期,即可完成缩放数据输出。

由此可见,如图3所示,本发明在xilinxFPGA上编译后所用的资源少,处理速度快。

本发明的仿真实验对系数做了2

本发明的创新之处在于:

本发明在FPGA中实现,并且设计了RAMFIFO架构,一次读出四个地址的数据,然后依据数学公式计算输出输出坐标数据。

具体为:本发明设计了四个R-FIFO来解决同时读取四个点位对应像素的问题。使得它工作起来类似于正常的FIFO,但是其输入输出数据端口连接到RAM块,提供一个写端口及两个读端口,每个读端口可以可以同时读出地址i及i+1中的数据,四个R-FIFO的输出可以为二线性差值算法提供四个坐标参考值。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

相关技术
  • 一种基于背景差值法和帧间差值法相结合的运动区域前景图像算法
  • 一种基于FPGA算法预测实现视频画面高对比的动态非线性调整的方法
技术分类

06120116339444