摘要:本文设计了一个以FPGA为核心处理器实现红外视频图像数字预处理的系统,利用Altera公司提供的DE2开发板,把系统大部分的功能模块集成在一片FPGA 上,大大优化了整个系统的性能。该方案采用Altera公司推出的低成本、高密度的Cyclone Ⅱ系列FPGA,提高了系统的设计灵活性。细胞神经网络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×3模板的关键在于构造行延时器。视频图像中像素来自非均匀校正后的串行数据流,因此FPGA可以以并行流水方式实现该模板[6]。构成3×3模板的硬件结构如图11所示:
图11 3×3模板的硬件结构
如图所示,视频输入图像经过由RAM组成的3×3模板后进入卷积模块,最后输出结果。由于采用了流水工作方式,因此在进行图像处理时,并不需要存储整帧图像,只要存储模板操作中的领域像素点。
卷积的实现方式一般有MAC(Multiply and Accumulate乘加法)和DA(Distribute Algorithm分布式算法)。MAC法一般直接使用乘法加法进行运算,目前有些FPGA中带有内部乘法器资源,即硬件乘法器。分布式算法将复杂的多位数乘积转变为简单的“与”操作,而且乘位权数的转变为移位操作,有效地提高了运算速度,降低了结构的复杂度。采用分布式算法实现卷积计算。在细胞神经网络中采用该算法具有以下优点:减小存储单元的大小,实现存储单元内容共享,减小数据总线位宽。为了节省FPGA片上资源采用串行分布式算法[7]。
串行方法的实现是先从最低位开始,用所有 个输入量的最低位对DA查找表进行寻址,得到了一个部分积,将其右移一位即将其乘以2-1后,放到寄存器当中,同时, 个输入量的次低位己经开始对DA查找表寻址得到另一个部分积,与右移一位后的上一个部分积相加,再重复上一步,直到所有的位数都己经寻址一遍。特别要注意,在补码输入的情况下,在最高位寻址得到的值不是与上一个右移一位后的部分积相加,而是相减。这样最后得到的值就是我们需要的结果,由此可以得到全串行DA模式。由上可知,完成一次运算需要 个时钟周期。
图12 串行分布式算法原理图
3.4 VGA模块
该模块的功能是将经过处理的信号显示在显示器上,这个过程与信号处理中的过程是相反的,将数字信号按照电视信号的制式组成合乎时序、格式要求的信号,并加入用于控制的各种同步信号。为了便于检验VGA时序的正确性,适当的对VGA时序进行了一些简化。由于编程时采用参数化设计,所以这并不会对系统的设计产生影响。仿真图如图13所示,符合预期的时序要求。
图13 VGA时序仿真图
4 图像处理结果
图14 图像处理结果显示
结论
本文采用FPGA实现红外图像预处理算法,能够将结构简单,计算量大的算法从DSP中分离出来,保证DSP有足够的时间完成目标识别、跟踪等其它任务。FPGA给用户提供了很大的自由度去实现所设计的专用集成化数字电路。其简单的外围电路,高度灵活的用户现场编程方式,现场定义高容量数字单片系统的能力,能够重复烧写、反复修改的新颖功能,意味着无须更改电路,只要改写FPGA内部程序,整个系统又可实现新功能。本文以图像边缘提取为基本的应用目标,选择细胞神经网络作为主要的研究对象,对 CNN 的理论、应用和硬件实现进行了系统的研究。本文的特色在于:
1.提出了将细胞神经网络应用到二值图像上的算法,在二值图像的基础上,提出了基于 CNN 的灰度图像边缘提取算法。仿真结果表明:CNN 提取的结果比较整齐有序,对边缘提取的连续性较好。
2.提出了细胞神经网络的一种高效数字实现方案,采用比特串行的分布式算法来实现胞元的状态更新。采用该架构实现的细胞神经网络减少了硬件资源的占用以及总线的位宽。与细胞神经网络的模拟实现方式相比较,数字实现方案由于采用了分布式算法可以占用更小的面积,从而提供更高的运行速度。
3.用 Verilog对 CNN 进行描述,并由 FPGA 搭建实验平台进行实现,实验结果表明:该模型能较好的对图像进行实时边缘提取处理。对CNN 的 Verilog 描述为 CNN 的硬件实现研究又向前迈进了一步,在数字图像中,用 FPGA 搭建的CNN 可以大大的提高图像的实时处理速度。