新闻中心

EEPW首页 > 汽车电子 > 设计应用 > 基于CNN的红外图像预处理系统的研究与设计

基于CNN的红外图像预处理系统的研究与设计

——
作者:王思睿 王暕来 杨春玲时间:2007-08-16来源:电子产品世界

摘要:本文设计了一个以为核心处理器实现红外视频图像数字预处理的系统,利用Altera公司提供的DE2开发板,把系统大部分的功能模块集成在一片 上,大大优化了整个系统的性能。该方案采用Altera公司推出的低成本、高密度的Cyclone Ⅱ系列,提高了系统的设计灵活性。IP核的开发,充分利用了在图像处理方面的优势,提高了整个系统的处理效率。实现了的一种高效数字实现方案,并且采用分布式算法可以提供更高的运行速度。

关键词 ;细胞神经网络;FPGA;

引言

红外视频图像数字预处理系统是红外焦平面阵列探测器必备的后处理电路,对成像质量有很大的影响。随着红外弱小目标检测技术开始广泛应用于制导、跟踪、自动控制、人工智能等诸多领域,这些应用对红外成像质量的要求越来越高。因此,研究红外视频图像数字预处理系统有很大的意义[1-2]。本文从细胞神经网络模型研究开始,将细胞神经网络的模型、算法研究与具体的图像处理特别是在图像中的应用紧密结合,充分将理论和实践联系起来。将设计好的模板应用到图像的中,利用FPGA的并行性特点,建立基于CNN的红外图像预处理系统,用于进行实时的图像处理。

该系统硬件电路包括两路视频A/D,数据缓冲同步FIFO,FPGA,数据存储、颜色空间转换等功能模块。系统能够完成对IRFPA信号的正确读出,并将读出的视频模拟信号经A/D转换器转换为数字信号,经FIFO缓冲后进入存储器,之后经过中心数字信号处理器进行必要的处理(边缘提取),最后输出标准的VGA模拟视频信号,传送到显示器。

1 图像预处理实现原理分析

红外图像预处理的目的在于,改善图像数据,抑制不需要的变形或者增强某些对于后续处理重要的图像特征,为后续的目标识别与跟踪提供方便。这里做的预处理为边缘提取,即对处于最低抽象层次上的图像所进行的操作,此时处理的输入输出为亮度图像。这些图像是与传感器抓取到的原始数据同类的,通常是用图像函数值矩阵表示的亮度图像。整个系统的核心处理部分是由细胞神经网络IP核实现的。

细胞神经网络(Cellular Neural Network,CNN)是以神经网络的联接方式为背景,具有实时信号处理能力的大规模非线性模拟电路。从结构上讲,CNN类似于细胞自动机,即细胞神经网络中的每一个胞元仅与它的邻近胞元相连接,相连胞元之间存在直接通信,而非邻近胞元之间不直接联接,但是由于连续时间下的动态传播,可以间接影响不相邻的胞元。理论上,可以定义任何维数的细胞神经网络,但是因为处理图像的需要,这里只考虑二维的情况。一个二维的 细胞神经网络结构形式如图1所示,用 表示第i行第j列的细胞。胞元的状态方程为:

由上式可知,在CNN应用使用空间不变的系数的情况下,整个网络的功能由2个 的矩阵 和 ,以及胞元偏移值I决定。矩阵A和B分别称为反馈模版和控制模版。胞元结构见图2所示。

图1   3x3规模的细胞神经网络结构

图2  CNN结构图

在图像处理中,无论是灰度图像还是二值图像,每一个像素的值均为离散量化的,采用CNN进行图像处理时,存在对其输入与输出量化的问题。在 的二维图像中,不失一般性地设它的任意一点值为 ,通常对于二值图像, 仅取两个整数值,即 ;而对灰度图像则 为灰度值,以8比特灰度图像为例 。在CNN系统中,其输入为 ,输出为 ,因而在处理二值图像时,需要使原来的 映射为 ,但必须注意这种映射为:原来的0映射为1(纯黑色),原来的1映射为-1(纯白色)。而处理灰度图像时,首先要对输入与输出的值域 进行256级的均匀量化,然后使 映射到这个均匀量化的 中,同样必须注意:原来的0映射为1(纯黑色),原来的255映射为-1(纯白色),其余灰度值均按照由小到大的顺序依次映射到由1到-1这个由大到小的量化体系中[3-5]。

2 总体方案选择

系统的工作流程如图2所示,从CCD传来的数字视频信号及其控制信号首先通过图像采集模块,从而筛选出有效的数据,然后通过RAW2RGB模块,利用插值算法得到每个像素点的R、G、B数据。为了便于CNN模块进行核心处理,在进行边缘提取操作前,把图像数据从RGB颜色空间转换为YCbCr颜色空间,针对Y分量进行处理。处理后的数据再经过YCbCr2RGB模块转换为RGB数据从而提供给VGA模块,供LCD显示。

图2 红外图像预处理系统工作流程

整个的核心部分在于CNN模块,在图像边缘提取中使用的算法主要是经典的微分算子,微分算法在硬件中很难实现,将CNN应用于灰度图像边缘提取的算法,是因为CNN是一种基于神经元局域连接的神经网络并行处理器[3], 硬件上可以采用相同的电路元件阵列来设计CNN并行处理器,这种阵列同构的电路设计有利于VLSI实现。故采用粒子群算法训练CNN的模板,进行边缘提取。

虽然在细胞神经网络中允许任意规模的邻域,随着模板尺寸的增大,硬件实现的难度也随之增大。受限于目前的VLSI技术,胞元之间的互联只能是局部的。本文中,规定采用3x3邻域,即模板A、模板B都是3x3的矩阵,且它们的系数都是实系数。因为目前大多数图像处理针对的都是灰度级图像,所以细胞神经网络胞元的输入范围被限定在[-1,+1]之间,-1代表白色像素,1代表黑色像素,其余的值代表二者之间的灰度值。这里采用定点数,因为在硬件实现中,定点数具有更高的速度和更低廉的成本,特别是在调用FPGA中的乘法底层原语时。

单个胞元的串行硬件实现结构,完成一次胞元状态更新的运算至少需要9个时钟周期。为了提高速度,可以在计算胞元状态更新时采用并行结构,如图3所示,通过采用流水线结构,完成一次胞元状态的更新只需要1个时钟周期。本文采用并行结构在FPGA中实现细胞神经网络。

图3 CNN 并行实现结构框图

3 硬件设计

图像数据采集模块用于实现图像数据的捕捉,根据图像传感器MT9M011输出数据时序,当视频捕捉开始键按下时,该模块开始接收数据,在获得有效像素数据的同时也接收了消隐期的图像数据,所以设置了输出数据有效信号,用以在接下来的RAW2RGB模块把有效数据和非有效数据区分开来。

3.1 RAW2RGB模块的设计

MT9M011采用的是Bayer型CFA(Color Filter Array,颜色滤波阵列),由于该图像传感器的分辨率为1280x1024,这里采用的插值算法,每四个像素合并为一个像素,像素值的变化如图4所示,这样经过RAW2RGB模块后,图像的分辨率变为原来的一半,即640x512。

该模块的硬件实现框图如图5所示。其中control模块由两个状态机组成,分别是ram_wr_state和ram_rd_state。ram_wr_state状态机负责产生RAM的写使能和写地址。当输入数据有效时,把输入的像素数据依次交替存储在2个RAM中,构成类似乒乓操作的结构。这个状态机负责产生RAM的写使能和写地址。ram_rd_state的状态机负责产生RAM的读使能和读地址。

图4 颜色插值算法示意图

图5 RAW2RGB模块的硬件结构框图

这里为了便于检验算法的正确性,适当的对数字视频流进行了一些简化。由于编程时采用参数化设计,所以这并不会对系统的设计产生影响。这里假定待处理的原始数据每行只有12个像素,以两行数据为例,经过处理后的数据(每个像素包含R、G、B三种颜色分量),每行只包含6个像素,减少了一半,同样行数也变为原来的1/2。这样,当等待处理的图像分辨率为1280x1024时,经过该模块后的图像分辨率变为640x512。图7为经过颜色插值后的实际输出,与图6经过颜色插值后的预期输出相比较可以看出,该颜色插值模块的设计完全达到了预期的要求。

图6 经过颜色插值后的预期输出

图7 经过颜色插值后的实际输出

3.2 颜色空间转换模块的硬件设计

YCbCr坐标与RGB坐标之间的关系如下:

 
                                             (1)
有三种方案实现此模块设计,第一种方案采用Verilog语言对该转换公式进行行为描述;第二种方案采用FPGA芯片内的RAM构造乘法器查找表,将转换公式内所有可能的中间结果存放在存储器中。该系统需要9个乘法器查找表,每个乘法器查找表的深度是1k,将操作数R、G、B作为地址访问存储器,得到的输出数据就是乘法运算的结果。查找表乘法器的速度只局限于所使用存储器的存取速度。第三种方案是对第一种方案进行改进,采用流水线结构实现此系统设计,大大提高了运算速度。本文采用第三种方案。流水线处理是高速设计中的一个常用设计手段。充分利用了硬件内部并行性,增加数据处理能力。这种流水线作业是在几个步骤中执行运算的功能单元的序列。每个功能单元接受输入,生成的输出则是缓冲器存储的输出。实现流水线结构的方法很简单,只要在每个运算部件(包括乘法器和加减法器)的输出以及系统的输入输出之间加上寄存器缓存即可。利用流水线技术的颜色空间转换实现框图如图8所示。一个数字系统的最高时钟频率受限于寄存器与寄存器之间的最大门延迟,如果不在每个运算部件的输出后面加上寄存器缓存,则寄存器与寄存器之间的最大门延迟为输入RGB信号到输出YCbCr信号之间的延迟。由于输入RGB信号到输出YCbCr信号之间存在大规模的组合逻辑电路,因此延迟很大。采用流水线结构之后,寄存器与寄存器之间的组合逻辑电路规模变小了,因此延迟变小,从而可以提高系统时钟。 

图8  利用流水线技术的颜色空间转换实现框图

波形仿真如图9所示。由波形图可以看到,相比于输入,输出结果延迟5个时钟周期出现,这是使用流水线结构造成的结果。例如输入(R,G,B)=(1023,1023,1023),在5个时钟周期后输出(Y,Cb, Cr)=(944,514,514)。虽然输出延迟了5个时钟周期,但每计算一个像素颜色转换仍只需要1个时钟周期。

图9  RGB2YCbCr模块仿真输出

同理,可以采用方案2,即FPGA芯片内的RAM构造乘法器查找表,可以实现YCbCr向RGB的颜色空间转换。波形仿真如图10所示。由波形图可以看到,相比于输入,输出结果延迟3个时钟周期出现,这是使用寄存器锁存造成的结果。例如输入(Y,Cb, Cr)=(944,514,514),在3个时钟周期后输出(R,G,B)=(1023,1021,1023)。虽然输出延迟了3个时钟周期,但每计算一个像素颜色转换仍只需要1个时钟周期。

图10  YCbCr2RGB模块仿真输出

3.3 细胞神经网络的IP核设计

根据CNN的理论,模板中的权数分别对应了待处理像素周围的八个像素,所以在对某个像素进行处理之前,必须先读入该点周围的八个像素点,即某个像素点的结果不仅同本身像素有关,而且同邻域点像素灰度值有关。因为采用的CMOS图像传感器每行640个像素。因此构造3 linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论

技术专区

关闭