APP下载

基于FPGA 技术实时图像采集技术

2020-05-12赵宇新傅海军王淇櫕耿礼阳

科学技术创新 2020年10期
关键词:中值图像处理排序

赵宇新 傅海军 王淇櫕 耿礼阳

(1、江苏大学京江学院,江苏 镇江212013 2、江苏大学电气学院,江苏 镇江212000)

1 概述

在自动化技术飞速发展的现在,我们时常能在电影中看见一些诸如无人驾驶或者是能够自动识别使用者的电脑之类的科技,而现在也有很多软件可以通过图像识别来完成例如登入与支付之类的功能。而在图像识别技术日趋成熟的现在,如何更高效,更准确,且更快速地采集图样并进行对比,是时下非常火热的一个研究方向。

一般情况下,软件图像处理的方案是在通用CPU 上使用软件运行程序,这种方法价格低廉,运行灵活,但是由于其运行速度慢且不支持运算,故并不能满足实时图像处理的要求。与之对应的硬件图像处理方式一般是选用专用的ASIC 器件实现的,它拥有优秀的处理速度与并行运行能力,但是却拥有诸如设计和生产的费用高昂,灵活性不高的缺点。同时,伴随着对图像采集处理的要求逐渐严格,特别是对于密集图像的采集处理上,在要求拥有高采集精度的同时还要保证足够的处理速度,这时比较传统的CPU 构架与ASIC 器件就略显不足了。而FPGA 则兼具了二者的优势。用户可以先编辑实现图像处理的程序,再用FPGA 实现该功能。再加上FPGA 是作为ASIC 领域中的一种半定制电路而出现的,既解决了ASIC 的不足,又克服了原有可编程器件门电路数有限的缺点。它通常具有较高的初始成本,但由于它们可以实现多个芯片组件的功能,并且还能够节省大量板上空间,所以综合来看其成本并不高。还有可编程的优势,功能性与灵活性更高,风险性也是更低,而且从设计到运用的周期也较短,故FPGA 器件与ASIC 器件拥有更广的应用范围。根据现在的发展趋势,如今的FPGA 器件仍然拥有十分宽广的前景。

2 FPGA 简析

FPGA 的全称为Field Programmable Gate Array(现场可编程逻辑门阵列),世界首款FPGA 是由Xilinx(赛灵思)公司发明于1984 年只包含64 个逻辑模块的Xilinx XC2064。

FPGA 采用了逻辑单元阵列LCA(Logic Cell Array),包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。

它是一种可重复编程的器件,与传统的逻辑电路和门阵列相比,它具有不同的结构。FPGA 利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D 触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O 模块。FPGA 的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O 间的联接方式,并最终决定了FPGA 所能实现的功能,FPGA 允许无限次的编程。它具有一般ASIC 芯片的优点:具有高性能、低功耗的优势,同时还可以采取大规模并行的方式实施算法,并非常迅速和有效地处理采集到的图像中大量数据。只需少数芯片和简单的外围电路,即可实现比较复杂的图像预处理算法,若是需要对不同尺寸、不同灰度级图像进行处理,只要改变FPGA 芯片的内部参数值就可以使其拥有一定的灵活性。加之现有的FPGA 也已经带有DSP 核心,能够与MATLAB 进行对接,我可以先在MATLAB 中进行算法验证后,然后再下载到FPGA 中,这种方式也极大提高了程序的容错性。

3 算法分析

一般情况下,我们在使用FPGA 进行图像采集与处理时使用的是中值滤波算法,它是在在“最小绝对误差”准则下的最优滤波。中值滤波与一般的线性滤波方法相比,可以更好地滤除脉冲噪声,而且在滤除噪声的同时,还能够保护信号的边缘,使之不被模糊。加上中值滤波的算法比较简单,易于硬件编程。主要工作原理是先定义一个长度为奇数的L 长窗口,L=2N+1,N为正整数。通过这个长窗口将像素灰度按等级排列和计算,再选取中间值作为输出。计算公式大致如下:

其中x(i)为位于窗口中心的信号样本值。我们需要对这L份信号样本值按从小到大的顺序排列后,取其中值,也就是在i处的样值,并将其定义为中值滤波的输出值。

具体流程如图1 所示。

由图中我们可以看出,在处理一个3×3 的像素矩阵时,我们需要先将在矩阵中的9 个数值按照一定规律进行排序,接着取出它们的中值,替代其他数值。

这个方法与均值滤波相比可以更加简单的处理脉冲干扰级的椒盐噪音,在抑制随 机噪音的同时更好的保证图像边缘不被模糊,具体效果如图2 所示。

从图中我们可以看出,经过中值滤波处理过的图像比起均值滤波处理过的图像边缘更加柔和,同时留下的椒盐噪声也越少。

图1 中值滤波流程演示

在执行中值滤波时,排序是相当重要的一个过程。而在排序时,最简单的方法应该是冒泡算法,它的过程简答,易于理解与实现。但由于冒泡算法的排序方法单一,致使它在运算的过程中,需要重复地走访过要排序的元素列,依次比较两个相邻的元素,在遇上顺序错误时将两个元素进行交换。并一直重复地进行直到没有相邻元素需要交换,最后才算完成了该元素列的排序。例如在对一个3×3 的像素区域进行比较时,冒泡算法最多需要36 次比较才能完成运算,并且有时还存在着大量重复同样的计算与比较的问题。这就导致该排序方式多余的比较次数过多,而多次的重复计算又将导致较低的运算效率,最终影响到图像的实时处理,增加大量运算负担,虽然这个方法简单且通用,但是复杂的运算步骤与庞大的运算量,使得该方法并不适用于图像处理发展的趋势。

所以,为了改变冒泡算法的不足,中值滤波并行算法应运而生。在它的运算过程中,首先会对于所选区域进行排序,再按照一定的规律进行比较,从而得出中值。这种算法减少了大量重复运算的步骤,很好地缩短了运算时间,提高了运算速度。例如,同样是对一个3×3 的像素区域进行比较时,我们仅需要19次比较计算就能完成运算,这比冒泡算法减少了将近一半的运算次数,在成功地减少运算负担的同时,还能更加有效提高了图像处理的速度,故在进行运算时,我们将该方法作为首选方法。

中值滤波并行算法在本质上算是冒泡算法的衍生算法,但是通过分割以及并行和流水线的处理方法,对图像数据进行多点的批量处理,从而一次对多组像素点进行排序与比较。这样很好地减少了比较运算的次数,避免花费多余时间在相同的运算上,很好的提高了运算的效率。

具体计算原理如下:

在对一个3×3 的像素区域进行比较时,我们首先要对该区域进行分类(如表1 所示)。

表1 分组方式

分组完成后,分别对A 组、B 组、C 组进行比较排序并分组为T1、T2、T3 三组,并通过冒泡算法分别比较得出三组的最大值,最小值与中值,并将它们重新分组,分别得到最大值组M1、中值组M2 与最小值组M3。具体计算公式如下

接着对于M1、M2、M3 三组再次进行冒泡排序,从中取出最大值组M1 的最小值Min、中值组的中值Mid 以及最小值组的最大值Max,并对这三个数字进行比较,最终获得输出中值result,具体公式如下:

具体流程图如图3 所示。

图2 中值滤波与均值滤波的对比

图3 中值滤波并行算法示意图

如图所示,为得出T1、T2、T3 组中值的排序,需要9 次冒泡比较,之后再对M1、M2、M3 三组进行排序,得出最小值组的最大值MAX、中值组的中值MID、最大值组的最小值MIN,这一步同样也需要9 次冒泡比较,最后,对于得出的MAX、MID、MIN三个值并不需要再次进行冒泡比较,通过MAX 与MID 比较取出其中的最小值,再用该值与MIN 比较,直接输出最大值,即可得到一个3×3 像素区域的中值Result。

综上所述可以看出:该算法只需要19 步即可快速得出一个3×3 像素区域的中值,比冒泡式算法相比,比较的次数减少了47.2%左右,在增加计算速度同时也减少了硬件的运算量,更好地契合了现在实时处理的要求。

4 结论

本文简单介绍了FPGA 图像处理方法,同时将该方式与其他传统的图像处理方式相比较,得出了基于FPGA 的图像处理技术所拥有的优点。在那之后,又介绍了两种传统的FPGA 图像处理算法,并且对两种不同的中值滤波算法进行了对比和分析。大体得出了中值滤波并行算法的优势,并且举例论证了该算法在图像处理速度上优于冒泡法,其效率高,运算量小的优点,可以更好地适应现在实时图像处理的要求。

猜你喜欢

中值图像处理排序
海战场侦察图像处理技术图谱及应用展望
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
Lagrange中值定理的证明及其应用
作者简介
恐怖排序
基于ARM嵌入式的关于图像处理的交通信号灯识别
节日排序
机器学习在图像处理中的应用
Lagrange中值定理的巧妙应用
高等数学中拉格朗日中值定理的教学处理