WO/2009/118448 | DATA TRANSMISSION |
WO/2000/044176 | METHOD AND ARRANGEMENT FOR QUANTIZING DATA |
WO/2005/104011 | SYSTEM AND METHOD FOR REVERSIBLE DATA HIDING BASED ON INTEGER WAVELET SPREAD SPECTRUM |
TAO YONGYAO (CN)
CN1725862A | 2006-01-25 | |||
US20110069751A1 | 2011-03-24 | |||
US20030202588A1 | 2003-10-30 | |||
US20100098169A1 | 2010-04-22 | |||
US20030190059A1 | 2003-10-09 | |||
CN101980536A | 2011-02-23 |
北京同达信恒知识产权代理有限公司 (CN)
权 利 要 求 1、 一种搜索窗的滑动方法, 其特征在于, 该方法包括: 针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜索窗的待匹配块中搜 索目标匹配块; 若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗外的待匹配块, 则根据 部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应的搜索窗的位置, 并继续在当前搜索窗内搜索当前宏块的目标匹配块; 当前宏块的目标匹配块搜索完成后, 根据下一宏块对应的搜索窗的位置, 对当前宏块 的搜索窗进行滑动处理, 得到下一宏块对应的搜索窗。 2、 如权利要求 1 所述的方法, 其特征在于, 所述根据部分数据位于搜索窗外的待匹 配块的位置确定当前宏块的下一宏块对应的搜索窗的位置, 包括: 根据第 N次搜索到部分数据位于所述搜索窗水平方向之外的待匹配块和 /或第 M次搜 索到部分数据位于所述搜索窗垂直方向之外的待匹配块的位置确定当前宏块的下一宏块 对应的搜索窗的位置; 其中, M和 N 为正整数。 3、 如权利要求 1 所述的方法, 其特征在于, 所述根据部分数据位于搜索窗外的待匹 配块的位置确定当前宏块的下一宏块对应的搜索窗的位置, 包括: 判断搜索目标匹配块的过程中, 搜索窗滑动的次数是否大于设定的阈值; 若不大于设 定的阈值, 则根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应 的搜索窗的位置; 若搜索窗滑动的次数大于设定的阈值, 确定当前宏块的下一宏块对应的搜索窗的位置 为当前宏块对应的搜索窗水平向右滑动一个宏块的位置。 4、 如权利要求 1 所述的方法, 其特征在于, 根据部分数据位于搜索窗外的待匹配块 的位置确定当前宏块的下一宏块对应的搜索窗的位置之后; 根据下一宏块对应的搜索窗的 位置, 对当前宏块的搜索窗进行滑动处理之前还包括: 读取当前宏块的下一宏块对应的搜索窗按照预先设定的滑动方式进行固定滑动的宏 块行和 /或宏块列的数据,并读取搜索到的部分数据位于搜索窗外的待匹配块的位置水平滑 动设定的像素行和 /或垂直滑动设定的像素列的数据。 5、 如权利要求 1 所述的方法, 其特征在于, 根据下一宏块对应的搜索窗的位置, 对 当前宏块的搜索窗进行滑动处理, 包括: 确定当前宏块的搜索窗按照预先设定的滑动方式进行固定滑动, 再根据部分数据位于 搜索窗外的待匹配块的位置水平滑动设定的像素行和 /或垂直滑动设定的像素列。 6、 如权利要求 1 所述的方法, 其特征在于, 若所述当前宏块的下一宏块为第一列的 宏块时, 根据下列方式确定下一宏块对应的搜索窗的位置: 针对一个位于第一列的宏块, 判断该位于第一列的宏块周围是否有帧间预测宏块, 如 果有, 则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位 置; 否则, 判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块 的数量是否大于设定的帧间预测宏块的数量的阈值, 若大于, 则根据该位于第一列的宏块 的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量, 确定该位于第一列的宏块 对应的搜索窗的位置; 若不大于, 则将该位于第一列的宏块的中心作为该位于第一列的宏 块对应的搜索窗的中心。 7、 如权利要求 6 所述的方法, 其特征在于, 判断该位于第一列的宏块周围是否有帧 间预测宏块之前, 还包括: 判断根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应的 搜索窗的位置的搜索窗滑动的次数是否大于设定的阈值; 若大于所述设定的阈值, 则将该位于第一列的宏块的中心作为该位于第一列的宏块对 应的搜索窗的中心; 否则, 则执行判断该位于第一列的宏块周围是否有帧间预测宏块的步骤。 8、 一种搜索窗的滑动方法, 其特征在于, 该方法包括: 针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜索窗的待匹配块中搜 索目标匹配块; 若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗外的待匹配块, 则根据 部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行滑动处理, 并基于 滑动后得到的搜索窗继续搜索目标匹配块; 在当前宏块的目标匹配块搜索完成后, 将滑动后得到的搜索窗进行固定滑动, 得到当 前宏块的下一宏块的搜索窗。 9、 如权利要求 8 所述的方法, 其特征在于, 所述根据部分数据位于搜索窗外的待匹 配块的位置对所述当前宏块的搜索窗进行滑动处理, 包括: 根据第 U次搜索到部分数据位于所述搜索窗水平方向之外的待匹配块和 /或第 V次搜 索到部分数据位于所述搜索窗垂直方向之外的待匹配块的位置对所述当前宏块的搜索窗 进行滑动处理; 其中, U和 V为正整数。 10、 如权利要求 8所述的方法, 其特征在于, 所述根据部分数据位于搜索窗外的待匹 配块的位置对所述当前宏块的搜索窗进行滑动处理, 包括: 判断搜索目标匹配块的过程中, 搜索窗滑动的次数是否大于设定的阈值, 若不大于, 则根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行滑动处理; 否则, 不进行搜索窗滑动并继续在当前搜索窗内搜索当前宏块对应的目标匹配块。 11、 如权利要求 8所述的方法, 其特征在于, 搜索到部分数据位于所述搜索窗外的待 匹配块之后; 根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行 滑动处理之前, 包括: 读取搜索到的部分数据位于搜索窗外的待匹配块的位置水平滑动设定的像素行和 /或 垂直滑动设定的像素列的数据。 12、如权利要求 8所述的方法, 其特征在于, 若当前宏块的下一宏块为第一列宏块时, 根据下列方式确定第一列宏块对应的搜索窗的位置: 针对一个位于第一列的宏块, 判断该位于第一列的宏块周围是否有帧间预测宏块, 如 果有, 则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜索窗的位 置; 否则, 判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块 的数量是否大于设定的帧间预测宏块的数量的阈值, 若大于, 则根据该位于第一列的宏块 的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量, 确定该位于第一列的宏块 对应的搜索窗的位置; 若不大于, 则将该位于第一列的宏块的中心作为该位于第一列的宏 块对应的搜索窗的中心。 13、 一种搜索窗的滑动装置, 其特征在于, 该装置包括: 运动估计单元, 用于针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜 索窗的待匹配块中搜索目标匹配块; 搜索窗确定单元, 若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗外的 待匹配块, 则根据部分数据位于搜索窗外的待匹配块的位置确定当前宏块的下一宏块对应 的搜索窗的位置, 并继续在当前搜索窗内搜索当前宏块的目标匹配块; 搜索窗滑动单元, 当前宏块的目标匹配块搜索完成后, 根据下一宏块对应的搜索窗的 位置, 对当前宏块的搜索窗进行滑动处理, 得到下一宏块对应的搜索窗。 14、 如权利要求 13所述的装置, 其特征在于, 所述搜索窗确定单元具体用于: 根据第 N次搜索到部分数据位于所述搜索窗水平方向之外的待匹配块和 /或第 M次搜 索到部分数据位于所述搜索窗垂直方向之外的待匹配块的位置确定下一宏块对应的搜索 窗的位置; 其中, M和 N为正整数。 15、 如权利要求 13所述的装置, 其特征在于, 所述搜索窗确定单元还用于: 判断确定搜索目标匹配块的过程中, 搜索窗滑动的次数是否大于设定的阈值, 若不大 于, 根据部分数据位于搜索窗外的待匹配块的位置确定下一宏块对应的搜索窗的位置; 否 则, 确定当前宏块的下一宏块对应的搜索窗的位置为当前宏块对应的搜索窗水平向右滑动 一个宏块的位置。 16、 如权利要求 13所述的装置, 其特征在于, 所述装置还包括搜索窗数据读取单元, 用于: 读取当前宏块的下一宏块对应的搜索窗按照预先设定的滑动方式进行固定滑动的宏 块行和 /或宏块列的数据,并读取搜索到的部分数据位于搜索窗外的待匹配块的位置水平滑 动设定的像素行和 /或垂直滑动设定的像素列的数据。 17、 如权利要求 13所述的装置, 其特征在于, 所述搜索窗滑动单元, 具体用于: 确定当前宏块的搜索窗按照预先设定的滑动方式进行固定滑动, 再根据部分数据位于 搜索窗外的待匹配块的位置水平滑动设定的像素行和 /或垂直滑动设定的像素列。 18、 如权利要求 13所述的装置, 其特征在于, 所述搜索窗确定单元还用于: 若当前宏块的下一宏块为第一列的宏块时, 判断该位于第一列的宏块周围是否有帧间 预测宏块, 如果有, 则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的 搜索窗的位置; 否则, 判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间预测宏块 的数量是否大于设定的帧间预测宏块的数量的阈值, 若大于, 则根据该位于第一列的宏块 的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量, 确定该位于第一列的宏块 对应的搜索窗的位置; 若不大于, 则将该位于第一列的宏块的中心作为该位于第一列的宏 块对应的搜索窗的中心。 19、 如权利要求 18所述的装置, 其特征在于, 所述搜索窗确定单元具体用于: 若当前宏块的下一宏块为第一列的宏块时, 判断根据部分数据位于搜索窗外的待匹配 块的位置确定当前宏块的下一宏块对应的搜索窗的位置的搜索窗滑动的次数是否大于设 定的阈值, 若大于所述设定的阈值, 将该位于第一列的宏块的中心作为该位于第一列的宏 块对应的搜索窗的中心; 否则, 判断该位于第一列的宏块周围是否有帧间预测宏块。 20、 一种搜索窗的滑动装置, 其特征在于, 该装置包括: 运动估计单元, 用于针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜 索窗的待匹配块中搜索目标匹配块; 搜索窗运动单元, 用于若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗 外的待匹配块, 则根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗 进行滑动处理, 并基于滑动后得到的搜索窗继续搜索目标匹配块; 搜索窗滑动单元, 用于在当前宏块的目标匹配块搜索完成后, 将滑动后得到的搜索窗 进行固定滑动, 得到当前宏块的下一宏块的搜索窗。 21、 如权利要求 20所述的装置, 其特征在于, 所述搜索窗运动单元用于: 根据第 U次搜索到部分数据位于所述搜索窗水平方向之外的待匹配块和 /或第 V次搜 索到部分数据位于所述搜索窗垂直方向之外的待匹配块的位置对所述当前宏块的搜索窗 进行滑动处理; 其中, U和 V为正整数。 22、 如权利要求 20所述的装置, 其特征在于, 所述搜索窗运动单元, 具体用于: 确定搜索目标匹配块的过程中, 判断搜索窗滑动的次数是否大于设定的阈值, 若不大 于, 则根据部分数据位于搜索窗外的待匹配块的位置对所述当前宏块的搜索窗进行滑动处 理; 否则, 则在最后一次滑动得到的搜索窗内搜索当前宏块对应的目标匹配块。 23、 如权利要求 20 所述的装置, 其特征在于, 该装置还包括参考数据读取单元, 用 于: 搜索到部分数据位于所述搜索窗外的待匹配块后, 读取搜索到的部分数据位于搜索窗 外的待匹配块的位置水平滑动设定的像素行和 /或垂直滑动设定的像素列的数据。 24、 如权利要求 20所述的装置, 其特征在于, 所述搜索窗滑动单元还用于: 若当前宏块的下一宏块为第一列宏块时, 判断该位于第一列的宏块周围是否有帧间预 测宏块, 如果有, 则根据帧间预测宏块的预测运动矢量确定该位于第一列的宏块对应的搜 索窗的位置; 否则, 判断该位于第一列的宏块的上一个宏块行的部分或者全部区域的帧间 预测宏块的数量是否大于设定的帧间预测宏块的数量的阈值, 若大于, 则根据该位于第一 列的宏块的上一个宏块行的部分或全部的帧间预测宏块的平均运动矢量, 确定该位于第一 列的宏块对应的搜索窗的位置; 若不大于, 则将该位于第一列的宏块的中心作为该位于第 一列的宏块对应的搜索窗的中心。 |
技术领域
本发明涉及视频编码技术领域, 尤其涉及一种搜索窗的滑动方法及其装置。 背景技术
许多视频或动画的前后连续两帧具有很大的相 关性, 也就是说相邻的两帧之间具有冗 余信息, 因此在视频压缩和视频通信中,不需要将每一 帧的所有像素信息传输到解码器端, 只需要将对象的运动信息进行传输, 解码器即可根据前一帧图像和运动信息更新当 前帧, 从而达到压缩的目的。 这种方法的关键是确定运动信息, 即进行运动估计。 运动估计是指 在参考帧中搜索一个与当前帧图像块最相似的 图像块——目标匹配块, 也就是最佳匹配 块, 将搜索结果用运动向量表示出来。
由于视频编码中参考帧所需存储容量很大, 所以一般把参考帧存储在外部存储器中, 但外部存储器的访问延迟相对 SRAM ( Static Random Access Memory, 静态随机存贮器 ) 大很多, 故会对视频编码器性能造成很大影响。
理想情况下 (如图 1 所示), 进行运动估计时, 可以将整个参考帧作为搜索窗, 在参 考帧范围内搜索任意待匹配块, 此时搜索窗的高度为参考帧的高度 H, 搜索窗的宽度为参 考帧的宽度 W。 釆用整个参考帧作为搜索窗的方法压缩率较高 , 但由于编码器需要一个能 存储整个参考帧大小的内部 SRAM以减小读取参考帧数据的延迟,对于高清 视频编码来 说需要的 SRAM太大, 所以很难投入实际使用。
目前釆用的两种运动估计方案, 通过限制搜索窗的大小来降低对内部 SRAM的需求。 方案一(如图 2 所示): 对搜索窗进行垂直方向上高度限制, 也就是说搜索窗宽度仍 为参考帧的宽度 W, 但搜索窗的高度远小于参考帧的高度, 限定为 SH, 图中实线范围为 当前宏块的搜索窗范围, 黑色方块是参考帧中与当前宏块位置相同的待 匹配块的位置。 首 先在搜索窗内进行当前宏块的目标匹配块的搜 索, 搜索完成后, 判断当前宏块的宏块行是 否搜索完成, 若没有搜索完成, 当前宏块的下一宏块继续在该搜索窗内搜索其 对应的目标 匹配块; 若当前宏块的宏块行已经搜索完成, 则搜索窗向下滑动一个宏块行(如图 2中虚 线所示), 当前宏块的下一宏块在滑动后的搜索窗内搜索 其对应的目标匹配块。 方案二(如图 3 所示): 对搜索窗水平和垂直方向设置宽度和高度的限 制, 搜索窗是 一个比当前宏块大的矩形区域, 如图 3所示, 搜索窗的高度限定为 SH, 宽度限定为 SW, 图中黑色方块是参考帧中与当前宏块位置相同 的待匹配块的位置, 实线范围为当前宏块的 搜索窗范围。 首先在搜索窗内搜索当前宏块的目标匹配块, 搜索完成后, 搜索窗向右滑动 一个宏块列 (如图 3 中虚线所示), 当前宏块的下一宏块在虚线所示的搜索窗内搜 索其对 应的目标匹配块; 若当前宏块为当前宏块行的最后一个宏块, 则当前宏块的下一宏块的搜 索窗中心与下一待匹配块行的最左侧的待匹配 块重合。
从上述两个方案可以看出, 当视频图像序列是静止的, 或运动较緩慢的视频图像时, 上述两种方案在对应的搜索窗范围内搜索一个 与当前帧宏块最相似的待匹配块(即目标匹 配块) 的概率较高, 但对于含有较大运动的视频图像序列, 上述两种方案在对应的搜索窗 范围内搜索一个与当前帧宏块最相似的待匹配 块(即目标匹配块) 的概率就会较低。
因此对于含有较大运动的视频图像序列, 上述两种方案会出现搜索到目标匹配块的概 率较低, 视频压缩率较低的问题。 发明内容
本发明实施例提供了一种搜索窗的滑动方法及 其装置, 以解决含有较大运动的视频图 像序列搜索到最优匹配块的概率较低, 压缩率较低的问题。
本发明实施例提供了一种搜索窗的滑动方法, 包括:
针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜索窗的待匹配块中搜 索目标匹配块;
若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗外的待匹配块 , 则根据 部分数据位于搜索窗外的待匹配块的位置确定 当前宏块的下一宏块对应的搜索窗的位置; 当前宏块的目标匹配块搜索完成后, 根据下一宏块对应的搜索窗的位置, 对当前宏块 的搜索窗进行滑动处理, 得到下一宏块对应的搜索窗。
本发明实施例提供了另一种搜索窗的滑动方法 , 包括:
针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜索窗的待匹配块中搜 索目标匹配块;
若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗外的待匹配块 , 则根据 部分数据位于搜索窗外的待匹配块的位置对所 述当前宏块的搜索窗进行滑动处理, 并基于 滑动后得到的搜索窗继续搜索目标匹配块;
在当前宏块的目标匹配块搜索完成后, 将滑动后得到的搜索窗进行固定滑动, 得到当 前宏块的下一宏块的搜索窗。
本发明实施例提供了一种搜索窗的滑动装置, 包括:
运动估计单元, 用于针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜 索窗的待匹配块中搜索目标匹配块;
搜索窗确定单元, 若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗外的 待匹配块, 则根据部分数据位于搜索窗外的待匹配块的位 置确定当前宏块的下一宏块对应 的搜索窗的位置;
搜索窗滑动单元, 当前宏块的目标匹配块搜索完成后, 根据下一宏块对应的搜索窗的 位置, 对当前宏块的搜索窗进行滑动处理, 得到下一宏块对应的搜索窗。
本发明实施例提供了另一种搜索窗的滑动装置 , 包括:
运动估计单元, 用于针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜 索窗的待匹配块中搜索目标匹配块;
搜索窗运动单元, 用于若搜索目标匹配块的过程中, 搜索到部分数据位于所述搜索窗 外的待匹配块, 则根据部分数据位于搜索窗外的待匹配块的位 置对所述当前宏块的搜索窗 进行滑动处理, 并基于滑动后得到的搜索窗继续搜索目标匹配 块;
搜索窗滑动单元, 用于在当前宏块的目标匹配块搜索完成后, 将滑动后得到的搜索窗 进行固定滑动, 得到当前宏块的下一宏块的搜索窗。
本发明实施例釆用针对当前帧中的当前宏块, 在参考帧中确定对应的搜索窗, 在搜索 窗的待匹配块中搜索目标匹配块; 若搜索目标匹配块的过程中, 搜索到部分数据位于所述 搜索窗外的待匹配块, 则根据部分数据位于搜索窗外的待匹配块的位 置确定当前宏块的下 一宏块对应的搜索窗的位置, 避免了含有较大运动的视频图像序列的搜索窗 只能固定滑 动, 可能无法搜索到目标匹配块的问题, 提高了搜索到目标匹配块的概率和视频压缩率 。 附图说明
图 1为背景技术中理想情况下搜索窗的大小;
图 2为背景技术中进行垂直高度限制的搜索窗大 及移动方向;
图 3为背景技术中进行垂直高度限制和水平宽度 制的搜索窗大小及移动方向; 图 4为本发明实施例中一种搜索窗的滑动方法的 程示意图;
图 5为本发明实施例中以菱形搜索算法为例确定 前宏块的目标匹配块的示意图; 图 6为本发明实施例根据搜索到部分数据位于搜 窗垂直方向之外的待匹配块确定下 一宏块对应的搜索窗的位置的示意图; 图 7为本发明实施例根据搜索到部分数据位于搜 窗水平方向之外的待匹配块确定下 一宏块对应的搜索窗的位置的示意图;
图 8为本发明实施例根据搜索到部分数据位于搜 窗垂直方向之外的待匹配块和搜索 到部分数据位于搜索窗水平方向之外的待匹配 块确定下一宏块对应的搜索窗的位置的示 意图;
图 9为本发明实施例确定当前宏块的目标匹配块 搜索方法流程示意图;
图 10 为本发明实施例下一宏块是第一列宏块时, 确定下一宏块的搜索窗的位置的方 法流程示意图;
图 11为本发明实施例判断搜索窗滑动方法的流程 意图;
图 12为本发明实施例中另一种搜索窗的滑动方法 流程示意图;
图 13为本发明实施例中另一种搜索窗的滑动的具 方法的流程示意图;
图 14为本发明实施例中一种搜索窗的滑动装置的 意图;
图 15为本发明实施例中含有搜索窗数据读取单元 一种搜索窗的滑动装置的示意图; 图 16为本发明实施例中另一种搜索窗的滑动装置 示意图;
图 17为本发明实施例中含有参考数据读取单元另 种搜索窗的滑动装置的示意图。 具体实施方式
本发明实施例釆用了针对当前帧中的当前宏块 , 在参考帧中确定对应的搜索窗, 在搜 索窗的待匹配块中搜索目标匹配块; 若搜索目标匹配块的过程中, 搜索到部分数据位于所 述搜索窗外的待匹配块, 则根据部分数据位于搜索窗外的待匹配块的位 置确定当前宏块的 下一宏块对应的搜索窗的位置。 由于釆用这种方法可以使搜索窗根据视频数据 向各个方向 进行滑动, 从而提高了含有较大运动的视频图像序列搜索 到目标匹配块的概率, 并提高了 含有较大运动的视频图像序列的压缩率。
本发明实施例中目标匹配块是指当前帧中当前 宏块在参考帧的搜索窗范围内, 搜索到 的与其匹配误差最小的待匹配块, 也就是当前帧的当前宏块对应的目标匹配块。
下面结合说明书附图对本发明实施例作进一步 详细描述。
如图 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)) I ( 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)) I ( s_dx * 4 )) * s_dx;
s_oy = ((mv平均 _y + ( s_dy*2 ) * (mv平均 _y >= 0 ? 1 : -1)) I ( 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 : -l)) / ( 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)) I ( s_dx * 4 )) * s_dx;
s_oy = ((mv平均 _y + ( s_dy*2 ) * (mv平均 _y >= 0 ? 1 : -1)) I ( 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; 若没有搜索到部分数据位于搜索窗外的 待匹配块, 执行步骤 1307;
步骤 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)) I ( s_dx * 4 )) * s_dx;
s_oy = ((mv平均 _y + ( s_dy*2 ) * (mv平均 _y >= 0 ? 1 : -1)) I ( 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)) I ( s_dx * 4 )) * s_dx; s_oy = ((mv平均 _y + ( s_dy*2 ) * (mv平均 _y >= 0 ? 1 : -1)) I ( 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、 光学存储器等)上实施的计算机程 序产品的形式。
本发明是参照根据本发明实施例的方法、 设备(系统)、 和计算机程序产品的流程图 和 /或方框图来描述的。 应理解可由计算机程序指令实现流程图和 /或方框图中的每一流 程和 /或方框、 以及流程图和 /或方框图中的流程和 /或方框的结合。 可提供这些计算机 程序指令到通用计算机、 专用计算机、 嵌入式处理机或其他可编程数据处理设备的处 理器 以产生一个机器, 使得通过计算机或其他可编程数据处理设备的 处理器执行的指令产生用 于实现在流程图一个流程或多个流程和 /或方框图一个方框或多个方框中指定的功能 装置。
这些计算机程序指令也可存储在能引导计算机 或其他可编程数据处理设备以特定方 式工作的计算机可读存储器中, 使得存储在该计算机可读存储器中的指令产生 包括指令装 置的制造品, 该指令装置实现在流程图一个流程或多个流程 和 /或方框图一个方框或多个 方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他 可编程数据处理设备上, 使得在计算机 或其他可编程设备上执行一系列操作步骤以产 生计算机实现的处理, 从而在计算机或其他 可编程设备上执行的指令提供用于实现在流程 图一个流程或多个流程和 /或方框图一个 方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例, 但本领域内的技术人员一旦得知了基本创造性 概 念, 则可对这些实施例作出另外的变更和修改。 所以, 所附权利要求意欲解释为包括优选 实施例以及落入本发明范围的所有变更和修改 。
显然, 本领域的技术人员可以对本发明进行各种改动 和变型而不脱离本发明的精神和 范围。这样,倘若本发明的这些修改和变型属 于本发明权利要求及其等同技术的范围之内, 则本发明也意图包含这些改动和变型在内。