Gigs级图像处理技术的研究

2017-03-15 17:16仝军胜
科学与财富 2017年3期

仝军胜

摘 要:在海量数据的处理过程中,单个计算机的运算速率、处理精度不能满足数据处理的快速时效性,因此本系统采用机群并行处理系统,将MPI(Message Passing Interface)消息传递接口,安装在每台计算机上,获取图像数据后,主节点按集群中处理器节点数(包括主节点自身)对图像数据进行划分,将每部分数据传送给集群每个节点进行处理。每个节点处理完成后,再传送回主节点,由主节点合成。提高处理速度,缩短处理时间,实现实时处理数据。最后保证完成Giga级像素的图像采集传输显示。

关键词:Giga级;PCI接口;MPI图像处理

1基于FPGA的PCI数据采集卡设计

建立起基于FPGA的PCI数据采集系统,此系统中FPGA通过PCI总线协议,使PCI接口显卡与计算机实现通信,并借由计算机实现后续的图像处理功能。

1.1 FPGA芯片在PCI接口上的设计

在FPGA与CMOS传感器连接时,FPGA仅仅是作为数据的输入一方,但是FPGA在于PCI主线连接的过程中,双方接触的模块会更多,引脚更加复杂,所传导的电子信号也更加复杂。在FPGA集成到PCI接口时,主要需要对可编程逻辑模块、系统存储模块和本地总线控制模块进行设计。

1.1.1 FPGA的逻辑设计

在FPGA芯片与CMOS传感器设计阶段,从处理海量数据的角度而言,需要对FPGA芯片的缓存进行扩展,可以扩展为DPRAM和FIFO两种形式,以此来提升FPGA芯片在采集和传输数据时的缓冲能力。下图中我们展示了利用LPM宏功能实现FIFO模式缓冲模块的结构图,这是一种利用QUARTUS软件对FPGA模块进行改造的方法,体现了FPGA模块的灵活性。

图1-1 LPM宏功能实现FIFO模式缓冲模块结构图

1.1.2 系统存储模块的设计

在进入特定的工作模式后,SDRAM会等待控制器对其发出读、写或者其他指令。由于SDRAM的工作模式很多,所以SDRAM收到的信号和指令也非常多样,包括空操作、激活、写操作、预充电等等,这些信号通过RASN、CASN以及WEN三种信号的不同组合来传达,并且在与寄存器内的设置进行配对之后由SDRAM做出对应的操作。下图中我们给出了一种应用于SDRAM控制器的内部模块设计思路。

图1-2系统存储模块的设计电路图

这个模块包括控制接口模块、命令解析及相应模块以及数据通路模块。控制接口模块的主要功能是接收系统的控制信号。命令解析及相应模块的主要功能包括命令解析、命令响应和时间控制。系统存储模块在使用之前也需要进行初始化,具体步骤是在系统上电之后,对SDRAM相继发出PRECHARGE、REFRESH以及LOAD_MODE指令,完成对系统存储模块工作模式的设定,此后再分别发出LOAD_REG1以及LOAD_REG2命令,对控制器进行刷新,以此来实现对SDRAM模块的初始化。

1.1.3本地总线控制模块

本地总线控制模块共有8个工作状态,分别是IDLE/READWAIT/SINGLERD/ BURSTRD/WRITEWAIT/SINGLEWR/BURSTWR/PCIDONE。不同的工作状态对应的信号是不一样的,这八个工作状态分别对应着:空闲、读等待、单周期读、Burst读、写等待、单周期写等待、Burst写等待以及传输结束。

至此,基于FPGA的Giga级别图像PCI数据采集卡基本已经成型,系统中使用的图像采集元件为CMOS传感器,课题中总共使用了四个镜头,每个镜头中安装了9个CMOS图像传感器,这36个CMOS图像传感器将能够形成图像采集阵列,实现总体上的Giga级图像采集。

1.2 PCI数据采集卡驱动程序的开发

WinDriver是开发PCI总线应用程序中经常用到的开发包组件,使用这种程序语言编写程序时,不需要对操作系统的内核有太多了解,并且这种语言还提供现成的函数库,大大减轻了用户的使用难度。具体的操作方法是将PCI扩展卡插入到计算机PCI插槽中,运行DriverWizard程序,创建新的驱动程序,然后选择PCI 9054作为编写对象,使用者可以选择自己熟悉的开发环境,然后生成驱动程序框架代码。

2.基于MPI的图像并行处理方法

從处理器接收到图像块之后对图像进行相应的预处理操作。下面我们以图像的轮廓提取为例,结合具体的MPI代码展示MPI并行化图像的预处理方法。

2.1并行图像轮廓提取的步骤

在基于MPI的并行图像轮廓提取处理中,大致要经过四个步骤:

首先,机群中主处理器读取位于它本身的图像的数据到缓冲区,图像数据来自PCI总线。

其次,主处理器根据轮廓提取的分区方法划分把图像成为N块并且向各子处理器发出查询,在收到Slave处理机的确认回应后,分配数据块至准备就绪的子处理器。

在子处理器到主处理器:发送的图像数据之后,子处理器会记录相应的数据块特征,期间以消息传递的方式根据算法要求从主处理器上获取轮廓提取的算法,并应用并行算法对分配到的原始图像数据进行轮廓提取,得到提取的结果后向主处理器发送,完成本节点的任务。

最后,主处理器对子处理器发回的轮廓提取结果进行合成,完成并行轮廓提取工作。

2.2图像轮廓提取的MPI代码实现

轮廓提取的数学表述是对图像数据进行一阶微分,算法实现的基木思想是,获取图像数据字节(或字符)数组后,主节点按集群中处理器节点数(包括主节点自身)对图像数据进行行划分将每部分数据传送给集群每个节点进行处理、每个节点处理完成后再传送回主节点由主节点合成。

(1)并行程序的初始化及前期准备

首先初始化MPI运行环境,获取用户指定执行参数,然后获取集群中运行程序的节点数pnum,最后获取执行程序的机器号myrank,一般设置0号为主节点。

主节点读取图像,包括图像信息头和待处理图像数据。对于信息头需要传送给其他处理节点的,可以用广播方式进行。

(2)数据的划分与传输

在完成系统的初始化以及数据的读取之后,就需要对原始数据在各个子处理器(子节点)之间进行划分,然后将划分后的数据传送到各个节点。

(3)数据的处理

在将数据传到各个节点之后,各个节点将按照统一的算法对原始数据进行运算,在本例中就是对原始数据进行一阶求导,来提取原始图像的轮廓。

(4)数据传回

各个子节点在处理完数据后,会将处理结果传回到主节点,主节点通过合成各个子节点的提取结果,得到最终的轮廓提取图像。从节点发回数据,主节点接受数据,保存在合适的位置。完成后,主节点完成最后其他工作。这就是利用MPI并行程序设计进行图像预处理的过程。

结论

本文设计的硬件电路基本实现了Giga级图像采集和预处理的功能,但是在系统整体性能上,还存在一些不足,需要改进。本文主要是从控制实现的角度对图像采集系统做了一些研究和开发,然而经过深入研究,发现基于本系统的研究还有大量的工作需要完成。

参考文献

[1] 林朝阳,叶晓慧,姚祖文. 基于PCI-6229的数据采集方法[J]. 舰船电子工程. 2007(06).

[2] 孙健,贾民平,许飞云,胡建中. 基于PCI总线的数据采集卡WDM驱动程序开发[J]. 机电工程. 2007(12).

[3] 邓治彬. 基于PCI接口芯片PCI9052的数字信号处理模块的设计开发[J]. 计算机与数字工程. 2007(12).

[4] 康鸿雁. 一种基于CH365的PCI数据采集卡设计[J]. 微计算机信息. 2007(35).