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

技术编号:12524066 阅读:90 留言:0更新日期:2015-12-17 13:28
本发明专利技术提供一种基于FPGA的图像超分辨率的实现方法,循环控制模块控制RAM模块的循环调度实现数据写入;RAM模块读取数据时,采用单输入双输出端口的RAM,定义所述单输入双输出端口的RAM的深度为源图像一行的像素点数,宽度为像素数据宽度,实现源数据相邻两行像素的存储;由位置分析模块得到的权值是归一化的小数,将权值映射到整数范围内运算。本发明专利技术提高了图像处理速率,实现了超分辨率。

【技术实现步骤摘要】

本专利技术涉及一种图像超分辨率的实现方法,具体涉及一种基于FPGA的图像超分 辨率的实现方法。
技术介绍
通常的图像显示设备具有固定的分辨率,低分辨率的图像数据需要进行超分辨率 处理,获得与显示设备相匹配的分辨率才能正常显示(如HDTV, High-Definition TV),这 一过程本质上就是一种图像超分辨处理。 图像超分辨率技术在各个领域中得到广泛应用,如公共安全、医学成像、军事、地 质、工业及消费电子等产业。通过该技术尽可能提高图像的分辨率,达到更好的图像识别能 力和识别精度。 随着图像数据量的增大,对图像处理速度提出了更高的要求,利用硬件实现图像 处理已经逐渐成为图形处理研究的重要课题。 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 进行加权运算,RAMO、RAMl开始写入源图像像素值,在时间上实现数据连续运算输出,空间 上实现RAM空间的并行复用,提高运算效率。 进一步的,循环控制模块控制四个RAM模块的循环调度实现数据写入,分别为 RAMO、RAMl 和 RAM2、RAM3 之间以及 RAM0RAM1 之间、RAM2RAM3 之间;RAMO、RAMl 和 RAM2、 RAM3之间在运算目标图像像素值和写入源图像像素值功能间循环切换;RAM0RAM1之间、 RAM2RAM3之间实现源图像像素值循环写入。这样的结构设计充分利用了 FPGA并行流水复 用的特征,既保证了数据带宽的充分利用,又节省了 FPGA的空间资源。 进一步的,整个运算过程中,权值基于浮点数运算得到,将浮点数整数化,即可将 运算都整数化;浮点数的整数化是将对应的浮点数左移相应的位数,在乘法运算结束后右 移相应的位数。 本专利技术的有益效果是:本专利技术基于FPGA的图像超分辨率双线性插值实现方式,提 出了基于单输入双输出端口 RAM缓冲的二级循环调度机制,用以实现共享资源分配和并行 流水处理。提高了图像处理速率,实现了超分辨率。【附图说明】 附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实 施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中: 图1是双线性插值硬件结构图; 图2是RAM循环调度机制图; 图3 FPGA资源占用图;图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 (I) 定义一个双曲抛物面与已知点拟合。 图像双线性插值算法的实现经过采样、水平和垂直线性插值三步骤来完成。设Xs、 \分别为源图像在X、Y上的尺寸,X d、Yd分别为目标图像在X、Y上的尺寸,定义两者的缩放 因子S,则水平方向、垂直方向的缩放因子分别为 Sx=XsAd (2) Sy=YsAd (3) 定义源图像水平方向采样的像素点位置集合(4) 定义目标图像水平方向采样的像素点位置集合(5) 定义两者图像像素点之间的映射关系为则根据公式(2)可得⑷) 由此可得目标图像水平方向第XJi)点位置映射到原图像的像素点位置为 R(Xd(i)) = Xd (i) XSx (7) 得到的R(xd(i))是实数,该目标图像水平方向第XJi)点像素插值在 源图像和(+l)之间,同时(R(XJi)MR(XdW)])和 (+l-R(X d(i)))对应于目标图像第Xd(i)点与源图像第点和第 (+l)点之间相对距离的归一化值。 令 F (Xd ⑴)=R (Xd ⑴)- (8) 令目标图像像素值为Vd,源图像像素值为Vs,则 Vd (Xd (i)) = Vs () X F (Xd (i)) + Vs ( +1) X (1-F (Xd ⑴)) (9) 同理在垂直方向的插值为 Vd(Xd(i), Yd(j)) = Vs(Xd(i), R) XG(Yd(j)) +Vs([Xji),R(Yd(j)当前第1页1 2 本文档来自技高网...

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

【技术特征摘要】

【专利技术属性】
技术研发人员:钟雪燕李春英
申请(专利权)人:南京铁道职业技术学院
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1