基于fpga芯片的动态可重构技术实现图像处理的方法

文档序号:7858061阅读:199来源:国知局
专利名称:基于fpga芯片的动态可重构技术实现图像处理的方法
技术领域
本发明涉及图像处理技术领域,特别涉及基于FPGA芯片的图像处理方法技术领域,具体是指一种基于FPGA芯片的动态可重构技术实现图像处理的方法。
背景技术
图像处理的特点是数据量大和实时性。实时性可以理解为图像处理的数据传输和处理是以一定的速度连续进行的。为了保持实时性,图像处理的速度不能低于图像数据的传输速度;换而言之就是图像数据的处理不能导致数据的丢失或者传输的阻塞、中断。通常图像处理算法都比较复杂,况且又要在如此大量的数据情况下保证足够高的处理速度,这是软件设计很难做到的,所以图像处理系统最常见的设计方案是采用硬件设计。ASIC (Application Specific Integrated Circuit,专用集成电路)是用硬件芯片设计直接实现算法,所以速度较快,但也有其无法克服的缺点。设计和开发ASIC往往意味着较高的设计成本和较长的开发周期。另外,ASIC—般都是为特定应用设计的,缺乏通用性。近年来,随着微电子技术和计算机技术的发展,基于FPGA (Field — Programmable Gate Array,现场可编程门阵列)的可重构计算技术开始越来越多地应用在图像处理领域。它利用FPGA可多次配置逻辑状态的特性,在运行时根据需要改变系统的电路结构,从而使系统兼具灵活、简捷、硬件资源可复用、易于升级等多种优良性能。基于此技术设计的动态可重构系统在视频处理方面有着广阔的应用前景,逐渐成为国际上计算系统研究中的一个新热点。可重构技术又可分为静态可重构(Static Reconfiguration)和动态可重构(Dynamic Reconfiguration)两种。所谓动态可重构技术,是相对于静态可重构技术而言的。静态可重构技术是指在可重构计算系统开始执行任务时,一次性将可重构逻辑器件配置为系统所需的某个或几个功能。这些配置好的功能在整个任务执行期间不会被改变,直到系统完成该任务后,可重构逻辑器件才可以被配置为其他的功能去完成别的任务。动态可重构技术与此相反,在任务执行过程中可重构逻辑器件的功能可以被随时改变。基于可重构系统还有一项优势使得它在图像处理应用中受到特别关注,即创造并行处理结构的潜在能力。图像处理算法中的并行性主要体现在两个方面空间并行性和时间并行性,对于这两种形式可重构系统都能实现。通常,图像数据的实时处理过程是按照系统时钟进行的,鉴于图像处理系统的数据量庞大,在一个系统时钟周期内不可能完成实时处理的算法,所以常常采用流水线设计,这种结构正是FPGA的强项。这种流水线方法将整个算法分解成一系列比较简单的级联子函数,每个特定子函数都能在一个时钟周期内由一个电路模块来实现。视频处理算法往往实现较为复杂,必须保证器件资源留有一定余量,这样不仅可以避免布线拥挤,也便于测试修改和功能扩展。

发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种充分利用FPGA的并行处理能力,实现对图像算法的硬件加速,同时可结合实际需要灵活的增加不同的功能模块,具备良好的通用性的基于FPGA芯片的动态可重构技术实现图像处理的方法。FPGA芯片具有重构模块、ICAP模块和ACE控制器,所述的重构模块、ICAP模块和ACE控制器以及FPGA芯片的图像信号输入端和图像信号输出端均连接总线,所述的总线通过FPGA的输入输出端口连接外部存储器。为了实现上述的目的,本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法包括以下步骤(I)所述的FPGA芯片根据用户操作,生成至少一个关于图像处理功能模块的设计文件,并将所述的设计文件存储于所述的外部存储器;(2)初始化所述的ACE控制器和ICAP模块;(3)所述的FPGA芯片根据用户操作,从所述的外部存储器读取至少一个所述的设计文件;(4)所述的FPGA芯片根据所读取的至少一个设计文件将所述的重构模块配置为·对应的一个或多个图像处理功能模块;(5)所述的FPGA芯片从所述的图像信号输入端接收到图像信号;(6)所述的重构模块配置形成的一个图像处理功能模块对所述的图像信号进行处理;(7)所述的FPGA芯片将经处理的图像信号通过所述的图像信号输出端输出。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的FPGA芯片根据用户操作生成关于图像处理功能模块的设计文件,具体包括以下步骤(11)所述的FPGA芯片根据用户操作进行所述的图像处理功能模块的功能设计;(12)所述的FPGA芯片根据用户操作对所述的图像处理功能模块进行资源预估;(13)所述的FPGA芯片根据用户操作进行所述的图像处理功能模块的模块实现;(14)所述的FPGA芯片根据用户操作将所述的图像处理功能模块集成为设计文件。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的图像处理功能模块包括图像边缘检测模块和图像滤波模块。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的图像边缘检测模块的实现过程具体包括以下步骤(21)所述的重构模块配置两个缓冲器和六个寄存器为图像边缘检测模块;(22)所述的图像边缘检测模块利用所述的两个缓冲器和六个寄存器存储图像数据流和读取相邻像素数据;(23)所述的图像边缘检测模块对所述的寄存器中的像素的横向及纵向梯度近似值进行计算;(24)所述的图像边缘检测模块计算梯度方向.该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的图像滤波模块的实现过程具体包括以下步骤(31)所述的重构模块配置寄存器、比较器和两个先入先出队列为图像滤波模块,所述的寄存器存储图像中各行像素的灰度值,并在一个时钟周期内将一行中的3个像素的灰度值写入所述的两个先入先出队列;(32)所述的图像滤波模块将第一先入先出队列和第二先入先出队列设置为只写不读,并对第二先入先出队列写入图像中的第一行3个像素的灰度值,对第一先入先出队列写入图像中的第二行3个像素的灰度值;(33)所述的图像滤波模块将第一先入先出队列的输出端连接至所述的第二先入先出队列的输入端,并将所述的第一先入先出队列和第二先入先出队列设置为只读不写;(34)三个时钟周期后,所述的图像滤波模块在寄存器的输出端和两个先入先出队列的输出端获得3X3像素灰度值窗;(35)所述的图像滤波模块比较所述的3X3像素灰度值窗获得各行的最大值、中间值和最小值;(36)所述的图像滤波模块比较各行的最大值、中间值和最小值,获得各行最大值中的最小值、各行中间值中的中间值和各行最小值中的最大值;(37)所述的图像滤波模块比较所述的各行最大值中的最小值、各行中间值中的中 间值和各行最小值中的最大值,获得其中的中间值作为滤波结果。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的总线为OPB总线。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的外部存储器CF卡。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的FPGA芯片的图像信号输入端连接图像模数转换器并输入YUV格式图像,所述的FPGA芯片的图像信号输出端连接图像数模转换器并输出RGB格式图像。该基于FPGA芯片的动态可重构技术实现图像处理的方法中,所述的FPGA芯片还包括处理器,所述的处理器通过PLB总线(process local bus)连接所述的重构模块。采用了该发明的基于FPGA芯片的动态可重构技术实现图像处理的方法,FPGA芯片首先生成关于图像处理功能模块的设计文件,并存储;随后根据图像处理的需要读取一个或多个设计文件,将FPGA芯片的重构模块配置为对应的一个或多个图像处理功能模块;而后利用图像处理功能模块进行图像信号处理。从而可结合实际需要灵活的增加不同的功能模块,具备良好的通用性,同时充分利用了 FPGA的并行处理能力,实现对图像算法的硬件加速。且本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法的实现方式简单,实现成本低廉,应用范围较为广泛。


图I为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法的步骤流程图。图2为本发明方法所应用的基于FPGA技术的通用图像处理硬件结构示意图。图3为本发明方法所应用的基于FPGA技术的通用图像处理系统的系统架构示意图。图4为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法中采用的图像四维方向Sobel算子及其检测方向示意图。图5为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法中采用的图像边缘检测方法的设计框图。
图6为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法中采用的图像中值滤波实现过程示意图。图7为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法中采用的图像3x3窗口数据排列示意图。图8为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法中采用的图像边缘检测算法示意图。图9为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法中采用的图像处理系统重构流程示意图。
具体实施例方式为了能够更清楚地理解本发明的技术页面,特举以下实施例详细说明。请参阅图I所示,为本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法的步骤流程图。FPGA芯片具有重构模块、ICAP模块和ACE控制器,所述的重构模块、ICAP模块和ACE控制器以及FPGA芯片的图像信号输入端和图像信号输出端均连接总线,所述的总线通过FPGA的输入输出端口连接外部存储器。在一种实施方式中,所述的基于FPGA芯片的动态可重构技术实现图像处理的方法包括以下步骤(I)所述的FPGA芯片根据用户操作,生成至少一个关于图像处理功能模块的设计文件,并将所述的设计文件存储于所述的外部存储器;(2)初始化所述的ACE控制器和ICAP模块;(3)所述的FPGA芯片根据用户操作,从所述的外部存储器读取至少一个所述的设计文件;(4)所述的FPGA芯片根据所读取的至少一个设计文件将所述的重构模块配置为对应的一个或多个图像处理功能模块;(5)所述的FPGA芯片从所述的图像信号输入端接收到图像信号;(6)所述的重构模块配置形成的一个图像处理功能模块对所述的图像信号进行处理;(7)所述的FPGA芯片将经处理的图像信号通过所述的图像信号输出端输出。其中,步骤(I)中所述的FPGA芯片根据用户操作生成关于图像处理功能模块的设计文件,具体包括以下步骤(11)所述的FPGA芯片根据用户操作进行所述的图像处理功能模块的功能设计;(12)所述的FPGA芯片根据用户操作对所述的图像处理功能模块进行资源预估;(13)所述的FPGA芯片根据用户操作进行所述的图像处理功能模块的模块实现;(14)所述的FPGA芯片根据用户操作将所述的图像处理功能模块集成为设计文件。在一种优选的实施方式,所述的图像处理功能模块可以为图像边缘检测模块和图像滤波模块。其中所述的图像边缘检测模块的实现过程具体包括以下步骤(21)所述的重构模块配置两个缓冲器和六个寄存器为图像边缘检测模块;
(22)所述的图像边缘检测模块利用所述的两个缓冲器和六个寄存器存储图像数据流和读取相邻像素数据;(23)所述的图像边缘检测模块对所述的寄存器中的像素的横向及纵向梯度近似值进行计算;(24)所述的图像边缘检测模块计算梯度方向.所述的图像滤波模块的实现过程具体包括以下步骤(31)所述的重构模块配置寄存器、比较器和两个先入先出队列为图像滤波模块,所述的寄存器存储图像中各行像素的灰度值,并在一个时钟周期内将一行中的3个像素的灰度值写入所述的两个先入先出队列;(32)所述的图像滤波模块将第一先入先出队列和第二先入先出队列设置为只写不读,并对第二先入先出队列写入图像中的第一行3个像素的灰度值,对第一先入先出队 列写入图像中的第二行3个像素的灰度值;(33)所述的图像滤波模块将第一先入先出队列的输出端连接至所述的第二先入先出队列的输入端,并将所述的第一先入先出队列和第二先入先出队列设置为只读不写;(34)三个时钟周期后,所述的图像滤波模块在寄存器的输出端和两个先入先出队列的输出端获得3X3像素灰度值窗;(35)所述的图像滤波模块比较所述的3X3像素灰度值窗获得各行的最大值、中间值和最小值;(36)所述的图像滤波模块比较各行的最大值、中间值和最小值,获得各行最大值中的最小值、各行中间值中的中间值和各行最小值中的最大值;(37)所述的图像滤波模块比较所述的各行最大值中的最小值、各行中间值中的中间值和各行最小值中的最大值,获得其中的中间值作为滤波结果。在进一步优选的实施方式中,所述的总线为OPB总线。所述的外部存储器CF卡。所述的FPGA芯片的图像信号输入端连接图像模数转换器并输入YUV格式图像,所述的FPGA芯片的图像信号输出端连接图像数模转换器并输出RGB格式图像。在一种更优选的实施方式中,所述的FPGA芯片还包括处理器,所述的处理器通过PLB总线连接所述的重构模块。在实际应用中,针对图像处理中的大数据量和实时性需求,本发明基于动态可重构技术,设计并实现了一种通用的图像处理方法。该方法实现动态重构的过程如下动态重构系统的设计主要有两种方法基于差分和基于模块。差分方法多用于两个设计之间差别很小,只改动两个设计查找表功能、I / O引脚属性等方面,一般只需要用FPGA编辑器对经过布局布线后的电路描述文件(native circuit description, NCD)进行改动。基于模块的设计方法是将模块化设计方法拓展到重构系统的设计中,多用于设计的系统较大,每个模块之间相对独立。现阶段基于差分方法的设计效率低,对于设计较大的系统还无能为力,本发明采用基于模块化的设计方法。重构系统采用基于模块化的设计流程。模块化设计总体分功能设计、资源预估、模块实现、模块集成四个阶段进行。功能设计包括顶层设计和模块设计。顶层设计实现模块的组合和连接。顶层逻辑在10、时钟逻辑和模块的实例化都要受到总线宏的约束,设计中必须保证模块间通信的信号由总线宏传递。每个总线宏提供4位的模块通信位。有多少位数据要进行通信,则必须要实例化相应个数的总线宏。模块设计是具体实现模块的功能。每个模块作为独立的工程,相对顶层是“黑盒子”,只暴露和其它模块的接口。在逻辑层次上,必须是自包含的模块,所有的模块端口必须明确定义为输入或者输出并且不能出现端口缓冲。所有模块必须使用全局时钟,模块间不能直接共享除全局时钟之外的任何信号,包括复位、使能等。完成顶层设计和模块设计后就应该对模块占用的资源进行预估,并根据预估结果创建顶层设计的约束文件(user constrain file, UCF)。预估阶段必须实现模块布局、IOB (输入输出单元)布局以及全局逻辑的布局。模块布局JEFPGA内部资源分配给每个模块。根据不同FPGA特性,分配资源时应注意几点资源的最小宽度;模块边界的对齐方式;部分可重构区域中配置的比特流属性在约束文件中描述。全局逻辑布局底层的非模块逻辑如总线宏必须通过位置约束来指定逻辑在设备中具体的位置,不允许存在非约束的非模块逻辑。所有模块的输入输出都与10、全局逻辑或者总线宏相连。预估阶段产生约束文件,包含所有全局的布局和时序约束,具体模块实现时还可能要修改约束文件来实现模块独立的布局和时序约束。模块功能设计和资源预估完成后,需要将每个模块单独实现,在指定约束下将描 述模块的HDL语言或原理图转化成为对应FPGA内部资源设置和连接的文件。具体流程和一般模块实现方法类似,首先利用综合工具将HDL语言或原理图综合成网表,而后转换成能够映射入FPGA内部的初始数据库文件,再对此文件进行解析,布局布线工具将其在FPGA内部实现,需要重构的模块还必须生成对应的部分比特流文件,实现运行时配置。每个模块进行布局布线时,必须受到项层约束的限制,只能添加模块内部的时序约束,不允许对顶层的约束进行改动。模块实现时只考虑模块内部的连接关系以及约束文件中规定的总线宏位置,不受其它模块的影响。模块集成时,因为重构模块只能在特定重构区域进行配置,所以首先设计一个顶层的模块,并在FPGA中正常运行,然后将所有的重构的逻辑放置并且锁定,重构模块才能正常运行在重构区域中。因此,必须将各个单独的模块按顶层设计合并起来形成一个完整的FPGA设计,生成完整地比特流文件。完成以上四个设计阶段后,下载运行重构系统。本发明的最大优点在于提供了一个重构的模块,一方面可重构模块可根据不同的计算任务对系统做出相应的算法配置,从而具有很强的通用性和灵活性;另一方面在重构时,非重构部分仍然在运行,其中相关寄存器的内容不会丢失,不需要在重构时将寄存器的内容保存到FPGA外的存储器中,从而缩短了系统重构的开销,提高系统的运行效率。具体而言本发明的方法采用的FPGA芯片选用Xilinx公司的Virtex_4系列产品XC4VF60。XC4VF60 具有 128 列 X48 行阵列、24576 个 Slice、56880 个逻辑单元、176MB 的内部RAM块、2个PowerPC处理器核、4个以太网控制器核以及576个I/O端口。根据目前已有的算法。其性能和资源可以较好地满足边缘检测算法和中值滤波算法对硬件资源(逻辑门数、RAM大小、乘法加法器等)的需求。它是Xilinx公司新推出的实现动态可重构的FPGA芯片,器件中内嵌了 PowerPC处理器,且FPGA本身在Virtex-II系列的基础上新增了对二维动态重构区域的支持,使得重构模块的放置更为灵活。Virtex-4系列芯片将高级硅片组合模块(ASMBL)架构与种类繁多的灵活功能相结合,大大提高了可编程逻辑设计能力,从而成为替代ASIC技术的强有力产品。硬件平台架构如下图I。实现本发明的方法所采用的硬件结构,如图2及图3所示,其中,数字的视频输入由ADC模块完成,先将PAL制视频转换成YUV格式,FPGA完成视频的滤波和边缘检测算法,最终由DAC模块输出到VGA显示。FPGA实现动态重构的方式有两种,即基于模块的动态可重构和基于增量的动态可重构。基于增量的可重构特点是重构时的配置文件是功能模块的增量,因此该方式重构速度快,但是实现系统较复杂,特别是针对较大的模块实现往往效率很低。基于模块的动态可重构设计允许设计者独立地综合每个模块,全部综合完毕后再将所有模块一起编译,这种并行方法即节省时间又允许每个模块独立终止、运行。本装置采用基于模块的重构设计方法,模块化设计总体分功能设计、资源预估、模块实现、模块集成四个阶段进行。首先进行硬件系统结构与模块划分,将中值滤波、边缘检测模块对应的设计文件分别存放在独立目录下,每个模块单独综合网表、布局布线。然后在FPGA编辑器中检查各个模块生成的文件,以保证每个模块都被限制在约束文件指定的区域内。总线宏也根据约束文件放在指定位置,且在每个模块的生成文件中其占用的长线位置总是不变的。最后将所有功能完好的模块通过顶层的设计封装起来。所有的模块对于顶层设计,都是“黑盒子”。

本装置在Xilinx集成开发工具ISE9. Ii上设计综合,系统重构时首先初始化 ACE (Advanced Configuration Environment)控制器和 ICAP (Internet ContentAdaptation Protocol)。通过按键选择,从CF卡中选择所需的图像算法,并通过ICAP对重构区域进行配置。两个算法模块均与OPB总线(on-chip peripheral bus)进行通信。按照上所述方法示例说明设计过程,首先是功能模块的实现

一、图像边缘检测模块的实现图像的边缘分为多种类型,大部分图像的边缘可分为阶跃型、房顶型、凸缘型。由于3种类型的边缘在灰度上都有明显的变化,所以通过对图像取微分,可以提取以上3种边缘的信息。Sobel算子(索贝尔算子,Sobel operator)是一个较成熟的微分边缘检测算法,它计算简单,只涉及到加法运算,同时具有非线性和一定的平滑效果,所以在对边缘精度要求不是很高的项目中有着广泛的应用。一般而言,Sobel算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下
二I O +1][+1 +2 +fGx = —2 O +2 # A and Gy = O O O t A
—I O +1[-1 -2 -I图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小,然后可用以下公式计算梯度方向。结合实际应用,本文实现了一种四个方向的边沿检测,其四个Sobel算子和检测方向如图4所示。本发明中,两个缓冲器和六个寄存器被设计用来存储数据流和读取相邻像素数据。如下图5所示的设计框图,先进来的数据被移位到缓冲器产生一段延时,这样就能实现同时将像素数据送进乘法阵列。每个乘法节点参照上图的四个Sobel完成运算,并由加法器输出计算结果。在图中我们可以看到完成检测算法需要4次加法和9次乘法运算。二、图像滤波算法模块的实现中值滤波是一种非线性的图像平滑方法,与均值滤波器以及其它线性滤波器相t匕,它能够很好地滤除脉冲噪声,同时又能够保护目标图像边缘。它是一种邻域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值,中值滤波可定义为G (x, y) =median {F (χ-i, y-j)} (i, j) e ω式中G(x,y)和F(x_i,y-j)分别代表输出和输入像素灰度值,模板窗口为ω。窗ω可以取线形、方形、十字形、圆形、菱形等。标准的中值滤波器都是由一个奇数大小尺寸的滑动窗组成,通常为3x3窗或5x5窗等。以3x3窗为例,该窗沿着图像数据的行方向逐像素滑动,在每一次滑动期间内,方形窗中的所有像素按照灰度值被排序,这组数据中的中值作为输出,替代原来窗函数的中心位置像素的灰度值。其实现过程如下图6所示。灰度值排序通常运算量巨大,而用硬件实现不仅要消耗大量的资源,而且运算速 度很慢,难以满足图像系统处理的实时性要求。针对大小为3x3的窗口采用了一种快速排序算法,可以在很大程度上减少运算量,且易于用较少的硬件资源实现。具体实现方法如下如图7所示,将一个3x3窗口的按照排列方式,从左至右.从上至下依次定义为Mil、Ml 2、Ml 3、M21、M22、M23、M31、M32、M33。处理时,先分别对每一行的数据进行排序,得到每一行的最大值、中间值和最小值。其中第一行得到的最大值为Maxl=max {Mil, M12, M13};中间值为Midl=mid{Mll,M12,M13};最小值为Minl=min {Mil, M12, M13};同样,也可得到第二行的三个值Max2,Mid2, Min2和第三行的三个值Max3,Mid3, Min3。由于在上述这九个数中,三个最大值中的最大值一定是九个像素的最大值。同理,三个最小值中的最小值一定是九个像素值中的最小值。三个中值中的最大值至少大于五个像素值;即本行的最小值和其他两行中的中值及最小值。而三个中值中的最小值至少小于五个像素值;即本行的最大值和其他两行的中值和最小值。所以比较三个最大值中的最小值Min_Max,三个中值中的中间值Mid_Mid,以及三个最小值中的最大值Max_Min,所得到的中间值就是最终的滤波结果。滤波的设计框图如下图8。这种设计可采用Xilinx中的Core generator实现。设计长度为行数据256。系统开始工作后,先对FIF02写第一行图像数据.写满后再对FIFOl写第二行图像数据,直到FIFOl也写满。在此期间,FIFOl和FIF02只写不读。当完成两行数据的写入后,将数据输入端和FIF01、FIF02上图所示进行连接,此时的FIFOl和FIF02只读不写,待三个时钟周期后,将FIFOl和FIF02设为既读又写。这样,在寄存器输出端和两个FIFO的输出端即可获得第一个3x3模板中的图像灰度数据。此后,随着图像数据的输入,模板也沿着图像从左至右、从上至下移动。与传统的排序方法相比,这种方法的比较次数大大减少,求出中值只用了 8次比较运算,因而十分方便在FPGA上进行并行处理。两种算法的模块实现后,将中值滤波、边缘检测模块对应的设计文件分别存放在独立目录下,每个模块单独综合网表、布局布线。然后在FPGA编辑器中检查各个模块生成的文件,以保证每个模块都被限制在约束文件指定的区域内。总线宏也根据约束文件放在指定位置,且在每个模块的生成文件中其占用的长线位置总是不变的。最后将所有功能完好的模块通过顶层的设计封装起来。所有的模块对于顶层设计,都是“黑盒子”。系统重构时首先初始化ACE (Advanced Configuration Environment)控制器和ICAP。通过按键选择,从CF卡中选择所需的图像算法,并通过ICAP对重构区域进行配置。两个算法模块均与OPB总线进行通信。具体重构流程如下图9。采用了该发明的基于FPGA芯片的动态可重构技术实现图像处理的方法,FPGA芯片首先生成关于图像处理功能模块的设计文件,并存储;随后根据图像处理的需要读取一个或多个设计文件,将FPGA芯片的重构模块配置为对应的一个或多个图像处理功能模块;而后利用图像处理功能模块进行图像信号处理。从而可结合实际需要灵活的增加不同的功能模块,具备良好的通用性,同时充分利用了 FPGA的并行处理能力,实现对图像算法的硬件加速。且本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法的实现方式简单,实现成本低廉,应用范围较为广泛。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1.一种基于FPGA芯片的动态可重构技术实现图像处理的方法,所述的FPGA芯片具有重构模块、ICAP模块和ACE控制器,所述的重构模块、ICAP模块和ACE控制器以及FPGA芯片的图像信号输入端和图像信号输出端均连接总线,所述的总线通过FPGA的输入输出端ロ连接外部存储器,其特征在于,所述的方法包括以下步骤 (1)所述的FPGA芯片根据用户操作,生成至少ー个关于图像处理功能模块的设计文件,并将所述的设计文件存储于所述的外部存储器; (2)初始化所述的ACE控制器和ICAP模块; (3)所述的FPGA芯片根据用户操作,从所述的外部存储器读取至少ー个所述的设计文件; (4)所述的FPGA芯片根据所读取的至少ー个设计文件将所述的重构模块配置为对应的一个或多个图像处理功能模块; (5)所述的FPGA芯片从所述的图像信号输入端接收到图像信号; (6)所述的重构模块配置形成的一个图像处理功能模块对所述的图像信号进行处理; (7)所述的FPGA芯片将经处理的图像信号通过所述的图像信号输出端输出。
2.根据权利要求I所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的FPGA芯片根据用户操作生成关于图像处理功能模块的设计文件,具体包括以下步骤 (11)所述的FPGA芯片根据用户操作进行所述的图像处理功能模块的功能设计; (12)所述的FPGA芯片根据用户操作对所述的图像处理功能模块进行资源预估; (13)所述的FPGA芯片根据用户操作进行所述的图像处理功能模块的模块实现; (14)所述的FPGA芯片根据用户操作将所述的图像处理功能模块集成为设计文件。
3.根据权利要求2所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的图像处理功能模块包括图像边缘检测模块和图像滤波模块。
4.根据权利要求3所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的图像边缘检测模块的实现过程具体包括以下步骤 (21)所述的重构模块配置两个缓冲器和六个寄存器为图像边缘检测模块; (22)所述的图像边缘检测模块利用所述的两个缓冲器和六个寄存器存储图像数据流和读取相邻像素数据; (23)所述的图像边缘检测模块对所述的寄存器中的像素的横向及纵向梯度近似值进行计算; (24)所述的图像边缘检测模块计算梯度方向。
5.根据权利要求3所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的图像滤波模块的实现过程具体包括以下步骤 (31)所述的重构模块配置寄存器、比较器和两个先入先出队列为图像滤波模块,所述的寄存器存储图像中各行像素的灰度值,并在一个时钟周期内将一行中的3个像素的灰度值写入所述的两个先入先出队列; (32)所述的图像滤波模块将第一先入先出队列和第二先入先出队列设置为只写不读,并对第二先入先出队列写入图像中的第一行3个像素的灰度值,对第一先入先出队列写入图像中的第二行3个像素的灰度值;(33)所述的图像滤波模块将第一先入先出队列的输出端连接至所述的第二先入先出队列的输入端,并将所述的第一先入先出队列和第二先入先出队列设置为只读不写; (34)三个时钟周期后,所述的图像滤波模块在寄存器的输出端和两个先入先出队列的输出端获得3X3像素灰度值窗; (35)所述的图像滤波模块比较所述的3X3像素灰度值窗获得各行的最大值、中间值和最小值; (36)所述的图像滤波模块比较各行的最大值、中间值和最小值,获得各行最大值中的最小值、各行中间值中的中间值和各行最小值中的最大值; (37)所述的图像滤波模块比较所述的各行最大值中的最小值、各行中间值中的中间值和各行最小值中的最大值,获得其中的中间值作为滤波結果。
6.根据权利要求I至5中任一项所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的总线为OPB总线。
7.根据权利要求I至5中任一项所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的外部存储器CF卡。
8.根据权利要求I至5中任一项所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的FPGA芯片的图像信号输入端连接图像模数转换器并输入YUV格式图像,所述的FPGA芯片的图像信号输出端连接图像数模转换器并输出RGB格式图像。
9.根据权利要求I至5中任一项所述的基于FPGA芯片的动态可重构技术实现图像处理的方法,其特征在于,所述的FPGA芯片还包括处理器,所述的处理器通过PLB总线连接所述的重构模块。
全文摘要
本发明涉及一种基于FPGA芯片的动态可重构技术实现图像处理的方法,在该方法中,FPGA芯片首先生成关于图像处理功能模块的设计文件,并存储;随后根据图像处理的需要读取一个或多个设计文件,将FPGA芯片的重构模块配置为对应的一个或多个图像处理功能模块;而后利用图像处理功能模块进行图像信号处理。利用本发明的方法可结合实际需要灵活的增加不同的功能模块,具备良好的通用性,同时充分利用了FPGA的并行处理能力,实现对图像算法的硬件加速。且本发明的基于FPGA芯片的动态可重构技术实现图像处理的方法的实现方式简单,实现成本低廉,应用范围较为广泛。
文档编号H04N5/14GK102819818SQ201210289320
公开日2012年12月12日 申请日期2012年8月14日 优先权日2012年8月14日
发明者李万才, 陈建永, 汤志伟, 沈冬青, 梅林 申请人:公安部第三研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1