具体实施方式
本发明实施方式提供了一种运动检测方法,如图1所示,包括:
步骤S1,分别获取当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值,所述图像组包括至少两个图像;
步骤S2,根据获取的所述当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值获取所述当前像素点的运动检测信息;
步骤S3,根据所述当前像素点的运动检测信息确定所述当前像素点的运动情况。
下面以隔行图像为例,结合附图和实施例对本发明实施方式的运动检测方法进行详细说明。本领域技术人员可以根据以下说明经过变换和推导得出逐行图像的运动检测方法。
为了节省对于信号传输系统带宽的要求,传统电视视频信号中采用了隔行扫描方式,即交替传输和播放包含奇数行和偶数行的图像,奇数行的图像也称为顶场图像,偶数行的图像也称为底场图像。对于此类隔行图像,运动检测在相同极性场(即同为顶场或同为底场)的图像对之间进行,可以避免极性差别造成的影响,如图2中的第n场(field n)图像和第n-2场(field n-2)图像(称为图像组n与n-2)。而对于其他场合中通常所采用的逐行图像,运动检测可以在相邻的图像组之间进行,如图3中的第n帧(frame n)图像和第n-1帧(frame n-l)图像(称为图像组n-l与n)。
为了提高所检测运动信息的准确性,本实施例采用了在当前像素点邻域内的像素点共同参与计算的方法,所基于的基本假设是视频/图像内的运动物体大小通常大于单个像素点的大小。而所采用的邻域可以是圆形区域,也可以是方形区域,甚至是不规则区域形状,如经过图像分割算法之后得到的某共性区域;另外,相对较小的区域仅包含了当前像素点或当前像素点及其邻域内的像素点,而最大的区域范围则可以包含整幅图像。所述当前像素点为当前场的当前像素点,以下没有特别说明,均以(n,i,j)表示,即第n场第i行第j列的像素点。
如图1所示,本实施例的运动检测方法首先执行步骤S1,分别获取当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值,所述图像组包括至少两个图像。
在隔行图像中,相邻两场图像为极性相反的场,中间间隔一场的两场图像为极性相同的场。所述图像组是指一组极性相同的场图像,如上述的第n场图像和第n-2场图像,其中,第n场图像和第n-2场图像分别为前后两帧的顶场图像,或者第n场图像和第n-2场图像分别为前后两帧的底场图像。在其他实施例,图像组也可以是第n场图像和第n+2场图像,或者是两场以上极性相同的图像,只要在时间轴上包含当前场图像即可。
接着执行步骤S2,根据获取的所述当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值获取所述当前像素点的运动检测信息。请继续参考图4所示的本实施例步骤S2的详细流程图,下面对其中的各步骤进行详细说明。
步骤S21,计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息m(n,i,j)与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关。
本实施例中,所述邻域为以所述当前像素点为中心的方形区域,所述方形区域包含window_size=(2*WinHeight+1)*(2*WinWidth+1)个像素点,例如图2所示,包含3*7个像素点的长方形区域,即window_size=21,WinWidth=3,WinHeight=1。
结合图2,计算图像组的当前像素点的运动信息m(n,i,j)可以采用公式(1),所述图像组的当前像素点的运动信息m(n,i,j)包括所述当前像素点在亮度空间内的运动信息my(n,i,j)和所述当前像素点在色度空间内的运动信息mu,v(n,i,j):
mu,v(n,i,j)=(mu(n,i,j)+mv(n,i,j)+1)/2
公式(1)是针对YUV422图像格式的当前像素点的运动信息的计算方式,本领域技术人员可以类似推导出其他色彩格式(如YUV444,YUV411等)的当前像素点的运动信息的计算公式。
在公式(1)中,m表示运动信息,f表示像素值,下标y表示亮度空间,下标u,v表示色度空间,m和f后括号内的第一项(如n,n-2)表示场,第二项(如i,i+k)表示行,第三项(如j,j+l,
)表示列。
具体地,window_size=(2*WinHeight+1)*(2*WinWidth+1),WinWidth、WinHeight定义了计算亮度空间或色度空间内的运动信息的窗口大小,即WinWidth、WinHeight定义了邻域尺寸,实际上就是与参与计算运动信息的像素点的个数相关;f
y(n,i+k,j+l)为第n场第i+k行第j+l列的像素点在亮度空间内的像素值(也就是Y分量),f
y(n-2,i+k,j+l)为第n-2场第i+k行第j+l列的像素点在亮度空间内的像素值;
为第n场第i+k行第
列的像素点在色度空间内的像素值(也就是U分量、V分量),
为第n-2场的第i+k行第
列的像素点在色度空间内的像素值。
步骤S22,计算所述当前像素点的修正运动信息motionn,所述当前像素点的修正运动信息motionn与M个相邻场的图像组内与当前像素点对应的像素点的运动信息相关,M≥4。
单独的图像组所计算出的运动信息容易受到光照变化,噪声等因素的影响,解决的方法是根据图像序列的时空关联性,在时间轴上参考相邻运动信息以提高当前运动信息的准确性。一种方法是用滤波方法如中值滤波方法,在时间轴上对运行信息进行平滑,另外一种对于运动更为灵敏有效的方法是取相邻运动信息的较大值,即以M个相邻图像的图像组内与当前像素点对应的像素点的运动信息的最大值作为当前像素点的修正运动信息motionn。
如图5所示,可以采用4个相邻场(M=4,第n场、第n-1场、第n-2场和第n-3场)的两个图像组内与当前像素点对应的像素点的运动信息修正当前运动信息,计算公式为(2):
motionn=max(m(n,i,j),m(n-1,i,j)),或者,motionn=max(m(n,i,j),motionn-1)(2)
或者,也可以考虑更多场间运动信息,例如采用5个相邻场(M=5,第n场、第n-1场、第n-2场、第n-3场和第n-4场)的三个图像组内与当前像素点对应的像素点的运动信息修正当前运动信息,计算公式为(3):
motionn=max(m(n,i,j),m(n-1,i,j),motionn-2),
或者,motionn=max(m(n,i,j),motionn-1,motionn-2),
或者,motionn=max(m(n,i,j),m(n-1,i,j),m(n-2,i,j))(3)
其中,m(n-1,i,j)、m(n-2,i,j)、motionn-1、motionn-2可以称为m(n,i,j)的历史信息,motionn-1是在当前场为第n-1场,修正当前像素点的运动信息后得到并保存的第n-1场的当前像素点的修正运动信息;motionn-2是在当前场为第n-2场,修正当前像素点的运动信息后得到并保存的第n-2场的当前像素点的修正运动信息,motionn-1和motionn-2可以依据公式(2)或(3)变换得到。
公式(2)和(3)中亮度空间和色度空间分别计算,即m(n,i,j)为公式(1)中的my(n,i,j)或mu,v(n,i,j),相应地,m(n-1,i,j)为my(n-1,i,j)或mu,v(n-1,i,j),m(n-2,i,j)为my(n-2,i,j)或mu,v(n-2,i,j),其中,my(n-1,i,j)和mu,v(n-1,i,j)、my(n-2,i,j)和mu,v(n-2,i,j)根据公式(1)变换得到:
mu,v(n-1,i,j)=(mu(n-1,i,j)+mv(n-1,i,j)+1)/2
mu,v(n-2,i,j)=(mu(n-2,i,j)+mv(n-2,i,j)+1)/2
步骤S23,计算所述当前像素点的边界信息final_edgen,所述当前像素点的边界信息final_edgen与当前像素点及其领域内的像素点在当前场的像素值相关。
通常情况下,图像序列间运动信息的计算受到多种因素的影响,如光照条件,运动目标特性以及真实3维空间运动到2维图像平面运动之间的映射关系,使得简单通过上述公式(2)或(3)所计算得到的运动信息可靠性降低;而根据所应用场合的不同和硬件实现的复杂程度,本实施例还从图像内容分析的角度提高所计算的运动信息的可靠性。图像内运动目标的本身特征将影响到所计算的运动信息值的大小。通过图像内容分析(例如物体的边界,可交织度量等),剔除部分影响因素,可以在一定程度上恢复运动信息的真实性,使得运动信息真正能反映图像间的目标运动情况。
物体边界或其他高频纹理信息会使得所计算的运动值偏大,本实施例在计算真实运动信息时考虑了图像组内所参考区域内的边界水平,即还以当前像素点的边界信息final_edgen来修正。边界计算可以是简单的sobel算子,也可以是其他常用边界算法。特别是,对于隔行的TV视频内容,由于其垂直采样频率不能满足信号的采样条件,使得水平边界在运动信息计算中显得更为重要,在去隔行等实际应用中,可以采用简化过的单一方向边界降低所耗费的硬件资源。例如,一种在3点窗口内的单一水平方向的边界计算模板为:
另外一种采用5点窗口内的单一水平方向的边界计算模板为:
结合图6,在隔行场中,边界的计算需要在前后场中位置对齐:
edgen=max(edge_downn,edge_upn),或者,edgen=avg(edge_downn,edge_upn),类似计算其他场对应当前像素点的边界edgen-1、edgen+1和edgen+2。
计算当前像素点的边界信息final_edgen可以采用下述公式(4)或(5):
final_edgen=max(edgen,edgen-1,edgen+1,edgen+2)(4)
或者,final_edgen=avg(edgen,edgen-1,edgen+1,edgen+2)(5)
其中,f表示像素值,f后括号内的第-项表示场,第二项表示行,第三项表示列,edgen-1、edgen+1、edgen+2类似edgen变换得到,在此不再展开;height1、height2、width,L根据实际应用中的窗口大小(参与计算边界信息的像素点的个数)而确定,ew表示权重,对应边界计算模板中的值。
举例来说,如果采用上述3点窗口内的单-水平方向的边界计算模板,height1=0,height2=1,width=1,L=4,ew[k,l]=[-1,-2,-1;1,2,1],即ew[0,-1]=-1,ew[0,0]=-2,ew[0,1]=-1,ew[1,-1]=1,ew[1,0]=2,ew[1,1]=1,上述edge_downn和edge_upn展开为:
edge_downn=|f(n,i,j-1)*ew[0,-1]+f(n,i,j)*ew[0,0]+f(n,i,j+1)*ew[0,1]
+f(n,i+1,j-1)*ew[1,-1]+f(n,i+1,j)*ew[1,0]+f(n,i+1,j+1)*ew[1,1]|/L
=|-f(n,i,j-1)-f(n,i,j)*2-f(n,i,j+1)+f(n,i+1,j-1)+f(n,i+1,j)*2+f(n,i+1,j+1)|/4
edge_upn=|f(n,i-1,j-1)*ew[0,-1]+f(n,i-1,j)*ew[0,0]+f(n,i-1,j+1)*ew[0,1]
+f(n,i,j-1)*ew[1,-1]+f(n,i,j)*ew[1,0]+f(n,i,j+1)*ew[1,1]|/L
=|-f(n,i-1,j-1)-f(n,i-1,j)*2-f(n,i-1,j+1)+f(n,i,j-1)+f(n,i,j)*2+f(n,i,j+1)|/4
如果采用上述5点窗口内的单一水平方向的边界计算模板,height1=0,height2=1,width=2,L=8,ew[k,l]=[-1,-2,-2,-2,-1;1,2,2,2,1],即ew[0,-2]=-1,ew[0,-1]=-2,ew[0,0]=-2,ew[0,1]=-2,ew[0,2]=-1,ew[1,-2]=1,ew[1,-1]=2,ew[1,0]=2,ew[1,1]=2,ew[1,2]=1,edge_downn和edge_upn的展开可以参照上述3点窗口的说明,在此不再展开说明。
公式(4)和(5)中亮度空间和色度空间分别计算,具体地,f(n,i+k,j+l)为第n场第i+k行第j+l列的像素点在亮度空间内的像素值fy(n,i+k,j+l)或在色度空间内的像素值fu(n,i+k,j+l)、fv(n,i+k,j+l),相应地,f(n,i-1+k,j+l)为第n场第i-1+k行第j+l列的像素点在亮度空间内的像素值fy(n,i-1+k,j+l)或在色度空间内的像素值fu(n,i-1+k,j+l)、fv(n,i-1+k,j+l)。通常情况下,也可以只在亮度空间上计算边界信息。
步骤S24,计算所述当前像素点的交织度量信息badwn,所述当前像素点的交织度量信息badwn与前向交织和后向交织相关。
在TV视频信号去隔行应用中,可交织度量是另外一个对运动信息检测计算产生影响的指标。可交织度量可以衡量当顶场和底场两场相邻图像交织在一起后所产生的图像失真程度,所述当前像素点的交织度量信息badwn包括前向交织badw_fwd(n,i,j)和后向交织badw_bwd(n,i,j)。
结合参考图7和图8,当前场(第n场)与时间序列上的前一相邻场(第n-1场)交织称为后向交织badw_bwd(n,i,j),当前场与时间序列上的后一相邻场(第n+1场)交织称为前向交织badw_fwd(n,i,j),其具体定义如公式(6)或(7):
(6)
或者,
(7)
其中,flavg(n+1,i-1+k,j+l)=(f(n+1,i-1+k,j+l)+f(n+1,i+k,j+l))/2,
flavg(n-1,i-1+k,j+l)=(f(n-1,i-1+k,j+l)+f(n-1,i+k,j+l))/2,
height3、height4、width1根据实际应用中的窗口大小(参与计算交织度量信息的像素点的个数)而确定,如窗口大小为3*5,height3=-1、height4=1、width1=2;kbw与像素点的个数成正比,如窗口大小为3*5,kbw=15。
公式(6)和(7)中亮度空间和色度空间分别计算,具体地,f(n+1,i-1+k,j+l)为第n+1场第i-1+k行第j+l列的像素点在亮度空间内的像素值fy(n+1,i-1+k,j+l)或在色度空间内的像素值fu(n+1,i-1+k,j+l)、fv(n+1,i-1+k,j+l),f(n+1,i+k,j+l)为第n+1场第i+k行第j+l列的像素点在亮度空间内的像素值fy(n+1,i+k,j+l)或在色度空间内的像素值fu(n+1,i+k,j+l)、fv(n+1,i+k,j+l),f(n-1,i-1+k,j+l)为第n-1场第i-1+k行第j+l列的像素点在亮度空间内的像素值fy(n-1,i-1+k,j+l)或在色度空间内的像素值fu(n-1,i-1+k,j+l)、fv(n-1,i-1+k,j+l),f(n-1,i+k,j+l)为第n-1场的第i+k行第j+l列的像素点在亮度空间内的像素值fy(n-1,i+k,j+l)或在色度空间内的像素值fu(n-1,i+k,j+l)、fv(n-1,i+k,j+l)。
所述当前像素点的交织度量信息badwn根据公式(8)或(9)计算:
badwn=max(badw_fwd(n,i,j),badw_bwd(n,i,j))(8)
或者,badwn=avg(badw_fwd(n,i,j),badw_bwd(n,i,j))(9)
步骤S25,综合所述当前像素点的修正运动信息motionn、边界信息final_edgen和交织度量信息badwn,计算当前像素点的运动检测信息motion。
利用上述计算所得的当前像素点的修正运动信息motionn、边界信息final_edgen和交织度量信息badwn对运动信息m(n,i,j)进行修正,可以得到准确性高的运动检测信息,具体如公式(10):
motion=motionn+weavek*badwn-edgek*final_edgen (10)
其中,权重系数weavek、edgek的取值范围为[0,100],即0≤weavek≤100,0≤edgek≤100。weavek、edgek为经验值,取值需要综合考虑运动信息、锯齿和边界情况等。
公式(10)中亮度空间和色度空间分别计算,即当前像素点的运动检测信息motion包括亮度空间的当前像素点的运动检测信息lmotion和色度空间的当前像素点的运动检测信息cmotion。
motionn采用公式(2)或(3)计算,final_edgen采用公式(4)或(5)计算,badwn采用公式(8)或(9)计算。
请继续参考图1,执行步骤S3,根据所述当前像素点的运动检测信息确定所述当前像素点的运动情况。
综合计算后的运动检测信息motion可以确定当前像素点的运动情况,并且可以直接用于衡量当前所检测的像素点的运动水平的显著程度。具体地,motion值越大,则当前像素点运动的可能性越大,反之则可能性下降。
需要说明的是,上述实施例的公式(10)可以有多种变换,相比于现有技术,所得到的运动检测信息motion都较为准确:
如weavek、edgek取0,则motion=motionn,在实际应用中,也就不需要执行步骤S23和S24。
如edgek取0,则motion=motionn+weavek*badwn,在实际应用中,也就不需要执行步骤S23。
如weavek取0,则motion=motionn-edgek*final_edgen,在实际应用中,也就不需要执行步骤S24。
如不考虑运动信息的历史信息(即相邻场的图像对的运动信息),则motion=m(n,i,j)+weavek*badwn-edgek*final_edgen,在实际应用中,也就不需要执行步骤S22。
如不考虑历史信息且weavek、edgek取0,则motion=m(n,i,j),在实际应用中,也就不需要执行步骤S22、S23和S24。
如不考虑历史信息且edgek取0,则motion=m(n,i,j)+weavek*badwn,在实际应用中,也就不需要执行步骤S22和步骤S23。
如不考虑历史信息且weavek取0,则motion=m(n,i,j)-edgek*final_edgen,在实际应用中,也就不需要做执行步骤S22和步骤S24。
对应地,本发明实施方式的运动检测装置包括:
获取单元,分别获取当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值,所述图像对包括至少两个图像;
计算单元,与所述获取单元相连,根据所述获取单元获取的所述当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值获取所述当前像素点的运动检测信息;
确定单元,与所述计算单元相连,根据所述计算单元获取的所述当前像素点的运动检测信息确定所述当前像素点的运动情况。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关;
运动信息修正单元,用于计算所述当前像素点的修正运动信息motionn,所述当前像素点的修正运动信息与M个相邻场的图像组内与当前像素点对应的像素点的运动信息相关,M≥4;
边界信息计算单元,用于计算所述当前像素点的边界信息final_edgen,所述当前像素点的边界信息与当前像素点及其邻域内的像素点在当前场的像素值相关;
交织信息计算单元,用于计算所述当前像素点的交织度量信息badwn,所述当前像素点的交织度量信息与前向交织和后向交织相关;
信息综合单元,用于综合所述当前像素点的修正运动信息、边界信息和交织度量信息,计算当前像素点的运动检测信息motion:
motion=motionn+weavek*badwn-edgek*final_edgen,
其中,0≤weavek≤100,0≤edgek≤100。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的的像素点的像素值相关;
运动信息修正单元,计算所述当前像素点的修正运动信息motionn,所述当前像素点的修正运动信息与M个相邻场的图像组内与当前像素点对应的像素点的运动信息相关,M≥4,所述当前像素点的修正运动信息为所述当前像素点的运动检测信息。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关;
运动信息修正单元,用于计算所述当前像素点的修正运动信息motionn,所述当前像素点的修正运动信息与M个相邻场的图像组内与当前像素点对应的像素点的运动信息相关,M≥4;
边界信息计算单元,用于计算所述当前像素点的边界信息final_edgen,所述当前像素点的边界信息与当前像素点及其领域内的像素点在当前场的像素值相关;
信息综合单元,用于综合所述当前像素点的修正运动信息和边界信息,计算当前像素点的运动检测信息motion:motion=motionn-edgek*final_edgen,其中,0≤edgek≤100。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关;
运动信息修正单元,用于计算所述当前像素点的修正运动信息motionn,所述当前像素点的修正运动信息与M个相邻场的图像组内与当前像素点对应的像素点的运动信息相关,M≥4;
交织信息计算单元,用于计算所述当前像素点的交织度量信息badwn,所述当前像素点的交织度量信息与前向交织和后向交织相关;
信息综合单元,用于综合所述当前像素点的修正运动信息和交织度量信息,计算当前像素点的运动检测信息motion:motion=motionn+weavek*badwn,其中,0≤weavek≤100。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的值相关;
边界信息计算单元,用于计算所述当前像素点的边界信息final_edgen,所述当前像素点的边界信息与当前像素点及其领域内的像素点在当前场的像素值相关;
交织信息计算单元,用于计算所述当前像素点的交织度量信息badwn,所述当前像素点的交织度量信息与前向交织和后向交织相关;
信息综合单元,用于综合所述当前像素点的运动信息、边界信息和交织度量信息,计算当前像素点的运动检测信息motion:
motion=m(n,i,j)+weavek*badwn-edgek*final_edgen,
其中,0≤weavek≤100,0≤edgek≤100。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关;
检测信息确定单元,用于以所述图像组的当前像素点的运动信息作为所述当前像素点的运动检测信息。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关;
边界信息计算单元,用于计算所述当前像素点的边界信息final_edgen,所述当前像素点的边界信息与当前像素点及其领域内的像素点在当前场的像素值相关;
信息综合单元,用于综合所述当前像素点的运动信息和边界信息,计算当前像素点的运动检测信息motion:motion=m(n,i,j)-edgek*final_edgen,其中,0≤edgek≤100。
可选的,所述计算单元包括:
运动信息计算单元,用于计算所述图像组的当前像素点的运动信息m(n,i,j),所述图像组的当前像素点的运动信息与当前像素点及其邻域内的像素点在图像组内对应的像素点的像素值相关;
度量信息计算单元,用于计算所述当前像素点的交织度量信息badwn,所述当前像素点的交织度量信息与前向交织和后向交织相关;
信息综合单元,用于综合所述当前像素点的运动信息和交织度量信息,计算当前像素点的运动检测信息motion:motion=m(n,i,j)+weavek*badwn,其中,0≤weavek≤100。
各单元的工作方式可以参照上述方法的说明,在此不再赘述。
综上所述,上述技术方案在运动检测中综合考虑了图像序列的时空关联性和图像内容特性,提高了运动检测的准确性和可靠性。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。