CN105160622B - 基于fpga的图像超分辨率的实现方法 - Google Patents

基于fpga的图像超分辨率的实现方法 Download PDF

Info

Publication number
CN105160622B
CN105160622B CN201510623919.0A CN201510623919A CN105160622B CN 105160622 B CN105160622 B CN 105160622B CN 201510623919 A CN201510623919 A CN 201510623919A CN 105160622 B CN105160622 B CN 105160622B
Authority
CN
China
Prior art keywords
ram
image
ram0
fpga
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510623919.0A
Other languages
English (en)
Other versions
CN105160622A (zh
Inventor
钟雪燕
李春英
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Institute of Railway Technology
Original Assignee
Nanjing Institute of Railway Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Institute of Railway Technology filed Critical Nanjing Institute of Railway Technology
Priority to CN201510623919.0A priority Critical patent/CN105160622B/zh
Publication of CN105160622A publication Critical patent/CN105160622A/zh
Application granted granted Critical
Publication of CN105160622B publication Critical patent/CN105160622B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Processing (AREA)

Abstract

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

Description

基于FPGA的图像超分辨率的实现方法
技术领域
本发明涉及一种图像超分辨率的实现方法,具体涉及一种基于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进行加权运算,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)
定义源图像水平方向采样的像素点位置集合
定义目标图像水平方向采样的像素点位置集合
定义两者图像像素点之间的映射关系为则根据公式(2)可得
由此可得目标图像水平方向第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帧每秒,同时图像插值后不仅细节更加清晰,从直方图中可看到图像得到了均衡化。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种基于 FPGA 的图像超分辨率的实现方法,其特征在于,循环控制模块控制 RAM模块的循环调度实现数据写入;
RAM 模块读取数据时,采用单输入双输出端口的 RAM,定义所述单输入双输出端口的RAM 的深度为源图像一行的像素点数,宽度为像素数据宽度,实现源数据相邻两行像素的存储;
由位置分析模块得到的权值是归一化的小数,将权值映射到整数范围内运算;
循环控制模块控制四个RAM 模块的循环调度实现数据写入,分别为 RAM0、RAM1 和RAM2、RAM3 之间以及 RAM0RAM1 之间、RAM2RAM3 之间;RAM0、RAM1 和 RAM2、RAM3 之间在运算目标图像像素值和写入源图像像素值功能间循环切换;RAM0RAM1 之间、RAM2RAM3 之间实现源图像像素值循环写入。
2.根据权利要求 1 所述的基于 FPGA 的图像超分辨率的实现方法,其特征在于,所述单输入双输出端口的RAM 在双线性插值硬件结构图中定义了四个单输入双输出端口的RAM0-3,其中 RAM0、RAM1 加权运算对应目标图像的插值像素值时,RAM2、RAM3 写入目标图像下一行运算所需的源图像的像素值;RAM0、RAM1 运算结束后,RAM2、RAM3 进行加权运算,RAM0、RAM1开始写入源图像像素值,在时间上实现数据连续运算输出,空间上实现 RAM空间的并行复用。
3.根据权利要求 1 所述的基于 FPGA 的图像超分辨率的实现方法,其特征在于,整个运算过程中,权值基于浮点数运算得到,将浮点数整数化,即可将运算都整数化;浮点数的整数化是将对应的浮点数左移相应的位数,在乘法运算结束后右移相应的位数。
CN201510623919.0A 2015-09-25 2015-09-25 基于fpga的图像超分辨率的实现方法 Active CN105160622B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510623919.0A CN105160622B (zh) 2015-09-25 2015-09-25 基于fpga的图像超分辨率的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510623919.0A CN105160622B (zh) 2015-09-25 2015-09-25 基于fpga的图像超分辨率的实现方法

Publications (2)

Publication Number Publication Date
CN105160622A CN105160622A (zh) 2015-12-16
CN105160622B true CN105160622B (zh) 2018-08-31

Family

ID=54801465

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510623919.0A Active CN105160622B (zh) 2015-09-25 2015-09-25 基于fpga的图像超分辨率的实现方法

Country Status (1)

Country Link
CN (1) CN105160622B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407153B (zh) * 2016-11-23 2019-08-23 一诺仪器(中国)有限公司 一种高分辨率数据采集方法及装置
CN115471404B (zh) * 2022-10-28 2023-03-24 武汉中观自动化科技有限公司 图像缩放方法、处理设备及存储介质
CN115829842B (zh) * 2023-01-05 2023-04-25 武汉图科智能科技有限公司 一种基于fpga实现图片超分辨率重建的装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101527033A (zh) * 2008-03-04 2009-09-09 河海大学 超分辨率重建和自动配准的工业ccd彩色成像***
CN103248797A (zh) * 2013-05-30 2013-08-14 北京志光伯元科技有限公司 一种基于fpga的视频分辨率增强方法及模块
CN104748729A (zh) * 2015-03-19 2015-07-01 中国科学院半导体研究所 距离选通超分辨率三维成像距离图优化显示装置及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8331738B2 (en) * 2010-03-24 2012-12-11 Xerox Corporation Reducing buffer size requirements in an electronic registration system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101527033A (zh) * 2008-03-04 2009-09-09 河海大学 超分辨率重建和自动配准的工业ccd彩色成像***
CN103248797A (zh) * 2013-05-30 2013-08-14 北京志光伯元科技有限公司 一种基于fpga的视频分辨率增强方法及模块
CN104748729A (zh) * 2015-03-19 2015-07-01 中国科学院半导体研究所 距离选通超分辨率三维成像距离图优化显示装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于FPGA的图像超分辨率的硬件化实现;钟雪燕 等;《现代电子技术》;20170901;第40卷(第17期);44-46,50 *

Also Published As

Publication number Publication date
CN105160622A (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
KR101639852B1 (ko) 그래픽 프로세싱을 위한 픽셀 값 압축
CN105354809B (zh) 一种基于输出图像像素位置索引的预畸变方法和装置
Chen VLSI implementation of a low-cost high-quality image scaling processor
US9734753B2 (en) Data acquisition module and method, data processing unit, driver and display device
CN106919360A (zh) 一种头部姿态补偿方法及装置
CN104253929B (zh) 视频降噪方法及其***
CN108805806B (zh) 图像处理方法及装置
CN105160622B (zh) 基于fpga的图像超分辨率的实现方法
CN107680028B (zh) 用于缩放图像的处理器和方法
CN102622723A (zh) 基于cuda及边缘检测的图像插值
CN108521824A (zh) 图像处理装置、方法及相关电路
CN103067671A (zh) 一种显示图像的方法及装置
CN102456223B (zh) 图像细节增强与缩放装置,以及图像细节增强与缩放方法
US9123278B2 (en) Performing inline chroma downsampling with reduced power consumption
US20240037701A1 (en) Image processing and rendering
CN101778280B (zh) 一种基于avs运动补偿亮度插值运算的电路及方法
CN107547897A (zh) 残值升采样装置、残值降采样装置以及电路
Greisen et al. Analysis and VLSI implementation of EWA rendering for real-time HD video applications
Dilip et al. Bilinear interpolation image scaling processor for VLSI architecure
WO2011121563A1 (en) Detecting saliency in an image
CN101662598A (zh) 一种连续视频数据流的缩放***
CN102129667B (zh) 一种图像缩放方法
CN109672841A (zh) 一种低成本de-interlace处理方法
CN101902654A (zh) 一种应用于多通道视频解码芯片的视频缩放控制方法
WO2016093978A1 (en) High parallelism dependency pattern for gpu based deblock

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant