基于FPGA的傅立叶梅林配准与拉普拉斯融合图像加速系统的制作方法

文档序号:15389873发布日期:2018-09-08 01:00阅读:225来源:国知局

本发明涉及基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统,属于数字信号处理、图像融合及图像加速技术领域。



背景技术:

人类获得的信息中绝大部分源于其视觉能力。随着成像传感器技术的不断发展,人类获得的图像信息在空域和频域等方面得到了极大地拓展,而单一传感器获取图像的能力有限,其信息量已经不能满足人类发展的需要;同时多传感器的成像间会存在大量信息重叠,需要一种手段来去除信息冗余并实现信息互补。显然,人力难以处理以上海量的信息和工作,必须借助其他手段快速、自主完成并送与人工决策,半导体和电子数字处理技术的发展为此提供了一种有效的解决思路。

去除多源图像信息中的冗余并完成互补的操作被称为图像融合,该方法可以有效提高成像质量。然而实际应用中,传感器成像原理,成像空间位置、时间和成像环境的差异,会造成成像结果的几何空间位置未知,这需要借助一种称为图像配准的算法,求取成像中像素点的对应位置关系并校正;相比较而言,图像配准面临的任务更复杂,难度更大,其检测结果的准确度和精确度直接决定了后续融合的成败。

实时性是指系统反应和处理速度在多大程度上满足负载要求的一种能力。目前基于一般数字处理平台的方案都面临着实时性不高的问题,其根本原因是平台算力不足、内存不够等原因,这在更大数据量的图像处理任务中更加明显。目前的数字电子处理平台包括cpu、dsp、gpu、asic和fpga,其中cpu和dsp基于串行处理机制,参与运算单元有限造成算力不足;gpu功耗、体积过大,不适合嵌入式应用;asic算力最强、性能最优,但并不适合算法快速迭代的图像处理领域;fpga本质上使用大面积晶体管进行硬件运算,与上述软件方式有着本质的不同,能够提供更强的算力和更丰富的片上存储器。另一方面,实时性的提高不能过分增加精度、资源、功耗和成本等方面的代价,这需要一种平衡各方面的设计方法。本发明采用的是傅立叶梅林配准(fmt)和拉普拉斯融合算法,目前这些算法大多采用软件实现;采用fmt算法的硬件加速设计较少,比较完整的是2008年tulabandhulat等人在11theuromicroconferenceondigitalsystemdesignarchitectures,methodsandtools会议上发表的《designofatwodimensionalprsiimageprocessor》,设计的一种可编程异构处理器(prsi)可对64x64大小图像进行fmt算法的各个运算,但各运算需要分时处理,较大影响实时性;拉普拉斯融合方面,songyajun等人在theinternationalsocietyforopticalengineering期刊2007年卷6833的《implementationofreal-timelaplacianpyramidimagefusionprocessingbasedonfpga》,采用双路并行分解,单路合成,并在分解部分3阶流水处理的方案,处理640x480大小图像速度达到25fps,但是这个速度已经不能完全满足当前高速处理的要求。

以上文献均是针对配准或融合单个操作的加速方案,且在精度、资源占用和实时性等方面还存在很大的改进空间。本发明提出了一种图像配准融合加速方法,并基于fpga设计了一种加速系统,能够达到高精度效果同时获得相当好的实时性。



技术实现要素:

本发明的目的是为了克服已有方案的技术缺陷,在保持精度、资源消耗等性能的同时,尽量缩短图像配准与融合的处理时间,提出了基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统。

基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统,简称加速系统;包括顶层控制器、数据同步器、底层流处理算子、中间缓存器以及系统外部接口;

其中,顶层控制器,记为top_fsm,位于时钟域bus_clk;数据同步器,记为cdc;底层流处理算子,记为op;中间缓存器,记为buf;

其中,数据同步器又包括cdc1、cdc2和cdc3;

底层流处理算子包括各种运算模块;

其中,运算模块是流处理集合1、流处理集合2以及流处理集合3中所有模块的统称;

其中,流处理算子集合1位于时钟域clk1、流处理算子集合2位于时钟域clk2、流处理算子集合3位于时钟域clk3;

其中,时钟域bus_clk、时钟域clk1、时钟域clk2以及时钟域clk3为加速系统的4个独立时钟域;

其中,中间缓存器和数据同步器属于跨时钟域逻辑,所跨的时钟域为加速系统的4个独立时钟域;

按照运算模块所处时钟域,底层流处理算子又包括流处理算子集合1、流处理算子集合2和流处理算子集合3;

其中,流处理算子集合1,记为op1;流处理算子集合2,记为op2;流处理算子集合3,记为op3;

其中,流处理算子集合1又包括复合功能模块、融合分解模块和融合重构模块;

其中,复合功能模块,记为lrw;融合分解模块,记为lap_dec;融合重构模块,记为lap_rec;

流处理集合2又包括数据选通模块、一维fft模块、模相计算模块、高通滤波模块和相位差计算模块;

其中,数据选通模块,记为data_in;一维fft模块,记为fft256;模相计算模块,记为mp_fft;高通滤波模块,记为hpf;相位差计算模块,记为poc;

流处理集合3包括一维ifft模块、取模模块和插值位置检测模块;

其中,一维ifft模块,记为ifft256;取模模块,记为m_ifft;插值位置检测模块,记为cog;

中间缓存器包括buf1模块、buf2模块、buf3模块、buf4模块、buf5模块、buf6模块和buf7模块;

其中,buf1中存储加速系统外部输入的参考/输入图像数据;

系统外部接口包括5部分:配置接口、参数读取接口、参考图输入接口、输入图输入接口和融合图输出接口;

其中,配置接口,记为cfg;参数读取接口,记为reg_info;参考图输入接口,记为org;输入图输入接口,记为aft;融合图输出接口,记为fus;

其中,配置接口为axi-lite类型;其中,axi-lite类型是无缓存且双向的;参数读取接口、参考图输入接口、输入图输入接口和融合图输出接口均为带缓存axi-stream类型;

加速系统中各模块的功能如下:

顶层控制器接受外部总线控制,负责整个算法加速的处理阶段启动、转移,底层流处理算子的组合、控制、状态监控,数据通道的选通与系统状态与结果的更新;

数据同步器负责顶层控制器与底层流处理算子间通信,具体地:cdc1负责与op1间通信;cdc2负责与op2间通信;cdc3负责与op3间通信;

中间缓存器用于数据暂存以及负责底层流处理算子间数据传输的跨时钟域同步;

底层流处理算子负责完成具体的数据加工处理以及各个运算模块的功能;其中:

数据选通模块的功能是接受加速系统外部输入的参考/输入图像数据,根据运行模式、算法处理阶段,以帧为单位进行选通,并暂存到中间缓存器buf2中;

复合功能模块集成了对数极坐标变换、图像仿射变换校正和图像加窗三种功能,根据处理阶段,对从中间缓存器的buf2模块中读取的数据进行相应变换;

一维fft模块采用流水线方式完成256点长度复数数据的快速傅立叶变换,以行列分解的方法实现图像二维fft变换,输入输出均为有符号定点数,并根据需要将数据暂存于中间缓存器的buf4模块中或输出到模相计算模块;

模相计算模块接收fft的输出数据,以流水线的工作方式求取频域复数数据的模与相角,结合fft行列分解方法求取图像的幅度谱和相位谱;

高通滤波模块接收模相计算模块输出的幅度数据,根据数据位置乘以相应系数,在图像幅度谱上实现原数据的高通强调滤波操作;

相位差计算模块可以工作在相位暂存模式,接收模相计算模块输出中的相位数据并存入中间缓存器的buf5模块中,而工作在计算模式时,将当前接收的相位数据与暂存在中间缓存器的buf5模块中的相位数据取出,求取相位差并将其流水转换到复数形式;

一维ifft模块采用流水线方式完成256点长度复数数据的快速傅立叶逆变换,以行列分解的方法实现图像二维ifft变换,输入输出均为有符号定点数,并根据需要将数据暂存于中间缓存器的buf4模块中或输出到取模模块;

取模模块接收一维ifft变换的输出数据,并流水求取该复数数据的幅度,实现互相关功率谱的提取;

插值位置检测模块检测互功率谱的最大值位置,以其为中心进行插值,估计峰值的亚像素位置,并据此完成相应几何参数的提取与转换;

融合分解模块按高分辨率到低分辨率,依次流水完成图像数据的多分辨率分解,并将得到的拉普拉斯差分层按分辨率分别存储到中间缓存器buf5中,流水线实现拉普拉斯金字塔的构建;

融合重构模块根据算法处理进程需要,从中间缓存器buf5中取出多分辨率的拉普拉斯金字塔层数据,并依据绝对值最大方式完成差分层的像素数据选择,从低分辨率到高分辨率,流水实现的目标融合图像的重构。

加速系统中各模块间的连接关系如下:

顶层控制器与数据同步器相连,同时连接到系统外部接口的配置接口和参数读取接口;数据同步器与底层流处理算子相连,具体为:cdc1与op1相连;cdc2与op2相连;cdc3与op3相连;底层流处理算子与中间缓存器相连,具体连接关系为:

参考图输入接口和输入图输入接口连接到中间缓存器的buf1模块;

数据选通模块的输入连接到中间缓存器的buf1模块,输出连接到中间缓冲器的buf2模块;复合功能模块的输入连接到中间缓存器的buf2模块,输出连接到中间缓存器的buf3模块和融合分解模块;除了来自复合功能模块的输入,一维fft模块输入还连接到中间缓存器的buf4模块,输出连接到模相计算模块与中间缓存器的buf4模块,根据情况切换数据通路;模相计算模块的输出连接到高通滤波模块与相位差计算模块;高通滤波模块输出连接到中间缓存器的buf2模块;相位差计算模块的输入除了模相计算模块,还连接到中间缓存器的buf5模块,输出连接到中间缓存器的buf6模块;除了来自中间缓存的buf6模块的输入,一维ifft模块输入还连接到中间缓存器的buf4模块,输出连接到取模模块与中间缓存器的buf4模块,根据情况切换数据通路;取模模块的输出连接到插值位置检测模块;融合分解模块输入连接到复合功能模块的输出,输出连接到中间缓存器的buf5模块;融合重构模块输入连接到中间缓存器的buf5模块,输出连接到中间缓存器的buf7模块;中间缓存器的buf4模块连接系统的融合图输出接口。

有益效果

本发明基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统,对比已有方案,具有如下有益效果:

1、本发明所述系统能够大大提高图像配准融合处理的实时性(约100fps);

2、本发明所述系统能够以较少资源大大提升了配准精度;

3、本发明所设计的系统能够应用于制导以及追踪为主的实时性要求较高的场合。

附图说明

图1是本发明基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统的系统组成框图;

图2是本发明基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统的内部连接示意图;

图3是本发明基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统的算法任务各处理阶段转移图;

图4是本发明基于fpga的傅立叶梅林配准与拉普拉斯融合图像加速系统的加速系统典型外部连接示意图。

具体实施方式

本实施采用xilinx公司xc6vlx240t器件,在此器件上搭建嵌入式控制系统,下面详细阐述本发明在作为外设接入嵌入式系统情况下的方法:

本实例的典型外部连接如图4,其作为外设接入cpu处理器的总线上,并在数据通道接入dma;其中cpu采用microblaze软核,dma采用axi-dmaip核;除控制总线cfg直接连接cpu外,其他各端口统一连接到dma。

根据傅立叶梅林配准算法,将该处理任务划分为若干处理阶段(约28个);同样方法将拉普拉斯金字塔融合算法做同样划分处理(3个),并最终将两者合并优化;在以上算法任务划分的同时,按照算子类型和缓存需求设计图1的硬件处理架构,最终优化整理得到图3的算法处理流程转移安排。

图3中,将最终检测到的变换结果形式记为λ,该标志为0时,整个给出的参数形式是从参考图到输入图的变换参数,标志为1时反之;系统从处理阶段s_0开始运行,顺序运行到s_9,此时标志λ为0时转入处理阶段s_10,否则进入s_8’;之后依次运行到s_29,该阶段处理完成后,根据系统被配置工作在单帧模式或连续模式,分别转入s_1或s_0。

图1中所述顶层控制器top_fsm采用简单的有限状态机(fsm)完成设计;3个数据同步器cdc1~cdc3参数不同但结构相似,每个同步器可以包含3部分:处于bus_clk的master端、各自时钟域的slave端和位于两者之间的异步数据缓存器,前两者均采用fsm完成设计;中间数据缓存器采用片上异步块ram、分布式ram或fifo资源实现。

图2是硬件处理架构的内部连接示意图,其中顶层控制器在接收到cfg接口修改寄存器映射表中相应控制字后启动,更新当前阶段配置和阶段标志,并通过查表更新底层流处理算子控制字;之后进入该阶段的处理等待过程中,直到确认底层流处理算子完成标志符合期望后,进入下一处理阶段;全部单帧处理完成后将结果更新到状态寄存器中,并向外部cpu发送中断请求。

各个数据同步器中,在master控制器接收到顶层流处理阶段控制器的同步要求后,将数据存入blockram中,然后通过一系列握手协议通知slave端读出;slave端收集到指定的数据后以同样的方式将数据存入blockram中,并通过握手协议通知master控制器器读取,最终完成控制字、状态与结果数据的同步。

底层流处理算子中包括数据流处理通道及相应控制器,其中前者采用并行、流处理设计;后者采用简单fsm完成设计,负责根据上层控制字,完成数据通道初始化、启动等待、流处理与处理完成的后续工作。

外部输入数据的选择(参考图或待配准图)需要由数据输入选择模块data_in控制,其内嵌fsm,可以根据配置和当前运行参数实时控制外部数据选通。

对数极坐标变换(lpt)、图像校正变换和图像空域加窗(防止边缘频率混叠)在具体实现和功能上存在交集(主要是坐标变换和像素插值),为了节约资源将三种功能复合在一起设计了复合功能模块lrw,具体包括cordic算法实现三角函数、反三角函数、拓展指数函数变换,使用dsp48e1实现的高精度乘法器,以及一维最近邻与二维双线性插值;该模块可以根据配置实时切换数据通路实现不同的功能。

一维256点fft模块fft256首先将256点数据转为二维16x16阵列,对阵列按行进行16点fft变换后(winograd小点数算法)乘以固定旋转因子,再按列进行16点fft变换,最终重新整理成一维256点输出;具体实现上,设计了4阶流水处理:输入暂存、按行16点fft、乘以旋转因子并按列16点fft、重组输出,并在以上每两个流水处理间加入了数据缓存器,采用ping-pang操作方法保证模块整体的流水处理。

模相计算模块mp_fft首先将全部输入坐标点映射到坐标轴第一象限,采用的是cordic算法求取映射的模与相角后再根据所处象限进行修正。

频域高通强调滤波模块hpf包括两部分:半径计算部分与窗口系数计算部分,前者采用cordic算法,流水计算输入点位置与图像中心点的距离,并输出到后者;后者实际是一多项式函数,采用dsp48e1硬件乘法器予以实现,计算出窗口系数后与对应幅度数值相乘。

相位差计算模块poc可以将相位谱暂存到缓存中,或将之取出,与当前输入相位谱作差求取相位差,然后通过cordic算法转换到复数形式,所有功能转换由fsm控制。

一维256点傅立叶逆变换模块ifft256的实现策略与具体架构参考上述fft256模块。

取模模块m_ifft设计方法和具体实现与模相计算模块类似,只是去除了相位计算和象限修正方面的逻辑。

插值位置检测模块cog内嵌fsm控制器,首先通过行缓冲的方式从输入数据流中提取目标窗口,目标窗口以最大值为中心;然后从行列两个方向对窗口进行插值,分别估计峰值位置的横纵坐标,所用除法器采用串行工作方式;最后跟据插值位置计算放大倍数、旋转角度、水平和垂直两个方向的平移量。

拉普拉斯融合分解模块lap_dec包括串联的多分辨率分解层(256x256、128x128、64x64)逻辑,每层逻辑内包括两个二维高斯滤波算子、一个延迟作差算子,其中下采样和上采样都通过数据格式中的数据有效信号来标定。二维高斯滤波算子分为窗口提取和系数相乘两个部分,前者通过行缓冲方式来提取滑动窗口,并根据窗口位置进行边缘修正;修正后的窗口寄存器阵列(5x5大小)通过移位相加方式实现与固定系数的相乘。最终计算得到的4层拉普拉斯差分金字塔(顺序从256x256到32x32)存储到缓存器中(参考图分解存于高字节,待配准图分解存于低字节)。

拉普拉斯融合重构模块lap_rec与lap_dec类似,可以分为3个多分辨率层与一个选择层逻辑,其中选择层逻辑将两个32x32大小图像从缓存中取出,根据绝对值大小原则选择对应像素,得到一帧32x32分辨率数据流;多分辨率层逻辑包括一个像素选择算子、一个二维高斯滤波算子和一个延迟相加算子,像素选择算子同样遵从最大值原则,高斯滤波算子参考上述lap_dec模块,延迟相加算子将融合后的差分层加入低分辨率的数据流中,丰富高分辨率图像的细节。最终从低分辨率到高分辨率依次完成目标图像融合,并存入fifo中用于dma读取。

下面给出本实例的寄存器映射表,包括由傅立叶梅林配准求取的尺度、旋转、水平x与垂直y方向的平移变换参数:

本实例的外部cpu控制顺序:首先控制器读取pll状态寄存器pll_str,确定pll处于时钟锁定状态;然后读取系统状态寄存器fmt_str0,确定其处于待工作状态;然后配置系统控制寄存器fmt_cfg中的burst位使系统工作于单步模式(non-burst)或猝发模式(burst),并置高start位启动一次工作循环(启动后改位自动清零);加速引擎启动后,状态寄存器fmt_str0中busy位会置高,其后通过dma向其双输入通道分别输入一帧参考图像和待配准图像数据,重复输入11次即可完成一帧图像对的配准与融合,其中状态寄存器中valid信号置高表示当前配准参数可读,可以用于处理器中断源,如果发生错误则error位置高,并在状态寄存器fmt_str1中的error_flow域给出出错的流处理阶段编号;系统如果工作于猝发模式在单帧配准完成后不会停止,而是等待下一帧图像的配准数据,停止引擎的方式是将burst位拉低,系统会在拉低后的下一帧配准前停止工作,并将状态寄存器中的finish位拉高一个总线周期。

本实例配准参数结果寄存器的读取方式:fmt_str0中的trans_dir位用于指示本寄存器表中的配准结果的变换方向(0:参考图到待配准图,1:待配准图到参考图),尺度因子寄存器scale采用16bits无符号的格式,高2位为整数部分,低14位为小数部分;旋转因子rotate和平移参数寄存器xshift、yshift采用16bist有符号格式,他们分别采用13、8位小数的定点精度格式;计时寄存器tcnt中给出了该帧图像配准融合时耗。

本实例中,vivado软件仿真器的功能仿真结果证明系统处理准确度、精确度和速度符合预期;将图示4中的嵌入式系统在xc6vlx240t器件搭建完成,将多幅测试图像连续输入系统中,经过饱和测试,观察输出图像并统计处理时耗,通过板上测试证明了系统在作为外设接入嵌入式系统的可行性,以及处理任务的实时性。

以上结合实例描述了本发明的具体实施方式,但是对于图像处理加速开发人员来说,在不脱离本发明对傅立叶梅林配准和拉普拉斯融合算法的加速方法与具体架构的前提下,还可以做出若干变形和改进,这些也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1