具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图2示出了根据本发明的一个实施例的运动估计搜索方法的流程图。
如图2所示,根据本发明实施例的运动估计搜索方法可以包括以下步骤:步骤202,根据视频中图像的运动特点确定第一搜索模板;步骤204,在当前帧的参考帧中使用第一搜索模板进行匹配块搜索,根据搜索结果确定是否更换第一搜索模板,若不更换第一搜索模板,则继续使用第一搜索模板进行搜索;步骤206,在搜索出像素绝对差和最小的像素块在第一搜索模板的中心搜索点时,采用第二搜索模板进行搜索;步骤208,若搜索出像素绝对差和最小的像素块在第二搜索模板的中心搜索点,则位于第二搜索模板的中心搜索点的像素块为匹配块;根据匹配块确定当前帧中的当前块的运动矢量。
本实施例根据图像的运动特点来决定采用合适的搜索模板进行搜索,这样可以有针对性的进行匹配块搜索,从而提高搜索到匹配块的几率,减少搜索点,并且在搜索过程中,首先利用第一种模板进行搜索,在确定一个大致范围后,采用第二种模板进行搜索,在该大致范围中确定最终的匹配块,同样能够减少搜索点的数量,从而提高搜索速率。
在上述技术方案中,优选的,所述第一搜索模板的搜索范围大于所述第二搜索模板的搜索范围。为了快速找到一个大致范围,因此第一搜索模板的搜索范围大于第二搜索模板,在找到一个大致范围后,需要进行精确搜索,因此第二搜索模板的搜索范围被减小。
在上述技术方案中,优选的,所述视频中图像的运动特点为在水平方向上的运动幅度大于在垂直方向上的运动幅度,或者在垂直方向上的运动幅度大于在水平方向上的运动幅度;当在水平方向上的运动幅度大于在垂直方向上的运动幅度时,所述第一搜索模板为水平十字搜索模板,所述水平十字搜索模板在水平方向上的搜索点数大于在垂直方向上的搜索点数;当在垂直方向上的运动幅度大于在水平方向上的运动幅度时,所述第一搜索模板为垂直十字搜索模板,所述垂直十字搜索模板在垂直方向上的搜索点数大于在水平方向上的搜索点数。
在本实施例中,针对图像的运动特点(90%以上的运动主要在垂直方向上运动或在水平方向上运动)设计了两种搜索模板,一种是水平十字搜索模板,另一种是垂直十字搜索模板,从而加强对水平方向和垂直方向的搜索力度,因此在相同搜索精度的情况下,可以比其他搜索方法使用更少的搜索点,提高了搜索效率。
在上述技术方案中,优选的,在采用所述第二搜索模板进行搜索之前,还包括:在所述第一搜索模板为所述水平十字搜索模板时,若搜索出的像素绝对差和最小的像素块是所述水平十字搜索模板的水平方向上的一个搜索点,则以所述像素绝对差和最小的像素块作为所述水平十字搜索模板的中心搜索点继续搜索;若搜索出的像素绝对差和最小的像素块是所述水平十字搜索模板的垂直方向上的一个搜索点,则以所述像素绝对差和最小的像素块作为所述垂直十字搜索模板的中心搜索点进行搜索。
针对运动主要发生在水平上的图像,若采用水平十字搜索模板进行搜索,像素绝对差和最小的像素块在水平方向上,那么说明匹配的像素块已经接近了,为了进一步缩小搜索范围,继续以该水平十字搜索模板进行搜索,在当前像素块周围进行搜索,当发现像素绝对差和最小的像素块在水平十字搜索模板的中心搜索点时,发现匹配的像素块已经非常接近了,由于十字搜索模板本身的搜索范围较大,因此为了确认该像素块是否真的是匹配块,需要搜索范围较小的搜索模板来进行进一步判断。在当前搜索出的像素块附近进行再一次搜索,直到找到为止。这样的搜索过程,不仅可提高搜索速度,还可以提高搜索精度。
在上述技术方案中,优选的,在采用所述第二搜索模板进行搜索之前,还包括:
在所述第一搜索模板为所述垂直十字搜索模板时,若搜索出的像素绝对差和最小的像素块是所述垂直十字搜索模板的垂直方向上的一个搜索点,则以所述像素绝对差和最小的像素块为所述垂直十字搜索模板的中心搜索点继续搜索;若搜索出的像素绝对差和最小的像素块是所述垂直十字搜索模板的水平方向上的一个搜索点,则以像素绝对差和最小的像素块作为所述水平十字搜索模板的中心搜索点进行搜索。
在上述技术方案中,优选的,所述水平十字搜索模板和所述垂直十字搜索模板均包含7个搜索点,其中,所述水平十字搜索模板在除去中心搜索点之后,在水平方向上的搜索点数为4个,并以所述中心搜索点为对称中心进行对称分布,在垂直方向上的搜索点数为2个,并以所述中心搜索点为对称中心进行对称分布,所述垂直十字搜索模板在除去中心搜索点之后,在垂直方向上的搜索点数为4个,并以所述中心搜索点为对称中心进行对称分布,在水平方向上的搜索点数为2个,并以所述中心搜索点为对称中心进行对称分布。
在相关技术中,十字搜索模板至少需要9个搜索点,而本实施例中的十字模板仅需要7个点,从搜索点数上也能够说明本发明的运动估计搜索方法比以往的运动估计搜索方法的搜索点数都要少。并且为了区分水平十字搜索模板和垂直十字搜索模板,在水平方向上和垂直方向上设置的搜索点数是不相同的,这样也体现了图像运动特点。如果图像运动特点是在水平方向上的运动幅度较大,则增加在水平方向上的搜索点数,从而加强在水平方向上的搜索力度,同样,如果图像运动特点是在垂直方向上的运动幅度较大,则增加在垂直方向上的搜索点数,从而加强在垂直方向上的搜索力度。
在上述技术方案中,优选的,所述第一搜索模板的中心搜索点与在水平方向上的搜索点和在垂直方向上的搜索点相隔至少两个像素块,所述像素块是将所述参考帧按照预定格式进行分割得到的像素块。第一搜索模板的搜索范围比第二搜索模板的搜索范围大,除了体现在搜索点数上之外,还体现在搜索点的布局上,在考虑图像运动特点的同时,为了能够快速得到匹配块的大致范围,十字搜索模板在水平方向上的搜索点以及在垂直方向上的搜索点与中心搜索点并不是紧挨着的,至少隔了两个像素块。特别是由于增加了水平方向上的搜索点数(对于水平十字搜索模板来说),就更不需要将水平方向上的各个临近像素块都进行搜索,从而提高了搜索速度,也不会减低搜索精度。
如图3A所示,示出了一种水平十字搜索模板,中心搜索点为正方形,原点为其他搜索点,在水平方向上布置了4个搜索点,在垂直方向上布置了2个搜索点,并且均与中心搜索点间隔两个像素块。
应理解,水平方向上还可以设置6个或8个搜索点,与中心搜索点也可以间隔3或4个像素块,并不限于图中所示的模板,图中所示的模板是一种较优的实施方式。
如图3B所示,示出了一种垂直十字搜索模板,中心搜索点为正方形,原点为其他搜索点,在垂直方向上布置了4个搜索点,在水平方向上布置了2个搜索点,并且均与中心搜索点间隔两个像素块。
应理解,垂直方向上还可以设置6个或8个搜索点,与中心搜索点也可以间隔3或4个像素块,并不限于图中所示的模板,图中所示的模板是一种较优的实施方式。
在上述技术方案中,优选的,在所述第一搜索模板为水平十字搜索模板时,在水平方向上的4个搜索点分成两组,每组搜索点中的两个搜索点之间间隔零个像素块;在所述第一搜索模板为垂直十字搜索模板时,在垂直方向上的4个搜索点分成两组,每组搜索点中的两个搜索点之间间隔零个像素块。
在上述任一技术方案中,优选的,所述第二搜索模板为菱形模板,若搜索出像素绝对差和最小的像素块不在第二搜索模板的中心搜索点,则以像素绝对差和最小的像素块为该第二搜索模板的中心搜索点,继续进行搜索,直到搜索出像素绝对差和最小的像素块在该第二搜索模板的中心搜索点,此时位于所述第二搜索模板的中心搜索点的像素块为匹配块。
在上述技术方案中,优选的,所述菱形模板包括5个搜索点,如图3C所示,所述菱形模板的中心搜索点与在水平方向上的搜索点和在垂直方向上的搜索点之间相隔零个像素块。由于已经确定了匹配块的大致范围,因此搜索精度需要提高,所有使用了菱形模板,并且搜索点之间无需间隔像素块,因为菱形模板本身仅有5个搜索点,如果间隔像素块反而会影响搜索速度,难以很快查找到匹配块。
下面结合图4至图5D进一步说明根据本发明的运动估计搜索方法。
如图4所示,步骤402,大多数视频中水平方向运动的幅度比垂直方向运动的幅度要大,因此在以搜索窗口中心为起始点开始搜索时,首先使用水平十字搜索模板进行搜索,对与水平十字搜索模板中的7个搜索点对应的7个像素块分别计算其SAD(像素绝对差和)值。SAD值越小,说明是块失真度越小。
步骤404,判断所得SAD最小的像素块是否位于模板的中心搜索点,是则进入步骤412,否则进入步骤406。
步骤406,判断SAD值最小的像素块是否在水平十字搜索模板的水平方向上,如果是,则回到步骤402,选用水平模板以此点为中心搜索点继续搜索,否则进入步骤408。
步骤408,如果SAD最小点位于水平方向上,则,如果SAD最小点位于垂直方向上,则选用垂直模板进行搜索,搜索垂直十字搜索模板的7个搜索点。
步骤410,判断SAD值最小的像素块是否在垂直十字搜索模板的中心搜索点上,如果是,则进入步骤412,否则回到步骤406。
步骤412,以该点作为中心搜索点,采用菱形小模板进行搜索,利用菱形模板的5个搜索点进行搜索。
步骤414,判断SAD值最小的像素块是否在菱形小模板的中心搜索点上,如果是,则进入步骤416,所得到的SAD最小像素块即为最佳匹配块,得到运动矢量MV;否则,回到步骤412,选用菱形小模板以此点为中心搜索点继续搜索,直到SAD值最小的像素块在菱形小模板的中心搜索点上,此时所得到的SAD最小像素块即为最佳匹配块。
本发明的双模板十字菱形运动估计方法,在执行运动估计的处理过程中识别当前像素块的最佳运动矢量时,根据搜索结果来选择搜索模板,特别是增加了水平十字模板和垂直十字模板,加强了对水平方向和垂直方向的搜索力度,由于90%以上的运动发生在水平和垂直方向,因此在具有相同搜索精度的情况下采用本发明的运动估计方法,可以比其他运动估计方法搜索更少的搜索点,从而具有更快的搜索速度,提高了搜索效率,能更好的支持实时性强的视频编码。
接下来结合图示来详细说明上述运动估计搜索方法的搜索过程。
将图像帧按照32×32的标准进行划分,形成多个像素块。
如图5A所示,第一步对在参考帧中与水平十字搜索模板的7个搜索点对应的像素块进行SAD计算(圆形中带有数字n表示是第n步搜索,黑色圆形说明是SAD最小的像素块在模板的中心搜索点),在该图中,SAD最小的像素块位于模板的中心搜索点。
如图5B所示,表示第一步搜索得到的SAD最小点位于水平模板的最右边的点(+3,0),随即选用水平十字模板以此点为中心点继续进行搜索,即图中用数字2表示的搜索点。
如图5C所示,表示上一步中采用水平十字模板搜索得到的SAD最小的像素块位于模板的最下点(0,-2),随即选用垂直十字模板以此点为中心点进行搜索,即图中用数字3表示的搜索点。
如图5D所示,表示上一步中搜索得到的SAD最小的像素块为模板的中心搜索点,随即选用菱形小模板以此点为中心点进行搜索,即图中用数字4表示的搜索点,最后得到最佳匹配点和运动矢量MV。
本发明的运动估计搜索方法与以往的搜索方法相比最大的改进是搜索点数明显减少,搜索速度提高,并可以根据运动矢量的方向随时更换模板,并且峰值信噪比(峰值信噪比用于衡量运动估计和补偿后的图像与原图像之间的差别)基本上没有减少,甚至还有相应的提高。在以往的块匹配过程中,菱形模板一次搜索需要搜索9个点,十字模板也需要搜索9个点,而本发明的十字搜索模板只需要搜索7个点。
为了验证本发明的运动估计搜索方法,对多个的视频序列进行了实验,计算机CPU为Inter(R)Pentium(R)Dual,主频2.00GHz,内存2GB,在Matlab上进行的编程。在实验过程中,宏块的大小为16×16像素,搜索窗口的最大距离在水平和垂直方向上均为±7像素。
测试中用到了4个不同的视频序列,考虑到如今高清和超清视频的飞速发展,测试选取了测试序列:分辨率为3840×2160的ducks_take_off.cif和crowd_run.cif,分辨率为1280×720的Stockholm.cif和shields.cif。
本发明的运动估计搜索方法可以简称为DCDS,同现有的全搜索法FS、三步搜索法TSS、菱形搜索法DS、六边形搜索法HEXBS在两个方面进行了对比:
搜索点数,每一帧测试序列搜索到的最小块失真(MBD)点,即最佳匹配块所需要的搜索点数;
峰值信噪比PSNR,用以衡量运动估计和补偿后的图像和原图像的差别。
搜索点数的测试结果如下表1所示,由下表1可以看出:在所有的视频测试序列中,DCDS所用到的搜索点数是所有搜索算法中最少的,具体有:
FS>TSS>DS>HEXBS>DCDS。
与DS算法相比较,对于序列ducks_take_off、crowd_run、Stockholm和shields分别能节省21%、22%、28%、25%的搜索点。
表1
峰值信噪比PSNR的测试结果如从下表2所示,在表2中,相比于DS和HEXBS的PSNR有了一定程度的提高,相比于TSS的PSNR下降的很少。
表2
更进一步,对高分辨率的视频测试序列crowd_run_run3840×2160的前30帧的每一帧所用到的搜索点数和运动估计补偿后的峰值信噪比(PSNR)做了实验,其对比结果分别如图6A和图6B所示。
如图7所示,根据本发明的运动估计搜索装置可以包括像素划分模块702、起点预测模块704、模板搜索模块706、计算处理模块708、判断模块710和存储模块712。
其中,像素划分模块702用于将图像中的像素点划分为不同大小尺寸的块,例如8×8、8×16、16×8和16×16的块;起点预测模块704,用于确定搜索起点;模板搜索模块706,用于采用判断模块710所得到的搜索模板进行匹配块的搜索;存储模块712,用于预先存储水平十字型模板、垂直十字型模板、小菱形模板;计算处理模块708,用于计算搜索点的SAD值;判断模块710,用于判断该SAD最小的像素块所处的位置,确定采用所述存储模块712中的水平十字模板或垂直十字模板或小菱形模板进行搜索。
以上结合附图详细说明了根据本发明的运动估计搜索方法,在执行运动估计的处理过程中识别当前像素块的最佳运动矢量时,根据搜索结果来选择搜索模板,特别是增加了水平十字模板和垂直十字模板,加强了对水平方向和垂直方向的搜索力度,由于90%以上的运动发生在水平方向和垂直方向,因此在具有相同搜索精度的情况下采用本发明的运动估计搜索方法,可以比其他运动估计方法搜索更少的搜索点,在不影响图像质量的同时能够大大降低了计算复杂度,缩短了计算时间。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。