预测编码算法 帧内预测编码的预测值 P 是在一定的预测模式下,通过邻近已编码的象素值推出的。H.264 中的帧内预测分为 4×4 子块和 16×16 子块以及对 8x8 子块的预测模式。在 x264 代码中,帧内预测模式的算法主要在 predict.c 中。其中亮度象素有三种方式:16x16 宏块预测模式,8x8 子块预测模式,4x4 子块预测模式;色度象素有只有 8x8 色度预测模式。 帧间预测编码主要包括运动估计,运动补偿等,其中运动估计尤为重要。在 x264 中帧间运动估计有三种算法可供选择 X264_ME_DIA,X264_ME_HEX,X264_ME_ESA。 X264_ME_ESA:全搜索法,也称为穷尽搜索法,是对搜索范围内所有可能的候选位置计算 SAD(i,j)值,从中找出最小 SAD(绝对差值和),其对应偏移量即为所求运动矢量。此算法虽计算量大,但最简单、可靠,找到的必为全局最优点。 X264_ME_DIA:菱形搜索,搜索模板的形状和大小不但影响整个算法的运行速度,而且也影响它的性能。块匹配的误差实际上是在搜索范围内建立了误差表面函数,全局最小点即对应着最佳运动矢量。基于这两点事实,菱形算法采用了两种搜索模板,分别是有 9个检测点的大模板 LDSP(Large Diamond Search Pattern)和有 5 个检测点的小模板SDSP(SmallDiamond Search Pattern),搜索时先用大模板计算,当最小块误差 MBD点出现在中心点处时,将大模板 LDSP 换为 SDSP,再进行匹配计算,这时 5 个点中的 MBD 即为最优匹配点。 X264_ME_HEX:六边形搜索,与菱形搜索相似,只是搜索形状为六边形。
|