具体实施方式
本发明实施例采用了针对当前帧中的当前宏块,在参考帧中确定对应的搜索窗,在搜索窗的待匹配块中搜索目标匹配块;若搜索目标匹配块的过程中,搜索到部分数据位于所述搜索窗外的待匹配块,则根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应的搜索窗的位置的方法。由于采用这种方法可以使搜索窗根据视频数据向各个方向进行滑动,从而提高了含有较大运动的视频图像序列搜索到目标匹配块的概率,并提高了含有较大运动的视频图像序列的压缩率。
本发明实施例中目标匹配块是指当前帧中当前宏块在参考帧的搜索窗范围内,搜索到的与其匹配误差最小的待匹配块,也就是当前帧的当前宏块对应的目标匹配块。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图4所示,本发明实施例中一种搜索窗的滑动方法包括下列步骤:
步骤401:针对当前帧中的当前宏块,在参考帧中确定对应的搜索窗,在搜索窗的待匹配块中搜索目标匹配块;
步骤402:若搜索目标匹配块的过程中,搜索到部分数据位于所述搜索窗外的待匹配块,则根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应的搜索窗的位置;
步骤403:当前宏块的目标匹配块搜索完成后,根据下一宏块对应的搜索窗的位置,对当前宏块的搜索窗进行滑动处理,得到下一宏块对应的搜索窗。
较佳地,步骤401具体包括:确定搜索窗范围内搜索的起始匹配块,若搜索窗范围内没有匹配的待匹配块,则将搜索窗中央的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块;
若搜索窗范围内较有可能的待匹配块的个数不少于一个,则将与当前宏块匹配误差最小的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块。
较佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六边形搜索算法,三步法,新三步法,四步法等搜索算法。
以菱形搜索算法为例,如图5所示,为本发明实施例确定当前宏块的目标匹配块的方法。
图中实线区域为当前宏块的搜索窗的范围,设待匹配块1为起始匹配块,以待匹配块1为中心的周围4个标记的待匹配块为搜索算法的搜索范围,将待匹配块1和周围4个标记的待匹配块分别与当前宏块进行比较,找出与当前宏块匹配误差最小的待匹配块;若待匹配块1为匹配误差最小的待匹配块,则认为待匹配块1为当前宏块的目标匹配块。
若周围4个标记的待匹配块的其中一个待匹配块为误差最小的待匹配块,则将该待匹配块作为中心,并重复待匹配块1的搜索过程;以待匹配块1上方的标记为2的待匹配块为该搜索范围内的匹配误差最小的待匹配块为例,将待匹配块2作为下一搜索范围的中心,将待匹配块2以及其周围的4个标记的待匹配块分别与当前宏块进行比较,找出与当前宏块匹配误差最小的待匹配块,若作为搜索中心的待匹配块2为匹配误差最小的待匹配块,则认为待匹配块2为当前宏块的目标匹配块,并结束搜索;若待匹配块2周围的4个标记的待匹配块的其中一个待匹配块为误差最小的待匹配块,则将该匹配误差最小的待匹配块作为搜索中心继续搜索匹配误差最小的待匹配块,直至作为搜索中心的待匹配块是当前宏块匹配误差最小的待匹配块时,结束搜索,并将该搜索中心的待匹配块作为当前宏块的目标匹配块。
较佳地,步骤402具体包括:判断在当前宏块的目标匹配块的搜索过程中,是否搜索到部分数据位于搜索窗外的匹配块;如果没有,下一宏块对应的搜索窗水平向右滑动一个宏块;如果有,根据搜索到的部分数据位于搜索窗外的匹配块的位置确定下一宏块对应的搜索窗的位置;
如果下一宏块是第一列宏块时,判断该位于第一列的宏块周围是否有帧间预测宏块,如果有,则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置;否则,判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于,则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则认为该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量为0,将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。
其中,帧间预测是指不是根据当前的解码图像,而是从已解码的参考图像得到的预测值。帧间预测宏块是指由帧间预测方法得到的宏块。
宏块的中心是指该宏块的中心像素行与该宏块的中心像素列的重叠部分的像素。
较佳地,根据第N次搜索到部分数据位于所述搜索窗水平方向之外的待匹配块和/或第M次搜索到部分数据位于所述搜索窗垂直方向之外的待匹配块的位置确定下一宏块对应的搜索窗的位置;或根据第L次搜索到的部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置;其中,M,N,L为正整数。
下面以上述菱形搜索算法搜索到的部分数据在搜索窗外的待匹配块X+1的位置为例,阐述本发明实施例确定下一宏块的搜索窗的位置的方法,如图6所示,为根据第N次搜索到部分数据位于搜索窗垂直方向之外的待匹配块确定下一宏块对应的搜索窗的位置,假设N为1,图中实线部分为当前宏块的搜索窗,虚线部分为下一宏块根据部分数据在搜索窗外的待匹配块X+1的位置确定的对应的搜索窗:
在当前宏块的目标匹配块搜索过程中,读取下一宏块对应搜索窗水平向右滑动的一个宏块列的参考数据;当前宏块的目标匹配块已搜索完毕,待匹配块X+1为当前宏块的目标匹配块的搜索过程中第一次搜索到的部分数据在搜索窗垂直方向之外的待匹配块,读取第一次搜索到的部分数据位于搜索窗垂直方向外的待匹配块的位置垂直滑动设定的像素列的数据,下一宏块的搜索窗首先固定水平向右移动一个宏块列,再向垂直方向移动s_dy个像素行。
其中,s_dy是整数。s_dy是搜索窗滑动的垂直方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素。s_dy为正整数表示垂直向下滑动,0为垂直不滑动,负整数表示垂直向上滑动。
如图7所示,为根据第M次搜索到部分数据位于搜索窗水平方向之外的待匹配块确定下一宏块对应的搜索窗的位置,假设M为2,图中实线部分为当前宏块的搜索窗,虚线部分为下一宏块根据部分数据在搜索窗外的待匹配块Y+1的位置确定的对应的搜索窗:
在当前宏块的目标匹配块搜索过程中,读取下一宏块对应搜索窗水平向右滑动的一个宏块列的参考数据;当前宏块的目标匹配块已搜索完毕,待匹配块Y+1为当前宏块的目标匹配块的搜索过程中第二次搜索到的部分数据在搜索窗水平方向之外的待匹配块,读取第二次搜索到的部分数据位于搜索窗水平方向外的待匹配块的位置水平滑动设定的像素行的数据,下一宏块的搜索窗先固定水平向右移动一个宏块列后,再向水平方向移动s_dx个像素行。
其中,s_dx是整数。s_dx是搜索窗滑动的水平方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素。s_dx为正整数表示水平向右滑动,0为水平不滑动,负整数表示水平向左滑动
如图8所示,为根据第N次搜索到部分数据位于搜索窗垂直方向之外的待匹配块确定下一宏块对应的搜索窗的位置和第M次搜索到部分数据位于搜索窗水平方向之外的待匹配块确定下一宏块对应的搜索窗的位置,假设N为2,M为1;图中实线部分为当前宏块的搜索窗,虚线部分为下一宏块根据部分数据在搜索窗水平方向外的待匹配块Z+2和部分数据在搜索窗垂直方向外的待匹配块T+1的位置确定的对应的搜索窗:
在当前宏块的目标匹配块搜索过程中,读取下一宏块对应搜索窗水平向右滑动的一个宏块列的参考数据;当前宏块的目标匹配块已搜索完毕,待匹配块Z+2为当前宏块的目标匹配块的搜索过程中第一次搜索到的部分数据在搜索窗水平方向之外的待匹配块,待匹配块T+1为当前宏块的目标匹配块的搜索过程中第二次搜索到的部分数据在搜索窗垂直方向之外的待匹配块,读取第一次搜索到的部分数据位于搜索窗水平方向外的待匹配块的位置水平滑动设定的像素行的数据,以及读取第二次搜索到的部分数据位于搜索窗垂直方向外的待匹配块的位置垂直滑动设定的像素列的数据,下一宏块的搜索窗先固定水平向右移动一个宏块列后,向水平方向移动s_dx个像素行,再向垂直方向移动s_dy个像素行,然后读取下一宏块的搜索窗与当前宏块的搜索窗不重合部分的参考数据。其中,下一宏块的搜索窗也可以先固定水平向右移动一个宏块列后,向垂直方向移动s_dy个像素行,再向水平方向移动s_dx个像素行。
其中,s_dx、s_dy是整数。s_dx是搜索窗滑动的水平方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素,s_dy是搜索窗滑动的垂直方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素。s_dx为正整数表示水平向右滑动,0为水平不滑动,负整数表示水平向左滑动;s_dy为正整数表示垂直向下滑动,0为垂直不滑动,负整数表示垂直向上滑动。
其中,还可以根据第L次搜索到的部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置,在当前宏块的目标匹配块搜索过程中,读取下一宏块对应搜索窗水平向右滑动的一个宏块列的参考数据;当前宏块的目标匹配块已搜索完毕,待匹配块S+1为当前宏块的目标匹配块的搜索过程中第L次搜索到的部分数据在搜索窗之外的待匹配块,读取待匹配块S+1所在像素行或像素列的数据,下一宏块的搜索窗固定水平向右移动一个宏块列后,再向待匹配块S+1所在像素行或像素列移动s_dn个像素行或像素列。
其中,s_dn是整数。s_dn是搜索窗根据搜索窗之外的待匹配块水平方向或垂直方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素。s_dn为正整数表示水平向右或垂直向上滑动,0为水平不滑动,负整数表示水平向左或垂直向下滑动。
在实施中,步骤402中,若搜索目标匹配块的过程中,搜索到部分数据位于所述搜索窗外的待匹配块,还包括:
判断搜索目标匹配块的过程中,搜索窗滑动的次数是否大于设定的阈值;若不大于设定的阈值,则根据部分数据位于搜索窗外的待匹配块的位置确定的当前宏块的下一宏块对应的搜索窗的位置;
若搜索窗滑动的次数大于设定的阈值,确定当前宏块的下一宏块对应的搜索窗的位置为当前宏块对应的搜索窗水平向右滑动一个宏块的位置。
较佳地,步骤402中,如果当前宏块的下一宏块处于宏块行的第一列时,则根据下列方法确定当前宏块的下一宏块的搜索窗:
判断搜索窗根据部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置的滑动次数是否大于的阈值;如果大于设定的阈值,则将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心;如果不大于设定的阈值,则根据第一列的宏块周围是否有帧间预测宏块确定搜索窗的位置。
如果当前宏块的下一宏块为当前帧的第一宏块行的第一个宏块时,当前宏块的下一宏块周围不会出现帧间预测宏块,可直接设定当前宏块的搜索窗中心与当前宏块的中心重叠。
若当前宏块的下一宏块为第一列宏块,且其周围有帧间预测宏块,则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置:
s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mvp_y+(s_dy*2)*(mvp_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的x方向的偏移值;s_oy为搜索窗中心与当前宏块中心的y方向的偏移值,s_ox与s_oy的计数单位为整像素;
mvp_x是预测得到的水平运动矢量;mvp_y是预测得到的垂直运动矢量,mvp_x和mvp_y的计数单位为1/4像素;
若该第一列宏块的周围没有帧间预测宏块,则判断上一宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量,确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。根据上一宏块行的部分或者全部的帧间预测宏块的平均运动矢量mv设置搜索窗的位置的方法如下:
s_ox=((mv平均_x+(s_dx*2)*(mv平均_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的x方向的偏移值;s_oy为搜索窗中心与当前宏块中心的y方向的偏移值,s_ox与s_oy的计数单位为整像素;
mv平均_x是上一宏块行部分或者全部帧间预测宏块的水平平均运动矢量,mv平均_y是上一宏块行部分或者全部帧间预测宏块的垂直平均运动矢量,他们的计数单位为1/4像素,如果上一宏块行部分或者全部区域里没有帧间预测宏块或上一宏块行部分或者全部区域里的帧间预测宏块的数量小于设定的帧间预测宏块的数量的阈值,则认为mv平均_x,mv平均_y均为0。
较佳的,在搜索到部分数据位于搜索窗外的待匹配块之后,暂停该宏块的目标匹配块的搜索过程,确定部分数据位于搜索窗外的待匹配块中的部分数据的像素行和/或像素列,在下一宏块对应的搜索窗中读取确定的所述的像素行和/或像素列,然后继续该宏块的目标匹配块的搜索过程;
或者在根据部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置之后,确定所述部分数据位于搜索窗外的待匹配块中的部分数据的像素行和/或像素列;在下一宏块对应的搜索窗中读取确定的所述的像素行和/或像素列。
如图9所示,为当前宏块的目标匹配块的具体搜索:
步骤901:判断搜索窗范围内较有可能的待匹配块的个数是否大于0,如果大于0,执行步骤902,否则执行步骤903;
步骤902:从较有可能的待匹配块中找到与当前宏块匹配误差最小的待匹配块,将该待匹配块作为搜索的起始匹配块,执行步骤904;
步骤903:将搜索窗中心的待匹配块作为搜索的起始匹配块,执行步骤904;
步骤904:按照一定的搜索策略在搜索窗内搜索当前宏块的目标匹配块,记录下第一次部分数据超出搜索窗范围的待匹配块的信息。
较佳地,步骤904中,在搜索过程中,目标匹配块不包括部分数据超出搜索窗范围的待匹配块,若多次搜索到有部分数据超出搜索窗范围的待匹配块,可根据需要设定记录任意一次部分数据超出搜索窗范围的待匹配块的位置。其中根据需要设定记录任意一次部分数据超出搜索窗范围的待匹配块的位置包括但不限于下列方式:记录任意一次部分数据位于搜索窗水平方向之外的待匹配块的位置,或记录任意一次部分数据位于搜索窗垂直方向之外的待匹配块的位置,或记录任意一次部分数据位于搜索窗水平方向之外的待匹配块的位置和任意一次部分数据位于搜索窗垂直方向之外的待匹配块的位置。
其中,步骤904也可以包括:按照一定的搜索策略在搜索窗范围内搜索当前宏块的目标匹配块,目标匹配块不包括部分数据超出搜索窗范围的待匹配块。如果在搜索过程中,多次搜索到有部分数据超出搜索窗范围的待匹配块,记录下第一次部分数据超出搜索窗范围的待匹配块的信息,并读取部分数据超出搜索窗范围的待匹配块的相关信息。
图10所示,为当前宏块的下一宏块是第一列宏块时,确定下一宏块的搜索窗的位置的具体步骤:
步骤1001:判断根据部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置的滑动次数是否大于设定的阈值,如果大于,则执行步骤1002,否则执行步骤1003;
步骤1002:将该位于第一列的宏块,在参考帧中相同位置的待匹配块的中心,作为的下一宏块的搜索窗的中心,并结束本流程;
步骤1003:判断下一宏块周围是否有帧间预测宏块,如果有,执行步骤1004;否则执行步骤1005;
步骤1004:根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置,并结束本流程;
步骤1005:判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,如果大于,则执行步骤1006,否则,执行步骤1002;
步骤1006:根据该位于第一列的宏块的上一个宏块行的部分或者全部帧间预测宏块的平均运动矢量确定该位于第一列的宏块对应的搜索窗的位置,并结束本流程。
如图11所示,本发明实施例判断搜索窗滑动方法具体包括下列步骤:
步骤1101:判断当前宏块在搜索窗范围内的较有可能的待匹配块的个数是否大于0;如果大于0,执行步骤1102;否则执行步骤1103;
步骤1102:在较有可能的待匹配块中找到与当前宏块最相似的匹配块作为起始匹配块,然后执行步骤1104;
步骤1103:将搜索窗中央的待匹配块作为起始匹配块,然后执行步骤1104;
步骤1104:按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块,然后执行步骤1105;
步骤1105:判断当前宏块是否为当前宏块行的最后一个宏块,如果不是,执行步骤1106,否则执行步骤1107;
步骤1106:判断当前宏块的目标匹配块的搜索过程中,是否有部分数据在搜索窗外的待匹配块,如果有执行步骤1108,否则执行步骤1109;
步骤1107:判断根据搜索到的部分数据位于搜索窗外的匹配块的位置确定下一宏块对应的搜索窗的位置的次数是否大于的阈值;如果大于,执行步骤1111,否则执行步骤1112;
步骤1108:判断根据部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置的滑动次数是否大于的阈值;如果大于,执行步骤1109,否则执行步骤1110;
步骤1109:当前宏块的搜索窗固定水平向右移动一个宏块列,得到下一宏块对应的搜索窗,并结束本流程;
步骤1110:根据搜索到的部分数据位于搜索窗外的匹配块的位置确定下一宏块对应的搜索窗的位置,并结束本流程;
步骤1111:将在参考帧中与当前宏块的下一宏块位置相同的待匹配块作为的下一宏块的搜索窗的中心,并结束本流程;
步骤1112:判断下一宏块周围是否有帧间预测宏块,如果有,执行步骤1113,否则执行步骤1114;
步骤1113:根据帧间预测宏块的预测运动矢量确定下一宏块对应的搜索窗的位置,并结束本流程;
步骤1114:判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,如果大于,执行步骤1115,否则,执行步骤1111;
步骤1115:根据当前宏块行的部分或者全部帧间预测宏块的平均运动矢量确定下一宏块对应的搜索窗的位置,并结束本流程。
较佳地,如当前宏块为当前帧的第一个宏块行的第一个宏块时,当前宏块周围不会出现帧间预测宏块,当前宏块的搜索窗的位置可根据当前宏块周围没有帧间预测宏块的方法确定,也可直接设定当前宏块的搜索窗的中心与当前宏块在参考帧中相同位置的待匹配块的中心重叠。
较佳地,步骤1107和步骤1109中,阈值的设定,可根据视频图像序列的内容以及视频编码器性能进行设定,如果含有频繁运动的视频图像序列,阈值可以设定较大,如果是静止的或运动较少的视频图像序列,阈值可以设定略小;如果视频编码器性能比较强,则阈值可以也可以设定较大,否则可以设定略小。
如图12所示,为本发明实施例另一种搜索窗的滑动方法,该方法包括:
步骤1201:针对当前帧中的当前宏块,在参考帧中确定对应的搜索窗,在搜索窗的待匹配块中搜索目标匹配块;
步骤1202:若搜索目标匹配块的过程中,搜索到部分数据位于所述搜索窗外的待匹配块,则根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行滑动处理,并基于滑动后得到的搜索窗继续搜索目标匹配块;
步骤1203:在当前宏块的目标匹配块搜索完成后,将滑动后得到的搜索窗进行固定滑动,得到当前宏块的下一宏块的搜索窗。
较佳地,步骤1201具体包括:确定搜索窗范围内搜索的起始匹配块,若搜索窗范围内没有匹配的待匹配块,则将搜索窗中央的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块;
若搜索窗范围内较有可能的待匹配块的个数不少于一个,则将与当前宏块匹配误差最小的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块。
较佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六边形搜索算法,三步法,新三步法,四步法等搜索算法。具体搜索算法如图5所示,在此不再赘述。
较佳地,步骤1202具体包括:判断在当前宏块的目标匹配块的搜索过程中,是否搜索到部分数据位于搜索窗外的匹配块;如果没有搜索到部分数据位于搜索窗外的匹配块,在搜索到当前宏块的目标匹配块后,搜索窗水平向右滑动一个宏块作为下一宏块的搜索窗的位置;
如果搜索到部分数据位于搜索窗外的匹配块,则根据搜索到的部分数据位于搜索窗外的待匹配块的位置使当前宏块的搜索窗进行滑动,并基于滑动后的窗口搜索当前宏块的目标匹配块,然后根据当前宏块搜索到目标匹配块时搜索窗的位置,水平向右滑动一个宏块列作为下一宏块的搜索窗的位置。
如果当前宏块的下一宏块是第一列宏块时,下一宏块的搜索窗的位置的确定方法为:判断该位于第一列的宏块周围是否有帧间预测宏块,如果有,则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置;否则,判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于,则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则认为该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量为0,将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。
其中,帧间预测是指不是根据当前的解码图像,而是从已解码的参考图像得到的预测值。帧间预测宏块是指由帧间预测方法得到的宏块。
较佳地,当前宏块在搜索最优匹配的过程中,如果搜索到部分数据位于搜索窗外的匹配块,则判断当前宏块的搜索窗根据部分数据位于搜索窗外的待匹配块的位置进行滑动的次数是否大于设定的阈值,若大于设定的阈值,则当前宏块的搜索窗不发生滑动,继续在最后一次滑动的搜索窗内搜索当前宏块的目标匹配块;若不大于设定的阈值,根据搜索到的部分数据位于搜索窗外的匹配块的位置使当前宏块的搜索窗进行滑动,并在滑动后的搜索窗内继续搜索当前宏块的目标匹配块。当前宏块根据部分数据位于搜索窗外的待匹配块的位置进行滑动的方法,与图6,图7和图8中搜索窗的滑动方法类似,在此不再赘述。
较佳地,步骤1202中,如果当前宏块的下一宏块处于宏块行的第一列时,则根据该第一列的宏块周围是否有帧间预测宏块确定搜索窗的位置。
如果当前宏块的下一宏块为第一宏块行的第一个宏块时,下一宏块周围不会出现帧间预测宏块,可直接设定下一宏块的搜索窗中心与下一宏块在参考帧中相同位置的待匹配块的中心重叠。
当该第一列的宏块周围有帧间预测宏块时,根据下列公式确定对应的搜索窗的位置:
s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mvp_y+(s_dy*2)*(mvp_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的水平方向的偏移值;s_oy为搜索窗中心与当前宏块中心的垂直方向的偏移值,s_ox与s_oy的计数单位为整像素;
mvp_x是预测得到的水平运动矢量;mvp_y是预测得到的垂直运动矢量,mvp_x和mvp_y的计数单位为1/4像素;
当该第一列的宏块周围没有帧间预测宏块时,则判断上一宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量,确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。根据上一宏块行的部分或者全部的帧间预测宏块的的平均运动矢量mv设置搜索窗的位置的方法如下:
s_ox=((mv平均_x+(s_dx*2)*(mv平均_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的x方向的偏移值;s_oy为搜索窗中心与当前宏块中心的y方向的偏移值,s_ox与s_oy的计数单位为整像素;
mv平均_x是上一宏块行部分或者全部帧间预测宏块的水平平均运动矢量,mv平均y是上一宏块行部分或者全部帧间预测宏块的垂直平均运动矢量,他们的计数单位为1/4像素,如果上一宏块行部分或者全部区域里没有帧间预测宏块或上一宏块行部分或者全部区域里的帧间预测宏块的数量小于设定的帧间预测宏块的数量的阈值,则认为mv平均_x,mv平均_y均为0。
较佳的,当前宏块搜索目标匹配块的过程中,搜索到部分数据位于搜索窗外的待匹配块之后,暂停当前宏块的目标匹配块的搜索过程,确定部分数据位于搜索窗外的待匹配块中的部分数据的像素行和/或像素列,在搜索窗中读取确定的所述的像素行和/或像素列,并对当前宏块的搜索窗进行滑动,然后继续当前宏块的目标匹配块的搜索过程。
如图13所示,本发明实施例另一种搜索窗的滑动的具体方法:
步骤1301:判断当前宏块在搜索窗范围内的较匹配的待匹配块的个数是否大于0;如果大于,执行步骤1302;否则执行步骤1303;
步骤1302:在较匹配的待匹配块中找到与当前宏块匹配误差最小的匹配块作为起始匹配块,然后执行步骤1304;
步骤1303:将搜索窗中央的待匹配块作为起始匹配块,然后执行步骤1304;
步骤1304:按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块,然后执行步骤1305;
步骤1305:判断当前宏块是否搜索到部分数据位于搜索窗外的待匹配块,若搜索到部分数据位于搜索窗外的待匹配块,执行步骤1306;若没有搜索到部分数据位于搜索窗外的待匹配块,执行步骤1308;
步骤1306:判断当前宏块按照部分数据位于搜索窗外的待匹配块进行滑动的次数是否大于阈值,若大于阈值,则执行步骤1307;若不大于阈值,则执行步骤1308;
步骤1307:在当前搜索窗范围内搜索当前宏块的目标匹配块,搜索完成后执行步骤1309;
步骤1308:根据搜索到部分数据位于搜索窗外的待匹配块的位置对当前宏块的搜索窗进行滑动处理,在滑动后的搜索窗范围内继续进行当前宏块的目标匹配块的搜索,搜索完成后,执行步骤1309;
步骤1309:判断当前宏块的下一宏块是否为第一列宏块,若不是第一列宏块,则执行步骤1310;若是第一列宏块,则执行步骤1311;
步骤1310:在当前宏块的搜索窗的位置处,水平向右移动一个宏块列,得到当前宏块的下一宏块的搜索窗,并结束本流程;
步骤1311:判断下一宏块周围是否有帧间预测宏块,如果有,执行步骤1312,否则执行步骤1313;
步骤1312:根据帧间预测宏块的预测运动矢量确定下一宏块对应的搜索窗的位置,并结束本流程;
步骤1313:判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,如果大于,执行步骤1314,否则,执行步骤1315;
步骤1314:根据当前宏块所在宏块行的部分或者全部帧间预测宏块的平均运动矢量确定下一宏块对应的搜索窗的位置,并结束本流程;
步骤1315:将在参考帧中与当前宏块的下一宏块位置相同的待匹配块作为的下一宏块的搜索窗的中心,并结束本流程。
较佳地,如当前宏块的下一宏块为第一个宏块行的第一个宏块时,当前宏块周围不会出现帧间预测宏块,当前宏块的下一宏块的搜索窗的位置可根据当前宏块周围没有帧间预测宏块的方法确定,也可直接设定当前宏块的下一宏块的搜索窗的中心与下一宏块对应的参考帧中相同位置的待匹配块的中心重叠。
较佳地,步骤1306中,阈值的设定,可根据视频图像序列的内容以及视频编码器性能进行设定,如果含有频繁运动的视频图像序列,阈值可以设定较大,如果是静止的或运动较少的视频图像序列,阈值可以设定略小;如果视频编码器性能比较强,则阈值可以也可以设定较大,否则可以设定略小。
基于同一发明构思,本发明实施例中还提供了一种搜索窗的滑动装置,由于该装置解决问题的原理与本发明实施例搜索窗的滑动方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图14所示,本发明实施例一种搜索窗的滑动装置包括:运动估计单元1401、搜索窗确定单元1402和搜索窗滑动单元1403。
运动估计计算单元1401,用于针对当前帧中的当前宏块,在参考帧中确定对应的搜索窗,在搜索窗的待匹配块中搜索目标匹配块;
搜索窗确定单元1402,用于若搜索目标匹配块的过程中,搜索到部分数据位于所述搜索窗外的待匹配块,则根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应的搜索窗的位置;
搜索窗滑动单元1403:当前宏块的目标匹配块搜索完成后,根据下一宏块对应的搜索窗的位置,对当前宏块的搜索窗进行滑动处理,得到下一宏块对应的搜索窗。
较佳地,运动估计计算单元1401具体用于:确定搜索窗范围内搜索的起始匹配块,若搜索窗范围内没有较有可能的待匹配块,则将搜索窗中央的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块;其中,目标匹配块是指当前帧中当前宏块在参考帧的搜索窗范围内,搜索到的与其匹配误差最小的待匹配块,也就是当前帧的当前宏块对应的最优匹配块。
若搜索窗范围内较有可能的待匹配块的个数不少于一个,则将与当前宏块最相似的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块。
较佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六边形搜索算法,三步法,新三步法,四步法等搜索算法。
较佳地,搜索窗确定单元1402具体用于:如果下一宏块是除第一列宏块之外的其他宏块时,判断在当前宏块的最优匹配块的搜索过程中,是否搜索到部分数据位于搜索窗外的匹配块;如果没有,下一宏块对应的搜索窗固定水平向右滑动一个宏块列;如果有,根据预先设定将第N次确定对应的搜索区域中的有部分待匹配块位于所述搜索窗之外,根据第N次搜索到的位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置;其中,N为正整数。
如果下一宏块是第一列宏块时,判断该位于第一列的宏块周围是否有帧间预测宏块,如果有,则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置;否则,判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的的数量是否大于设定的帧间预测宏块的数量的阈值,若大于,则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块平均运动矢量确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则认为该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量为0,将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。
其中,帧间预测是指不是根据当前的解码图像,而是从已解码的参考图像得到的预测值。
帧间预测宏块是指由帧间预测方法得到的宏块。
较佳地,根据第N次搜索到部分数据位于所述搜索窗水平方向之外的待匹配块和/或第M次搜索到部分数据位于所述搜索窗垂直方向之外的待匹配块的位置确定下一宏块对应的搜索窗的位置;或根据第L次搜索到的部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置;其中,M,N,L为正整数。
较佳地,搜索窗确定单元1402还可以用于:如果下一宏块是除第一列宏块之外的其他宏块,且在当前宏块的最优匹配块的搜索过程中搜索到部分数据位于搜索窗外的匹配块,判断根据搜索到的部分数据位于搜索窗外的匹配块的位置确定下一宏块对应的搜索窗除默认向右滑动一个宏块外的滑动次数是否大于的阈值,如果大于设定的阈值,则下一宏块对应的搜索窗固定水平向右移动一个宏块列;如果不大于设定的阈值,则根据搜索到的部分数据位于搜索窗外的匹配块的位置确定下一宏块对应的搜索窗的位置。
较佳地,搜索窗确定单元1402还可以用于:如果下一宏块是第一列宏块,判断根据搜索到的部分数据位于搜索窗外的匹配块的位置确定下一宏块对应的搜索窗除默认向右滑动一个宏块外的滑动次数是否大于的阈值;如果大于设定的阈值,则将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心;如果不大于设定的阈值,则根据第一列的宏块周围是否有帧间预测宏块确定搜索窗的位置。
较佳地,如果当前宏块的下一宏块为的第一宏块行的第一个宏块时,下一宏块的搜索窗的中心与下一宏块在参考帧中相同位置的待匹配块的中心重叠。
较佳地,搜索窗确定单元1402中,若该第一列宏块的周围有帧间预测宏块,则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置:
s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mvp_y+(s_dy*2)*(mvp_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的x方向的偏移值;s_oy为搜索窗中心与当前宏块中心的y方向的偏移值,s_ox与s_oy的计数单位为整像素;
mvp_x是预测得到的水平运动矢量;mvp_y是预测得到的垂直运动矢量,mvp_x和mvp_y的计数单位为1/4像素;
s_dx是搜索窗滑动的水平方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素;s_dy是搜索窗滑动的垂直方向步长,可根据需要设定为任意整数值,较佳的可以选择8像素、12像素或者16像素。
较佳地,搜索窗确定单元1402中,若该第一列宏块的周围没有帧间预测宏块,则判断上一宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量,确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。根据上一宏块行的部分或者全部的帧间预测宏块的平均运动矢量mv设置搜索窗的位置的方法如下:
s_ox=((mv平均_x+(s_dx*2)*(mv平均_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的x方向的偏移值;s_oy为搜索窗中心与当前宏块中心的y方向的偏移值,s_ox与s_oy的计数单位为整像素;
mv平均_x是上一宏块行部分或者全部帧间预测宏块的水平平均运动矢量,mv平均_y是上一宏块行部分或者全部帧间预测宏块的垂直平均运动矢量,他们的计数单位为1/4像素,如果上一宏块行部分或者全部区域里没有帧间预测宏块或上一宏块行部分或者全部区域里的帧间预测宏块的数量小于设定的帧间预测宏块的数量的阈值,则认为mv平均_x,mv平均_y均为0;
s_dx是搜索窗滑动的水平方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素;s_dy是搜索窗滑动的垂直方向步长,可根据需要设定为任意整数值,较佳的可以选择8像素、12像素或者16像素。
较佳的,如图15所示,搜索窗的滑动装置还包括搜索窗数据读取单元1504。
搜索窗数据读取单元1504具体用于:读取当前宏块的下一宏块对应的搜索窗按照预先设定的滑动方式进行固定滑动的宏块行和/或宏块列的数据,并读取搜索到的部分数据位于搜索窗外的待匹配块的位置水平滑动设定的像素行和/或垂直滑动设定的像素列的数据。
下一宏块不是第一列宏块时,在当前宏块的最优匹配块的搜索过程中,读取搜索窗水平向右一个宏块的参考数据;当前宏块的最优匹配块的搜索过程结束后,如果在之前水平向右滑动一个宏块列的基础上有其他滑动,则再读取下一宏块对应搜索窗数据。
下一宏块是第一列宏块时,则根据预先设定的方法确定下一宏块对应搜索窗位置后,再紧急读取下一宏块对应的搜索窗的参考数据。
如图16所示,本发明实施例另一种搜索窗的滑动装置包括:运动估计单元1601、搜索窗运动单元1602、搜索窗滑动单元1603。
运动估计单元1601,用于针对当前帧中的当前宏块,在参考帧中确定对应的搜索窗,在搜索窗的待匹配块中搜索目标匹配块;
搜索窗运动单元1602,用于若搜索目标匹配块的过程中,搜索到部分数据位于所述搜索窗外的待匹配块,则根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行滑动处理,并基于滑动后得到的搜索窗继续搜索目标匹配块;
搜索窗滑动单元1603,用于在当前宏块的目标匹配块搜索完成后,将滑动后得到的搜索窗进行固定滑动,得到当前宏块的下一宏块的搜索窗。
较佳地,运动估计单元1601具体用于:确定搜索窗范围内搜索的起始匹配块,若搜索窗范围内没有较有可能的待匹配块,则将搜索窗中央的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块;
若搜索窗范围内较有可能的待匹配块的个数不少于一个,则将与当前宏块最相似的待匹配块作为起始匹配块,然后按照一定的搜索策略在当前宏块对应的搜索窗范围内搜索当前宏块的目标匹配块。
较佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六边形搜索算法,三步法,新三步法,四步法等搜索算法。
较佳地,搜索窗运动单元1602具体用于:判断在当前宏块的最优匹配块的搜索过程中,是否搜索到部分数据位于搜索窗外的匹配块;如果没有搜索到部分数据位于搜索窗外的匹配块,在搜索到当前宏块的最优匹配块后,且下一宏块不是第一列宏块时,搜索窗水平向右滑动一个宏块作为下一宏块的搜索窗的位置;
如果搜索到部分数据位于搜索窗外的匹配块,则根据搜索到的部分数据位于搜索窗外的匹配块的位置使当前宏块对应的搜索窗进行滑动,并继续搜索当前宏块的目标匹配块,然后根据当前宏块搜索到目标匹配块时搜索窗的位置,搜索窗水平向右滑动一个宏块作为下一宏块的搜索窗的位置,其中下一宏块不是第一列宏块。
如果下一宏块是第一列宏块时,下一宏块的搜索窗的位置的确定方法为:判断该位于第一列的宏块周围是否有帧间预测宏块,如果有,则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置;否则,判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于,则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则认为该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量为0,将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。
其中,帧间预测是指不是根据当前的解码图像,而是从已解码的参考图像得到的预测值。帧间预测宏块是指由帧间预测方法得到的宏块。
帧间预测宏块是指由帧间预测方法得到的宏块。
其中,若搜索到部分数据位于搜索窗外的匹配块,则判断当前宏块的搜索窗根据部分数据位于搜索窗外的待匹配块的位置进行滑动的次数是否大于设定的阈值,若大于设定的阈值,则当前宏块的搜索窗不发生滑动,继续在最后一次滑动的搜索窗内搜索当前宏块的目标匹配块;若不大于设定的阈值,根据搜索到的部分数据位于搜索窗外的匹配块的位置使当前宏块的搜索窗进行滑动,并在滑动后的搜索窗内继续搜索当前宏块的目标匹配块。当前宏块根据部分数据位于搜索窗外的待匹配块的位置进行滑动的方法,与图6,图7和图8中搜索窗的滑动方法类似,在此不再赘述。
较佳地,搜索窗运动算单元1602还可以用于:如果当前宏块的下一宏块为的第一宏块行的第一个宏块时,下一宏块的搜索窗的中心与下一宏块在参考帧中相同位置的待匹配块的中心重叠。
如果下一宏块是第一列宏块,判断第一列的宏块周围是否有帧间预测宏块确定搜索窗的位置。
若下一宏块周围有帧间预测宏块,则按照下列公式根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位置:
s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mvp_y+(s_dy*2)*(mvp_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的水平方向的偏移值;s_oy为搜索窗中心与当前宏块中心的垂直方向的偏移值,s_ox与s_oy的计数单位为整像素;
mvp_x是预测得到的水平运动矢量;mvp_y是预测得到的垂直运动矢量,mvp_x和mvp_y的计数单位为1/4像素;
s_dx是搜索窗滑动的水平方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素;s_dy是搜索窗滑动的垂直方向步长,可根据需要设定为任意整数值,较佳的可以选择8像素、12像素或者16像素。
若该第一列宏块的周围没有帧间预测宏块,则判断上一宏块行的部分或者全部区域的帧间预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值,若大于则根据该位于第一列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量,确定该位于第一列的宏块对应的搜索窗的位置;若不大于,则将该位于第一列的宏块的中心作为该位于第一列的宏块对应的搜索窗的中心。根据上一宏块行的部分或者全部的帧间预测宏块的平均运动矢量mv设置搜索窗的位置的方法如下:
s_ox=((mv平均_x+(s_dx*2)*(mv平均_x>=0?1:-1))/(s_dx*4))*s_dx;
s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?1:-1))/(s_dy*4))*s_dy;
其中,s_ox为搜索窗中心与当前宏块中心的x方向的偏移值;s_oy为搜索窗中心与当前宏块中心的y方向的偏移值,s_ox与s_oy的计数单位为整像素;
mv平均_x是上一宏块行部分或者全部帧间预测宏块的水平平均运动矢量,mv平均_y是上一宏块行部分或者全部帧间预测宏块的垂直平均运动矢量,他们的计数单位为1/4像素,如果上一宏块行部分或者全部区域里没有帧间预测宏块,则认为mv平均_x,mv平均_y均为0;
s_dx是搜索窗滑动的水平方向步长,可根据需要设定数值,较佳的可以选择8像素、12像素或者16像素;s_dy是搜索窗滑动的垂直方向步长,可根据需要设定为任意整数值,较佳的可以选择8像素、12像素或者16像素。
较佳的,如图17所示,搜索窗的滑动装置还包括参考数据读取单元1704。
参考数据读取单元1704具体用于:搜索到部分数据位于所述搜索窗外的待匹配块后,读取搜索到的部分数据位于搜索窗外的待匹配块的位置水平滑动设定的像素行和/或垂直滑动设定的像素列的数据。
较佳地,在一个搜索窗滑动装置中可以同时包括搜索窗确定单元和搜索窗运动单元,搜索窗数据读取单元和参考数据读取单元;当搜索窗滑动装置采用根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应的搜索窗的位置时,搜索窗滑动装置使用搜索窗确定单元和搜索窗数据读取单元;当搜索窗滑动装置采用根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行滑动处理时,搜索窗滑动装置使用搜索窗运动单元和参考数据读取单元。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。