2009/02/20

Fwd: 夏至的来信

基于FPGA的实时图像处理流水线虚拟摄像机配置

摘要:在许多对场景事件要求快速反应的领域,实时图像处理扮演着重要角色。由于实时图像 处理涉及大量计算,许多已经提出的解决方案都特别使用了专用硬件系统。然而,它们仍然不足以应付实际应用。因为它们的专用硬件架构不适合多任务执行,即使 是在可重构架构下。本文提出了一种流水线虚拟摄像机配置,可通过系统重构执行多个图像处理任务,尤其是在低端和中等级别。通过与像素时钟同步整个系统,每 个处理模块可以把其他模块当作一个虚拟摄像机。最终,无论是性能还是重构级别都得到了显著提升。

关键字: 图像处理,虚拟摄像机,FPGA

1.引言
实 时图像处理在很多领域都引起了广泛兴趣,如机器人技术,安全系统,监控系统等要求识别和跟踪物体的领域。在这些应用领域,高帧率和低潜伏期都是关键因素, 因为图像处理系统必须基于场景事件快速做出决定。然而,由于大量图像计算所要求的超高计算速率,实时处理图像对普通应用的处理器并不容易。基于专用硬件的 平行处理是个显著的解决方案,因为图像处理适合细粒度平行,每个像素在每个阶段平行处理。因此,人们提出了许多在硬件中实现专用图像处理算法的方法。

尽 管有性能和效率等方面的优点,然而和软件比起来,这些硬件实施方案都严重受限于它的可重用性和可编程性。特别的,基于ASIC(专用集成电路)的方案比给 予其他装置的方法受到更多的局限,因为其半导体装置的内部一旦制成就无法改变。由于这是专用硬件装置的本质所决定的,故很难克服。因此,在过去二十年,人 们对硬件重用做了许多研究。

虽然在这个领域人们已经做了大量努力,重构方法对实际应用仍不现实。据我们所知,过去的硬件实施只能操控单元 素系统架构中的系数和参量,如脉动阵列。这意味着变化幅度不大。一些作为部分重构模块的FPGA(现场可编程门阵列)装置也已经支持重构功能。然而,这种 方式的实质并非"重构"――它更接近于"升级"的概念,必须中断工作系统。

在本文中,我们提出了一种针对实时图像处理应用的可重构硬件架 构,通过同步单个数据元上的处理单元,而不是控制流,前一个迭代的结尾可以和后一个迭代的开头重叠,从而减少序贯瓶颈并显著提升性能。因此,该系统根据像 素时钟强烈同步和流水线化;可以处理超过每秒130帧的图像。除了高性能,在重构性方面,比起过去利用虚拟摄像机和延迟连接概念的手段,我们的方法有更好 的灵活性。本系统包括一些基本图像处理单元,每个单元起一个摄像机的作用,其输出行程一个伪视频信号――即虚拟摄像机。这使得处理单元间的连接可以被轻易 修改。由于可以在系统运行期间修改连接,尽管它们已经互相连接了,我们仍称这种方法为延迟连接。

本文的余下部分组织如下。为了解释虚拟摄像机的概念,第二章叙述了视频信号的背景。第三章描述了虚拟摄像机配置并提供了该架构的细节。本架构的实施在第四章得到了陈述和评估。最后,第五章得出结论并指出未来研究的方向。

2.普通视频信号接口
视频是一系列的静态图像的集合。通常,一个视频信号包括图像数据和相应的定时信息。换句话说,二者共同决定了图像信号的主要特性,例如深度,解析度和帧率。图像深度只和图像信号自己有关,但解析度和帧率同时依赖于图像和时间信息。

一 张图像是一套像素的集合。每隔像素的位宽决定了图像深度;例如,2位,8位和24位图像分别用于表示黑白,灰色和真彩图像。像素数决定了图像的尺寸,例如 "0.3M像素"或"2.0M像素"。然而这种表示并不够清楚,因为传统相机拍摄的图片通常是二维的。因此,传统上用一种"x乘y"的表示来代表图像尺 寸。为了确定"x乘y"中x和y的值,必须介绍时间信息在视频信号中的作用。

图1显示了视频接口中常用的时间信息里包含的三种基本信号。 图2(a)显示了垂直同步的概念,常用来在一幅新的图像开始时指示时间。这表示帧率是由相机在一秒周期内产生的垂直同步的数量决定的。图2(b)显示了水 平同步的概念,它显示了当一个新扫描行开始的时间。结果,一幅图像中行的数量,如"x乘y"表示中y的值,是由水平同步决定的。图2(c)显示了像素时 钟。像素时钟决定了一个扫描行有多少个像素点,即"x乘y"表示中x的值,因为每隔像素值实在时钟沿取样的。

由此,我们可以利用四条主要信号作为视频接口:垂直同步,水平同步,像素时钟和像素数据。一张接受图像的当前状态可以通过以下三步保存:
  1. 在每隔像素时钟的边沿把x的值加1,取样像素值。
  2. 在每个水平同步的边沿把y的值加1,初始化x的值为0.
  3. 在每个垂直同步的边沿初始化y的值为0。
通过这些步骤,每个像素时钟内每个接受像素的坐标和值都可用了。当我们横截图像时,这给了我们同样的信息,除非只有一条路径允许。既然这些信息是和像素时钟一起同步的,每个处理单元就内在强迫在同意时钟周期下运行。本文提出的实时图像处理架构就是基于这种特性。

3.虚拟摄像机配置
在 前一章讲到的,视频接口是基于被捕获图像数据和来自相机的相应时间信息。同样的,一个生成图像数据和时间信息的专用模块在其他模块看来也可以被当作一台虚 拟摄像机。通过这种性质,我们可以设计一种图像处理单元,其输入和输出被组合成视频信号的形式。因为输入和输出都有同样的格式,处理单元就可以通过很少的 协议互相计算,这表示每个单元是松散连接的。结果单元间的依赖关系减弱,它们之间的连接更容易修改。

为了说明这一点,我们设想一个简单图 像处理系统,它从输入信号探测边沿。图3(a)显示了这种只能处理一个边沿探测的系统的基本形式,例如索贝尔(Sobel)系统。这种边沿探测系统的应用 程度极其有限,因为它用了探测边沿的专用新片,并且无法重新配置。图3(b)显示了另一台基于可重构脉冲阵列的索贝尔边沿探测系统,它可以被定义为一台可 配置硬件架构。这个系统比前一个有更高的应用程度,因为系统的每个处理元素都可以重新配置。然而,这种架构也有局限性,因为它被设计成仅用于基于窗口的图 像处理应用。通常,可重构硬件系统往往有相似的架构。图3(c)和图3(d)显示了我们提出的虚拟摄像机配置。

如图3(d)所示,该系统 可以被组装成多种形式,因为每个处理单元都把其他单元当作虚拟摄像机。从索贝尔边沿探测其的观点来看,抓帧器和高斯模糊的输出都可以看做相机输出。我们可 以简单地剪切和连接数据流来得到某个物体。在这个例子里,索贝尔边沿探测器利用了高斯输出模块的输出信号作为视频数据来减少错误探测。如果这个系统包含足 够种类的图像处理模块,我们可以认为该系统比前两种方案有更好的应用程度。以下是关于该系统及其配置的详细解释。

A.处理单元设计
在 本系统中每个处理单元把它的输入和输出当作视频信号。假设我们有两个处理单元Ua和Ub。Ua是中值滤波器,Ub对图像做自适应阈值处理。根据上文所述, 所有这些处理单元都把他们的输入当作一系列图像,无论它们到底是什么。如果我们把摄像机的输出连接到Ua的输入,Ua就会生成中值滤波器图像。Ub可以把 Ua的输出当作视频输出,因为它包含所有必要信号,如定时信息等。因此,Ub把作为生成中值滤波图像的虚拟摄像机的Ua看成了原始摄像机。在这种配置下, 整个系统的输出图像和中值滤波器及自适应阈值处理器相继处理的图像是一样的。

图4显示了处理单元的方块图。坐标生成器生成基于当前接受像 素的时间信息。像素处理器接受当前像素值和来自坐标生成器的坐标值。然后它对图像施行专用图像处理手段。输入和输出之间的潜伏期由像素处理器的计算量决 定。定时信号生成器考虑像素处理器的潜伏期为输出图像产生定时信息。

在Ua的情况下,招致了三条扫描行和像素延迟,因为5*5窗口处理是 中值滤波器所要求的。所以定时信号生成器提供了合适的定时信息允许Ua的输出有同样形式的视频信号。图5显示了生成的定时信号。为了在和Pl(x,y)同 样的位置生成Po(x,y)的输出,它的相关定时信息需要被修正。

B.对每个像素的流水线
在本系统中,每个处理单元必须根据同意像素时钟生成图像数据和相应的定时信息。这意味着本系统必须在一个时钟周期内处理输入图像。然而,在一个周期内处理常见图像所有步骤的算法是很困难的;因为他们通常有几个子程序组成,而每个子程序需要独立的处理时间。

为 了使实时处理输入图像成为可能,我们把每个图像处理算法分成几个阶段。通过把它们排入用像素时钟同步的流水线,系统就可以在原始时间线安装潜伏期后的每个 始终边沿生成输出像素。因为没有帧缓冲,我们可以减小处理潜伏期。图6显示了本系统和使用帧缓冲的常见图像处理系统之间潜伏期的对比。

流 水线也让本系统可以根据图像和帧的大小升级。从摄像机的观点看,像素时钟的频率和传输像素数有关;这依赖于帧率和图像解析度。假设图像传感器使用 12MHz频率的像素时钟来生成像素时钟为48MHz,帧率为30fps的VGA灰度的图像(640*480),理论上这个传感器可以以同样的帧率生成尺 寸为原始图像四倍的图像(1280*960,30fps),或者尺寸相同帧率为四倍(640*480,120fps)。这意味着像素时钟直接依赖于图像尺 寸和帧率。如果我们通过摄像机的像素时钟同步系统,该实施系统就能灵活地对待摄像机的解析率和帧率。

C.系统配置
在前面一章讲 过,每个处理单元把其他的单元当作一台虚拟摄像机。所以在不同模块间建立连接很容易。假设我们有另一个处理单元Uc对输入图像使用最大值过滤器。图7显示 了使用Ua,Ub和Uc的不同配置。如果我们使用Ua-Ub对或Uc-Ub对,Ub在每个配置中按同样的方式工作,但把它的输入堪称一台生成最大值过滤后 图像的相机,而不是一个中间物。

这个实施系统支持一组是系统配置更简单的处理单元。组内每个单元可以使用输入选择器连接。利用内部寄存 器,输入选择器选择专用模块作为自身含输入选择器的处理单元的输入。每个寄存器被安排给一个处理单元,负责决定那个输入信号给处理单元。因为是作为处理单 元的一部分工作的,系统中的输入选择器也要有相同的数量。事实上输入选择器在实际应用中只作为一个多路选择器工作;所有处理单元的输入和输出都连个输入选 择器。这样,多样的连接修改就可以在处理单元实施。这样实现了系统配置的简化,和系统应用性的提高。

第四章 实施
表1显示了我们 在处理单元组中应用的图像处理模块。VHDL用来设计架构,Xilinx Virtex2系列的FPGA XC2V6000-FF1152用来实施。Xilinx综合工具XST9.1用来综合和实现系统。由于很难顾及本研究中设计的所有算法,我们选了一种算法 来作说明。

A.基于窗口的图像处理
由于许多用于低端或即时级图像处理的方法都是基于窗口处理的,通用窗口处理架构是必须的。为了 处理基于窗口的图像,与当前处理的像素相邻的像素必须能同时连接到。为了实现这一点,要用到扫描行缓冲器和窗口缓冲器。扫描缓冲器是一种可以容纳输入图像 中多个扫描行的缓冲器,而窗口缓冲器是一套移位寄存器,可以容纳窗口中的像素。因为窗口缓冲器由寄存器组成,它保证了对元素的即时连接。

扫 描行缓冲器使用在由四个DPRAM(双端口随机存取存储器)的5*5窗口处理单元中,每个DPRAM可以存储图像的一条扫描行。假设当前输入像素的坐标是 (x,y),像素强度值是Pi(x,y),DPRAM之间的连接先是在图8中。如图所示,扫描行缓冲器概念上把一个单独像素输入转换成了纵行像素输出。

窗 口缓冲器是一组方形的移位寄存器,如图9所示。每个移位寄存器可以存储输入图像的一个像素强度值。最右侧的一栏窗口缓冲器接收扫描行存储器生成的像素纵行 向量;每个寄存器里的强度值在一个周期内从右向左转换。最终,所有11*11个像素都存储在窗口缓冲器中,每个像素可以几乎无延时地被访问到。

B。中值过滤器
中 值过滤器考虑每个像素决定它是否代表相邻的像素。与平均值过滤器不同,中值过滤器用窗口像素的中值代替图像中的像素。为了实时生成窗口的中值,一些运算例 如排序和选择必须同时实施。执行中值过滤的处理单元使用如图10所示的5*5窗口。因为我们只关心中值,可以集中比较五个备选值中的第三个值。

图 11显示了使用中的系统。在前一章提到的,该系统生成了和摄像机输出相似的处理后图像。图像处理模块的数量可以根据用户输入连接。该系统总的等效门数目约 为12M门,但当我们制成ASIC时可以大大减少。表2显示了综合结果。我们在实验中使用的虚拟摄像机用12.2727MHz像素时钟捕获了每秒30帧的 VGA图像。综合结果显示我们可以处理相同尺寸超过每秒134帧的图像。考虑到分析工具低估问题,我们有理由期待实用中会达到更好的性能。

第五章 结论
本 文提出了一种使用FPGA实现的虚拟摄像机配置。实施系统可以以超过每秒130帧的速度处理灰度VGA图像并保证实时处理。架构中的每个处理单元把其他单 元当作一个虚拟摄像机。这使处理单元间的多样性连接可以实施。由于本系统是设计用于同步单独像素的数据流的,与以前的工作相比,有希望减少序贯瓶颈并显著 提高性能。

今后,为了应用于智能机器人,本系统将用ASIC实施。考虑到ASIC上逻辑门的效率,我们有理由相信系统的性能和尺寸上都得到提升。另外,该系统在集成视觉系统的应用还有待评估和探索。


---------- Forwarded message ----------
From: 夏至 <summersolstice@qq.com>
Date: 2009/2/18
Subject: 夏至的来信
To: Sunforever <53349529@qq.com>


帮我翻译一篇毕设资料
我最近在写德语论文
下次请你喝酒

没有评论: