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

基于FPGA仿射逆变换的数据加速处理系统

文献发布时间:2023-06-19 19:28:50


基于FPGA仿射逆变换的数据加速处理系统

技术领域

本发明涉及图像处理技术领域,尤其涉及一种基于FPGA仿射逆变换的数据加速处理系统。

背景技术

随着科技的发展,人们对高清视频的需求越来越强烈。将低分辨率的视频缩放为高清视频成了一大课题。随着FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)的应用越来越广泛,基于FPGA实现高清视频也逐渐成为主流。

仿射变换算法能实现图像的旋转、平移、缩放等功能,在诸多视频图像处理领域应用广泛。

但是,现有技术中针对随机存取BRAM(Block Random Access Memory,块随机存取存储器)空间只能独立进行数据读取和写入,导致FPGA进行数据处理时耗时过长;同时,在面对图像缩小变换时需要加载较大的原始图像数据,BRAM空间不足以放置所需原始图像数据,导致数据执行失败。

发明内容

鉴于上述的分析,本发明实施例旨在提供一种基于FPGA仿射逆变换的数据加速处理系统,用以解决现有技术中FPGA进行数据处理时耗时过长以及由于BRAM空间不足无法实现仿射缩小变换的问题。

本发明实施例提供了一种基于FPGA仿射逆变换的数据加速处理系统,所述数据加速处理系统包括:

第一外接内存,用于存储多个填图子图块,所述填图子图块为根据结果图像划分的子图块,所述填图子图块分为奇列块和偶列块;

第二外接内存,用于存储原始图像;

加速控制模块,用于控制预加载控制模块和填图控制模块采用乒乓操作的方式实现对所述奇列块和偶列块执行预加载步骤和寻址读取步骤;

预加载控制模块,用于执行所述预加载步骤,所述预加载步骤包括:根据所述奇列块/偶列块和仿射变换逆矩阵在所述原始图像中确定对应的第一预加载子图块,并从所述第二外接内存中获取所述第一预加载子图块,基于所述第一预加载子图块计算得到第二预加载子图块,并将所述奇列块对应的所述第二预加载子图块存储至第一BRAM空间,将所述偶列块对应的所述第二预加载子图块存储至第二BRAM空间;

填图控制模块,用于执行所述寻址读取步骤,所述寻址读取步骤包括:依次遍历所述奇列块/偶列块中每一个像素点,根据所述仿射变换逆矩阵和所述奇列块/偶列块对应的所述第一BRAM空间/第二BRAM空间中的第二预加载子图块确定所述每一个像素点的像素值,并将所述像素值发送至所述第一外接内存中存储;

BRAM空间,包括所述第一BRAM空间和所述第二BRAM空间,分别用于存储所述奇列块和偶列块对应的第二预加载子图块。

基于上述系统的进一步改进,所述数据加速处理系统还包括:

坐标生成器,用于生成所述原始图像和结果图像中的任意一个像素点的坐标,并且用于生成所述第二预加载子图块中任意一个像素点的坐标。

基于上述系统的进一步改进,所述数据加速处理系统还包括:

缓冲寄存器,用于缓存所述第二外接内存发送的所述第一预加载子图块中的像素值,并且根据所述预加载控制模块的控制指令向所述预加载控制模块传送对应的像素值,所述预加载控制模块根据获取的第一预加载子图块的像素值得到第二预加载子图块的各点像素值。

基于上述系统的进一步改进,所述根据所述奇列块/偶列块和仿射变换逆矩阵在所述原始图像中确定对应的第一预加载子图块,包括:

根据所述奇列块/偶列块和仿射变换逆矩阵确定抠图子图块,根据所述抠图子图块确定第一预加载子图块。

基于上述系统的进一步改进,所述基于所述第一预加载子图块计算得到第二预加载子图块,包括:

判断所述第一预加载子图块的尺寸是否大于所述第一BRAM空间/第二BRAM空间的尺寸;如果判断为是,根据所述第一预加载子图块和所述第一BRAM空间/第二BRAM空间的尺寸确定预缩小倍率参数,基于所述预缩小倍率参数对所述第一预加载子图块进行缩小,得到第二预加载子图块;如果判断为否,将所述第一预加载子图块作为所述第二预加载子图块。

基于上述系统的进一步改进,所述根据所述仿射变换逆矩阵和所述奇列块/偶列块对应的所述第一BRAM空间或第二BRAM空间中的第二预加载子图块确定所述每一个像素点的像素值,包括:

根据每一个像素点的坐标和所述仿射变换逆矩阵得到所述原始图像中对应像素点的坐标,将原始图像中像素点的坐标减去所述第一预加载子图块的首坐标之后再乘以所述预缩小倍率参数得到第一坐标;

根据所述第一坐标确定对应的所述每一个像素点的像素值。

基于上述系统的进一步改进,所述采用乒乓操作的方式实现对所述奇列块和偶列块执行预加载步骤和寻址读取步骤具体为:

将所述结果图像中所有的填图子图块按照从左至右、从上往下的顺序进行,基于乒乓操作对所述奇列块/偶列块执行所述预加载步骤和所述寻址读取步骤;

在对奇列块/偶列块执行所述预加载步骤时,同时对偶列块/奇列块进行所述寻址读取步骤。

基于上述系统的进一步改进,所述根据所述奇列块/偶列块和仿射变换逆矩阵确定抠图子图块,包括:

确定所述奇列块/偶列块对应的填图坐标;所述填图坐标包括所述奇列块/偶列块对应的四个填图顶点坐标;

基于仿射逆变换,根据所述四个填图顶点坐标和所述仿射变换逆矩阵确定所述抠图子图块的抠图坐标,所述抠图坐标包括四个抠图顶点坐标;

根据所述四个抠图顶点坐标确定所述抠图子图块。

基于上述系统的进一步改进,所述判断所述第一预加载子图块的尺寸是否大于所述第一BRAM空间/第二BRAM空间的尺寸,包括:

确定所述第一预加载子图块的长度和宽度以及确定所述第一BRAM空间/第二BRAM空间的长度和宽度;

计算所述第一预加载子图块的长度和所述第一BRAM空间/第二BRAM空间的长度的长度比值以及计算所述第一预加载子图块的宽度和所述第一BRAM空间/第二BRAM空间的宽度的宽度比值;所述第一BRAM空间和第二BRAM空间的尺寸相同;

若所述长度比值和宽度比值中任意一个大于1,则判断为是,否则,判断为否。

基于上述系统的进一步改进,所述根据所述第一预加载子图块和所述第一BRAM空间/第二BRAM空间的尺寸确定预缩小倍率参数,包括:

判断所述长度比值是否大于所述宽度比值;如果判断为是,则根据所述长度比值确定所述预缩小倍率参数;否则根据所述宽度比值确定所述预缩小倍率参数;所述预缩小倍率参数为N/M,其中,N和M均为[1,6]的整数,且M>N。

与现有技术相比,本发明至少可实现如下有益效果之一:

1、通过判断需要加载的原始图像数据(第一预加载子图块)的尺寸是否大于BRAM空间的尺寸;如果判断为是,根据原始图像数据和BRAM空间的尺寸对原始图像数据进行缩小,将缩小后的原始图像数据保存至BRAM空间,实现了将原始图像数据正常保存至BRAM空间,保证仿射变换中的缩小变换能够执行成功。

2、通过填图子图块的填图坐标,基于仿射逆变换确定需要加载的原始图像数据,提高了计算需要加载的原始图像数据的准确度。

3、根据需要加载的原始图像数据与BRAM空间的长度比值和宽度比值,进一步确定了预缩小倍率参数,使得对原始图像数据缩小时,保证了缩小范围,减少了原始图像数据的损失。

4、加速控制模块通过控制预加载控制模块和填图控制模块采用乒乓操作的方式实现对奇列块和偶列块执行预加载步骤和寻址读取步骤,实现了FPGA对数据的快速处理,减少了处理时延。

本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。

附图说明

附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。

图1为本发明实施例提供的基于FPGA仿射逆变换的数据加速处理系统的结构示意图;

图2为本发明实施例提供的结果图像划分为填图子图块的结构示意图;

图3为本发明实施例提供的填图子图块对应的抠图子图块的结构示意图之一;

图4为本发明实施例提供的填图子图块对应的抠图子图块的结构示意图之二;

图5为本发明实施例提供的对第一预加载子图块进行插值扩大的示意图;

图6为本发明实施例提供的对中间子图块进行隔点采样缩小的示意图;

图7为本发明实施例提供的第一坐标的结构示意图之一;

图8为本发明实施例提供的第一坐标的结构示意图之二。

具体实施方式

下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。

本发明的一个具体实施例,公开了一种基于FPGA仿射逆变换的数据加速处理系统,如图1所示,所述数据加速处理系统包括:

第一外接内存,用于存储多个填图子图块,所述填图子图块为根据结果图像划分的子图块,所述填图子图块分为奇列块和偶列块;

第二外接内存,用于存储原始图像;

加速控制模块,用于控制预加载控制模块和填图控制模块采用乒乓操作的方式实现对所述奇列块和偶列块执行预加载步骤和寻址读取步骤;

预加载控制模块,用于执行所述预加载步骤,所述预加载步骤包括:根据所述奇列块/偶列块和仿射变换逆矩阵在所述原始图像中确定对应的第一预加载子图块,并从所述第二外接内存中获取所述第一预加载子图块,基于所述第一预加载子图块计算得到第二预加载子图块,并将所述奇列块对应的所述第二预加载子图块存储至第一BRAM空间,将所述偶列块对应的所述第二预加载子图块存储至第二BRAM空间;

填图控制模块,用于执行所述寻址读取步骤,所述寻址读取步骤包括:依次遍历所述奇列块/偶列块中每一个像素点,根据所述仿射变换逆矩阵和所述奇列块/偶列块对应的所述第一BRAM空间/第二BRAM空间中的第二预加载子图块确定所述每一个像素点的像素值,并将所述像素值发送至所述第一外接内存中存储;

BRAM空间,包括所述第一BRAM空间和所述第二BRAM空间,分别用于存储所述奇列块和偶列块对应的第二预加载子图块。

具体地,利用FPGA进行视频图像处理时,需要将原始图像像素数据从FPGA外部配置的DDR(Double Data Rate,双倍速率同步动态随机存储器)内存中存储至FPGA片内BRAM空间内,再根据仿射变换矩阵将原始图像像素数据映射到结果图像中,结果图像也保存至DDR中。

值得说明的是,第一外接内存用于存储结果图像的像素值数据,第二外接内存用于存储原始图像的像素值数据,第一外接内存和第二外接内存可以是FPGA外部配置的同一个DDR,也可以是不同的DDR。具体的,第二外接内存是通过AXI4总线与预加载控制模块连接,第一外接内存通过AXI4总线与填图控制模块连接。AXI(Advanced eXtensibleInterface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced MicrocontrollerBus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。

具体地,在第一外接内存中,将结果图像划分为多个子图块,作为填图子图块,按照填图子图块所在的行和列,可以分为奇列块、偶列块。每个填图子图块的的尺寸设计好之后,就不再进行改变。示例性的,如图2所示,结果图像的尺寸为1280*1024,结果图像的长度为1280个像素,宽度为1024个像素;填图子图块的尺寸为128*128,填图子图块的长度为128个像素,宽度为128个像素;将结果图像划分为长度为10个填图子图块,宽度为8个填图子图块,合计将结果图像划分为80个填图子图块。

具体地,第二外接内存用于保存多个抠图子图块,多个抠图子图块组成原始图像。

优选地,如图1所示,所述数据加速处理系统还包括:

坐标生成器,用于生成所述原始图像和结果图像中的任意一个像素点的坐标,并且用于生成所述第二预加载子图块中任意一个像素点的坐标。

可以理解的是,坐标生成器采用二维坐标系对结果图像和原始图像中的所有的像素点进行坐标生成定位。

可以理解的是,对结果图像和原始图像采用二维坐标系对所有的像素点进行定位。

对于二维坐标系内的仿射变换逆矩阵包括:

1、二维平移的3*3控制矩阵为:

在该矩阵中tx、ty是平移的像素距离,是以X、Y的坐标轴箭头方向对应的。对于逆变换,它的正向平移正好与坐标轴的箭头方向相反,因此用负号表示。

2、二维旋转的3*3控制矩阵为:

在该矩阵中θ代表的是旋转角度,逆变换中该矩阵的正弦参数符号与正向变换正好相反。

3、二维缩放的3*3控制矩阵为:

该矩阵中Sx、Sy是放大倍数,由于正向变换的放大倍数是逆变换的缩小倍数,因此这里的放大倍数成倒数形式存在。

根据仿射变换逆矩阵,对结果图像和原始图像进行图像坐标的重新布局,值得说明的是,将结果图像的像素点坐标映射到原始图像的坐标上,再将原始图像的坐标上的像素值搬运到结果图像的像素点坐标,其矩阵运算表达式为:

其中,坐标(u,v)为结果图像中任意一个像素点坐标,坐标(x,y)为根据仿射变换逆矩阵获得的原始图像中对应的坐标,

值得说明的是,通过改变控制矩阵中的参数实现图像的变换,当然也可以将多种形变参数混合后,在一次仿射变换过程中实现多种变形同时进行的目的。

具体地,在加速控制模块中,基于乒乓操作对所述奇列块和偶列块执行预加载步骤和寻址读取步骤;预加载步骤是为了使第一外接内存结果图像中划分出的填图子图块(奇列块/偶列块)所对应的原始图像的子图块的像素点的像素值数据存储至对应的BRAM空间;寻址读取步骤是为了将存储至对应的BRAM空间的像素值数据填充到结果图像中划分出的填图子图块(奇列块/偶列块)中的每一个像素点中,使填图子图块中每一个像素点均填充到对应的像素值数据。

优选地,所述采用乒乓操作的方式实现对所述奇列块和偶列块执行预加载步骤和寻址读取步骤具体为:

将所述结果图像中所有的填图子图块按照从左至右、从上往下的顺序进行,基于乒乓操作对所述奇列块/偶列块执行所述预加载步骤和所述寻址读取步骤;

在对奇列块/偶列块执行所述预加载步骤时,同时对偶列块/奇列块进行所述寻址读取步骤。

具体地,如图2所示,结果图像被划分为长度为10个填图子图块,宽度为8个填图子图块,将结果图像中划分出的所有的填图子图块按照从左至右,从上往下的顺序进行执行,在结果图像总共包括40个奇列块和40个偶列块。在第一行的填图子图块中第1、3、5、7和9个填图子图块为奇列块,第2、4、6、8和10个填图子图块为偶列块;同样,在第二行的填图子图块中第11个填图子图块为奇列块,第12个填图子图块为偶列块,往后依次类推。值得说明的是,本发明中对结果中的所有填图子图块的执行顺序也可以按照其他顺序,只需要将所有的填图子图块按照一定的顺序执行完成即可。

示例性的:

在第1个执行周期,加速控制模块控制预加载控制模块对第1个填图子图块执行预加载步骤;

在第2个执行周期,加速控制模块控制预加载控制模块对第2个填图子图块执行预加载步骤,同时加速控制模块控制填图控制模块对第1个填图子图块执行寻址读取步骤;

在第3个执行周期,加速控制模块控制预加载控制模块对第3个填图子图块执行预加载步骤,同时加速控制模块控制填图控制模块对第2个填图子图块执行寻址读取步骤;

……

在第80个执行周期,加速控制模块控制预加载控制模块对第80个填图子图块执行预加载步骤,同时加速控制模块控制填图控制模块对第79个填图子图块执行寻址读取步骤;

在第81个执行周期,加速控制模块控制填图控制模块对第80个填图子图块执行寻址读取步骤。

值得说明的是,本发明实施例加速控制模块控制预加载控制模块和填图控制模块采用乒乓操作的方式对结果图像划分出的填图子图块执行预加载步骤和寻址读取步骤,加快了FPGA对数据的处理速度,实现了FPGA对数据的快速处理,减少了处理时延。

具体地,通过预加载控制模块执行预加载步骤,预加载步骤包括:根据奇列块/偶列块和仿射变换逆矩阵在原始图像中确定对应的第一预加载子图块,并从第二外接内存中获取第一预加载子图块,基于第一预加载子图块计算得到第二预加载子图块,并将奇列块对应的第二预加载子图块存储至第一BRAM空间,将偶列块对应的第二预加载子图块存储至第二BRAM空间。示例性的,如图2所示,将第1、3、5、7…79个填图子图块对应的第二预加载子图块存储至第一BRAM空间,将第2、4、6、8…80个填图子图块对应的第二预加载子图块存储至第二BRAM空间。

值得说明的是,第一BRAM空间和第二BRAM空间的尺寸设计相同,第一BRAM空间和第二BRAM空间为相互独立的两个BRAM空间,均属于FPGA的片内BRAM空间。

优选地,所述根据所述奇列块/偶列块和仿射变换逆矩阵在所述原始图像中确定对应的第一预加载子图块,包括:

根据所述奇列块/偶列块和仿射变换逆矩阵确定抠图子图块,根据所述抠图子图块确定第一预加载子图块。

具体地,根据奇列块/偶列块和仿射变换逆矩阵计算出抠图子图块,抠图子图块为原始图像中的子图块,抠图子图块为填图子图块在原始图像中对应的子图块。

优选地,所述根据所述奇列块/偶列块和仿射变换逆矩阵确定抠图子图块,包括:

确定所述奇列块/偶列块对应的填图坐标;所述填图坐标包括所述奇列块/偶列块对应的四个填图顶点坐标;

基于仿射逆变换,根据所述四个填图顶点坐标和所述仿射变换逆矩阵确定所述抠图子图块的抠图坐标,所述抠图坐标包括四个抠图顶点坐标;

根据所述四个抠图顶点坐标确定所述抠图子图块。

具体地,如图3所示,填图子图块为结果图像中的任意一个子图块,该填图子图块可以为奇列块,也可以为偶列块,结合结果图像的二维坐标系,针对该填图子图块可以确定对应的四个填图顶点坐标Q1、Q2、Q3和Q4。

基于仿射逆变换,根据四个填图顶点坐标Q1、Q2、Q3和Q4,分别通过仿射变换逆矩阵计算确定对应的在原始图像中的四个抠图顶点坐标Q1’、Q2’、Q3’和Q4’,如图3所示,抠图子图块为填图子图块在原始图像中对应的子图块。

值得说明的是,FPGA外部配置的DDR中属于突发长度读取的,如果要从DDR中直接提取抠图子图块对应的像素数据,会产生很大的时序浪费。因此,需要根据原始图像的抠图子图块确定第一预加载子图块,第一预加载子图块为需要从第二外接内存DDR中存储至BRAM空间的像素值数据。

优选地,所述根据所述抠图子图块确定第一预加载子图块,包括:

根据所述抠图子图块的所述四个抠图顶点坐标,确定出所述抠图子图块在两个坐标轴上的最大值和最小值;

根据所述两个坐标轴上的最大值和最小值,确定所述第一预加载子图块的四个顶点坐标:

其中,A、B、C和D表示所述第一预加载子图块的四个顶点坐标,Xmax表示所述抠图子图块在X轴上的最大值,Xmin表示所述抠图子图块在X轴上的最小值,Ymax表示所述抠图子图块在Y轴上的最大值,Ymin表示所述抠图子图块在Y轴上的最小值。

具体地,如图3所示,四个抠图顶点坐标Q1’、Q2’、Q3’和Q4’,在X轴上的最大值为Xmax,最小值为Xmin;在Y轴上的最大值为Ymax,最小值为Ymin。第一预加载子图块的四个顶点坐标为

可以理解的是,第一预加载子图块所围成的矩形包括抠图子图块形成的抠图区域,并且第一预加载子图块的四个顶点坐标均为整数。

优选地,所述基于所述第一预加载子图块计算得到第二预加载子图块,包括:

判断所述第一预加载子图块的尺寸是否大于所述第一BRAM空间/第二BRAM空间的尺寸;如果判断为是,根据所述第一预加载子图块和所述第一BRAM空间/第二BRAM空间的尺寸确定预缩小倍率参数,基于所述预缩小倍率参数对所述第一预加载子图块进行缩小,得到第二预加载子图块;如果判断为否,将所述第一预加载子图块作为所述第二预加载子图块。

具体地,第一BRAM空间和第二BRAM空间的尺寸设计一样,BRAM空间的尺寸一般设计为填图子图块的尺寸的1.5-2倍。示例性的,填图子图块的尺寸为128*128,BRAM空间的尺寸设计为256*256。BRAM空间的尺寸设计确定之后,就不再进行改变。

值得说明的是,当面对原始图像缩小时,根据结果图像的填图子图块从原始图像中加载像素数据时,可能需要加载较大的原始图像的区域,设计确定好的BRAM空间可能不足以放置所需要的原始图像的像素数据,会导致数据执行失败。因此,本发明在将第一预加载子图块存入BRAM空间之前,会对第一预加载子图块的尺寸大小与BRAM空间的尺寸大小进行比较。

如图3所示,当第一预加载子图块的尺寸大于对应的第一BRAM空间/第二BRAM空间的尺寸时,则根据预缩小倍率参数对第一预加载子图块进行缩小,得到第二预加载子图块,以使得第一BRAM空间/第二BARM空间大于第二预加载子图块,能够使第二预加载子图块正常的放置于第一BRAM空间/第二BRAM空间中,使数据执行成功。

如图4所示,当第一预加载子图块的尺寸小于或等于第一BRAM空间/第二BRAM空间的尺寸时,则直接将第一预加载子图块作为第二预加载子图块。

优选地,所述判断所述第一预加载子图块的尺寸是否大于所述第一BRAM空间/第二BRAM空间的尺寸,包括:

确定所述第一预加载子图块的长度和宽度以及确定所述第一BRAM空间/第二BRAM空间的长度和宽度;

计算所述第一预加载子图块的长度和所述第一BRAM空间/第二BRAM空间的长度的长度比值以及计算所述第一预加载子图块的宽度和所述第一BRAM空间/第二BRAM空间的宽度的宽度比值;所述第一BRAM空间和第二BRAM空间的尺寸相同;

若所述长度比值和宽度比值中任意一个大于1,则判断为是,否则,判断为否。

具体地,第一BRAM空间和第二BRAM空间的设计尺寸相同,并且第一BRAM空间和第二BRAM空间的尺寸是固定不变的,如均为L*W;L为长度,通常为256个像素,W为宽度,通常为256个像素。第一预加载子图块的尺寸根据第一预加载子图块的四个顶点坐标A、B、C和D计算确定,第一预加载子图块的长度为

具体地,第一预加载子图块的长度和第一BRAM空间/第二BRAM空间的长度的长度比值为

具体地,比较长度比值

具体地,根据所述第一预加载子图块和所述第一BRAM空间/第二BRAM空间的尺寸确定预缩小倍率参数。

优选地,所述根据所述第一预加载子图块和所述第一BRAM空间/第二BRAM空间的尺寸确定预缩小倍率参数,包括:

判断所述长度比值是否大于所述宽度比值;如果判断为是,则根据所述长度比值确定所述预缩小倍率参数;否则根据所述宽度比值确定所述预缩小倍率参数;所述预缩小倍率参数为N/M,其中,N和M均为[1,6]的整数,且M>N。

具体地,判断长度比值

优选地,所述预缩小倍率参数为N/M,其中,N和M均为[1,6]的整数,且M>N。

值得说明的是,当长度比值

示例性的,当计算得到长度比值为1.6,宽度比值为1.2,则根据长度比值确定预缩小倍率参数可以为3/5。具体的,先取长度比值的倒数为1/1.6=0.625,则选取整数N和M使得N/M不大于0.625并尽量接近0.625,因此选取N为3,M为5,即将该倒数值化简为分数3/5,得到预缩小倍率参数为3/5。

优选地,所述基于所述预缩小倍率参数对所述第一预加载子图块进行缩小,得到第二预加载子图块,包括:

在所述第一预加载子图块中的每一行的相邻两个像素之间插入N-1个像素点,之后,在所述第一预加载子图块中的每一列的相邻两个像素之间插入N-1个像素点,从而将所述第一预加载子图块扩大N倍,得到中间子图块;

在所述中间子图块中,每间隔M-1行选取一行作为待采样行,在所述每一待采样行中,每间隔M-1个点选取一个像素点作为采样点,从而将所述中间子图块缩小M倍,得到第二预加载子图块。

具体地,如图5所示,示例性的:当N为2时,在第一预加载子图块的每一行的相邻两个像素之间插入1个像素点,之后,在第一预加载子图块中的每一列的相邻两个像素之间插入1个像素点,从而将第一预加载子图块扩大2倍,得到中间子图块;当N为3时,在第一预加载子图块的每一行的相邻两个像素之间插入2个像素点,之后,在第一预加载子图块中的每一列的相邻两个像素之间插入2个像素点,从而将第一预加载子图块扩大3倍,得到中间子图块。原始像素表示第一预加载子图块中的像素点,插值像素表示插入的像素点。

优选地,在所述第一预加载子图块中插入像素点时,插值像素的像素值的表达式为:

Dix_j=DixJ-j[(DixJ-DixK)/N];

其中,DixJ和DixK分别表示所述第一预加载子图块中相邻的两个像素点J和K的像素值,Dix_j表示从像素点J至像素点K依次插入的N-1个像素点中的第j个像素点的像素值,1≤j≤(N-1)。

具体地,如图5所示,示例性的:当N为2时,在第一预加载子图块的第一行中,在两个相邻的原始像素之间插入1个像素点,从左往右,两个相邻的原始像素的像素值分别为20和30,则插入的像素点的像素值为20-1*[(20-30)/2],即插入的1个像素点的像素值为25;当N为3时,在第一行中,在两个相邻的原始像素之间插入2个像素点,从左往右,两个相邻的原始像素的像素值分别为20和30,则插入的像素点的像素值为20-1*[(20-30)/3]和20-2*[(20-30)/3],即插入的2个像素点的像素值为23和26。

具体地,如图5所示,示例性的:当N为2时,在第一预加载子图块中的第一列中,在相邻的两个原始像素之间插入1个像素点,从上往下,两个相邻的原始像素的像素值分别为30和40,则插入的像素点的像素值为30-1*[(30-40)/2],即插入的1个像素点的像素值为35;当N为3时,在第一预加载子图块中的第一列中,在相邻的两个原始像素之间插入2个像素点,从上往下,两个相邻的原始像素的像素值分别为30和40,则插入的像素点的像素值为30-1*[(30-40)/3]和30-2*[(30-40)/3],即插入的2个像素点的像素值为33和36。

具体地,如图6所示,示例性的:当M为2时,在中间子图块中,每间隔1行选取一行作为待采样行,在每一待采样行中,每间隔1个点选取一个像素点作为采样点,从而将中间子图块缩小2倍,得到第二预加载子图块;当M为3时,在中间子图块中,每间隔2行选取一行作为待采样行,在每一待采样行中,每间隔2个点选取一个像素点作为采样点,从而将中间子图块缩小3倍,得到第二预加载子图块。采用像素表示采用点的像素,丢弃像素表示未被采样的像素点。

与现有技术相比,本发明实施例提供的基于FPGA仿射逆变换的数据加速处理系统,通过乒乓操作对结果图像划分出的填图子图块执行预加载步骤和寻址读取步骤,加快了FPGA对数据的处理速度,实现了FPGA对数据的快速处理,减少了处理时延;通过判断需要加载的原始图像数据的尺寸是否大于BRAM空间的尺寸;如果判断为是,根据原始图像数据和BRAM空间的尺寸对原始图像数据进行缩小,将缩小后的原始图像数据保存至BRAM空间,解决了在仿射变换过程中由于原图过大,而BRAM空间过小而导致无法实现仿射缩小变换的技术问题;通过填图子图块的填图坐标,基于仿射逆变换确定需要加载的原始图像数据,提高了计算需要加载的原始图像数据的准确度;根据需要加载的原始图像数据与BRAM空间的长度比值和宽度比值,进一步确定了预缩小倍率参数,使得对原始图像数据缩小时,保证了缩小范围,减少了原始图像数据的损失。

具体地,BRAM空间包括第一BRAM空间和第二BRAM空间,分别用于存储奇列块和偶列块对应的第二预加载子图块。

优选地,如图1所示,所述数据加速处理系统还包括:

缓冲寄存器,用于缓存所述第二外接内存发送的所述第一预加载子图块中的像素值,并且根据所述预加载控制模块的控制指令向所述预加载控制模块传送对应的像素值,所述预加载控制模块根据获取的第一预加载子图块的像素值得到第二预加载子图块的各点像素值。

即当第一预加载子图块的尺寸大于BRAM空间的尺寸时,对第一预加载子图块进行插值并隔点采样后得到第二预加载子图块;当第一预加载子图块的尺寸不大于BRAM空间的尺寸时,直接将获取的第一预加载子图块的各像素点作为第二预加载子图块的各像素点,并将第二预加载子图块中的各像素点的像素值存储至所述BRAM空间。

在填图控制模块中,所述寻址读取步骤包括:依次遍历所述奇列块/偶列块中每一个像素点,根据所述仿射变换逆矩阵和所述奇列块/偶列块对应的所述第一BRAM空间/第二BRAM空间中的第二预加载子图块确定所述每一个像素点的像素值,并将所述像素值发送至所述第一外接内存中存储。

优选地,所述根据所述仿射变换逆矩阵和所述奇列块/偶列块对应的所述第一BRAM空间或第二BRAM空间中的第二预加载子图块确定所述每一个像素点的像素值,包括:

根据每一个像素点的坐标和所述仿射变换逆矩阵得到所述原始图像中对应像素点的坐标,将原始图像中像素点的坐标减去所述第一预加载子图块的首坐标之后再乘以所述预缩小倍率参数得到第一坐标;

根据所述第一坐标确定对应的所述每一个像素点的像素值。

具体地,针对填图子图块中的任意一个像素点坐标为(u,v),根据放射变换逆矩阵计算获取对应原图的坐标为(u’,v’),值得说明的是,(u,v)和(u’,v’)均属于相同坐标系下的坐标点。可以理解的是,在BRAM空间中的坐标系与上述坐标系不同,需要将对应的坐标(u’v’)减去填图子图块对应的第一预加载子图块的首坐标,以使得对应的坐标点(u’,v’)转换成以BRAM空间坐标系下的坐标点(u”,v”);根据预缩小倍率参数N/M,获取像素点(u,v)在BRAM空间对应的第一坐标为(u”*N/M,v”*N/M)。

可以理解的是,第一BRAM空间和第二BRAM空间的坐标系相同。

具体地,所述根据所述第一坐标确定对应的所述每一个像素点的像素值,包括:

令P(x,y)表示所述第一坐标;

当x和y均为整数时,将P点的像素值作为对应的所述每一个像素点的像素值;

当x和y均不为整数时,根据P点确定P点周围的四个第二坐标,并且从所述BRAM空间寻址确定所述四个第二坐标的像素值;基于双线性插值算法,通过所述四个第二坐标的像素值,计算所述第一坐标对应的像素值,将所述第一坐标对应的像素值作为对应的所述每一个像素点的像素值;

当x和y中只有一个为整数时,根据P点确定P点周围的两个第三坐标,并且从所述BRAM空间寻址确定所述两个第三坐标的像素值;基于双线性插值算法,通过所述两个第三坐标的像素值,计算所述第一坐标对应的像素值,将所述第一坐标对应的像素值作为对应的所述每一个像素点的像素值。

具体地,当x和y均为整数时,说明第一坐标P(x,y)是一个像素点,此时,直接将BRAM空间中P点对应的像素值取出作为填图子图块中的像素点的像素值。

当x和y中只有一个为整数时,示例性的,如图7所示,y为整数,x不为整数,说明第一坐标P(x,y)在相邻的两个像素点的整数坐标之间,此时根据P点确定出两个第三坐标P1和P2,将BRAM空间中第三坐标P1和P2对应的像素值取出DixP1、DixP2,则第一坐标P点对应的像素值为DixP=DixP1*k1+Dix*k2,其中

当x和y均不为整数时,如图8所示,说明第一坐标P(x,y)在相邻的4个像素点之间,此时根据P点确定出四个第二坐标P1、P2、P3和P4,将BRAM空间中第二坐标P1、P2、P3和P4的像素值取出DixP1、DixP2、DixP3和DixP4。则第一坐标P点对应的像素值为DixP=(DixP1*k1+DixP2*k3+DixP3*k1+DixP4*k3+DixP1*k4+DixP3*k2+DixP2*k4+DixP4*k2)/4,其中

按照上述方法依次得到每个填图子图块中的像素值后,所有填图子图块形成了结果图像。

与现有技术相比,本发明实施例提供的基于FPGA仿射逆变换的数据加速处理系统,通过填图子图块中的任意一个像素点确定出在BRAM空间对应的第一坐标,通过第一坐标的不同情况确定第一坐标对应的像素值,将第一坐标的像素值作为填图子图块中对应像素点的像素值。

本领域技术人员可以理解,实现上述实施例的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

相关技术
  • 基于FPGA仿射逆变换的数据处理方法
  • 基于仿射逆变换模型的视频全局运动补偿方法
技术分类

06120115925470