我正在做一个视频作业,你在其中编写了一个著名的视频压缩算法,我选择了ARPS(自适应rood pattern search)。
现在,如果我理解正确的话,我必须首先将图像分成宏块,我已经这样做了,其次,通过取左边相邻宏块的运动矢量来计算pmv(预测运动矢量)(类型D,还有其他类型,你可以采用上面的或左上角等,根据一些论文,它们在质量上没有太大区别)。
最后使用pmv计算当前宏块的mv。
如果我理解正确,我必须使用其他算法(NTSS或FSS等)计算宏块的第一列,然后使用该列计算其余的宏块。
如果我的第一列没有移动,会发生什么?pmv=(0,0)和应用我从维基百科上理解的算法,结果所有的mvs都是(0,0) (也就是第一列没有change=nothing改变!)
我怀疑我对算法的理解是否正确,由于某些原因,许多论文都没有解决这些问题,所以你能解释一下吗?在那之后,我可以很好地实现它。
PS
这是一个大学作业,我在软件工程系(不是AI系),所以请不要使用AI算法。
发布于 2015-05-23 21:32:37
据我所知,ARPS算法的优点是基于预测运动矢量(mv)的自适应杆长。Rood被用作该方法的第一步,并且可以通过跳到正确的位置来戏剧性地减少过度估计。第二步是通过小菱形或其他你喜欢的固定图案来找出最佳的点。
因此,如果您预测为零mv,则只需应用精细估计(第二步)。
在实践中,零mv表示估计块的较小度量值(通过SAD或其他度量)。自然静态图像总是存在相邻样本(在时间平面上)的一些偏差,并且任何度量都会产生一定的值。这是你的实现的决定,用零移动或小运动矢量标记这个块。关于您的实现中的列。对于非第一行中的第一个块,您可以使用上述块的mv。减少了你的总计算量。
在任何情况下,你都可以通过应用运动补偿(运动估计的逆)来检查你的实现更改是好是坏,并通过计算PSNR度量来计算原始图片。
https://stackoverflow.com/questions/30198820
复制相似问题