发明内容
为了解决现有技术中在确定SKIP宏块时计算量非常大的问题,本发明实施例提供了一种SKIP宏块检测方法及装置。所述技术方案如下:
第一方面,提供了一种SKIP宏块检测方法,其特征在于,所述方法包括:
对在当前帧上选取的当前宏块进行运动搜索,在运动搜索的过程中获取所述当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD;
根据所述当前宏块所对应的量化参数以及不同量化参数与不同SAD经验阀值之间的对应关系,检测所述SAD是否小于所述当前宏块的量化参数所对应的SAD经验阀值;
若检测结果为所述SAD小于所述当前宏块的量化参数所对应的SAD经验阀值,则停止对所述当前宏块进行的运动搜索,并检测所述SAD是否小于二次阀值,所述二次阀值由所述当前宏块的量化参数所对应的SAD经验阀值的值确定;
若检测结果为所述SAD小于所述二次阀值,则判定所述当前宏块为SKIP宏块。
进一步的,在所述对在当前帧上选取的当前宏块进行运动搜索之前,还包括:
对于每一个量化参数,确定出预定数量的SKIP宏块;
获取每个SKIP宏块的量化参数以及所述SKIP宏块与最佳匹配块之间的SAD;
对于每一个量化参数,确定所述量化参数所对应的各个SAD,将所述各个SAD的平均值或中值作为所述量化参数所对应的SAD经验阀值。
进一步的,在检测所述SAD是否小于二次阀值之前,还包括:
将所述当前宏块的量化参数所对应的SAD经验阀值除以预定除数,得到误差商值;
判断所述误差商值是否大于指定阀值;
若判断结果为所述误差商值大于所述指定阀值,则将所述指定阀值确定为所述二次阀值;
若判断结果为所述误差商值小于所述指定阀值,则将所述误差商值确定为所述二次阀值。
进一步的,在所述检测所述SAD是否小于所述当前宏块的量化参数所对应的SAD经验阀值之后,还包括:
若检测结果为所述SAD大于所述当前宏块的量化参数所对应的SAD经验阀值,则继续搜索下一个与所述当前宏块匹配的匹配宏块。
进一步的,在所述检测所述SAD是否小于二次阀值之后,还包括:
若检测结果为所述SAD大于所述二次阀值,则对所述当前宏块进行离散余弦变换和量化;
当对所述当前宏块进行离散余弦变换和量化后得到的量化系数为零时,则判定所述当前宏块为SKIP宏块;
当对所述当前宏块进行离散余弦变换和量化后得到的量化系数不为零时,则继续搜索下一个与所述当前宏块匹配的匹配宏块。
进一步的,所述在运动搜索的过程中获取所述当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD,包括:
在运动搜索的过程中,获取所述当前宏块的当前起始搜索点;
将所述当前起始搜索点所对应的位于参考帧上的宏块确定为与所述当前宏块匹配的所述当前匹配宏块;
根据所述当前宏块上的像素值和所述当前匹配宏块上的像素值计算得到所述SAD。
第二方面,提供了一种SKIP宏块检测装置,其特征在于,所述装置包括:
第一获取模块,用于对在当前帧上选取的当前宏块进行运动搜索,在运动搜索的过程中获取所述当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD;
第一检测模块,用于根据所述当前宏块所对应的量化参数以及不同量化参数与不同SAD经验阀值之间的对应关系,检测所述SAD是否小于所述当前宏块的量化参数所对应的SAD经验阀值;
第二检测模块,用于在所述第一检测模块的检测结果为所述SAD小于所述当前宏块的量化参数所对应的SAD经验阀值时,停止对所述当前宏块进行的运动搜索,并检测所述SAD是否小于二次阀值,所述二次阀值由所述当前宏块的量化参数所对应的SAD经验阀值的值确定;
第一判定模块,用于在所述第二检测模块的检测结果为所述SAD小于所述二次阀值时,判定所述当前宏块为SKIP宏块。
进一步的,所述装置还包括:
第一确定模块,用于对于每一个量化参数,确定出预定数量的SKIP宏块;
第二获取模块,用于获取每个SKIP宏块的量化参数以及所述SKIP宏块与最佳匹配块之间的SAD;
第二确定模块,用于对于每一个量化参数,确定所述量化参数所对应的各个SAD,将所述各个SAD的平均值或中值确定为所述量化参数所对应的SAD经验阀值。
进一步的,所述装置还包括:
商值获取模块,用于将所述当前宏块的量化参数所对应的SAD经验阀值除以预定除数,得到误差商值;
判断模块,用于判断所述误差商值是否大于指定阀值;
第三确定模块,用于在所述判断模块的判断结果为所述误差商值大于所述指定阀值时,将所述指定阀值确定为所述二次阀值;
第四确定模块,用于在所述判断模块的判断结果为所述误差商值小于所述指定阀值时,将所述误差商值确定为所述二次阀值。
进一步的,所述装置还包括:
第一搜索模块,用于在所述第一检测模块的检测结果为所述SAD大于所述当前宏块的量化参数所对应的SAD经验阀值时,继续搜索下一个与所述当前宏块匹配的匹配宏块。
进一步的,所述装置还包括:
量化模块,用于在所述第二检测模块的检测结果为所述SAD大于所述二次阀值时,对所述当前宏块进行离散余弦变换和量化;
第二判定模块,用于当对所述当前宏块进行离散余弦变换和量化后得到的量化系数为零时,则判定所述当前宏块为SKIP宏块;
第二搜索模块,用于当对所述当前宏块进行离散余弦变换和量化后得到的量化系数不为零时,则继续搜索下一个与所述当前宏块匹配的匹配宏块。
进一步的,所述第一获取模块,包括:
获取单元,用于在运动搜索的过程中,获取所述当前宏块的当前起始搜索点;
确定单元,用于将获取单元获取的所述当前起始搜索点所对应的位于参考帧上的宏块确定为与所述当前宏块匹配的所述当前匹配宏块;
计算单元,用于根据所述当前宏块上的像素值和所述当前匹配宏块上的像素值计算得到所述SAD。
本发明实施例提供的技术方案带来的有益效果是:
通过仅一次或少量几次计算出的当前宏块的SAD,当该SAD小于该当前宏块的量化参数所对应的SAD经验阀值且也小于二次阀值时,则可以确定该当前宏块为SKIP宏块;解决了现有技术中在确定SKIP宏块时计算量非常大的问题;由于可能仅需要一次SAD的计算以及二次阀值的判断就可以判别出当前宏块是否为SKIP宏块,因此在检测SKIP宏块的过程中,达到了降低计算量的效果。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
通常来讲,SKIP宏块为无像素残差、无运动矢量残差(即MVD=0)的宏块,尤其在静止的场景或运动背景不变的情况下,SKIP宏块所占的比例非常大,而在编码的过程中,为了能够较大程度上降低码率,如果得知宏块为SKIP宏块,则不需要对SKIP宏块进行DCT变换或量化处理,而仅对SKIP宏块进行标记,在解码时,直接根据该标记从参考帧中复制相应的宏块即可。由此可知,对SKIP宏块的判断在实现提高编码效果以及降低码率时是非常重要的,本发明则提供一种可以快速判定SKIP宏块的方法,具体请参见图1、图2A至图2D中的描述。
请参见图1所示,其示出了本发明一个实施例中提供的SKIP宏块检测方法的方法流程图。该SKIP宏块检测方法可以包括:
101,对在当前帧上选取的当前宏块进行运动搜索,在运动搜索的过程中获取当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD;
102,根据当前宏块所对应的量化参数以及不同量化参数与不同SAD经验阀值之间的对应关系,检测SAD是否小于当前宏块的量化参数所对应的SAD经验阀值;
103,若检测结果为SAD小于当前宏块的量化参数所对应的SAD经验阀值,则停止对当前宏块进行的运动搜索,并检测SAD是否小于二次阀值,二次阀值由当前宏块的量化参数所对应的SAD经验阀值的值确定;
104,若检测结果为SAD小于二次阀值,则判定当前宏块为SKIP宏块。
综上所述,本发明实施例中提供的SKIP宏块检测方法,通过仅一次或少量几次计算出的当前宏块的SAD,当该SAD小于该当前宏块的量化参数所对应的SAD经验阀值且也小于二次阀值时,则可以确定该当前宏块为SKIP宏块;解决了有技术中在确定SKIP宏块时计算量非常大的问题;由于可能仅需要一次SAD的计算以及二次阀值的判断就可以判别出当前宏块是否为SKIP宏块,因此在检测SKIP宏块的过程中,达到了降低计算量的效果。
请参见图2A所示,其示出了本发明另一个实施例中提供的SKIP宏块检测方法的方法流程图。该SKIP宏块检测方法可以包括:
201,对在当前帧上选取的当前宏块进行运动搜索,在运动搜索的过程中获取当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD;
对当前帧上选取的当前宏块进行运动搜索时,可以在参考帧上查找到一个与该当前宏块匹配的最佳匹配宏块,在查找到最佳匹配宏块的过程中通常需要多次定位搜索点,每次定位的搜索点均对应一个宏块,这些宏块均可以被认定为该当前宏块的匹配宏块,而最后定位的搜索点所对应的宏块则为当前宏块所对应的最佳匹配宏块。
在实际确定宏块是否为SKIP宏块时,为了减少计算量,在运动搜索的过程中,当第一次获取到当前宏块的匹配宏块时,则计算当前宏块与该匹配宏块之间的SAD,这样先根据SAD进行初步判断。在实际应用中,获取当前宏块与匹配宏块之间的SAD的步骤请参见图2B所示。
图2B为本发明部分实施例中提供的获取当前宏块与搜索到的当前匹配宏块之间的SAD过程的流程图,该过程具体可以包括:
201a,在运动搜索的过程中,获取当前宏块的当前起始搜索点;
在进行运动搜索时,首先确定当前宏块的起始搜索点,即当前起始搜索点。
201b,将当前起始搜索点所对应的位于参考帧上的宏块确定为与当前宏块匹配的当前匹配宏块;
201c,根据当前宏块上的像素值和当前匹配宏块上的像素值计算得到SAD。
SAD(Sum of Absolute Difference)即两个宏块之间的像素绝对误差和,计算两个宏块之间的SAD的过程通常可以包括:分别对应选取两个宏块在同一位置处像素的像素值,将同一位置的两个像素值相减后取绝对值,将所有的绝对值相加得到两个宏块的像素绝对误差和。举例来讲,如果该宏块为16像素*16像素的宏块,则得到的当前匹配宏块也应当为16像素*16像素的宏块,将当前宏块与当前匹配宏块上的同一位置处的像素值相减,得到16*16个相减后的差值,将所有差值取绝对值,将取绝对值之后的值相加,得到SAD。
为了便于对获取SAD的说明,以下选取简单的4像素*4像素的宏块进行举例说明,其中当前宏块的4*4的像素矩阵为:
对应的当前匹配宏块的4*4的像素矩阵为:
则将相同位置对应的像素值相减得到的差值矩阵为:
将差值矩阵中的每个差值取绝对值,得到矩阵为:
将该矩阵中的所有数值相加,得到SAD的值为:244。
以上仅是进行了一个简单的示意性举例,在实际应用中,在判断SKIP宏块时,当前宏块通常是16像素*16像素的宏块,此时则根据上述相同的计算思路获取当前宏块与当前匹配宏块之间的SAD值。
202,根据当前宏块所对应的量化参数以及不同量化参数与不同SAD经验阀值之间的对应关系,检测SAD是否小于当前宏块的量化参数所对应的SAD经验阀值;
通常在编码的过程中,编码器中的码率控制器或码率控制器单元可以为每个宏块确定一个量化参数。
在实际应用中,可以通过大量的已经判定好的SKIP宏块以及这些宏块的量化参数、SAD进行统计,得到每个量化参数所对应的SAD经验阀值,具体的实现可以通过图2C中所描述的过程获得。
请参见图2C所示,其示出了本发明部分实施例中提供的获取量化参数与SAD经验阀值的过程的流程图。该过程可以包括:
202a,对于每一个量化参数,确定出预定数量的SKIP宏块;
由于量化参数通常可以取值为0-51,为了能够保证任何宏块所对应的SAD均可以通过该宏块的量化参数所对应的SAD经验阀值进行初步判断,因此在选择SKIP宏块时,选取的SKIP宏块的量化参数必须覆盖所有量化参数。也就是说,为了保证所有的量化参数均有对应的SAD经验阀值,在选取大量SKIP宏块时,通常会选取对应于所有量化参数的SKIP宏块,且对应于每个量化参数的SKIP宏块的数量也通常相等,比如选取10000个量化参数为1的SKIP宏块,选取10000个量化参数为2的SKIP宏块,选取10000个量化参数为3的SKIP宏块,依此类推。当然,在实际应用中,对应于每个量化参数的SKIP宏块的数量也可以不完全相等,但每个量化参数的SKIP宏块的数量差别不大。
这里预定数量通常会取得比较大,比如数千、数万,甚至上亿等,且预定数量越大,最后根据SAD经验阀值确定的SKIP宏块的准确度也就越高。
这些确定出的SKIP宏块通常是根据现有的方法确定的,比如确定宏块的MVD为零之后,再对该宏块进行DCT变换和量化,得到的量化系数为0时,将该宏块确定为SKIP宏块。
202b,获取每个SKIP宏块的量化参数以及SKIP宏块与最佳匹配块之间的SAD;
由于不同的SKIP宏块的量化参数可能不同,且每个SKIP宏块的SAD也可能不同,此时则需要通过大量统计找到量化参数与SAD之间的规律。
202c,对于每一个量化参数,确定量化参数所对应的各个SAD,将各个SAD的平均值或中值作为量化参数所对应的SAD经验阀值。
对于同一个量化参数来讲,不同的SKIP宏块均对应于自己的SAD,因此当选取的SKIP宏块比较多时,一个量化参数会对应大量的SAD,此时则通常对这些SAD取平均值或中值,并将获取的平均值和中值作为该量化参数所对应的SAD经验阀值。
举例来讲,当一个量化参数所对应的5个SAD分别为:210、460、375、265、579时,则这些SAD的平均值为:(210+460+375+265+579)/5=377.8,在实际应用中,为了减少存储的比特数,可以对获取的平均值四舍五入后取整,即378;对应的,在取这些SAD的中值时,可以对这些SAD排序:210、265、375、460、579,然后选取中间的值375作为中值。需要补充说明的是,当排列后的SAD的个数为奇数时,选取中间的值作为中值;当排列后的SAD的个数为偶数时,可以选择中间两个值中的一个值作为中值。
需要说明的是,这里仅是进行了一个简单的示意性举例,在实际应用中,当选取的预定数量非常多时,每个量化参数所对应的SAD也会非常多,此时对这些SAD取平均值或者取中值,通常得到的平均值和中值的差别并不太大。
在另一种可能的实现方式中,由于在统计时一个量化参数会对应大量的SAD,此时还可以从这些SAD选取一个最小的SAD,将大于该最小的SAD一定阈值的值作为该量化参数所对应的SAD经验阀值,这里的阈值可以根据实际情况设置。举例来讲,当一个量化参数所对应的6个SAD分别为:356、580、435、373、265、245,阈值设定为100时,则选取最小的SAD为245,最后得到的SAD经验阀值为:245+100=345。
根据大量实验总结出的量化参数与SAD经验阀值的对应关系(也可称为量化参数的SAD经验阀值列表)为:
其中,QP为量化参数,skip_cost[60]为统计得到的60个与量化参数对应的SAD经验阀值。每一个量化参数对应一个SAD经验阀值,比如,当QP为20时,对应的SAD经验阀值为720,当QP为35时,对应的SAD经验阀值为2030。
值得注意的是,这里通过大量的SKIP宏块确定出的每个量化参数与SAD经验阀值的对应关系可以在后期检测SKIP宏块的过程中重复使用,也即在检测当前宏块是否为SKIP宏块时,可以直接使用上述统计出的量化参数的SAD经验阀值列表。
203,若检测结果为SAD小于当前宏块的量化参数所对应的SAD经验阀值,则停止对当前宏块进行的运动搜索;
若检测结果为SAD小于当前宏块的量化参数所对应的SAD经验阀值,则表明该当前宏块为SKIP宏块的几率比较大,此时则停止对当前宏块的运动搜索,即停止继续搜索下一个与该当前宏块匹配的匹配宏块。
为了能够更正确的判断SKIP宏块,这里选择将判断的条件范围缩小,即将目前得到的SAD与一个比SAD经验阀值更小的值进行比较,这里将更小的值称为二次阀值。获取二次阀值的过程可以参见如下步骤204至207。
204,将当前宏块的量化参数所对应的SAD经验阀值除以预定除数,得到误差商值;
205,判断误差商值是否大于指定阀值;
206,若判断结果为误差商值大于指定阀值,则将指定阀值确定为二次阀值;
以预定除数为2、指定阀值为800为例,当(skip_cost[QP]/2)>800时,第二阀值即为800。
207,若判断结果为误差商值小于指定阀值,则将误差商值确定为二次阀值;
仍以预定除数为2、指定阀值为800为例,当(skip_cost[QP]/2)<800时,第二阀值即为skip_cost[QP]/2,也即将门限值缩小了一半。
需要说明的是,这里的预定除数以及指定阀值可以根据实际情况进行设定,由于预定除数以及指定阀值可以作为确定二次阀值的因素,当二次阀值确定的范围过小,且当前宏块的SAD落在该二次阀值确定的范围,则表明该当前宏块为SKIP宏块的可能性越大,也就是说二次阀值确定的范围越小,对于SKIP宏块的判定越准确;但由于二次阀值确定的范围缩小,就会导致SAD经验阀值确定的范围以内二次阀值确定的范围以外的范围无法用来判定当前宏块是否为SKIP宏块,因此还需要后续的对该当前宏块进行DCT变化和量化才能判断,也就是说二次阀值确定的范围越大,计算量也就越大。而通过大量统计表明,当预定除数选为2,且指定阀值选为800时,在保证对SKIP宏块的判定准确度的情况下尽可能的降低了计算量。
208,检测SAD是否小于二次阀值;
209,若检测结果为SAD小于二次阀值,则判定当前宏块为SKIP宏块;
举例来讲,请参见图2D所示,其示出了本发明部分实施例中提供的由SAD经验阀值所确定的两个判定范围的示意图,其中将小于某一量化参数所对应的SAD经验阀值的SAD所组成的集合确定为第一判定范围,将小于由该SAD经验阀值确定的二次阀值的SAD所组成的集合确定为第二判定范围,由上面的判断可知,若当前宏块的SAD位于第一判定范围时,则可以进一步判断该当前宏块的SAD是否位于第二判定范围,如果当前宏块的SAD位于第二判定范围,则可以直接判定该当前宏块为SKIP宏块;若当前宏块位于第一判定范围时,则可以进一步判断该当前宏块的SAD是否位于第二判定范围,如果当前宏块的SAD不位于第二判定范围时,则执行步骤210进一步判定。
210,若检测结果为SAD大于二次阀值,则对当前宏块进行离散余弦变换和量化;
211,当对当前宏块进行离散余弦变换和量化后得到的量化系数为零时,则判定当前宏块为SKIP宏块;
212,当对当前宏块进行离散余弦变换和量化后得到的量化系数不为零时,则继续搜索下一个与当前宏块匹配的匹配宏块;
213,若检测结果为SAD大于当前宏块的量化参数所对应的SAD经验阀值,则继续搜索下一个与当前宏块匹配的匹配宏块。
仍旧参见图2D所示,若检测结果为SAD大于当前宏块的量化参数所对应的SAD经验阀值,也即当前宏块的SAD不位于第一判定范围,则继续搜索下一个与当前宏块匹配的匹配宏块。
由上可知,在运动搜索的过程中,第一次获取匹配宏块之后,如果该匹配宏块与当前宏块的SAD小于该当前宏块的量化参数所对应的SAD经验阀值,且又小于二次阀值,则可以直接判定该当前宏块为SKIP宏块,而不需要繁琐的DCT变换和量化,大大降低了计算量,且即使不能根据第一次获取匹配宏块确定当前宏块为SKIP宏块,通常仅需要少量的几步搜索就可以确定,在减少搜索步骤的同时也极大的降低了计算量。
综上所述,本发明实施例中提供的SKIP宏块检测方法,通过仅一次或少量几次计算出的当前宏块的SAD,当该SAD小于该当前宏块的量化参数所对应的SAD经验阀值且也小于二次阀值时,则可以确定该当前宏块为SKIP宏块;解决了有技术中在确定SKIP宏块时计算量非常大的问题;由于可能仅需要一次SAD的计算以及二次阀值的判断就可以判别出当前宏块是否为SKIP宏块,因此在检测SKIP宏块的过程中,达到了降低计算量的效果。
以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
请参见图3所示,其示出了本发明一个实施例中提供的SKIP宏块检测装置的结构示意图。该SKIP宏块检测装置可以包括:第一获取模块302、第一检测模块304、第二检测模块306和第一判定模块308。
第一获取模块302,可以用于对在当前帧上选取的当前宏块进行运动搜索,在运动搜索的过程中获取当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD;
第一检测模块304,可以用于根据当前宏块所对应的量化参数以及不同量化参数与不同SAD经验阀值之间的对应关系,检测SAD是否小于当前宏块的量化参数所对应的SAD经验阀值;
第二检测模块306,可以用于在第一检测模块304的检测结果为SAD小于当前宏块的量化参数所对应的SAD经验阀值时,停止对当前宏块进行的运动搜索,并检测SAD是否小于二次阀值,二次阀值由当前宏块的量化参数所对应的SAD经验阀值的值确定;
第一判定模块308,可以用于在第二检测模块306的检测结果为SAD小于二次阀值时,判定当前宏块为SKIP宏块。
综上所述,本发明实施例中提供的SKIP宏块检测装置,通过仅一次或少量几次计算出的当前宏块的SAD,当该SAD小于该当前宏块的量化参数所对应的SAD经验阀值且也小于二次阀值时,则可以确定该当前宏块为SKIP宏块;解决了有技术中在确定SKIP宏块时计算量非常大的问题;由于可能仅需要一次SAD的计算以及二次阀值的判断就可以判别出当前宏块是否为SKIP宏块,因此在检测SKIP宏块的过程中,达到了降低计算量的效果。
请参见图4所示,其示出了本发明一个实施例中提供的SKIP宏块检测装置的结构示意图。该SKIP宏块检测装置可以包括:第一获取模块402、第一检测模块404、第二检测模块406和第一判定模块408。
第一获取模块402,可以用于对在当前帧上选取的当前宏块进行运动搜索,在运动搜索的过程中获取当前宏块与搜索到的当前匹配宏块之间的像素绝对误差和SAD;
第一检测模块404,可以用于根据当前宏块所对应的量化参数以及不同量化参数与不同SAD经验阀值之间的对应关系,检测SAD是否小于当前宏块的量化参数所对应的SAD经验阀值;
第二检测模块406,可以用于在第一检测模块404的检测结果为SAD小于当前宏块的量化参数所对应的SAD经验阀值时,停止对当前宏块进行的运动搜索,并检测SAD是否小于二次阀值,二次阀值由当前宏块的量化参数所对应的SAD经验阀值的值确定;
第一判定模块408,可以用于在第二检测模块406的检测结果为SAD小于二次阀值时,判定当前宏块为SKIP宏块。
在图4所示实施例中的第一种可能的实现方式中,该SKIP宏块检测装置还可以包括:第一确定模块410、第二获取模块412和第二确定模块414。
第一确定模块410,可以用于对于每一个量化参数,确定出预定数量的SKIP宏块;
第二获取模块412,可以用于获取每个SKIP宏块的量化参数以及SKIP宏块与最佳匹配块之间的SAD;
第二确定模块414,可以用于对于每一个量化参数,确定量化参数所对应的各个SAD,将各个SAD的平均值或中值确定为量化参数所对应的SAD经验阀值。
在图4所示实施例中的第二种可能的实现方式中,该SKIP宏块检测装置还可以包括:商值获取模块416、判断模块418、第三确定模块420和第四确定模块422。
商值获取模块416,可以用于将当前宏块的量化参数所对应的SAD经验阀值除以预定除数,得到误差商值;
判断模块418,可以用于判断商值获取模块416获取到的误差商值是否大于指定阀值;
第三确定模块420,可以用于在判断模块418的判断结果为误差商值大于指定阀值时,将指定阀值确定为二次阀值;
第四确定模块422,可以用于在判断模块418的判断结果为误差商值小于指定阀值时,将误差商值确定为二次阀值。
在图4所示实施例中的第三种可能的实现方式中,该SKIP宏块检测装置还可以包括:搜索模块424。
搜索模块424,可以用于在第一检测模块404的检测结果为SAD大于当前宏块的量化参数所对应的SAD经验阀值时,继续搜索下一个与当前宏块匹配的匹配宏块。
在图4所示实施例中的第四种可能的实现方式中,该SKIP宏块检测装置还可以包括:量化模块426和第二判定模块428。
量化模块426,可以用于在第二检测模块406的检测结果为SAD大于二次阀值时,对当前宏块进行离散余弦变换和量化;
第二判定模块428,可以用于当对当前宏块进行离散余弦变换和量化后得到的量化系数为零时,则判定当前宏块为SKIP宏块;
搜索模块424,还可以用于当对当前宏块进行离散余弦变换和量化后得到的量化系数不为零时,则继续搜索下一个与当前宏块匹配的匹配宏块。
在图4所示实施例中的第五种可能的实现方式中,该第一获取模块402可以包括:获取单元402a、确定单元402b和计算单元402c。
获取单元402a,可以用于在运动搜索的过程中,获取当前宏块的当前起始搜索点;
确定单元402b,可以用于将获取单元402a获取的当前起始搜索点所对应的位于参考帧上的宏块确定为与当前宏块匹配的当前匹配宏块;
计算单元402c,可以用于根据当前宏块上的像素值和当前匹配宏块上的像素值计算得到SAD。
综上所述,本发明实施例中提供的SKIP宏块检测装置,通过仅一次或少量几次计算出的当前宏块的SAD,当该SAD小于该当前宏块的量化参数所对应的SAD经验阀值且也小于二次阀值时,则可以确定该当前宏块为SKIP宏块;解决了有技术中在确定SKIP宏块时计算量非常大的问题;由于可能仅需要一次SAD的计算以及二次阀值的判断就可以判别出当前宏块是否为SKIP宏块,因此在检测SKIP宏块的过程中,达到了降低计算量的效果。
需要说明的是:上述实施例中提供的SKIP宏块检测装置在对SKIP宏块进行快速检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将编码器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SKIP宏块检测装置与SKIP宏块检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。