一种改进的帧率转换算法及实现*
2021-01-14
运动估计(Motion Estimation)是帧率转换中运动补偿内插算法的关键环节,运动估计的精度直接决定内插帧的质量[1~4],目前三维递归搜索法(3-D Recursive Search,3DRS)是现有通用的运动估计实现方法。但是传统的三维递归搜索算法[5~7]存在以下不足:当视频序列存在场景切换时,相邻帧的相关性下降,这种内插帧的方法就会失效;当视频序列剧烈运动,某一宏块包含多个运动对象时,用此搜索算法估算出的宏块运动矢量不准确,从而导致内插出来的图像存在“块效应”;同时,传统的三维递归搜索算法采用固定位置邻近宏块运动矢量作为候选运动矢量,由于指定宏块的局限性,通常有很多候选运动矢量是相同的,而与当前块运动一致的运动矢量却未进入候选矢量中,从而影响算法收敛速度和运动估计效果。
针对传统三维递归搜索方法的不足,本算法先依据灰度直方图的二阶差分检测场景,将视频序列划分为多个场景片段进行场景内插帧,同时利用灰度直方图的一阶差分获得该场景内的帧序列运动强度,根据运动强度设置匹配块大小。在包含当前块的指定区域中,选取该区域中所有块作为当前块的时空预测块,采用三维递归搜索算法获得当前块所有时空预测块的运动矢量,选出互异的运动矢量作为当前块的候选运动矢量,依据本文给出的比较指标求出最优运动矢量。最后对最优运动矢量进行平滑滤波,补偿重构中间帧。
1 本文算法
1.1 整体结构框图
本算法包括4个主要模块:场景及运动强度检测、三维递归搜索获取运动矢量、候选运动矢量处理及平滑中值滤波,具体如下:
对输入的原始视频序列,首先计算灰度直方图的一阶及二阶差分[8],进行场景检测,获取帧间运动强度,根据运动强度的强弱设置匹配块(测量窗口)的尺寸。
每个候选运动矢量都与当前块对应一个匹配块,用设定的比较指标计算所有候选运动矢量对应的匹配块和当前块相似程度,选出相似度最高的运动矢量作为当前块的最优运动矢量。
对上述的最优运动矢量平滑中值滤波处理,插值补偿重构中间帧。
1.2 场景及运动强度检测
图1 算法结构框图
为了有效消除场景变换检测的误检,采用直方图的二阶差分检测场景变换,帧间直方图二阶差分计算公式为[8]
当直方图的二阶差分大于给定场景切换检测阀值时,即可认为发生了场景切换。
帧间运动强度对宏块大小选取有较大影响,当运动剧烈时,为了获取更多的运动细节,获得正确描述运动的估计矢量,需将该匹配块细分,依据运动强度强弱,设置匹配块(测量窗口)尺寸,设定宏块运动强度高低门限值和每个宏块的运动强度被定义成3种情形。
1.3 改进的帧率转换算法
三维递归搜索块匹配算法是结合空间和时间的递归算法,对于第t帧中像素点(x,y)所在的宏块,其时空相关预测候选运动矢量的集合C为[5-7]
式(4)中候选矢量对应的时空预测块,总是在当前块邻域中几个固定的位置,它们的运动矢量在很多情形是相同的,而当前块真正的运动矢量却没有被选为候选矢量,从而影响运动估计效果.适当扩大包含当前块的区域,从而扩大候选运动矢量的范围,去除候选矢量中相同的矢量,可避免大量候选矢量的重复而有效运动矢量被遗漏的问题,有效增加运动估计的效果,加快运动估计的收敛速度.
本算法根据运动强度对图像按块进行分割,指定包含当前块的一个含有个块的区域,按照从上到下、从左到右的顺序扫描排序,该区域中位于当前块之前的宏块为空间预测块,位于当前块之后的宏块为时间预测块,利用三维递归搜索算法求出这个预测块对应的时空运动矢量,将这个运动矢量构成的集合与式(4)作并集,再从此并集中挑选出互异的运动矢量,作为当前块的候选运动矢量集合
对当前块,每个候选运动矢量都对应一个匹配块,计算候选运动矢量匹配块与当前块灰度值绝对差和(sum of absolute differences),计算公式为
运动矢量的类型有:空间候选矢量、时间候选矢量、更新矢量,它们在候选矢量中的优先级是依次递减的.为了区别它们的优先级,在SAD值上增加一个类型惩罚因子[5-7],得到评价指标其计算公式为
1.4 平滑中值滤波
为了保持运动矢量的连续性,减小内插帧的块效应,需对求出的运动矢量进行平滑滤波.
计算当前块运动矢量与8邻域块运动矢量的距离来衡量它们的一致性。设为当前块坐标,是其运动矢量,为其周围8邻域块坐标,为其对应的运动矢量,计算衡量运动矢量的连续性指标计算公式为
若当前块为不连续的运动矢量,采用最小二乘法求其运动矢量,即求使下式
2 Matlab环境下的仿真实现
在Matlab软件的Simulink下进行仿真编程[9,10],采用视频标准化(CIF)格式4个标准测试序列bus、stefan、football、akiyo进行测试,图像格式为YUV4:2:0,帧率为30帧/s.实验从原始视频序列抽取奇数帧,裁剪成15帧/s,然后采用帧率转换算法重构出偶数帧恢复原始帧率,客观质量通过内插帧与原始帧的PSNR值来衡量。
为验证本算法的有效性,将本算法与全搜索FS(Full Search)、3DRS这2种算法应用于这4个标准测试序列,然后计算出每种算法的PSNR进行比较,如表1所示。
表1 测试序列内插帧PSNR(dB)
由表1可知,本算法获得了最优的内插帧PSNR值,优于传统的3DRS算法,而3DRS算法又优于全搜索法。
图2给出了3种算法对于akiyo序列内插帧后图像的主观质量比较,图2(b)FS算法出现了明显的宏块效应,图2(c)3RDS算法头发边缘重影现象较为明显,图2(d)本文算法对以上两种情形都有了较为明显的抑制效果。
图2 akiyo序列内插帧结果
3 结论
本文研究将场景检测引入帧率转换方法中,计算帧间灰度直方图的一阶和二阶差分检测场景变换及获取帧间运动强度.在同一场景根据运动强度设置匹配块大小;选取包含当前块的某个指定区域中所有块为当前块的时空预测块,采用三维递归搜索算法得到当前块的候选运动矢量,同时优化候选矢量的选择,依据给出的比较指标求出最优运动矢量,最后对运动矢量进行平滑滤波,重构内插帧.实验结果表明, 该算法收敛速度快,计算复杂度低,与传统的运动补偿插值算法相比,对内插图像的主观质量和客观质量都有所提高,易于硬件实现,具有很强的实用性.