基于fpga的高速稳像系统中的运动估计模块的制作方法

文档序号:7770314阅读:163来源:国知局
专利名称:基于fpga的高速稳像系统中的运动估计模块的制作方法
技术领域
本发明涉及一种基于FPGA的高速稳像系统中的运动估计模块,该模块使用灰度投影算法对存储在SRAM中的一帧视频图像进行计算,来产生一个相对于上一帧图像的偏移量,属于图像处理领域。
背景技术
当前,各种成像系统已经广泛应用于军事和民用,如望远镜、便携式摄像机、无人侦察机、战车、导弹上的视频系统等。而成像系统的工作效果受载体的姿势变化和振动的影响,使监视器上的图像抖动、模糊。长期观察这种图像会使人感到疲劳、眩晕,在某些特定场合会造成误判。所以,在运动的载体中,特别是在长焦距、高分辨力的监视跟踪系统中,成像系统的稳像是一个重要的问题。稳像一般采用的方法有主动稳像、被动稳像和电子稳像。主动稳像是安装陀螺稳定平台稳定摄像系统,陀螺稳定平台主要是衰减低频振动。被动稳像是采用减振装置来隔离载体的振动,抑制高频振动对摄像机的影响。但是,高精度的陀螺稳定平台结构复杂,体积大、价格昂贵、功耗大,而且在有的场合如弹载、轻载飞机、外星球探测中,因体积的限制而无法使用。近年来,计算机技术和大规模集成电路技术的迅猛发展,计算机产品的性能迅速提高,图像处理设备的价格持续下降,这些变化为数字图像处理的发展提供了良好的条件。 人们研究的重点开始从传统的光学稳像、机械稳像,转向利用计算机来进行电子稳像技术的研究。稳像方面的纯数字图像处理方法本质上是数字化的电子稳像,与传统的光学稳像、 机电结合的稳像方法相比,电子稳像具有易于操作、更精确、更灵活、体积小以及价格低、能耗小等特点,同时由于大规模集成电路技术的不断提高,又便于实现设备的小型化。可见电子稳像方法将是观瞄或摄像系统中的更新换代的稳像方法。电子稳像技术是综合电子、计算机、数字信号处理等技术为一体的新一代实现图像序列稳定的技术。电子稳像技术由于它本身具有的精度高、实时性强、功耗低、便于集成化等优点,具有广阔的发展前景。目前国内外的研究中非实时的电子稳像方法主要通过PC机处理已经存储在磁盘上的视频序列,主要用来对视频进行后期处理或研究算法的可靠性。实时稳像一般采用与摄像机安装在一起的单独嵌入式设备,主流的方法是采用DSP做计算处理, FPGA (Field-Programmable Gate Array)做辅助控制。这种方案功耗大,成本高,速度一般。其中FPGA,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能,比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件,例如触发器(Flip-flop)或者其他更加完整的记忆块。FPGA—般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点,比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。

发明内容
本发明目的在于提供一种基于FPGA的高速稳像系统中的运动估计模块,该模块使用灰度投影算法对存储在SRAM中的一帧视频图像进行计算,来产生一个相对于上一帧图像的偏移量,并输出给其它模块。为此目的,本发明提供一种基于FPGA的高速稳像系统中的运动估计模块,其特征在于该运动估计模块包括控制子模块、曲线计算子模块、偏移计算子模块、参考帧切换子模块和存储子模块,其中存储子模块包括当前帧灰度投影存储器和参考帧灰度投影存储器,分别用来存储当前帧和参考帧的水平和垂直投影;控制子模块与外部存储单元、曲线计算子模块、参考帧切换子模块和偏移计算子模块相连接,负责整个计算过程中各子模块的运行顺序和图像数据的接收发送,其将图像数据按像素从外部存储单元中取出并发送给曲线计算子模块;曲线计算子模块与控制子模块和当前帧灰度投影存储器相连接,其接收控制子模块传来的像素信息,使该像素信息与从当前帧灰度投影存储器中取出的前一次累加值计算行列累加和,以得到图像的灰度曲线信息,并将计算的结果存储到当前帧灰度投影存储器中;偏移计算子模块与控制子模块和存储子模块相连接,其从当前帧灰度投影存储器中取出当前帧曲线信息并从参考帧灰度投影存储器中取出参考帧曲线信息,计算两者的方差并找到最小值,得到偏移信息,并将该偏移信息输出;参考帧切换子模块与控制子模块和存储子模块相连接,用于在每帧计算结束后将当前帧曲线转存为参考帧曲线。本发明还提供一种用于基于FPGA的高速稳像系统中的运动估计模块的估计方法,该运动估计模块包括控制子模块、曲线计算子模块、偏移计算子模块、参考帧切换子模块和存储子模块,其特征在于所述估计方法包括如下步骤(1)控制子模块接到外部传来的运动估计计算开始信号后进入工作状态;(2)控制子模块按相应逻辑发送地址到外部存储单元,从外部存储单元取出像素后将单个像素已发送信号置高电平,同时将像素信息发送给曲线计算子模块;(3)曲线计算子模块接收该像素信息,并将该像素信息与从存储子模块的当前帧灰度投影存储器中取出的前一次累加值相加以计算行列累加和,并将计算的结果存储到当前帧灰度投影存储器中,累加完后向控制子模块发送像素累加完成信号;(4)重复步骤(2)_(3),直到所有区域像素发送完毕后再将区域图像信息发送完成信号置高电平;(5)控制子模块控制偏移计算子模块开始工作,接着等待偏移信息计算完成信号到来,说明偏移计算完成;(6)控制子模块将开始切换参考帧信号置为高电平,启动参考帧切换子模块,将当前帧曲线切换为参考帧曲线;(7)当所有子模块工作均完成时,将运动估计完成信号置为高电平,输出图像偏移 fn息ο优选地,所述偏移计算的步骤包括从当前帧灰度投影存储器中取出当前帧曲线信息并从参考帧灰度投影存储器中取出参考帧曲线信息,计算两者的方差并找到最小值, 得到偏移信息,并将该偏移信息输出。本发明是一种基于FPGA的高速稳像系统中的运动估计模块,其优点及功效在于 由于本发明的运动估计模块是基于FPGA的高速稳像系统中的核心模块,其用来对存储在 SRAM中的一帧视频图像进行计算,来产生一个相对于上一帧图像的偏移量,并输出给其它模块,因此具有占用逻辑资源数少、速度快、成本低的优点。


图1是根据本发明的基于FPGA的高速稳像系统中的运动估计模块的内部结构图。图2是根据本发明的基于FPGA的高速稳像系统中的运动估计模块的运行流程图。图3是根据本发明的基于FPGA的高速稳像系统中的运动估计模块的曲线计算子模块的状态转换图。图4是根据本发明的基于FPGA的高速稳像系统中的运动估计模块的方差计算模块的状态转换图。
具体实施例方式下面结合附图对本发明的技术方案做进一步的阐述。本发明是一种基于FPGA的高速稳像系统中的运动估计模块,包括五个子模块,分别为控制子模块、曲线计算子模块、偏移计算子模块、参考帧切换子模块和存储子模块。其结构如图1所示。该运动估计模块共有两个时钟,分别是存储子模块时钟和曲线计算子模块时钟,其中存储子模块时钟比曲线计算子模块时钟快一倍以上。控制子模块从外部存储单元(例如外部SRAM)中取出像素信息,发送给曲线计算子模块,同时也有相应的信号线和各子模块相连。这些信号线控制各个子模块启动,也接收各个子模块发来的工作完成信息。 其中曲线计算子模块、偏移计算子模块和参考帧切换子模块按图1所示的结构与存储子模块互联,写入和读出的是曲线数据。最后的整个运动估计模块的运算结果是图像偏移信息, 由偏移计算子模块工作完成后发送出。为了更加清晰地描述本发明,现对各个子模块的功能和工作过程进行详细说明。控制子模块其负责整个计算过程中各子模块的运行顺序和图像数据的接收发送。在控制子模块的作用下,整个运动估计模块的工作过程如图2所示。该模块首先根据 he(图像宽度信息)和内部的地址计算逻辑确定要取出的像素块在外部存储单元中的具体地址,然后从外部存储单元中取出中间128*128个像素,图像的具体宽度由外部模块通过专门的接口提供。将取出的像素信息发送给曲线计算子模块进行计算,同时也分别控制其它模块启动和停止工作。控制子模块接到外部传来的start (运动估计计算开始)信号后进入工作状态,按相应逻辑发送地址到外部存储单元的SRAM中,取出像素后将so (单个像素已发送)信号置高电平,同时将像素信息发送给曲线计算子模块。待曲线计算子模块累加完并发来ro (单个像素已接收)信号后,再重复这一过程直到所有区域像素发送完毕后再将ps (区域图像信息发送完成)信号置高电平,控制偏移计算子模块开始工作,接着等待 CO (偏移信息计算完成)信号到来,说明偏移计算完成,再将ts (开始切换参考帧)信号置为高电平,启动参考帧切换子模块,当所有子模块工作均完成时,将over (运动估计完成)置为高电平,对外表示本模块工作全部完成,图像偏移信号线上的数据有效。曲线计算子模块该子模块接收控制子模块按特定顺序传来的像素信息并计算行 (列)累加和,累加的结果就是图像的灰度曲线信息。附图3是其状态机转换图,该子模块只与当前帧灰度投影存储器连接,每次接到发来的像素信息时,通过地址形成逻辑来生成对应位置的地址,然后从当前帧灰度投影存储器中先取出上一次累加值,与刚刚接收到的像素信息计算行(列)累加和后得到本次累加值,再存入该当前帧灰度投影存储器。当一行计满1 个像素时,则认为该行计算已经结束,模块重新初始化,准备计算下个行。该子模块和控制子模块之间通过“像素发送完成(so)”和“像素累加完成(ro)”两个信号进行同步。偏移计算子模块该子模块的具体状态转换图如图4所示,用于计算两帧图像指定搜索宽度的方差值。该子模块在整块图像的灰度曲线全部计算完成后开始工作,偏移计算子模块需要同时获取当前帧灰度曲线信息和参考帧灰度曲线信息通过“块投影曲线结束”和“方差计算开始”两个信号和控制子模块同步。开始工作后直到求出偏移量并输出为止。在本实施方式中,搜索宽度是64个像素,所以总共要计算出63个方差,每个方差的计算要经过64次加乘运算,该运算由加乘器完成。计算过程中有两个计数器(方差计算计数器和搜索位置计数器)协同工作,若方差计数完成,则数值比较器会对计算结果和当前存储的方差值进行比较,然后出发搜索计数器累加。若未完成,则将计数信息发送给地址逻辑,供其计算下一次地址。搜索计数完成则说明该帧图像的搜索计算已经完成,可以使偏移输出有效。在标准的灰度投影算法中,需要将计算出的所有的方差值(这里是64个)保存在一个数组中,然后通过排序算法找到最小的方差,并输出对应的偏移信息(每个可能的偏移信息对应一个方差值)。为了节省空间和加快速度,在本发明的优选实施方式中没有开辟一个数组空间,而是只用了一个32bit的寄存器。该寄存器初始值为FFFFH。每次计算出新的方差值后,和该寄存器中的值进行比较,如果比旧值小,则写入该寄存器并同时输出偏移量和偏移方向,否则寄存器值不予改变。这样就能方便的找到方差的最小值。图像偏移信息的输出结果是两个8bit的数据,分别代表X轴和Y轴的图像偏移信息。其中第一位是图像在相应轴的偏移方向,其余7位是偏移量。参考帧切换子模块该子模块的作用是在每一帧图像处理完成之后,在下一帧图像到来之前的空隙里进行切换参考帧,切换的策略是每一帧都以前一帧作为参考帧。在偏移计算子模块计算完成后,该子模块在控制子模块的开始切换参考帧(cs)信号下启动,启动后先将参考帧曲线存储器切换到写模式,当前帧曲线存储器切换到读模式,每个周期从当前帧曲线存储器取出一个曲线信息同时存入到参考帧曲线存储器中,这样经过1 个时钟周期后,参考帧就以曲线的形式保存到了 FPGA内部的存储器中。存储子模块该子模块用来存储当前帧和参考帧的曲线数据,该数据由曲线计算子模块计算出并存入存储子模块。每帧图像需要X方向和y方向两条曲线,每条曲线有1 个数据,当前帧和参考帧各需要存储各自的曲线数据。总共有两组四片FPGA片内SRAM,每一帧曲线分为χ方向和y方向存储。由于本发明只取每帧中间128*1观像素,所以每片SRAM 地址线有7位,数据宽度31位,由于计算方差过程中需要对不同位置进行重复访问,因此采用按地址访问的方式构建。存储子模块的时钟频率比计算模块快一倍,使计算模块发送和接收的数据更稳定。
本发明是一种基于FPGA的高速稳像系统中的运动估计模块,其优点及功效在于 由于本发明的运动估计模块是基于FPGA的高速稳像系统中的核心模块,其用来将对存储在SRAM中的一帧视频图像进行计算,来产生一个相对于上一帧图像的偏移量,并输出给其它模块,因此具有占用逻辑资源数少、速度快、成本低的优点。
权利要求
1.一种基于FPGA的高速稳像系统中的运动估计模块,其特征在于该运动估计模块包括控制子模块、曲线计算子模块、偏移计算子模块、参考帧切换子模块和存储子模块,其中存储子模块包括当前帧灰度投影存储器和参考帧灰度投影存储器,分别用来存储当前帧和参考帧的水平和垂直投影;控制子模块与外部存储单元、曲线计算子模块、参考帧切换子模块和偏移计算子模块相连接,负责整个计算过程中各子模块的运行顺序和图像数据的接收发送,其将图像数据按像素从外部存储单元中取出并发送给曲线计算子模块;曲线计算子模块与控制子模块和当前帧灰度投影存储器相连接,其接收控制子模块传来的像素信息, 将该像素信息与从当前帧灰度投影存储器中取出的前一次累加值计算行列累加和,以得到当前图像的灰度曲线信息,并将计算的结果存储到当前帧灰度投影存储器中;偏移计算子模块与控制子模块和存储子模块相连接,其从当前帧灰度投影存储器中取出当前帧曲线信息并从参考帧灰度投影存储器中取出参考帧曲线信息,计算两者的方差并找到最小值,得到偏移信息,并将该偏移信息输出;参考帧切换子模块与控制子模块和存储子模块相连接, 用于在每帧计算结束后将当前帧曲线转存为参考帧曲线。
2.一种用于基于FPGA的高速稳像系统中的运动估计模块的估计方法,该运动估计模块包括控制子模块、曲线计算子模块、偏移计算子模块、参考帧切换子模块和存储子模块, 其特征在于所述估计方法包括如下步骤(1)控制子模块接到外部传来的运动估计计算开始信号后进入工作状态;(2)控制子模块按相应逻辑发送地址到外部存储单元,从外部存储单元中取出像素后将单个像素已发送信号置高电平,同时将像素信息发送给曲线计算子模块;(3)曲线计算子模块接收该像素信息,并将该像素信息与从存储子模块的当前帧灰度投影存储器中取出的前一次累加值相加以计算行列累加和,并将计算的结果存储到当前帧灰度投影存储器中,累加完后向控制子模块发送像素累加完成信号;(4)重复步骤(2)-(3),直到所有区域像素发送完毕后再将区域图像信息发送完成信号置高电平;(5)控制子模块控制偏移计算子模块开始工作,接着等待偏移信息计算完成信号到来, 表明偏移计算完成;(6)控制子模块将开始切换参考帧信号置为高电平,启动参考帧切换子模块,将当前帧曲线切换为参考帧曲线;(7)当所有子模块工作均完成时,将运动估计完成信号置为高电平,输出图像偏移信肩、ο
3.根据权利要求2所述的估计方法,其特征在于所述偏移计算的步骤包括 从当前帧灰度投影存储器中取出当前帧曲线信息并从参考帧灰度投影存储器中取出参考帧曲线信息,计算两者的方差并找到最小值,得到偏移信息,并将该偏移信息输出。
全文摘要
本发明涉及一种基于FPGA的高速稳像系统中的运动估计模块,其特征在于该运动估计模块包括控制子模块、曲线计算子模块、偏移计算子模块、参考帧切换子模块和存储子模块;控制子模块负责整个计算过程中各子模块的运行顺序和图像数据的接收发送;曲线计算子模块接收控制子模块传来的像素信息,将该像素信息与从当前帧灰度投影存储器中取出的前一次累加值计算行列累加和,并将计算的结果存储到当前帧灰度投影存储器中;偏移计算子模块从当前帧灰度投影存储器中取出当前帧曲线信息并从参考帧灰度投影存储器中取出参考帧曲线信息,计算两者的方差并找到最小值,得到偏移信息,并将该偏移信息输出;参考帧切换子模块用于在每帧计算结束后将当前帧曲线转存为参考帧曲线。
文档编号H04N5/21GK102497494SQ20111040797
公开日2012年6月13日 申请日期2011年12月9日 优先权日2011年12月9日
发明者关永, 卢岩, 周全, 尚媛园, 张伟功, 张永祥, 栾中, 田健仲 申请人:首都师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1