文章编号:1006-9348(2008)07-0200-05
计 算 机 仿 真
2008年7月
数字图像稳像算法研究
刘玉红,涂丹
(国防科学技术大学信息系统与管理学院,湖南长沙410073)
摘要:介绍了数字图像稳像算法的整个流程,包括三部分:运动估计、运动决定和运动补偿。重点介绍了运动估计算法和运动补偿中的滤波算法;详细阐述了几种最基本的运动估计算法,其它的运动估计算法可以通过这些基本算法延伸发展得到;列出了三种常用的滤波算法:中值滤波、kalman滤波和二次B样条曲线法,应用于不同的场合;提出了两种方法:裁减和拼接,用来解决当前帧补偿后出现的空白区域问题。最后,展示了一种基于投影估计和kalman滤波的稳像算法的试验结果。通过这些方法的介绍,可以对稳像算法有更直观的了解,探讨了进一步研究的重点。关键词:电子稳像;运动估计;运动补偿;运动模型中图分类号:TP317.4 文献标识码:B
ADigitalImageStabilizationAlgorithmLIUYu-hong,TUDan(SchoolofInformationandManagement,NationalUniversityofDefenceTechnology,ChangshaHunan410073,China)ABSTRACT:Theprocessofdigitalimagestabilization,whichincludesmotionestimation,determination,andmotioncompensation,isintroduced.Filtermethodsinthemotioncompensationaremephaticallyintroduced.Severalbasicmotionestimationalgorithmsarecircumstantiated,fromwhichothermotionestimationalgorithmcouldbedeveloped.Threecmmonlyusedfilteralgorithmsi.e.themedianfilter,thekalmanfilterandthetwo-orderB-spline-basedfilterarelisted.Trimmingandmosaic,thewaysforsolvingtheproblemoffillingintheblankfieldaftercompensationareintroduced.Also,theexperimentresultsofprojectionestimation&kalmanfilterbasedstabilizationalgorithmareshowedinthispaper.Furtherchallengesareforeseenfromtheseintroductions.
KEYWORDS:Electronicimagestabilization;Motionestimation;Motioncompensation;Motionmodel
1 引言
摄像机置于运动载体上时,由于载体的运动和载体机座的振动导致摄像机的晃动,拍摄的图像序列出现了抖动现象,图像的抖动很容易引起眼睛的疲劳,影响观测者对图像序列的观看和分析,也影响了图像的后续处理。为了减轻或消除这种抖动,稳定图像,已有多种稳像方法被提出。
稳像的发展已多年,经历了机械稳像、光学稳像
[1]
现的稳像算法进行了总结,介绍了五种基本的运动估计算法和三种常用的运动滤波算法,最后,提出了一种基于投影算法和kalman滤波的数字稳像算法,并展示了其试验结果。
2 数字图像稳像算法
数字图像稳像稳定的是一个图像序列,其基本原理如下图1所示。
到目
前的电子稳像[2][3]。机械和光学稳像主要采用硬件的方法,电子稳像有两种:一是利用运动传感器检测摄像机的运动矢量再转换为图像的运动量从而进行稳像;另一种是直接利用数字图像处理技术,通过分析图像的内容,确定图像之间的运动量而进行补偿从而达到稳像目的,该方法也称为数字图像稳像,通常情况下,电子稳像都是指数字图像稳像,本文亦如此。
关于稳像的研究已经有很多,本文在前人的基础上对出
图1 稳像原理图
如图1所示,当没有抖动时,参考帧图像中的五角星
block和当前帧图像中的五角星block1处于同一位置(当前
收稿日期:2007-06-06 修回日期:2007-07-03
帧图像中的虚五角星位置)。而当存在抖动时,在当前帧中
—200—
五角星block1移动到了如图所示的实五角星block2位置,
block与block2位置不一样,通过视频显示出来的时候就会
上式就是基本的光流约束方程。记
Ex=
出现模糊,稳像的目的就是消除这种模糊,也就是将当前帧中的实五角星block2移动到虚五角星block1位置,使得当前帧图像与参考帧图像一样。运动估计算法就是计算当前帧中实五角星block2相对于参考帧中五角星block也即是相对于block1在x,y轴方向的移动距离,运动补偿就是根据计算出的距离将当前帧的实五角星block2向相反的方向移动到虚五角星block1位置,使得两帧图像一样,就得到了稳定的图像序列,这就是稳像原理。
一个完整的数字图像稳像系统不仅包括稳像算法还包括稳像之前的预处理,其稳像流程通常如下图2所示。
矢量。
5f5f5f,Ey=,Et=5x5y5t
(3)
可得光流方程的另一种形式:
Exu+Eyv+Et=0
(4)
采用迭代方法,解上面的方程得到u、v值,即为帧间运动基于光流的方法由于是利用灰度的变化信息,需要从图像序列的灰度变化中计算速度场,在复杂背景下由于实际景物中的速度场不一定总是与图像中的直观速度场有唯一对应关系且偏导数计算加重噪声水平,会使光流法得到的结果在使用中不稳定,从而限制了它的应用。
2.1.2 块匹配法
[5]
在运动估计算法中,用的最广泛的就是块匹配法。它的基本思想是:将当前帧图像划分为许多宏块,每一块的大小为m×n,以当前帧的一个m×n的宏块为中心,在上一帧中
图2 电子稳像流程
或参考帧中的相应位置,取一个(m+Δm,n+Δn)的搜索范围,在该范围内的所有候选块中,按照某种意义下的匹配准则,找出与当前块最相似的块,即为匹配块,当前块与匹配块之间的相对位移即为当前块的运动矢量v。
匹配算法根据匹配准则和搜索策略的不同可分为不同的匹配算法。匹配准则主要有均方误差准则(MSE)、平均绝对帧差准则(MAD)等。这两个准则公式如下:
EMSE
(i,j)=
[f(k,l)MN∑∑
k=1l=1m
n
预处理主要包括滤除原始图像中的噪声,采用直方图均化增强图像的细节等;运动估计主要是估计出图像的全局运动参数;运动决定是在估计出的运动矢量中分辨出摄像机的运动和图像中小目标的运动及抖动矢量,滤除抖动,保留摄像机的正常扫描运动,运动补偿是根据估计出的抖动参数来补偿原图像,以获得稳定图像。下面将详细介绍各种运动估计算法和补偿方法。
2.1 运动估计算法
1mn
2
-fR(k+i,l+j)](5)
运动估计是电子稳像算法的核心部分,各种稳像系统的主要不同点就在于运动估计算法的不同和运动补偿方法的不同。运动估计算法可以分为频域上的估计与空域上的估计。频域估计方法是先将图像进行傅立叶变换转为频域空间,再利用频率信息处理,由于频率对灰度变化不敏感,所以频域估计方法在实际中很少采用。平常使用较多的是空域上的方法。大致可分为两类:基于光流的方法和基于特征的方法。具体可分为以下几种:
2.1.1 光流法
[4]
EMAD(i,j)=
1MN
k=1
∑∑|
l=1
f(k,l)-fR(k+i,l+j)|(6)
式中f(k,l)表示当前块某点的像素值,fR(k+i,l+j)表示匹配块中对应点的像素值。准则不同,计算量也不同。
根据搜索策略的不同,比较常用的块运动估计匹配算法有全搜索运动估计(FS)、两步搜索运动估计(TWSS)、三步运动估计(TSS)、和Diamond运动估计(DS)[8]。这几种搜索策略中,全搜索策略估计精度最高,同时计算量也最大,其余几种精度有所下降,但计算量也减少了很多。
块匹配算法是一种经典算法,它的估计精度很高,但是计算量很大,即使通过改进,计算量仍然很大,故不适用于实时处理,但是在某些需要高估计精度而不强调时间的场合很适用。
2.1.3 特征法
[6]
光流法其基本思想是将运动图像函数f(x,y,t)作为基本函数,根据图像强度守恒原理建立光流约束方程,通过求解光流约束方程,计算运动参数。图像强度守恒是指:对于同一个目标点来说,可以认为在时刻t+dt、图像点(x+dx,y+
dy)的强度f(x+dx,y+dy,t+dt)应当与在时刻t、图像点(x,y)的强度f(x,y,t)相等,即:
f(x+dx,y+dy,t+dt)=f(x,y,t)
(1)
特征法,顾名思义,利用图像的特征来求取图像的运动矢量。图像的特征有很多,通常有角点、直边缘、曲边缘等局部特征和型心、表面积、惯量矩的长短轴等全局特征。在具体应用中,采用什么特征量主要看目标具有哪些特性。特征法求取的运动矢量是局部运动矢量,还需要利用局部运动矢量求取全局运动矢量,这就需要采用数学模型,将特征量的局部运动矢量带入数学模型中,然后求解方程组得到全局运动矢量。常用的数学模型为:
根据函数f(x,y,t)中变量x、y和t的连续性,可将上式左边在点(x,y,t)处做泰勒(Taylor)级数展开,略去高阶项并同时除以dt可得到:
5fdx5fdy5f++=05xdt5ydt5t
(2)
—201—
平移模型:
xy′′的。要根据实际应用综合考虑。
=
xy+
txtyxytxtytxty
(10)(7)
2.1.5 位平面算法
[8]
位平面法是比较新的一个方法,它利用图像的灰度码和位平面来计算图像的运动矢量,该方法能够大大降低图像的计算量,提高运算速度。
一副图像的灰度可以用k个比特来表示,对某一点(x,
y)的像素值可以表示为:
k-1k-2210
f(x,y)=ak-12+ak-22+…+a22+a12+a02
刚性模型:
xy′′=
θ-sinθcosθsin
θcos
+(8)
相似模型:
xy′′=
θ-sinθcosθsin
θcos
′
xy+(9)
(13)
仿射模型:,
x=a1x+a2y+a3,y=a4x+a5y+a6
′
其中,ai(0≤i≤k-1)的值为0或者1,像素值可用比特表示为(ak-1ak-2…a2a1a0),一个比特可称为一个位面,对于一幅用8比特表示的图像而言,它有8个位面,通常用0表
a7x+a8y+1
,y=
′
透视模型:,
x=
′
a1x+a2y+a3a4x+a5y+a6a7x+a8y+1
(11)
示最低的位面。将图像中每一个像素的第I个比特集合在一起形成第I个位平面,用矩阵表示为bi(x,y)。8比特表示的图像有8个位平面,分别表示为b0(x,y),b1(x,y),…,b6(x,y),
b7(x,y)。但这种分解方法有缺陷就是像素灰度值的微小变在真实场景中,由于环境一般非常复杂,可能存在遮挡,阴影和背景变化等,这些干扰使得特征跟踪变得困难,如果事先知道了目标的某些特征,则特征法就变得可能简单了。
2.1.4 投影法
[7]
化会对位平面的复杂度产生影响。例如127和128的灰度码分别为01111111和10000000,灰度码差一级,但是8个位平面上的比特值完全不一样。因此,有必要进行改进。一种改进灰度码位平面分解方法如下:
gi=aiai+1 0≤i≤k-2ai i=k-1
(14)
投影法是利用图像总体灰度变化规律来确定图像运动矢量的一种方法,它不必对图像上的每一点做相关运算,而是利用图像的灰度投影曲线做一次相关运算,因此它的运算量小,运动估计速度快,容易满足实时性要求。投影法通常分为三个步骤:一是灰度映射。当前帧图像经过预处理以后,投影成为两个独立的一维波形,其投影公式如下:
Gk(j)=
是异或操作。这种改进以后,相连的灰度码仅有一个比特位不同。例上述的127和128,使用改进方法后分别表示为01000000和11000000,只相差一个比特位。灰度级的变化对k平面的影响很小。
假设使用第k个位平面来进行运动矢量的估计。一个搜索区域为M×N,搜索范围为(M+2P)×(N+2P),p是最大搜索位移。按照如下公式进行测量:
Cj(m,n)=
∑G
i
k
(i,j) Gk(i)=
∑G
j
k
(i,j)(12)
其中,Gk(j),Gk(i)分别表示第k帧图像的j列,i行的灰度值,Gk(i,j)表示第k帧图像(i,j)点位置处的灰度值。二是进行投影滤波。由于图像边缘信息是唯一的,当图像位移量较大时,会导致投影波形在边缘处的差异性,在进行相关计算时会对互相关峰值产生影响从而降低精度。可用余弦平方滤波器进行滤波,降低边缘信息的幅值,保留中心区域的波形,从而降低边缘信息对互相关峰值的影响,提高检测精度。在边缘信息较为粗糙时,可以去掉若干行、列的像素后再用投影法计算其运动矢量。三是矢量的提取。分别将当前帧与参考帧的行、列灰度投影波形做互相关计算,根据2条相关曲线的唯一谷值即可确定当前帧相对于参考帧的行和列的运动矢量。
一般的投影算法都是对整帧图像进行投影计算,得出的是全局运动矢量。它只考虑了平移现象,对于旋转则没有考虑。而且当图像中有摄像机的正常扫描和图像中有小目标运动时,检测的运动矢量则不是很准确,算法精度下降。为了解决这个问题,改进的投影算法被提出。一种改进算法是:将当前帧图像分为几个区域,对每个区域进行投影计算,得出局部运动矢量,再由局部运动矢量求取全局运动矢量,这样可以将小目标运动矢量剔除,通常,分的区域越小,对运动矢量的估计越有利,但是,区域一小,投影曲线的变化就不是很明显,对估计精度很有影响。因此,选择适当的大小是很有必要
1MN
M-1N-1
x=0y=0
∑∑g
T
kt-1
(x,y)gk(x+m,y+n)
(15)
对于搜索范围内的每一个m,n计算Cj(m,n),Cj(m,n)是当前匹配区域与参考图像间的不匹配的比特数,Cj(m,n)最小时可以取得最佳匹配效果。
位平面算法只是采用简单的布尔运算与异或操作,大大节约了计算时间,提高了算法的速度。但是,由于算法只采用了一个位平面进行运算,而各个位平面包含的信息量不一样,所以必需选择一个适当的位平面进行计算才能很好的计算出运动矢量。
上面列出了各种运动估计的算法,但是,大多数算法中都是估计的局部运动矢量,而目的是要求出帧与帧之间的运动矢量,也就是全局运动矢量,因此,还必需通过局部运动矢量将全局运动矢量计算出来。各种就算方法也因此而诞生。一种最简单的方法就是选择出现概率最大的局部矢量作为全局运动矢量。也有人提出将所有局部运动矢量之和加起来求平均作为全局运动矢量或者利用给各个局部矢量加权的方法来求全局运动矢量,再或者使用各个局部矢量的中值来
—202—
作为全局运动矢量。显然,这些方法的准确度都不是很高。随着研究的深入,各种新的方法也随之出现。最典型的就是利用上述特征法中提到的数学模型进行计算求取全局运动矢量。
2.2 运动决定
Δx=xi-x^i,Δy=yi-y^i
图像。
2)Kalman滤波
[9]
(18)
用补偿参数对原抖动图像进行补偿,则可以得到稳定的
。
对于电子稳像系统,通常采用常速度相机运动模型建立系统方程,并累加帧间全局运动矢量得到绝对帧位移值,作为观测方程的观测值。假设Kalman滤波的状态方程和测量方程分别如下:
xn=Axn-1+ben,zn=cxn+un
T
得到了每帧的全局运动矢量以后,还不能直接进行补偿,需要进一步判断该矢量为抖动矢量还是抖动矢量和摄像机正常扫描运动矢量的合成。摄像机的正常扫描运动与图像的抖动是有较明显区别的。抖动是随机的,而正常扫描活动在某一短时间内,往往是向着同一个方向运动,连续多帧图像的全局运动矢量具有一定的方向性。另外扫描运动一般比较缓慢,而抖动比较快,抖动引起的运动矢量往往要大于扫描运动引起的两帧图像之间的运动矢量。根据这些特点,一种判断方法如下:
定义
T1=
N
N
(19)
其中xn是k×1的状态矢量,A是状态转移矩阵,大小为
k×k,en和un分别是过程噪声和测量噪声,并且假定都是均
2
值为0,方差分别是σ2矢量b和c的大小为e和σu的高斯分布。
k×1,zn代表视频图像序列第n帧估计到的运动参数,假设sn
和un分别代表视频图像序列中“需要”和“不需要”的运动分量,那么有:MV(t)∑
i
i=1
∑|MV(t
i=1
i+1
)-MV(ti)|,T2=(16)
zn=sn+un(20)
其中,T1表示连续N帧图像中相邻帧运动差的绝对和,
T2表示N帧图像的平均运动矢量,MV(ti)表示第ti帧图像相即有意识的运动sn=cTxn,un代表随机抖动。
3)B样条运动滤波[11]
。
对于参考图像的全局运动矢量,根据下面的判别式来:
如果T1/T2 这只是一种较为简单的判断方法,并不适合所有的场合,正常扫描和抖动之间并没有明确的界限,往往凭人的主观感觉判定,抖动与正常扫描的判定方法还有待与进一步研究。 2.3 运动补偿 B样条是一种用控制点来定义曲线的方法,设有n+1个 控制点Pi(i=0,1,…,n),每相邻的3个控制点可以构造出一段二次B样条曲线。以全局运动水平方向分量为例,视频图像序列相对于基准帧的水平位移曲线为Lo,由控制点构造出二次B样条曲线L1,L1表示的就是主观运动产生的相对于基准帧的位移中的水平分量Sx,i,两条曲线中对应点相减,则可得到水平抖动矢量。 根据得到的抖动矢量对当前帧图像进行补偿,就可以得到稳定的图像。但是,由于补偿,可能使得当前帧图像在补偿后出现无定义的空白区域。解决这个问题方法一是可以采用拼接的方法使用相邻帧同一区域来补偿当前帧的无定义区域,方法二是使用裁减的方法即在开始处理视频图像序列之前,就对整个图像四边都预留15%的区域作为补偿区域,即只对图像70%的区域进行处理,补偿后的图像就不会出现无定义区域,但是因为预留了15%,图像则损失了这些信息。这两种方法都各有自己的应用场合。裁减方法计算量小,适用于实时处理,拼接的方法需要大量的计算量,但是补偿效果较好,适用于抖动视频事后处理。 2.4 一种实用的稳像算法 在进行判定以后,就可以根据判定情况进行补偿。当没有摄像机的正常扫描时,全局运动矢量就是抖动矢量,是需要去除的。根据全局运动矢量补偿当前帧图像,得到稳定图像。全局运动矢量如果是帧到参考帧的,则直接进行补偿。如果全局运动矢量是相邻帧之间的运动矢量,则需要将当前帧运动矢量与它前面帧的运动矢量求和,得到当前帧与参考帧的运动矢量,然后对当前帧进行补偿。 当存在摄像机的正常扫描时,需要进行滤波,求出摄像机正常扫描的运动矢量,然后由当前帧的全局运动矢量减去正常扫描的运动矢量,得到抖动矢量,而后进行补偿。常用滤波方法有以下三种: 1)均值滤波。 基于上述的提到的方法,提出了一种基于投影估计和 kalman滤波的稳像算法,在相邻帧之间使用投影算法,求出 这是最常用的一种。平均值滤波算法的公式为: x^i=y^i= xi-y(i-(m-1)/2+xi-(m-3)/2+…xi+…xi+(m-3)/2+xi-(m-1)/2m 帧与帧之间的全局运动位移,通过累加,求出相对于第一帧即参考帧的绝对位移,然后通过kalman滤波,对每一帧实时处理,求出当前帧的补偿矢量,再采用裁减的方法,根据补偿矢量对每一帧进行补偿,最后得到稳定图像序列。该算法具有很快的稳定速度,每一帧的处理速度小于40ms,能够进行实时处理。实验中采用480×640的图像,用matlab编程,在内存为512M,cpu为2.4G的PC电脑上实现,实验结果如图 3所示。 (m-1)/2+yi-(m-3)/2+…yi+…yi+(m-3)/2+yi-m (m-1)/2(17) 其中,m表示参加平均值计算的轨迹点的数目,也即均值滤波法窗口的大小,通常为奇数,一般取5和7。补偿参数由下式计算: —203— 图3:a是参考帧图像;b是当前帧图像;c是参考帧图像列投影曲线;d是当前帧图像列投影曲线;e是水平方向滤波曲线,横轴为帧数,纵轴为水平方向帧绝对位移;f是垂直方向滤波曲线,横轴为帧数,纵轴为垂直方向帧绝对位移;g是补偿后带有空白区域的补偿帧(黑色部分表示空白区域);h是完全补偿后的图像。 上面提到的各种稳像方法,由于计算速度和精度的不同,各有各的适用方位。块匹配法计算精度高,但所需时间长,可应用于需要高精度但不需要实时处理的场景,而投影算法正好相反,它计算精度不是很高,但速度很快,用于实时处理。特征法对于已知处理对象特征时,估计精度高。速度快。位平面法对如何选择一个恰当的位平面也有一定的难度。选好了处理效果就好,否则就差。不滤波方法中,中值法精度低,速度快,需要相邻帧的相关信息,故不适用于实时处理。Kalman滤波,精度依赖于所设置的过程噪声和测量噪声,但它利用当前帧及以前帧的信息,能做到实时处理。B样条曲线法精度较高,也需要相邻帧的信息,也不能做到实时处理。估计算法和滤波方法各有优劣,需要选择性的使用,才能得到最适合的算法。 与信息化,2004,(6):17-20. [4] Jyh-YeongChang,Wen-FengHu,Mu-HuoChengandBo-SenChang.Digitalimagetranslationalandrotationalmotionstabi2lizationusingopticalflowtechnique[J]. IEEETransactionson ConsumerElectronics.2002,48(1):108-115. [5] FilippoVella,AlfioCastorina,MancusoandGiuseppeMessina. Digitalimagestabilizationbyadaptiveblockmotionvectorsfiltering[J].IEEETransactionsonConsumerElectronics.2002,48(3):796-801. [6] AlbertoCensi,AndreaFusiello,VitoRoberto.Imagestabilization byfeaturestracking[C].InternationalconferenceonImageAnaly2sisandProcessing1999.665-667. [7] 朱娟娟,郭宝龙,冯宗哲.一种基于灰度投影算法的电子稳像 方法[J].光子学报,2005,34(8):1266-1269. [8] Sung-JeaKo,Sung-HeeLeeandSeung-WonJeon.Fastdigit2 alimagestabilizerbasedongray-codedbit-planematching[J].IEEETransactionsonConsumerElectronics.1999-8:598-603.[9] SErturk.Digitalimagestabilizationwithsub-imagephasecorre2 lationbasedglobalmotionestimation[J]. IEEETransactionson ConsumerElectronics.2003,12:1320-1325. [10] 孟龙,林行刚,王贵锦,徐理东,付方文.视频抖动矫正系统中 3 小结 本文介绍了数字图像稳像的整个处理流程,分析了几种典型的运动估计方法,列举了三种常用的运动运动滤波方法,提供了两种解决空白区域填充问题的方法。通过本文的介绍,可以明确稳像系统的运作流程,也可能充分了解稳像系统采用的基本算法,在此基础上,可以改进以形成多种适用的稳像算法。随着计算机和图像处理技术的发展,新的稳像方法层出不穷,还有待与进一步的研究与探索。 的运动滤波[J].清华大学学报(自然科学版),2005,45(1): 41-43,56. [作者简介] 参考文献: [1] 韩绍坤,赵跃进,刘明奇.电子稳像技术及其发展[J].光学技 刘玉红(1981-),男(汉族),四川遂宁人,硕士研 究生,研究方向为数字图像与视频处理; 术,2001,27(1):71-73. [2] 赵红颖,金宏,熊经武.电子稳像技术概述[J].光学精密仪器, 2001-8,9(4):354-359. [3] 董立羽,卜彦龙,戴斌.电子稳像技术发展评述[J].信息技术 涂 丹(1971-),男(汉族),湖南常德人,博士,副 教授,研究方向为多媒体技术、图像与视频处理。 —204— 因篇幅问题不能全部显示,请点此查看更多更全内容