>
首页 » 技术文章 » Blackfin处理器在工业图像处理中的应用

Blackfin处理器在工业图像处理中的应用

作者:美国模拟器件公司 David Katz Tomasz  时间:2005-08-14 14:11  来源:本站原创

随着嵌入式媒体处理器性能的提高,取代许多工业图像处理应用中基于个人计算机(PC)的系统正在成为一种趋势。由于这些处理器能提供低成本、小尺寸、可扩展的图像处理系统,所以它们比功耗和价格较高的其它同类PC系统更具吸引力。ADI公司的Blackfin处理器系列时钟频率为600 MHz,包括便于高效数据搬移和处理的增强结构,这种结构类似双乘法累加(MAC)单元,提供了用作视频和ADC数据通道的高速并行接口(PPI)。下面将介绍一些常用的图像处理和视频处理的算法,以说明Blackfin处理器的这些特性如何在当今的图像处理系统中发挥其作用。

1 Blackfin处理器具有很多适合于图像应用的特点

2 Blackfin 处理器由于具有双MAC单元,所以可以在9个周期内产生两个输出点,相当于每4.5个周期做一个3×3卷积

数据存储和搬移

Blackfin处理器的分级存储体系包括了各种在速度和容量之间折衷的存储等级。其特点如图1所示,靠近内核处理器的等级是最快的,但是通常容量太小而没有大的图像缓存。这也是直接存储器存取(DMA)如此重要的原因之一。在DMA方式下,数据框架可以将数据从快速内存中存入和取出,同时源自视频外围设备的数据装入片外较大的缓冲器中。DMA控制器独立于内核处理器工作,而内核周期仅仅用于在传输完成时提供中断。下面介绍的每种算法都利用了一些基于DMA的框架类型以达到尽可能最佳性能。选择这些算法是因为它们适用在很广的应用领域。

图像滤波

——3×3 卷积

卷积是图像处理中的一种基本运算。一个给定像素的二维卷积计算是将其周围的邻域像素的亮度按权重相加。由于一个掩码的邻域集中在一个给定的像素中心,所以该掩码通常具有奇数维数。该掩码的大小通常比图像小,并且经常选用一种3×3的掩码,但是掩码又不能太小,否则将无法检测出一幅图像的边缘。

2示出了3个矩阵:一个输入矩阵F,一个3×3掩码矩阵H和一个输出矩阵G。通过适当地对其输入数据,Blackfin处理器的MAC单元能够在一个处理器周期内每次处理两个输出点,同时读取与MAC运算并行执行的多个数据。这种方法允许对每次循环重复周期或者每像素4.5周期的双输出点的高效计算。

边缘检测

Sobel检测使用两个上述的3×3卷积内核来逼近水平边缘和垂直边缘。第一个矩阵(Sx)检测垂直边缘的变化,而第二个矩阵(Sy)检测水平边缘的变化。

这两个输出矩阵保存图像中每个像素的“边缘估计”量值。然后将这两个矩阵值设置为阈值以利用高输出值对应高边缘出现的特性。

如果应用中不要求准确的量值,这可以省去一个平方根运算。其它常用的生成阈值矩阵的方法包括只对各像素梯度求和或者只提取两个梯度中的最大值,这两种方法都能进一部提高图象处理性能。

600 MHz时钟双内核Blackfin处理器采用保留512×512像素图像两个梯度中的较大值的方法,处理一帧大约要用10ms,同时,它使用基于DMA的二维数据框架从快速处理器内存中存/取数据。

直线检测——霍夫变换

因为要计算出一条适用于输入图像中每个像素的正弦曲线因此霍夫变换是计算密集型方法。有许多执行这种变换的方法。本文仅介绍能够实现快速霍夫变换的Blackfin处理器的几个特性。

1. 检查图像中的所有像素以决定是否可将它们看作易于控制类型的霍夫参数。在Blackfin处理器上,即使处理器有10级通道,一个预分支的处理也可以小至一个周期。这对具有信号处理功能的处理器来说是相当可观的,而且这显然有助于缩短这种情况下的计算时间。

2. 计算一个浮点数的霍夫参数对定点处理器来说计算量非常繁杂。然而由于霍夫变换公式=xCOS+ysin中的三角函数可以预计算并在运行时装入,利用Blackfin处理器信号处理功能可以在一个周期内完成两个乘法运算,同时访问两次存储器读取累加表值。事实证明,这种方式可以很好地完成定点霍夫变换,效果与浮点计算相当。

Blackfin中参数ρ的简单的汇编程序如下:

cos_0 = cos[0] || sin_1 = sin[1]; // prefetch sin and cos values

lsetup(l_start, l_end) // loop over the θ values

a0 = i * cos_0, a1 = j * sin_0 || cos1 = cos[1] || sin1 = sin[1]; // multiply the operands

a0 += a1; // add the results

...

l_end:

3. 为达到最高效率,霍夫变换的实现必须是专用的。Blackfin处理器提供一个矢量MAX指令以从两个操作数对中找出两个最大值。这种处理方法可以有效地将找出一个(N× N)霍夫空间的全局极大值的循环重复次数减少至大约一半。

运动估计

除了传统信号处理应用的双MAC和算术逻辑单元(ALU)外,Blackfin处理器还有可以应用于单周期指令的四个附加的ALU。这四个ALU可以同时处理四组字节(例如添加、删减和求平均)。在包含图像帧之间的运动估算中非常有用。

此外,也可以利用一个四相8 位减法绝对值累加指令减去四对值,取每个差值的绝对值,并将每个结果累加到一个累加器中,从而对物体运动进行辨别。总之,Blackfin处理器有多种有效检测相邻图像帧运动的方法。

二维实FFT

快速傅立叶变换(FFT)是计算离散傅立叶变换(DFT)的快速算法。在计算二维数据时,其主要用途包括通过快速卷积滤波、快速相关、图像增强和物体识别。N×N图像的二维FFT大小也应是N×N。其旋转因子通常在运行时间之前计算。

Blackfin处理器具有适应FFT算法高效运算的位反转和蝴蝶加减指令。为了完成二维位反转,将N×N输入图像展开成大小为N2的一维矢量,这主要是因为由位反转一维矢量生成的转置矩阵等于二维位反转。

基于简单可用的代码,计算16×16合成二维FFT要求的周期数目是3816(包括开销)。这段代码实际上可以通过将输入数组元素的虚部设为零而用来计算实数FFT。对于使用复数FFT代码的更高效实数FFT执行方法,两个实数矩阵可被打包为复数二维FFT的一个复数输入。这种被称为“打包和分装”或者“大量生产”的方法需要后端处理来分离FFT输出,并需要两个图像来变换。但这在快速卷积和快速相关中通常不是问题,因为两个FFT变换总是需要计算的。

结语

当然,本篇文章里只讨论了很有限的一些算法,旨在说明Blackfin处理器的体系构造有助于使其成为工业图像处理系统中非常有用的处理器。此外,ADI公司还提供基于Blackfin处理器的图像处理和分析的公用“图像处理工具箱”内核。最新的样片ADSP-BF537——将以太网MACCAN控制器和PPI接口集成在一颗芯片上,增强了外围设备功能,加上这些工具,将会大大扩展工业图像处理应用领域的范围。■

参考文献

1 G. Olmo and E. Magli, All-Integer Hough Transform: Performance Evaluation, in Proceedings 2001 International Conference on Image Processing, vol. 3, pp. 338-341.

2 W. Press, et al. Numerical Recipes in C: The Art of Scientific Computing 2nd Edition, Chapter 12. New York: Cambridge University Press 1999.

相关推荐

ADI推出800MMAC/400MHz性能的扩展Blackfin系列

ADI  Blackfin  DSP  2010-09-20

雷击浪涌保护应用-以太网

以太网  Blackfin  MAC  2010-08-17

基于BF537的双冗余以太网的设计与实现

以太网  Blackfin  MAC  2010-08-11

优化的嵌入式系统设计资源简化汇聚式处理器应用

嵌入式  Blackfin  平台  微处理器  2010-04-15

ADI推出免费图像处理软件模块

ADI  Blackfin  处理器  2010-04-03

ADI 公司提供免费图像处理软件模块

在线研讨会
焦点