提高图像处理效果与效率的有关方法

所属栏目:数字图像处理论文 论文作者:/
论文摘要

  近年来,为了降低成本,提高图像处理的效果,国内外无论是工业界、学术界还是政府相关部门都日益关注相关理论与应用问题的研究.当前主要侧重于对基于FPGA(Field Programmable Gate Array即:现场可编程门阵列)的图像处理算法研究.由于FPGA内部嵌入的硬件乘法器模块数量有限,仍然不能够满足图像处理系统的需求.人们为了提高图像处理效率,不得不提高CPU的频率,这样就致使造价昂贵,而且很多性能瓶颈无法得到突破.

    本文通过实验在多处理机系统中以基于CCD图像传感的图像测量系统为测量主体,研究了曲面轮廓测量中提高图像测量精度和速度的图像处理技术的并行化问题.分析了多处理机系统在数字图像处理中的并行化情况,提出了在图像预处理过程中的并行化实现方法,进而使多个处理机之间能够更加协调工作,充分利用CPU,提高了多处理机系统的性能,提高了图像处理的效率和效果.

  1 提高图像预处理效果的有效途径
  
  如图1所示,被测对象经过传感器变换以及由视频采集卡送到计算机的过程中常常受到各噪声源的影响和干扰,使图像的质量变差,不仅影响图像视觉效果,而且还会影响目标信息的获取及进一步处理.因此,在进行边缘检测、图像分割、特征提取、模式识别等处理之前,采用适当的方法以减少图像噪声是至关重要的图像预处理步骤.由于噪声的存在,使得原本均匀和连续变化的图像灰度分布突然变大或变小,以至于出现一些虚假的物体的边缘或轮廓.【图1】
论文摘要

  在图像的处理过程中,通过平滑、锐化和噪声消减这三种图像预处理的操作可以有效提高图像处理的效果.平滑、锐化和噪声消减是阈值化处理、对比度扩展的下一级的预处理操作.由于这些操作均需要邻近像素值,因此它们均是局部操作.在已有的图像内可能含有不良影响的随机“噪声”.

  我们可用减少高频成分的方法来实现图像平滑即将图像区域内抑止亮度的巨大波动.至于如何突出变化和增强细节方面,其实现方法有两种:一是减少低频成分,二是通过微分突出变化.噪声消减将抑制图像中噪声信号,噪声信号本身可能具有各种形式,可能是与图像信号完全无关的一个随机信号.平滑虽然可以减少噪声,但它也将使图像变得模糊,为了解决这个问题,我们可以采用多次捕获图像并取每一像素值的平均值的方法来减少纯随机噪声信号.至此我们己经阐述了提高图像处理效果的有关方法,下面将继续讨论图像处理效率问题.
  
  2 平均值法噪声消减的原理
  
  图像可能受到各种噪声源的干扰,如信道传输误差所引起的噪声等,这些噪声在数字图像上表示为随机的孤立噪声点,可以认为与像素灰度是空间不相关的,即噪声点像素与其邻近像素具有显着不同,采用平均值法可以有效地去除此噪声.

  取一组像素的平均值(mean或average)作为中心像素的新值(一般推荐使用mean,表示两极值中间值).它需要对欲更新像素的周围像素组进行访问,并完成局部操作.通常一个组的大小为3×3,如图2所示.对于一个给定的3×3组,其数学模型为:【1】
论文摘要
  
  其中x′4是x4的新值.【图2】
论文摘要

  2.1 平均值法噪声消减顺序实现的效率分析
  在单处理机系统中,若要按图2所示的3×3组的像素值进行平均值操作的话,那么所有像素都必须进行该操作,并且操作时都要使用像素的原始值.对每一像素计算平均值需要9步,若有n个像素进行平均值操作则进行需要9n步操作.

  2.2 平均值法噪声消减并行化实现的效率分析
  首先假定为每一个像素分配一个处理机(不大可能是给定像素数,除了某些非常专用的图像处理硬件之外).一种直接的并行实现将需要每个处理机完成9步操作,而所有处理机同时进行操作.

  由于对像素数据的访问仅是读访问,对共享存储器实现而言,不会出现冲突.并行方法能利用每个处理机为它相邻的处理机和自身进行部分和的计算.

  假定像素值是X0,X1,X2,X3,X4,X5,X6,X7和X8,如图2所示,通过将计算分成四个数据传送步可减少计算步数,如图3所示。【图3】
论文摘要
  
  每个处理器以锁步方式完成以下四步:

  第1步每个处理器接收来自左边的像素值,并将这些值加到自身的像素值上生成累加和.中心处理器(x4)将生成x3+x4的累加和.

  第2步每个处理器接收来自右边的像素值,并将些值加到自身的累加值上.中心处理机将生成x3+x4+x5累加和.

  第3步每个处理器接收来自上边的在第2步中生成的累加值,并将其加到自身的累加和中,为了进行下一步的计算,每个处理必须保留原来的累加值.中心处理器生成累加和x0+x2+x3+x4+x5,与此同时,它必须将x3+x4+x5分开保存.

  第4步每个处理器接收来自下方的在第2步中生成的累加值,将其加到自身的累加值上.此时中心处理器将生成x0+x2+x3+x4+x5+x6+x7+x8的累加和.

  图4中示出了执行以上每一步后生成的结果.最后每个进程自身的累加和除以9来获得它们的平均值.对于n个像素来说,总共需4步通信与1步累加和的除法.显然,此算法也可使每个处理机处理一组像素.【图4】
论文摘要

  综上所述,对于有n个像素的图像,用平均值法噪声消减顺序处理共需要9n步;而用平均值法噪声消减的并行处理,每个处理机处理共需要4步通信与1步累加和的除法而所有处理机同时进行操作.这样大大提高了图像处理的效率。
  
  3 中值法滤除噪声的原理
  
  经过CCD图像采集系统获得的数字图像,经过阈值化处理、对比度扩展等一些处理后虽然可以去除各种干扰,提高图像的质量,但是,这样的数字图像还不足以满足高精度几何测量的要求,为了进一步改善数字图像的质量,还需要对图像作进一步的处理.

  数字图像在成像和传输过程中往往会夹杂一些噪声,如椒盐噪声和高斯噪声等,这些噪声可能会对图像处理结果产生消极影响,所以在图像处理前要对该图像进行平滑.由于平均值方法会使边缘和其他锐化细节变得模糊,为减少噪声,可采用邻近像素的中值(Median)来替代原来的像素值,当图像属于强“尖峰”图像时,这种方法在保持边缘的锐化性方面就显得更为有效.将像素值从最小到最大按序排列,并选取位于中间的像素值(假定像素数为奇数)就可得到中值.

  3.1 中值法滤除噪声顺序实现的效率分析
  假定像素值按递升序排列为y0,y2,y3,y4,y5,y6,y7和y8,则中值便为y4.这种操作要求组中所有值必须先排序,然后用第5个元素替代像素的原来值.采用如冒泡法那样的顺序排序算法将依次找到较小值,因而事实上排序在获得第5个最低值后便可终止.在这种情况下,找到每一个中值所需的步数为8+7+6+5+4=30,而对n个像素便需30n步.

  3.2 中值法滤除噪声并行化实现的效率分析
  为方便并行操作和提高速度,我们采用近似的排序算法,它只需使所有行和列排序一次,且各行均以相同方向排序.在每一阶段使用有效的冒泡排序且只需三步.

  首先,对每一行进行比较和交换操作,它需要三步.对于第i行,我们有:【2】
论文摘要
  
  其中 代表“比较和交换,如果左边灰度值大于右边灰度值”(通常的冒泡排序动作是将最大值冒泡到右边).

  然后,用三次比较和交换操作对各列进行排序.对于第j列,我们有:【3】
论文摘要
  
  图5中显示出了全过程.pi,j的值将取第5个最大像素值,该算法并不总是选取第5个最大值.例如,如果第5个最大值为X2(图5b),且它也是所在行中的最大值,则它将被保留在原来位置而不被此算法选中.【图5】
论文摘要

  尽管如此,此算法是一个合理的渐近算法,如果每个像素被分配一个处理机,则整个图像仅需6步就可以完成取中值.同样,该算法可扩展为每个处理机处理一组像素.综上所述:假设一幅图像有n个像素,在中值法滤除噪声的顺序实现中,总共需要进行30n步操作;而在中值法滤除噪声的并行化实现中,每个处理机总共只需要进行6步操作,而所有处理机同时进行操作,这样大大提高了图像处理的效率.

  4 边缘检测过程的并进化实现
  
  为了进行计算机识别,以从图像的其他对象中区别出所需识别的对象,常常需要增亮对象边缘即边缘检测,其中边缘是指在灰度值强度上有显着变化,为了体现这种变化在现实中的应用,我们引入了梯度和幅度这两个概念.
    
  4.1 梯度和幅度
  我们首先考虑一维灰度值函数f(x)(例如沿行方向).如果对此函数f(x)进行微分,则一阶求导f/x就表明了梯度变化,而在变化时将出现一个正向和负向尖峰.而函数的变化方向(增加或减少方向)可由如图6所示的一阶导数的极性来加以标识.图6中还示出了二阶导数2f/x2,它在处将空越零点,这可能有助于识别转换的位置.【图6】
论文摘要

  一个图像是一个二离散化的灰度值函数f(x,y).它的灰度值改变有一个梯度幅值(或简称梯度)和一个用角度表示的梯度方向,这里是相对于y轴的 角 度,如 图7所 示.【图7】
论文摘要

  对 给 定 的 二 维 函 数f(x,y),f(x,y)的梯度(幅值)f由下式给定:【4】
论文摘要
  
  以减少所需计算量.在图像处理过程中Prewitt算子和Sobel算子是计算数字梯度时最常用的算子.
  
  4.2 边缘检测掩码
  对于离散函数,导数可近似地用差分来代替,使用带权掩码可用若干种方法数字地实现求导.f/x项是指x方向差分,而f/y为y方向差分.因此我们就可取行中相邻像素灰度值之差和列中相邻像素之差.假定有一个如图2中所示的3×3像素值的集.我们可考虑用x5和x3的值来计算近似梯度(以得到f/x)以及用x7和x1以得到f/y,即:【5】
论文摘要
  
  需要使用两个掩码,一个用来得到x7-x1,而另一个用来获得x5-x3.每一个掩码结果的绝对值将加在一起.可使用负的权值来实现减法.(为进行求导,没给出任何比例因子,但若要获取合适对比度,就需要选择比例因子.)
  
  4.2.1 Prewitt算子
  Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用.

  其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘.在Prewitt算子中,若使用更多的像素值就可获得更好的结果.例如,近似梯度可由下式得到:【6】
论文摘要
  
  它需要使用两个称为Prewitt算子的3×3掩码,如图8所示.同样,每个掩码的结果绝对值需加在一起.的b和d分别是按图8所示的Previtt算子对原图a和c所进行图像处理的输出结果图.【图8】
论文摘要

  4.2.2 Sobel算子
  它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值.在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.下面是一个非常流行的边缘检测例子,它使用如图10所示的两种掩码.这里,导数可近似表示为:【7】
论文摘要
  
  实现一阶导数的算子将增强噪声.然而,Sobel算子同时具有平滑作用.由Sobbel的两个掩码运算符可算得f/x和f/y,并可方便地计算梯度"f和梯度方向φ.的b和d分别是按图所示的Sobel算子对原图a和c所进行图像处理的输出结果图.
  
  4.2.3 两种掩码的并行实现
  因为两种掩码的结果相互独立,其并行实现方法是,对每一种掩码使用均可按如图4中所示的四步操作,不同之处是在进行加法时要带上权值.

  4.2.4 两种掩码的适用环境分析
  实验结果表明,Prewitt算子有一定的抗噪能力,但是这种抗噪能力是通过像素平均来实现的,相当于低通滤波,所以图像有一定模糊,其边缘检测时会受到一定影响.Soble算子对噪声有抑制作用,但对边缘的定位不是很准确,不适合对边缘定位的准确性要求很高的应用.

  5 结束语
  
  综上所述,我们从CCD图像采集系统获得曲面轮廓的数字图像入手,以多核处理器为实验环境,通过对图像预处理过程中实现并行化来提高图像处理的速度,达到了预期的效果.

'); })();