一种图像预处理系统及其处理方法转让专利

申请号 : CN200810076059.3

文献号 : CN106342326B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 甄巍松

申请人 : 中国航空工业集团公司洛阳电光设备研究所

摘要 :

本发明是一种图像预处理系统及其处理方法,本方法的整个实现过程在同一平台下完成,避免了传统开发过程中人工手写代码造成的不必要的错误,并且输入输出接口完善,尤其是对图像处理系统,能够直观的对单幅图像或者动态视频流体输入源进行仿真,能够直观的动态观察图像处理的结果,如果发现问题可以对模型的任意部分进行数据的跟踪、调试,能够以多种方法来观察、判断、定位问题,极大地方便了整个算法的调试缩短了算法开发的周期和难度。

权利要求 :

1.一种图像预处理系统,其特征在于:该系统由以下3个功能模块组成:(1)像素提取模块

本模块是按照5×5高通预处理的要求,将输入的像素数据流进行延时,对应每个时钟信号,得到这一时刻需要参与5×5预处理运算的25个像素数据,获得当前时刻输入像素点的5×5临域里的25个像素数据,并将这25个像素数据输出给数据运算模块;

(2)数据运算模块

本模块是对像素提取模块提供的25个像素数据进行数学运算,根据高通滤波的模板系数以5个像素数据为一组,进行对应高通因子乘加运算,得出运算后的结果数据输出给阈值分割模块;

(3)阈值分割模块

本模块的功能是对数据运算模块输出的像素数据范围进行控制和进行阈值判断,进行二值化分割,在阈值分割模块处理算法中如果数据运算模块输出的像素数大于100,则阈值分割模块输出255,如果小于等于100则,阈值分割模块输出0。

2.用于上述权利要求1所述图像预处理系统的处理方法,其特征在于:该方法的步骤是:(1)对高通滤波同时参与运算的25个数据,利用基于矩阵的科学运算平台matlab,通过matlab平台编写高通滤波算法的.m程序,进行算法的纯数学仿真,并对纯数学仿真结果进行调试、修改、完善直到结果正确;

(2)利用simulink中、altera公司的硬件算法开发模块进行算法建模,该模型是根据上述步骤(1)搭建的能够自动生成硬件代码的像素提取模块、数据运算模块和阈值分割模块;

(3)编写matlab中整个模型的仿真输入输出接口,提供仿真所需要的变量和数据,使这些变量和数据可以调入到matlab的工作空间当中;

(4)进行模型仿真并对模型仿真结果进行调试、修改、完善直到仿真结果和纯算法仿真结果一致;

(5)进行硬件代码的自动生成,并将生成的算法硬件代码嵌入到整个系统的硬件算法中;

(6)将整个硬件算法在altera公司fpga器件开发环境quartusII下进行编译,生成可以下载的网络文件并下载到现场可编程逻辑器件fpga芯片中。

说明书 :

一种图像预处理系统及其处理方法

技术领域

[0001] 本发明是一种图像预处理系统及其处理方法,涉及图像处理中预处理算法的FPGA硬件实现的研究领域。

背景技术

[0002] 在机载图像处理机中,能否实时对输入图像进行检出、跟踪等处理,图像处理输出延时的时间长短直接影响到整个机载设备的精确打击精度。
[0003] 一般图像处理过程中首先要对图像进行预处理即首先要进行预白化,将噪声变成高斯白噪声,从而达到背景抑制、目标增强,提高信噪比的目的,常用的方法是空间滤波预处理。高通滤波是空间滤波预处理方法中常用的一种。使用空域法就是采用卷积方法,大部分属于加减运算,其乘积运算较少,实现起来比较容易。其中高通滤波器一般取5×5的模板,高通滤波算子公式如下:
[0004]
[0005] 其中
[0006]
[0007] 每个像素进行一次高通处理需要5次乘法,23次加法,1次减法;在全帧图像共320x240个像素,所需运算至少需要200——300万次运算/帧。目前主流的处理方法是先将图像数据采集存储到存储器中,然后用处理器(dsp或者powerpc等)将存储器中的图像数据搬运到处理器内存中再进行处理。如果采用200MHz的TMS320C6701DSP处理器实现本高通滤波算法,运算大概需要11.136ms。读数据存储器的时间,大概需要12.672ms左右。
整个处理过程共需要23.808ms,这对于要求实时处理的系统来说是完全不能接受的,目前解决实时性问题较好的方法就是将图像处理算法中需要处理的数据量大但是运算相对较为简单、重复的算法利用FPGA进行流水线处理。

发明内容

[0008] 本说明正是针对现有技术状况存在的问题而设计提出了一种图像预处理系统及其处理方法,其目的是通过先进的5×5高通图像预处理算法并利用FPGA对算法进行硬件化,很好的提高了算法处理的实时性。
[0009] 本发明技术方案采用FPGA以并行流水方式实现。FPGA运算时需要同时保存5行视频数据,每行视频数据的输入时间为64μs,因此最终滤波的时间延迟大概为64μs×5=320μs极大的提高了处理的实时性。
[0010] 本发明的目的是通过以下措施来实现的:
[0011] 本发明提供了一种图像预处理系统,其特征在于:该系统由以下3个功能模块组成:
[0012] (1)像素提取模块
[0013] 本模块是按照5×5高通预处理的要求,将输入的图像数据流进行延时,对应每个时钟信号,得到这一时刻需要参与5×5预处理运算的25个像素数据,获得当前时刻输入像素点的5×5临域里的25个像素数据,并将这25个像素数据输出给数据运算模块;
[0014] (2)数据运算模块
[0015] 本模块是对像素提取模块提供的25个像素数据进行数学运算,根据高通滤波的模板系数
[0016]
[0017] 以5个像素数据为一组,进行对应高通因子乘加运算,得出运算后的结果数据输出给阈值分割模块;
[0018] (3)阈值分割模块
[0019] 本模块的功能是对数据运算模块输出的像素数据范围进行控制和进行阈值判断,进行二值化分割,在阈值分割模块处理算法中如果数据运算模块输出的像素数大于100,则阈值分割模块输出255,如果小于等于100则,阈值分割模块输出0。
[0020] 本发明还提供了一种用于上述快速图像预处理系统的处理方法,其特征在于:该方法的步骤是:
[0021] (1)利用基于矩阵的科学运算平台matlab对高通滤波同时参与运算的25个数据进行算法的纯数学仿真,并对纯数学仿真结果进行调试、修改、完善直到结果正确;
[0022] 高通滤波同时有25个数据参与运算,这25个数据就组成了一个矩阵而Matlab是目前最为通用的由mathworks公司开发的基于矩阵的科学运算平台,因此选用matlab是最合适和方便的开发手段;通过matlab平台编写本算法的.m程序,并对程序进行仿真调试直到得到正确的仿真结果;
[0023] (2)利用simulink中、altera公司的硬件算法开发模块进行算法建模,该模型是根据上述步骤(1)搭建的能够自动生成硬件代码的像素提取模块、数据运算模块和阈值分割模块;
[0024] 利用simulink中altera公司的硬件算法开发模块进行算法建模。Simulink是matlab平台集成的一个子集,专门提供基础模块用来搭建算法模型,而dspbuilder又是simulink的一个子集,该子集是由altera公司开发的针对altera公司fpga器件进行优化了的能够深成硬件代码的基础模块的集合,再开发本滤波算法过程中为了能够自动生成硬件代码所以搭建算法模型的所有模块全部采用dspbuilder中提供的基础模块;
[0025] (3)编写matlab中整个模型的仿真输入输出接口,提供仿真所需要的变量和数据,使这些变量和数据可以调入到matlab的工作空间当中;
[0026] (4)进行模型仿真并对模型仿真结果进行调试、修改、完善直到仿真结果和纯算法仿真结果一致;
[0027] (5)进行硬件代码的自动生成,并将生成的算法硬件代码嵌入到整个系统的硬件算法中;
[0028] 由于全部模型用dspbuilder中提供的基础模块构成,调用dspbuilder中signalcompiler模块会自动将建好的模型生成vhdl或者其他硬件代码;
[0029] (6)将整个硬件算法在altera公司fpga器件开发环境quartusII下进行编译,生成可以下载的网络文件并下载到现场可编程逻辑器件fpga芯片中。
[0030] 传统FPGA开发方法是采用人工手写代码的方式来实现的,而本说明中算法的开发是使用基于模型的算法开发流程,兼顾仿真、调试和最终硬件代码自动生成。

附图说明

[0031] 附图1为本发明系统的组成框图
[0032] 附图2是本发明系统的输入输出框图
[0033] 附图3是本发明系统中像素提取模块的实施框图
[0034] 其中:R11代表取得的第一行第一个像素数据;
[0035] Rnn代表取得的第n行第n个像素数据。
[0036] 附图4是本发明系统中数据运算模块的实施框图
[0037] 附图5是本发明系统中阈值分割模块的实施框图

具体实施方式

[0038] 以下将结合附图和实施例对本发明技术方案作进一步地详述:
[0039] 参见附图1~5所示,本发明技术方案的实施是以FPGA实现5×5高通图像预处理算法为例,说明新的快速开发FPGA算法的开发方案,包括对算法进行仿真、调试等的要求并能实现自动硬件代码生成。
[0040] 1系统组成
[0041] 本系统由以下3个功能模块组成:
[0042] (1)像素提取模块
[0043] 本模块是按照5×5高通预处理的要求,将输入的图像数据流进行延时,对应每个时钟信号,得到这一时刻需要进行5×5预处理运算的25图像数据,获得当前时刻输入像素点的5×5临域里的25个像素数据,并将这25个数据输出给数据运算模块;像素提取模块由延迟逻辑组成,实现方式如图3所示;
[0044] (2)数据运算模块
[0045] 本模块是对像素提取模块提供的25个像素数据进行数学运算,根据高通滤波的模板系数
[0046]
[0047] 以5个图像数据为一组,进行对应高通因子乘加运算,得出运算后的结果数据输出给阈值分割模块;数据运算模块由乘加逻辑组成,实现方式如图4所示;
[0048] (3)阈值分割模块
[0049] 本模块的功能是对数据运算模块输出的像素数据范围进行控制和进行阈值判断,进行二值化分割,在本处理算法中如果数据运算模块输出的像素数大于100,则阈值分割模块输出255,如果小于等于100则,阈值分割模块输出0。
[0050] 用于上述快速图像预处理系统的处理方法,其步骤是:
[0051] 1.利用matlab进行算法的纯数学仿真,并对对纯数学仿真结果进行调试、修改、完善直到结果正确。高通滤波同时有25个数据参与运算,这25个数据就组成了一个矩阵而Matlab是目前最为通用的由mathworks公司开发的基于矩阵的科学运算平台,因此选用matlab是最合适和方便的开发手段;通过matlab平台编写本算法的.m程序,并对程序进行仿真调试直到得到正确的仿真结果;
[0052] 2.利用simulink中altera公司的硬件算法开发模块进行算法建模。Simulink是matlab平台集成的一个子集,专门提供基础模块用来搭建算法模型,而dspbuilder又是simulink的一个子集,该子集是由altera公司开发的针对altera公司fpga器件进行优化了的能够深成硬件代码的基础模块的集合,再开发本滤波算法过程中为了能够自动生成硬件代码所以搭建算法模型的所有模块全部采用dspbuilder中提供的基础模块;
[0053] 3.编写matlab中整个模型的仿真输入输出接口,提供仿真所需要的变量和数据,使这些变量和数据可以调入到matlab的工作空间当中;图2中:
[0054] rst:算法模块硬件复位信号;
[0055] inl:输入的图像数据,8bit位宽;
[0056] clken:点时钟信号有效;
[0057] cut_off:截止图像灰度值;
[0058] datavalid:数据有效信号,用于内部控制测试;
[0059] filter_out:二值化后高通滤波图像数据输出;
[0060] org_image:二值化前的数据输出。
[0061] 4.进行模型仿真并对模型仿真结果进行调试、修改、完善直到仿真结果和纯算法仿真结果一致;
[0062] 5.进行硬件代码的自动生成,并将生成的算法硬件代码嵌入到整个系统的硬件算法中。由于全部模型用dspbuilder中提供的基础模块构成,调用dspbuilder中signalcompiler模块会自动将建好的模型生成vhdl或者其他硬件代码;
[0063] 6.将整个硬件算法在altera公司fpga器件开发环境quartusII下进行编译,生成可以下载的网络文件并下载到(现场可编程逻辑器件)fpga芯片中。
[0064] Fpga(现场可编程逻辑阵列)是最近发展较为迅速的可编程逻辑器件,在本系统用fpga对5×5高通预处理算法进行硬件化实现后,性能得到了很大的提高。
[0065] 在全帧图像320x240个像素的情况下,所需运算至少需要200——300万次运算/帧。如果采用200MHz的TMS320C6701DSP处理器实现,大概需要11.136ms。读写数据的时间,大概需要12.672ms左右。整个处理过程共需要23.808ms,而本系统运行时只需要同时保存5行视频数据,每行视频数据的输入时间为64μs,因此最终滤波的时间延迟大概为64μs×5=320μs极大的提高了处理的实时性。输入的图像数据流经过本系统后输出的是高通滤波后的图像数据流,后续系统可以将本系统的输出作为输入,将图像数据进行缓存再使用。