时间:2024-07-28
白松辉,史再峰,郭 炜,魏继增
(1.天津大学计算机科学与技术学院,天津 300072;2.天津大学电子信息工程学院,天津, 300072)
图像在生成和传输过程中,容易产生脉冲噪声,使图像质量降低,进而影响后续处理的效果[1]。因此需要对图像进行一些图像滤波、图像增强等预处理,以此来提高图像的质量。中值滤波法是一种非线性空间滤波平滑技术,既可以消除随机噪声和脉冲干扰又可以很大程度的保留图像的边缘信息。在嵌入式图像处理系统中,实时性需求一直是一个很大的瓶颈。传统的MCU 无法进行大批量数据的实时处理,DSP 虽然具有指令流水和很高的速度,但其仍是串行执行指令来进行运算,处理速度依然很受限制[2]。该处理器是在基于一种可配置传输触发架构(Transport Triggered Architecture,TTA)处理器的基础上设计的中值滤波器专门处理器,使中值滤波速度得到了大幅度地改善。
中值滤波是一种能有效抑制噪声的非线性信号处理技术,其原理是把数字图像中一点的值用该点邻域中各点值的中值代替,让各个像素点的值接近真实值,消除孤立的噪声点。对于椒盐噪声来说,由于模板的中值很大程度上不会是噪声,因此中值滤波能很好地消除它。二维图像某像素点的中值滤波,先要确定邻域窗口的大小,邻域窗口一般为奇数方形窗口,如3*3 窗口、5*5 窗口等。然后对窗口中的像素灰度值进行排序,找出其中值,用该中值取代原像素点的值。
中值滤波算法对每一个像素点都会用邻域排序后的中值来替换,即使不是噪声点也同样处理,导致正确的像素点也被替换,使处理后的图像模糊[4]。这里采用一种算法只对噪声点进行处理,而不对正确的点进行处理,这样还可以节省时间[3]。首先选择一个点A 和其周围的四个点:从中选出最大值Amax 和最小值Amin,如果Amax-A 或A-Amin 大于一定值,则认为此处为噪声点,将其替换,否则认为是正确的点,不对其进行处理。验证表明这样去噪声后能够得到更好的图像效果。
传输触发体系结构是传统超长指令字体系结构的超集,超长指令字架构处理器属于操作触发体系结构,即通过对指令的译码获取操作类型,然后触发数据传输完成相应计算。而TTA是通过将数据传输到相关计算部件来触发相应的运算。它不同于VLIW 在一条指令中打包多个操作,TTA 则是在一条指令中打包多个数据传输[5]。其指令格式为每条指令包含n个Slot,n 由所设计处理器的总线条数决定,可以使指令达到高度并行。每个Slot 由Source 和Destination 两段组成,即操作数的来源和传送到的目的地地址。Source 中的最高位决定数据来源是立即数或寄存器的地址。这样所有的操作都由数据传输来触发完成,功能单元运算出来的结果放在功能单元的结果寄存器,可以通过总线传输到需要的功能单元或寄存器。
一个典型的TTA 操作和传输架构处理器,整体架构由控制单元、各种不同的功能单元、通用寄存器堆和各种互连网络组成。设计者可以根据计算任务任意的增加、减少不同的功能单元或寄存器来调整处理器计算能力;根据各模块之间的连接改变总线宽度、数目。因为这种灵活性,使其非常适合作为协处理器配合功能强大的通用处理器完成计算数据密集型的任务[5]。
在图像中值滤波过程中,算法核心在于排序。但是并不需要把9个数全部排序,只需要找到中值。传统的排序算法要完成此项任务需要30 次排序运算,这里选择一种快速找中值的方法,可以使排序次数降到最低13 次即可完成。首先按行进行排序,得到结果后再从3个最大值之中求最小值,从3个中值中求中间值,3个最小值之中求最大值。这样3个中间值中的最大值一定大于5个数值,即本行最小值,其他两行的中值及最小值。同理3个中间值中的最小值也至少小于5个数。故此可以只比较3个最大值中的最小值,3个中间值的中间值和3个最小值之中的最大值,即得到所求的中间值。如图1 所示。
图1 排序算法
根据排序算法设计专门的排序功能单元,首先分别对每行的三个数进行排序,这里设计的排序功能单元每个周期完成对三个数的排序。行排序完成后,还要完成对最大列选出最小值、中间列选出中间值和最小列选出最大值,继续使用排序功能单元来完成此操作,再在排序完成后有选择的将结果放到内部数据总线上,最后从得到的三个数中选出中间值。整个算法都是三个数的排序操作,算法的工整性使得排序功能单元最大程度地发挥其性能。
嵌入式系统对处理器功耗和成本要求苛刻,设计处理器时不仅要有较高的处理性能以完成运算任务,还要尽量减小面积、功耗和成本。所以必须合理设计功能单元、通用寄存器数目和总线条数。中值滤波处理器内部总体结构如图2 所示,由主处理器与中值滤波处理器接口模块、控制模块、各种功能单元模块、指令存储单元、数据存储单元模块组成。中值滤波处理器的功能模块主要包括循环控制单元、数据存储单元、排序功能单元和带加减功能的ALU组成。循环控制单元主要控制循环次数,自动完成整幅图像的滤波;带加减功能的ALU 模块用来计算存取数据时的地址偏移量。
图2 基于TTA的中值滤波处理器架构
中值滤波处理器内部采用四条总线的结构。在中值滤波数据处理时,需要将相应的数据从存储器中取出,再将数据送到相应的功能模块或寄存器中。四条总线就可以保证在取数据的同时使带加减功能的ALU 可以同时计算出下次要取数据的偏移地址,使得取数操作和计算偏移地址最就可以并行执行;或排序功能模块的排序操作和取数据同步进行,使各模块达到最佳的并行效果。
在图像中值滤波运算中,核心算法是排序。如果用常规的指令来实现排序算法,首先要用比较单元来比较两个数的大小,然后用条件判断指令来决定程序是否跳转,之后再完成数据的交换。不仅用到的指令多,而且条件判断指令往往需要几个周期的延迟,导致排序花费很长的时间。
为了对排序程序加速运算,这里在中值滤波处理器中定制相应的排序功能单元。该功能单元不需要使用比较、条件判断等指令。这样将大大精简排序程序的代码量,提高排序运算的执行速度。当这三个数到达排序功能单元,其中一个数触发排序功能单元进行排序,下个周期便可得到排序结果。
在图像中值滤波运算中,核心算法是排序。为了提高排序速度,这里首先对a、b 排序,大数用max[a、b]表示,小数用min[a、b]表示。然后再分别用max[a、b]、min[a、b]来和c 比较大小,如果c 大于max[a、b],则表明c为最大值,max[a、b]为中间值;如果c 小于min[a、b],则表明c为最小值,min[a、b]为中间值;否则,max[a、b]为最大值,c为中间值,min[a、b]为最小值。第二次比较产生的两个选择信号来决定三个数的最终顺序。这种排序就使得排序周期缩短了一个两数比较大小的时间。
每幅图像都可以看成是一个二维矩阵的像素值,运算时用行坐标和列坐标来索引到具体某个像素值。例如宽度为m的二维矩阵P,坐标点(x,y)的值为P[x][y],通过x、y 和矩阵P的首地址计算得到存放地址,存放地址为:
每次寻址需要一次乘法和两次加法操作,为了加快图像的寻址,中值滤波处理器中定制一个具有二维寻址功能的存取功能单元,在存取功能单元中内置一个乘法器和两个加法器,只要往该功能单元传输P 基址、x 和y 就可直接得到P[x][y]的地址,不再需要调用加法单元和乘法单元的指令,节省了寻址时间。
图3 数据存取模块
访问数据存储器时,有读和写两种操作,即取数操作和存数操作,各有两种寻址方式,直接寻址和偏移寻址,组合起来便有四种触发方式,这里用触发寄存器控制存取方式及寻址方式,如图3 所示。直接寻址时,只需给出P 地址即可;在偏移寻址中,则通过P 基址和偏址x、m*y相加作为地址来访问存储器,这样的设计使得二维查找数据快速、方便。取数时,数据存储器首先需要一个周期的读操作,到输出到数据线之间还有一级寄存器,因此读数据需要两个周期的延时;存数据时,只需把数据写到存储器中,所以可以连续存数,可以认为没有延时。
在系统验证中,首先对各个模块及该处理器的RTL 代码用Modelsim 6.5 SE 软件进行仿真验证,然后选用苏州国芯公司的C*Core C310 微处理器作为主处理器,以设计的专用中值滤波处理器作为从处理器搭建一个图像处理SoC 硬件验证平台,并基于Xilinx FPGA XC4VLX100-FF1148 芯片进行了实现,图像处理的结果最终在QVGA 屏幕上显示输出。
验证时对一幅320*240的24 位RGB 真彩色图片进行中值滤波,原图中(图4 左)人为加入了10%的椒盐噪声,对其进行中值滤波后,有噪声的点用相应的中值替换,消除了椒盐噪声的影响,使图像变得清晰,处理效果如图4 右所示,实际硬件显示图像结果与仿真图像相同。
图4 含有噪声的图片和中值滤波后的效果
本处理器和通用微处理器C*Core C310、ARM926EJ 进行比较。单从数据的排序功能来看,例如实现200个数据的排序,本处理器只需120396个Cycle,而C*Core C310 则需要519834个Cycle,ARM926EJ 则需要347345个Cycle,结果说明设计的中值滤波处理器比通用处理器性能要高很多。用三个处理器分别对不同数量的数据进行排序的时间统计,中值滤波时对RGB 三个分量分别以相同的方法做处理,对RGB 中一个分量进行中值滤波的时间统计见表1 所示。
表1 排序时间统计
通过对中值滤波算法的研究,提出了一种可配置处理器为协处理器的硬件架构。设计专门的排序功能单元,使得在排序过程中减少了比较和跳转指令的使用。寻址方式采用二维寻址减少了加法和乘法指令的使用。在进行中值滤波时,处理器有选择的处理图像,只去除噪声点,使得图像的处理效果更加真实。用可配置处理器TTA 架构设计的SoC,由于其可编程性和可配置性,及其可配置的灵活性,使得任务能够高效的完成。但还有几个方面值得完善和深入研究,可配置处理器还存在很大的扩展空间。相信未来的SOC 设计中会用到更多的协处理器,以更加灵活的支持各种新的应用。
[1]R H Chan,C Hu,M Nikolova.An iterative procedure for removing random- vALUed impulse noise[J].IEEE Signal Process.Lett.2004,11:921-924.
[2]Mao-Hsiung Hung,Jeng- Shyang Pan,Chaur- Heh Hsieh.Speed Up Temporal Median Filter for Background Subtraction[C].2010 First International Conference on Pervasive Computing,Signal Processing and Applications(PCSPA 2010).Los Alamitos CA,USA,IEEE Computer Society,2010.
[3]S Perreault,P Hebert.Median Filtering in Constant Time[J].IEEE Trans.on Image Processing.2007,16:2389-2394.
[4]Mohammed,Jafar Ramadhan.An Improved Median Filter Based on Efficient Noise Detection for High Quality Image Restoration[C].2008 Second Asia International Conference on Modeling & Simulation,Piscataway,NJ,USA,IEEE.2008.
[5]Wei Guo,Jizeng Wei,Yongbin Yao,et al.Design of a configurable and extensible Tcore processor based on Transport Triggered Architecture[C].the 2009 World Congress on Computer Science and Information Engineering,Piscataway,NJ,USA,IEEE,2009.
[6]阮正旺,张建州,张亮.清除椒盐噪声的局部L1 去噪保边方法[J].中国图象图形学报,2010,15(6):867-872.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!