运动模糊图像重构的算法及其并行化处理研究

摘 要:运动模糊图像的重构是图像处理中很重要的一个部分,他在照相机防抖、拍摄高清晰图像及运动物体的检测方面都有很重要的作用。介绍运动模糊图像的成因,并推导出运动模糊图像的数学模型及频谱特征,针对水平模糊图像的频谱特征提出一种自动判断运动幅度的算法,并针对多核处理器,采用OpenMP多线程技术进行并行化处理,极大地提高了算法的执行效率。

关键词:图像重构;运动模糊;并行计算;OpenMP

中图分类号:TP391.14 文献标识码:A

文章编号:1004-373X(2008)10-145-03

Research on Motion Blurred Image Restoration and Its Parallel Algorithm

ZHANG Lei,WANG Guangsheng

(College of Electronic Information and Control Engineering,Beijing University of Technology,Beijing,100022,China)

Abstract:Restoration of motion blurred images is an important part in image processing,which has many important applications in image stabilization on cameras and capturing high definition pictures.This paper introduces the causing of motion blurred images and deduces the math model and characteristic spectrum of the motion blurred images.This paper proposes a new algorithm on automatic motion range judgment,and does paralleling the restoration algorithm on multi-core processor using OpenMP multi-threading technology,efficiency of the algorithm is increased greatly.

Keywords:image restoration;motion blur;parallel computation;OpenMP

运动模糊图像的重构是图像处理中很重要的一个部分,他在照相机防抖、拍摄高清晰图像及运动物体的检测方面都有很重要的作用。运动模糊,即采集图像时由于采集设备与目标发生相对运动而产生的图像模糊,导致图像质量的降低,即退化。因此,要想在运动过程中采集到清晰度高的图像,就必须要对模糊图像进行处理,即运动模糊图像的重构。

目前,对运动模糊图像重构的关键之一是测量出运动模糊幅度,这主要是靠测量运动模糊图像的频谱中“条纹”,即能量谱的间距。本文提出一种自动提取运动幅度的方法,他带有预处理运动图像频谱的能力,这样可以避免Hough识别直线中出现识别集中的现象。

最后,本文将运动模糊图像的整个算法进行并行化处理,使之能在多核处理器上获得最大的执行效率。本文主要针对水平模糊图像进行重构,并行化处理也只针对水平方向,但由于水平与竖直方向的处理几乎一致,故竖直方向的并行化处理也类似。

1 运动模糊图像重构算法

1.1 运动模糊图像的数学模型

运动模糊图像复原的基本思路:先建立退化的数学模型,然后根据该模型对退化图像进行拟合。图像复原模型可以用离散数学处理,处理项的实现可在空间域卷积,或在频域相乘。胶片上的总曝光量是在快门开闭期间的积分,即运动模糊成像表示为:

成像系统与物体间相对运动造成的像模糊,如图1所示。 

图1 去模糊前的图像

设只有像函数f(x,y)相对系统的移动,设:Δx(t)为x方向的移动分量;Δy(t)为y方向的移动分量。

在不考虑噪声的情况下,原始图像的退化模型表示为:

g(x,y)=∫T0f[x-Δx(t),y-Δy(t)]dt(1)

再简化一次,让物体仅在x方向做直线匀速运动,且在曝光时间T内的总位移量为a,物体沿x方向的变换分量为:

Δx(t)=aTt (2)

g(x,y)=∫T0f(x-aTt)dt=g(x)[WB](3)

let: t1=aTt(4)

则:

g(x,y)=g(x)=∫a0f(x-t1)Tadt1=f(x)*h(x)[WB](5)

where:h(x)=ta,0≤x≤a(6)

为沿x方向造成运动模糊的点扩散函数:

 

i.e. h(x)=Ta[] 0≤x≤a

0[]其他(7)

为运动物体沿x方向移动时的图像退化模型。

对运动模糊图像进行重构,首先要确定运动模糊图像的运动幅度。由上面的分析可知,运动模糊图像的运动幅度是以在频域中的条纹,即能量谱数目来表现。因此,要确定运动幅度,只需确定图像在频域中的条纹数目。而由于各个条纹间的距离是固定的,只需要确定图像最中间的两条直线间的间距即可。一般的方法是依靠霍夫变换检测直线的方法,对图像反复霍夫变换去检测条纹,最终识别出中间的两条直线,并计算出他们之间的距离。

1.2 含预处理的自动识别频谱条纹算法

虽然Hough变换可以识别直线,但是如果不对原始图像先进行一次检测,就可能会出现识别直线在“波谷”处过于集中的情况。对此,设计了一种预处理的方法,检测条纹间的“波谷”,这种算法可以写为:

设定一个参数 vlong, 代表“下降次数”

设定一个标记 downflag=false,代表是否正在处于“下降”位置

设定一个vBuffer[j],存储第j列的波谷数量

对每一行进行扫描

{

If <前一个(左边)像素点的值大于后一个(右边)像素点的值>

{

downflag=true;//标记当前状态:正在下降

Vlong -- ;

}

Else//前一个(左边)像素点的值小于后一个(右边)像素点的值

//此时状态正在处于上升

{ 

If(downflag==true && Vlong<0)

//已经连续下降了Vlong次,并且后面开始爬升

{ 

vBuffer[j]++;//确定当前是“波谷”,波谷存储器中该列的“波谷”的数量加一

}

Downflag=false;//修改标记

将Vlong置回初始状态

}

}

If(downflag==true && Vlong<0)

//已经连续下降了Vlong次,并且后面开始爬升

{ 

vBuffer[j]++;//确定当前是“波谷”,波谷存储器中该列的“波谷”的数量加一

}

Downflag=false;//修改标记将Vlong置回初始状态

} }

最后,逐行扫描每一个像素,如果该像素所在列的波谷数量超过某一个值,并且该点的亮度值小于一定范围(不能是亮点),那么判定该点为“可能波谷点”,经过上面的一步筛选之后,再用Hough变换来识别这些“可能波谷点”的点所构成的直线,如图2所示。再经过计算,可得到图像的运动幅度。

由于运动幅度已经确定,逆滤波处理相对简单。这里设定逆滤波的h(x,y)为:

h(0,0)=1/N

h(1,0)=1/N

h(2,0)=1/N

…

h(N-1,0)=1/N

h(N,0)=0

h(N+1,0)=0

…

其中,N为运动幅度。再经过FFT(将零点与高频部分设为0.5),做相除运算最后经IFFT把图像复原,如图3所示。

[XC<11t5.tif>]

图2 运动检测模糊图像频谱

[XC<11t6.tif>;%95%95;]

图3 去模糊后得图像

1.3 程序算法流程图

程序的算法主要包括几个部分:对图像的快速傅里叶变换,将图像由空间域转换为频域,为以后做频域处理打基础;对图像的频域做运动幅度检测,利用霍夫变换检测直线深谷,最后检测出中间两条直线间的距离,进而判断出运动幅度;在运动幅度以及方向都确定的情况下,采用逆滤波处理进行图像重建,最终将图像重建。算法流程图如图4所示。

2 运动模糊图像重构算法的并行化处理

当今的处理器时代已经由单核向多核发展,应用程序及算法向多核处理器上进行移植,并获取最大执行效率是当前所有研究学者需要考虑的工作之一。算法在多核处理器进行优化,主要依靠多线程技术将算法进行单个任务拆分为多个认为,使得操作系统可以平均分配多核CPU的工做负载。

图4 运动模糊图像重构的算法流程图

由上面对运动模糊图像重构的算法分析不难发现,此算法的各个环节都包含着大量的重复并独立的工作,比如快速傅里叶变换,逆滤波处理,可以直接进行算法上的并行化处理;而采用霍夫变换做直线识别,由于识别次数较多,可以进行功能并行。本文中的并行化处理采用OpenMP编译制导语言自动完成。采用OpenMP简单而高效,他可以自动分析当前线程并创建用于执行程序的并行化多线程。

2.1 快速傅里叶变换的并行化处理

由于图像是二维空间的,其傅里叶变换需要横竖2次才能完成。由于行与行之间,列与列之间是独立的,因此采用对行列的并行化处理。这里没[GK!3]有采用碟型网格等高级的并行算法,这主要是考虑到算法执行完毕后需要直接对其结果进行处理,采用碟型网格会带来一些不便,需要额外的处理工作。同时采用行列之间的简单并行已经可以很好的提升并行化效率。

图像快速傅里叶变换的程序流程图如图5所示:[HK]

图5 并行程序流程

程序首先读入图像数据至缓冲区,并将其以二维数组的形式存储。然后首先对水平方向进行FFT处理,由于快速傅立叶变换的可并行特点,因此对每行的FFT的处理可以全部并行化。对竖直方向每列的并行化也如此。未并行与并行之后的CPU使用记录及程序执行时间如表1所示。

2.2 运动检测过程的并行化处理

由于需要采用霍夫变换来进行10次直线,那么对霍夫变换的并行化处理就显得非常重要。虽然霍夫变换具有一定的可并行性,但由于重复次数较多,功能并行对于加速比的提升要高于对霍夫变换算法本身的并行。未并行与并行之后的CPU使用记录及程序执行时间如表2所示。

[WTHZ]表1 FFT过程的CPU占用率统计及执行时间[WTBZ]

未并行之前的CPU使用记录并行处理之后CPU使用记录

CPU0占用率 16%CPU1占用率 79%CPU0 占用率 52%CPU1 占用率 69%

总共用时:1 728 ms总共用时:938 ms

加速比系数:tstp=1 728938=1.84

[WTHZ]表2 运动检测过程的CPU使用情况及运行时间[WTBZ]

未并行之前的CPU使用记录并行处理之后CPU使用记录

CPU0:25%CPU1:75%CPU0:90%CPU1:90%

总共用时:3 469 ms总共用时:2 203 ms

加速比系数:[SX(]ts[]tp[SX)]=[SX(]3 469[]2 203[SX)]=1.57

2.3 逆滤波处理的并行化处理

逆滤波处理过程是整个程序中最费时间的部分,他包括快速傅里叶变换,频域运算和快速傅里叶反变换3部分。幸运的是,这些环节内部均是可独立并行的,因此可对整个逆滤波处理做局部的并行化处理。并行化流程图如图6所示:

图6 并行化流程图

程序首先对图像进行快速傅里叶变换,这部分的并行化处理前面已经提到了。接着进行逆滤波处理的相关运算,由于这部分算法的迭代次数较多,运算量较大,所以适合进行对迭代部分的并行化处理。最后对快速傅里叶逆变换的并行,可按照傅里叶变换的并行化处理方法。

2.4 整个程序的CPU运行状态和运行时间

[JP3]通过用OpenMP将傅里叶变换并行化,运动检测并行化以及逆滤波处理并行化,程序的执行速度大大提升。整个算法并行化前后的CPU使用记录及程序执行时间如表3所示。

3 结 语

随着现代社会数字化技术的普及,数字图像在人们的生活中不可或缺。因此,数字图像处理技术在社会中的应用将越来越广泛。他不仅要求处理的精确性,还要求快速性。精确性主要依靠算法的设计理论,而快速性不仅依靠算法效率,与对其优化的结果也有很大关系。

表3 程序最终的并行化前后结果对比

本文提出一种新的运动幅度检测的方法,在运动模糊图像重构上有一定应用价值。同时,本文对现有的运动模糊图像重构算法进行了并行化处理,使之能够借助多核处理器的强大处理能力,提升算法执行速度。

参 考 文 献

[1]阮秋琦.数字图像处理学[M].北京:电子工业出版社,2001.

[2][美]Rafael C Gonzalez.数字图像处理[M].北京:电子工业出版社,2007.

[3]向世明.Visual C++ 数字图像与图形处理[M].北京:电子工业出版社,2006.

[4][美]Michael J Quinn.MPI与OpenMP 并行程序设计[M].北京:清华大学出版社,2004.

[5]毋立芳.二值运动模糊图像参数提取[J].北京工业大学学报,1996,12(22),4-6.

[6]贺建峰.运动模糊图像的参数估计[J].昆明理工大学学报,1998,12(23):6-7.

作者简介 张 磊 男,1983年出生,北京朝阳人,硕士研究生。主要从事视频处理及图像处理的研究工作。

王广生 男,高级工程师。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

推荐访问:并行 算法 重构 图像 模糊