通过相邻块的预测得到mvp后,会以mvp为基础搜索最佳的匹配块,UMHexagonS就是h.264中用的一种搜索算法。
UMHexagonS是一种整像素搜索算法,也就是搜索过程中,参考图像一直都是原来的重构图像,并没有使用经过插值的图像进行搜索。
首先UMHexagonS会根据相关信息去得到比较有可能的mv,(然后用小菱形搜索到该区域去搜索该区域中的最佳mv,这种情况会在下面注明,至于如何才算最佳,请参照http://www.cnblogs.com/TaigaCon/p/3790218.html)
由于UMHexagonS是一种整像素搜索算法,所以会存在对分数的mv取整的情况,此时取整是指把mv对齐到某个像素上,消去分数部分
1.mvp取整后得到的mv(然后采用小菱形搜索)
2.原点,mv为0,即当前块的位置(然后采用小菱形搜索)
3.上层块mv,如果当前块为8x8,那么覆盖当前块的16x8块就是其上层块
运动搜索中,分块模式有7种
模式4的上层模式为2,模式7的上层模式为4
4.共同位置块mv,取上一参考图像与当前块相同位置的块的mv,然后取整
5.共同位置参考mv通过参考图像距离计算后得到的mv,然后取整
6.最后还采用一次小菱形搜索,主要为了对上面3、4、5预测后得到的最佳mv再采用一次小菱形搜索以得到该区域内最佳mv
小菱形搜索就是把mv的x,y分别+1,-1后得到的新mv,然后各自对比得到其中最优的mv
在做完上方的整像素mv预测后,需要计算该mv的匹配满意程度,以跳转做不同的后续搜索处理,该过程叫Early Termination。
Early Termination由于涉及到数学上的分析,所以会在后面的章节再细述。
Early Termination有两个个跳转出口,分别代表不同的匹配满意程度:
- Extended Hexagon-based Search(六边形模板反复搜索) 满意
- the third step with a small search pattern(小菱形模板反复搜索) 很满意
但是如果在不甚满意的情况下,Early Termination会不作跳转,直接执行下一步
经过上面的整像素mv预测后,得到其中最佳的整像素mv,如果该mv经Early Termination判断为不甚满意,会以该mv为中心,直接开始UMH搜索
1.Unsymmetrical-cross search(非对称十字搜索)
非对称十字搜索会先后对x轴与y轴进行搜索,y轴的搜索范围是x轴的一半,这是因为在一般的视频中,镜头的纵向移动距离会比较短,横向移动距离会比较长,而且比较常见。搜索时,横轴的搜索范围是search range,而纵轴会是它的一般。
2.Spiral search(螺旋搜索)
螺旋搜索采用的是full search(全搜索)的搜索方法,但是搜索步长只有24,相当于5x5的区域。而全搜索会对整个搜索范围进行搜索。
3.Uneven Multi-Hexagon-grid Search(不规律六边形模板搜索)
这种搜索方式是以当前mv指向的像素点为圆心,一圈一圈地往外搜索,一旦在某个圈内搜索到更佳的位置,立刻停止搜索,否则搜索完整个搜索范围
4.Extended Hexagon-based Search(六边形模板反复搜索)
不同于上一个搜索方式,这种搜索方式是以当前最佳mv指向的像素点为圆心,进行一次六边形模板搜索,一旦搜索到某个更佳的位置,则以此位置为圆心,重新进行一次六边形模板搜索。如果没有比圆心更佳的位置,则终止搜索。
5.the third step with a small search pattern(小菱形模板反复搜索)
类似Extended Hexagon-based Search(六边形模板反复搜索)的搜索方式,不过把六边形换成了菱形
以上可参照jvt-G016
JM8.6