首页> 中国专利> 基于FPGA的图像超分辨率的实现方法

基于FPGA的图像超分辨率的实现方法

摘要

本发明提供一种基于FPGA的图像超分辨率的实现方法,循环控制模块控制RAM模块的循环调度实现数据写入;RAM模块读取数据时,采用单输入双输出端口的RAM,定义所述单输入双输出端口的RAM的深度为源图像一行的像素点数,宽度为像素数据宽度,实现源数据相邻两行像素的存储;由位置分析模块得到的权值是归一化的小数,将权值映射到整数范围内运算。本发明提高了图像处理速率,实现了超分辨率。

著录项

  • 公开/公告号CN105160622A

    专利类型发明专利

  • 公开/公告日2015-12-16

    原文格式PDF

  • 申请/专利权人 南京铁道职业技术学院;

    申请/专利号CN201510623919.0

  • 发明设计人 钟雪燕;李春英;

    申请日2015-09-25

  • 分类号G06T1/00;

  • 代理机构南京钟山专利代理有限公司;

  • 代理人戴朝荣

  • 地址 210015 江苏省南京市珍珠南路65号

  • 入库时间 2023-12-18 13:04:21

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-31

    授权

    授权

  • 2016-01-13

    实质审查的生效 IPC(主分类):G06T1/00 申请日:20150925

    实质审查的生效

  • 2015-12-16

    公开

    公开

说明书

技术领域

本发明涉及一种图像超分辨率的实现方法,具体涉及一种基于FPGA的 图像超分辨率的实现方法。

背景技术

通常的图像显示设备具有固定的分辨率,低分辨率的图像数据需要进 行超分辨率处理,获得与显示设备相匹配的分辨率才能正常显示(如HDTV, High-DefinitionTV),这一过程本质上就是一种图像超分辨处理。

图像超分辨率技术在各个领域中得到广泛应用,如公共安全、医学成 像、军事、地质、工业及消费电子等产业。通过该技术尽可能提高图像的 分辨率,达到更好的图像识别能力和识别精度。

随着图像数据量的增大,对图像处理速度提出了更高的要求,利用硬 件实现图像处理已经逐渐成为图形处理研究的重要课题。

FPGA由于强悍的数据处理能力得到广泛关注,其对数据采用并行流水 式处理方式,加快数据处理速度。用一般软件对图像实时处理小于等于一 帧每秒,FPGA硬件化处理能够实时达到25~30帧每秒。因而图像处理的FPGA 硬件化值得研究。

FPGA实现图像处理算法需要在算法性能和资源使用量之间寻求平衡。 传统的线性插值算法包括最近邻插值、双线性插值、四点双三次插值以及 六点双三次插值,其中最近邻插值的超分辨图像效果不理想,高次插值方 法复杂度高不便于硬件实现。

发明内容

本发明的目的是提供一种基于FPGA的图像超分辨率的实现方法,基于 FPGA的图像超分辨率双线性插值实现方式,提出了基于单输入双输出端口 RAM缓冲的二级循环调度机制,用以实现共享资源分配和并行流水处理。

本发明提供了如下的技术方案:

一种基于FPGA的图像超分辨率的实现方法,循环控制模块控制RAM模 块的循环调度实现数据写入;

RAM模块读取数据时,采用单输入双输出端口的RAM,定义所述单输入 双输出端口的RAM的深度为源图像一行的像素点数,宽度为像素数据宽度, 实现源数据相邻两行像素的存储;

由位置分析模块得到的权值是归一化的小数,将权值映射到整数范围 内运算。

优选的,所述单输入双输出端口的RAM在双线性插值硬件结构图中定 义了四个单输入双输出端口的RAM0-3,其中RAM0、RAM1加权运算对应目标 图像的插值像素值时,RAM2、RAM3写入目标图像下一行运算所需的源图像 的像素值;RAM0、RAM1运算结束后,RAM2、RAM3进行加权运算,RAM0、RAM1 开始写入源图像像素值,在时间上实现数据连续运算输出,空间上实现RAM 空间的并行复用,提高运算效率。

进一步的,循环控制模块控制四个RAM模块的循环调度实现数据写入, 分别为RAM0、RAM1和RAM2、RAM3之间以及RAM0RAM1之间、RAM2RAM3之间; RAM0、RAM1和RAM2、RAM3之间在运算目标图像像素值和写入源图像像素值 功能间循环切换;RAM0RAM1之间、RAM2RAM3之间实现源图像像素值循环写 入。这样的结构设计充分利用了FPGA并行流水复用的特征,既保证了数据 带宽的充分利用,又节省了FPGA的空间资源。

进一步的,整个运算过程中,权值基于浮点数运算得到,将浮点数整 数化,即可将运算都整数化;浮点数的整数化是将对应的浮点数左移相应 的位数,在乘法运算结束后右移相应的位数。

本发明的有益效果是:本发明基于FPGA的图像超分辨率双线性插值实 现方式,提出了基于单输入双输出端口RAM缓冲的二级循环调度机制,用 以实现共享资源分配和并行流水处理。提高了图像处理速率,实现了超分 辨率。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与 本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图 中:

图1是双线性插值硬件结构图;

图2是RAM循环调度机制图;

图3FPGA资源占用图;

图4算法模块建立保持时间图;

图5是插值前的Lena图,源图像的分辨率为512x512;

图6是插值后的Lena图,插值后分辨率为1024x1024;

图7是插值前Lena图的直方图;

图8是插值后Lena图的直方图。

具体实施方式

FPGA具有两个对立的性能:(1)具有并行处理和流水线技术,能够达到 高性能的处理,但M倍的性能要耗费M倍逻辑;(2)具有复用技术,能够减 少逻辑,但控制复杂度上升。基于FPGA的功能特性,本发明提出基于单输 入双输出端口RAM缓冲的二级循环调度机制实现共享资源分配和并行流水 处理。同时Xilinx的FPGA基于LUT结构,可以实现浮点运算以及乘法运 算,但会造成资源的严重浪费。本文将所有浮点数都整数化,在整数领域 进行数据运算。

双线性插值通过四点确定一个平面,是个过约束问题,所以在一个矩 形栅格上的一阶插值需要用到双线性函数。令f(x,y)为两个变量的函数,定 义为四点形成的正方形内的任意值,令双线性方程

f(x,y)=ax+by+cxy+d(1)

定义一个双曲抛物面与已知点拟合。

图像双线性插值算法的实现经过采样、水平和垂直线性插值三步骤来 完成。设Xs、Ys分别为源图像在X、Y上的尺寸,Xd、Yd分别为目标图像 在X、Y上的尺寸,定义两者的缩放因子S,则水平方向、垂直方向的缩放 因子分别为

Sx=Xs/Xd(2)

Sy=Ys/Yd(3)

定义源图像水平方向采样的像素点位置集合

Ixs={0,1,2,3...Xs-1}---(4)

定义目标图像水平方向采样的像素点位置集合

Ixd={0,1,2,3...Xd-1}---(5)

定义两者图像像素点之间的映射关系为则根据公式(2)可得

Rxs={0,1×Sx,2×Sx,3×Sx...Xd-1×Sx}---(6)

由此可得目标图像水平方向第Xd(i)点位置映射到原图像的像素点位置 为

R(Xd(i))=Xd(i)×Sx(7)

得到的R(Xd(i))是实数,该目标图像水平方向第Xd(i)点像素插值在源图 像[R(Xd(i))]和([R(Xd(i))]+1)之间,同时(R(Xd(i))-[R(Xd(i))])和 ([R(Xd(i))]+1-R(Xd(i)))对应于目标图像第Xd(i)点与源图像第[R(Xd(i))]点和 第([R(Xd(i))]+1)点之间相对距离的归一化值。

令F(Xd(i))=R(Xd(i))-[R(Xd(i))](8)

令目标图像像素值为Vd,源图像像素值为Vs,则

Vd(Xd(i))=Vs([R(Xd(i))])×F(Xd(i))+

Vs([R(Xd(i))]+1)×(1-F(Xd(i)))(9)

同理在垂直方向的插值为

Vd(Xd(i),Yd(j))=Vs(Xd(i),R[Yd(j)])×G(Yd(j))

+Vs([Xd(i),R(Yd(j))]+1)×(1-G(Yd(j)))(10)

将(8)式代入(9)式得到

Vd(Xd(i),Yd(j))=Vs([R(Xd(i))],[R(Yd(j))])

×(1-F(Xd(i)))×(1-G(Yd(j)))+

Vs([R(Xd(i))],[R(Yd(j))]+1)×F(Xd(i))×

(1-G(Yd(j)))+Vs([R(Xd(i))]+1,[R(Yd(j))])×

(1-F(Xd(i)))×G(Yd(j))+

Vs([R(Xd(i))]+1,[R(Yd(j))]+1)×F(Xd(i)))×

G(Yd(j))(11)

可以发现公式(11)和公式(1)是类似的。

由运算分析可知,目标图像某一点的像素值由源图像相邻两行的相邻 两点决定,为此设计了单输入双输出端口的RAM,实现读取相邻地址的两个 数据。定义该RAM的深度为源图像一行的像素点数,宽度为像素数据宽度, 实现源数据相邻两行像素的存储。

根据目标图像存储像素的位置Xd(i)、Yd(j)经位置分析模块得到与此像 素点相关的源图像的位置(R([Xd(i)]),R([Xd(j)]))、(R([Xd(i)])+1,R([Xd(j)]))、 (R([Xd(i)]),R([Xd(j)]+1))、(R([Xd(i)])+1,R([Xd(j)]+1))以及相应位置点的权值 F(Xd(i))、(1-F(Xd(i)))和G(Yd(j))、(1-G(Yd(j)))。写控制模块根据位置分析模 块得到的源图像的位置控制源图像的模块写入相应RAM中。

如图1所示,在双线性插值硬件结构图中定义了四个单输入双输出端 口的RAM。其中RAM0、RAM1加权运算对应目标图像的插值像素值时,RAM2、 RAM3写入目标图像下一行运算所需的源图像的像素值;RAM0、RAM1运算结 束后,RAM2、RAM3进行加权运算,RAM0、RAM1开始写入源图像像素值,在 时间上实现数据连续运算输出,空间上实现RAM空间的并行复用,提高运 算效率。

循环控制模块控制四个RAM模块的循环调度实现数据写入,如图2所 示循环调度分为两级,分别为RAM0、RAM1和RAM2、RAM3之间以及RAM0RAM1 之间、RAM2RAM3之间。RAM0、RAM1和RAM2、RAM3之间在运算目标图像像 素值和写入源图像像素值功能间循环切换;RAM0RAM1之间、RAM2RAM3之间 实现源图像像素值循环写入。这样的结构设计充分利用了FPGA并行流水复 用的特征,既保证了数据带宽的充分利用,又节省了FPGA的空间资源。

根据运算分析可知由位置分析模块得到的四个权值是归一化的小数, FPGA虽然能够支持浮点数运算,但需要大量逻辑和布线资源,性能比较差, 不利于FPGA的运算,因此将权值映射到整数范围内运算。整个运算过程中, Sx、Sy是浮点数,权值基于Sx、Sy运算得到,将Sx、Sy整数化,即可将运 算都整数化。浮点数的整数化是将对应的浮点数左移相应的位数,在乘法 运算结束后右移相应的位数。

本实施例在Xilinx公司的Kintex-7开发板上实验验证,如图3所示是 该算法占用的FPGA资源,包括645个触发器、2个RAM以及11个DSP等, 资源占用率不高。

图4所示是双线性插值硬件化实现的建立保持时间图,从图中可以看 出数据最少只要保持(0.067+5.175)=5.242ns传输即可,意味着时钟频率可以 达到190MHz,插值到1024x1024像素的时间是5.5ms,实际使用过程中不采 用理想最高频率,选择低些的频率来避免数据丢失或错乱。一般选择实现 25~30帧每秒即可。

如图5-6所示是插值前后的Lena图,源图像的分辨率为512x512,插值 后分辨率为1024x1024,可以大致看到图6比图5细节方面更加清晰。

图7-8是插值前后Lena图的直方图比较,从直方图中可以更直观地分析 图像的细节连续性问题。比较图7和图8可以看到插值后的Lena直方图比 插值前更平滑,说明图像的连续过渡性更好,实现了直方图的均衡化。

综上,本发明能够有效的提高图像分辨率以及图像处理速度。这一点 在在Kintex-7开发板上得到验证,实现图像处理25~30帧每秒,同时图像 插值后不仅细节更加清晰,从直方图中可看到图像得到了均衡化。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管 参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说, 其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分 技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、 等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号