CN102833535B - 一种基于宏块统计信息的参考帧筛选方法、装置 - Google Patents

一种基于宏块统计信息的参考帧筛选方法、装置 Download PDF

Info

Publication number
CN102833535B
CN102833535B CN201210226130.8A CN201210226130A CN102833535B CN 102833535 B CN102833535 B CN 102833535B CN 201210226130 A CN201210226130 A CN 201210226130A CN 102833535 B CN102833535 B CN 102833535B
Authority
CN
China
Prior art keywords
frame
frames
current encoded
coded
sequence number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210226130.8A
Other languages
English (en)
Other versions
CN102833535A (zh
Inventor
舒倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Yunzhou Multimedia Technology Co., Ltd.
Original Assignee
SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY Co Ltd filed Critical SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY Co Ltd
Priority to CN201210226130.8A priority Critical patent/CN102833535B/zh
Publication of CN102833535A publication Critical patent/CN102833535A/zh
Application granted granted Critical
Publication of CN102833535B publication Critical patent/CN102833535B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公布了一种基于宏块统计信息的参考帧筛选方法,该方法包括:判断第一当前编码帧是否为I帧,若第一当前编码帧不是I帧,则将所述的第一当前编码帧编码;获取编码后的第一当前编码帧中,I宏块及广义I宏块的第一数量;判断所述第一数量是否小于第一参数,若第一数量不小于第一参数,则根据预置视频序列的编码结构,进行参考帧的筛选;然后判断是否所述视频序列中所有的帧都已经编码;若否,则继续判断第一当前编码帧是否为I帧;若是则结束。本发明还公布了一种基于宏块统计信息的参考帧筛选装置。通过本发明提出的方法和装置,可以利用各帧宏块的统计信息的不同情况,对参考帧进行快速筛选,实现参考列表的自适应调整。

Description

一种基于宏块统计信息的参考帧筛选方法、装置
技术领域
本发明涉及视频编解码领域,尤其涉及一种基于宏块统计信息的参考帧筛选方法、装置。
背景技术
在视频编码过程中,帧间预测根据预测方向的不同分为:P帧预测和B帧预测。目前主流的P帧预测方法采用前向已编码的帧作为当前编码帧的参考帧,利用两者之间的相似性,压缩当前编码帧的信息;而B帧则采用了双向预测技术,从而可以极大地消除帧间信息的冗余度,从而使其具有最高的压缩率。无论是P帧还是B帧都需要在由已编码的帧构成的参考列表内,进行运动搜索,寻找最优匹配。编码参数中设置的搜索参考帧越多,则编码器率失真性能越好,但同时参考帧越多,编码器消耗在运动搜索上时间也会急剧增长。所以,一般编码器都会设置一个在率失真性能和计算量两者之间达到相对较优的数量,作为编码器的默认参考帧数。然而,这种常规的处理方法,使得编码器无法根据视频序列的特点调整参考列表内的参考帧数。这样,一方面会产生编码器计算量无谓消耗的问题,另一方面编码器在率失真性能提升上也微乎其微。这种现象在,频繁场景切换的电影预告片、广告、全局运动等场景下,尤为明显。
因此本发明提出一种基于宏块统计信息的参考帧筛选策略,通过各帧宏块的统计信息的不同情况,对参考帧进行快速筛选,实现参考列表的自适应调整。本发明可在率失真性能基本不变的情况下,提升编码速度,使编码器在率失真性能和计算量两者之间达到进一步的优化实现。
备注:率失真性能基本不变,是指在相同码率下,两者的率失真性能差值的绝对值小于0.1dB。
发明内容
本发明实施例的目的在于提出一种基于宏块统计信息的参考帧筛选方法、装置。
所述方法包括:
判断第一当前编码帧是否为I帧,
若第一当前编码帧不是I帧,则将所述的第一当前编码帧编码;
获取编码后的第一当前编码帧中,I宏块及广义I宏块的第一数量;
判断所述第一数量是否小于第一参数,若第一数量不小于第一参数,则根据预置视频序列的编码结构,进行参考帧的筛选;
然后判断是否所述视频序列中所有的帧都已经编码;若否,则继续判断第一当前编码帧是否为I帧;若是则结束。
所述装置包括:第一判断单元、第一执行单元、第二判断单元、第二执行单元;第三判断单元;第三执行单元;
第一判断单元,用于判断第一当前编码帧是否为I帧;
第一执行单元,用于当判断出第一当前编码帧不是I帧,则将所述的第一当前编码帧编码;获取编码后的第一当前编码帧中,I宏块及广义I宏块的第一数量;
第二判断单元,用于判断所述第一数量是否小于第一参数;
第二执行单元,用于当判断出第一数量不小于第一参数,则根据预置视频序列的编码结构,进行参考帧的筛选;
第三判断单元,用于判断是否视频序列中所有的帧都已经编码;
第三执行单元,用于当判断所述视频序列中的帧没有全部编码,则第一判断单元重新进行判断;当判断所述视频序列中帧全部编码时则结束。
本发明提出一种基于宏块统计信息的参考帧筛选策略,通过各帧宏块的统计信息的不同情况,对参考帧进行快速筛选,实现了参考列表的自适应调整。并且本发明可在率失真性能基本不变的情况下,提升编码速度,使编码器在率失真性能和计算量两者之间达到进一步的优化实现。
附图说明
图1是本发明实施例1基于宏块统计信息的参考帧筛选方法的流程图;
图2是本发明实施例1步骤140中情况1的方法流程图;
图3是本发明实施例1步骤140中情况2的方法流程图;
图4是本发明实施例1步骤140中情况3的方法流程图;
图5是本发明实施例2基于宏块统计信息的参考帧筛选装置结构图;
图6是本发明实施例2中第一执行单元的结构图;
图7是本发明实施例2中第二执行单元的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
实施例一
参见图1,本发明提供了一种基于宏块统计信息的参考帧筛选方法,该方法可以为:
步骤100:初始化,令t=1,即令第一当前编码帧为第一个编码帧。
本发明中,t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;framet为第一当前编码帧。
步骤110:判断第一当前编码帧是否为I帧,即判断framet是否I帧;若否,则执行步骤120;若是则执行步骤160。
步骤120:首先,将所述第一当前编码帧编码;然后,获取编码后的第一当前编码帧中的I宏块及广义I宏块的第一数量。
该步骤获取第一数量的方法可以为:
设置n=1;
判断是否(Mbt,n∈framet)且(Mbt,n为I宏块或者Mbt,n至少包含一个为帧内预测模式的子块),若是则n=n+1;若否,则n=n+1。
判断是否n>mbwidth*mbheight,若是,则执行步骤130;若否,则重新进行上述两个判断,即重新进行“判断(Mbt,n∈framet)且(Mbt,n为I宏块或者Mbt,n至少包含一个为帧内预测模式的子块)”及“判断是否n>mbwidth*mbheight”。
本发明中,表示framet帧中I宏块及广义I宏块的第一数量;Mbt,n表示第t帧编码帧的第n个宏块;n表示宏块Mbt,n在framet中的位置序号;当块的大小为16x16,则称为宏块;当宏块进一步划分为大小为n1xn2的块(n1≤16或者n2≤16,但两者不能同时等于16)则这些尺寸小一些的块称为子块;I宏块指采用帧内预测模式且块的大小为16x16的块;mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数;
步骤130:判断所述第一数量是否小于第一参数,
即判断是否第一参数即N*mbwidth*mbheight,
若否则执行步骤140,若是则执行步骤150;
其中,表示framet帧中I宏块及广义I宏块的第一数量,mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数;其中N的取值范围为0至1,优选的N可取值0.9。
步骤140:首先根据视频序列的编码结构,进行参考帧的筛选,然后执行步骤170。
步骤150:首先获取第二当前编码帧,然后设置第二当前编码帧为第一当前编码帧,然后执行步骤170。
“获取第二当前编码帧”具体为:
判断min(FameNum(framem)|framem未编码)是否存在,若不存在则结束(完成所有的处理步骤);若存在,则将min(FrameNum(framem)|framem未编码)用FrameNum(framem_i)表示,即:
FrameNum(framem_i)=min(FrameNum(framem)|framem未编码)。此时,framem_i就表示所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧。
“设置第二当前编码帧为第一当前编码帧”具体为:framet=framem_i
其中,framem表示第m帧编码帧,即可以是所述任一编码帧;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m表示编码帧framem在所有编码帧中的时间序号,简称m为编码帧framem的时间序号;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;FameNum(framem)表示framem的编码序号;FrameNum(framem_i)表示framem_i的编码序号;min(变量|条件)表示对满足条件的所有变量求最小值。
本发明中设置第一当前编码帧framet、第二当前编码帧framem_i是为了后续步骤中表述方便。其中第一当前编码帧就是本领域技术人员公知的当前编码帧。因第一当前编码帧framet编码后,就不属于视频序列中的未编码帧,因此该方法中最后设置framet=framem_i,其目的也是为了找到所有编码帧中未编码且编码序号最小的第二当前编码帧,并将这个第二当前编码帧作为第一当前编码帧、即实际就是当前编码帧。
步骤160:首先,将所述的第一当前编码帧编码。然后,获取第二当前编码帧。接着,设置第二当前编码帧为第一当前编码帧,然后执行步骤170。
步骤170:判断是否视频序列中所有的帧都已经编码。若否,则执行步骤110;;若是,则执行步骤180;
步骤180:结束(完成所有的处理步骤)。
下面主要描述步骤140:根据所述的视频序列的编码结构筛选参考帧的详细处理过程,该步骤主要分3种情况来处理:
情况1:参见图2,当视频序列编码结构为IP…P(即无B帧)并且framet为P帧时;
则首先,获取第二当前编码帧。然后,清空list0。接着,将第一当前编码帧framet编码后的重构帧作为list0中的第一个参考帧。最后,设置第二当前编码帧为第一当前编码帧。详细步骤如下:
步骤1411获取第二当前编码帧framem_i
步骤1412:清空list0。
步骤1413:将第一当前编码帧framet编码后的重构帧作为list0中的第一个
参考帧。
步骤1414:设置所述第二当前编码帧为第一当前编码帧。
步骤1415:完成在情况1时步骤140的处理,即完成步骤140的执行。
步骤1416:执行步骤170。
“获取第二当前编码帧”具体为:
判断min(FrameNum(framem)|framem未编码)是否存在,若不存在则结束(完成所有的处理步骤);若存在,则将min(FrameNum(framem)|framem未编码)用
FrameNum(framem_i)表示,即:
FrameNum(framem_i)=min(FrameNum(framem)|framem未编码)。此时,framem_i就表示所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧。
“设置第二当前编码帧为第一当前编码帧”具体为:framet=framem_i
其中,本发明中list0表示前向参考列表;framem表示第m帧编码帧,即可以是所述任一编码帧;framem_i表示第m i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m表示编码帧framem在所有编码帧中的时间序号,简称m为编码帧framem的时间序号;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;FrameNum(framem)表示framem的编码序号;FrameNum(framem_i)表示framem_i的编码序号;min(变量条件)表示对满足条件的所有变量求最小值。
情况2:参见图3;当所述的视频序列的编码结构为:含有B帧且当前编码帧为P帧时:
步骤1421:获取第二当前编码帧framem_i
步骤1422:k=1。
步骤1423:判断是否m_i<t,若是执行步骤1424:若否、且framem_i为P帧时执行步骤1430;若否、且framem_i为I帧时执行步骤1431。
步骤1424:判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),若是,执行步骤1425;若否,执行步骤1426。
步骤1425:设置refk为framem_i的参考帧后,执行步骤1427。
步骤1426:设置refk不再作为framem_i的参考帧后,执行步骤1427;所谓不再作为参考帧,意思就是在后续的运动估计中,不会在这个“不是参考帧”的图像上进行。
步骤1427:设置k=k+1。
步骤1428:判断是否k>numberlist0+numberlist1,若是则执行步骤1429;若否则执行步骤1423。
步骤1429:首先利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置设置第二当前编码帧为第一当前编码帧;接着执行步骤1432。
步骤1430:首先,清空list0。然后,将framet编码后的重构帧作为list0中的第一个参考帧。最后,利用已筛选完毕的list0,对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;接着执行步骤1432。
步骤1431首先对framem_i进行编码;然后设置设置第二当前编码帧为第一当前编码帧;接着执行步骤1432。
步骤1432:完成在情况2时步骤140的处理,即完成步骤140的执行。
步骤1433:执行步骤170。
本发明中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号(该序号的排序方式不唯一,只要让所有的参考帧获取一个区分彼此的序号即可。例如可以先排前向参考列表的参考帧再排后向参考列表的参考帧,此时所有前向参考列表中参考帧的序号均小于后向参考列表中参考帧的序号;而每个单独的参考列表中参考帧可以按其原始编码帧对应的编码序号排序);设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
情况3,参见图4:当视频序列的编码结构为含有B帧、且framet第一当前编码帧为B帧时:
步骤1441:获取第二当前编码帧framem_i
步骤1442:设置k=1。
步骤1443:判断是否m_i<t,若是执行步骤1444;若否、且framem_i为B帧执行步骤1450;若否、且framem_i为P帧执行步骤1456;若否、且framem_i为I帧执行步骤1462。
步骤1444:判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),若是,则执行步骤1445;若否,则执行步骤1446。
步骤1445:设置refk为framem_i的参考帧;执行步骤1447。
步骤1446:设置refk不再作为framem_i的参考帧;执行步骤1447。
步骤1447:设置k=k+1。
步骤1448:判断k>numberlist0+numberlist1,若是执行步骤1449;若否执行步骤1443。
步骤1449:首先直接利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;接着执行步骤1463。
步骤1450:判断是否(poc(refk)≥t并且refk∈list0)或者(poc(refk)≥t并且refk∈list1),若是,则执行步骤1451;若否,则执行步骤1452。
步骤1451:设置refk为framem_i的参考帧;执行步骤1453。
步骤1452:refk不再作为framem_i的参考帧;执行步骤1453。
步骤1453:设置k=k+1。
步骤1454:判断是否k>numberlist0+numberlist1,若是,则执行步骤1455;若否,则执行步骤。1443
步骤1455:首先直接利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;接着执行步骤1463。
步骤1456:首先,判断是否poc(refk)≥t并且refk∈list0,若是,则执行步骤1457;若否,则执行步骤1458。
步骤1457:设置refk为framem_i的参考帧;执行步骤1459。
步骤1458:设置refk不再作为framem_i的参考帧;执行步骤1459。
步骤1459:设置k=k+1。
步骤1460:判断是否k>numberlist0,若是,则执行步骤1461;若否,则执行步骤1443。
步骤1461:利用已筛选完毕的list0,对framem_i进行编码,然后设置第二当前编码帧为第一当前编码帧;执行步骤1463。
步骤1462:先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;执行步骤1463。
步骤1463:完成在情况3时步骤140的处理,即完成步骤140的执行。
步骤1464:执行步骤170。
实施例2,本发明还提供一种基于宏块统计信息的参考帧筛选装置,参见图5,所述的装置包括:第一判断单元、第一执行单元、第二判断单元、第二执行单元;第三判断单元;第三执行单元;
第一判断单元,用于判断第一当前编码帧是否为I帧;
第一执行单元,用于当判断出第一当前编码帧不是I帧,则将所述的第一当前编码帧编码;获取编码后的第一当前编码帧中,I宏块及广义I宏块的第一数量;
第二判断单元,用于判断所述第一数量是否小于第一参数;
第二执行单元,用于当判断出第一数量不小于第一参数,则根据预置视频序列的编码结构,进行参考帧的筛选;
第三判断单元,用于判断是否视频序列中所有的帧都已经编码;
第三执行单元,用于当判断所述视频序列中的帧没有全部编码,则第一判断单元重新进行判断;当判断所述视频序列中帧全部编码时则结束。
其中,所述装置进一步包括第四执行单元;
第四执行单元,用于当第二判断单元判断出第一数量小于第一参数,则获取第二当前编码帧,设置第二当前编码帧为第一当前编码帧,接着通知第三判断单元判断是否所有的帧都已经编码。
其中,所述装置进一步包括第五执行单元;
第五执行单元,用于当第一判断单元判断出第一当前编码帧是I帧,将所述的第一当前编码帧编码;获取第二当前编码帧;设置第二当前编码帧为第一当前编码帧;然后继续通知第三判断单元判断是否所有视频序列里的帧都已经编码。
参见图6,所述第一执行单元包括:设置单元、第六执行单元、第七执行单元;
设置单元,用于进行初始设置,即令n=1;
第六执行单元,用于判断是否(Mbt,n∈framet)且(Mbt,n为I宏块或者Mbt,n至少包含一个为帧内预测模式的子块),若是,通知则n=n+1;若否,则n=n+1;
第七执行单元,用于根据第六执行单元的结果判断是否n>mbwidth*mbheight,若是,则通知第二判断单元继续执行“判断所述第一数量是否小于第一参数”;若否,则通知第六执行单元继续判断;
其中,表示framet帧中I宏块及广义I宏块的第一数量;Mbt,n表示第t帧编码帧的第n个宏块;n表示宏块Mbt,n在framet中的位置序号;mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数,framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
以上单元中,所述第二判断单元所述的第一参数为N*mbwidth*mbheight,其中N取值范围为0至1的小数;
其中,表示framet帧中I宏块及广义I宏块的第一数量,mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数。
参见图7,第二执行单元包括第一情况单元;所述第一情况单元包括:第八执行单元、第九执行单元;
第八执行单元,用于获取第二当前编码帧;然后,清空list0;
第九执行单元,用于将第一当前编码帧framet编码后的重构帧作为list0中的第一个参考帧;最后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,list0表示前向参考列表;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
其中,第二执行单元进一步包括第二情况单元,第二情况单元包括:第十执行单元、第十一执行单元、第十二执行单元;
第十执行单元,用于获取第二当前编码帧;设置k=1;
第十一执行单元,包括第四判断单元、第十三执行单元;
第四判断单元,用于判断是否m_i<t,
第十三执行单元,用于当第四判断单元判断为是时,则进一步判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),如果进一步判断为是,则refk为framem_i的参考帧;如果进一步判断为否,则refk不再作为framem_i的参考帧;
第十二执行单元,用于设置k=k+1;判断是否k符合下列条件:
k>numberlist0+numberlist1,若是,则首先利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
其中,第十一执行单元,进一步包括第十四执行单元;
第十四执行单元,用于当第四判断单元判断为否、且framem_i为P帧,则,
首先,清空list0;
然后,将framet编码后的重构帧作为list0中的第一个参考帧;
最后,利用已筛选完毕的list0,对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,list0表示前向参考列表;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
其中,第十一执行单元,进一步包括第十五执行单元,
第十六执行单元,用于当第四判断单元判断为否、且framem_i为I帧,则,则先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
其中,所述第二执行单元进一步包括第三情况单元;所述第三情况单元包括:第十六执行单元、第五判断单元、第十七执行单元、第十八执行单元、第六判断单元、第十九执行单元;
第十六执行单元,用于获取第二当前编码帧;设置k=1;
第五判断单元,用于判断是否m_i<t;
第十七执行单元,用于当第五判断单元判断为是时,则,进一步判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),若进一步判断为是,则refk为framem_i的参考帧,若进一步判断为否,则refk不再作为framem_i的参考帧;
第十八执行单元,用于设置k=k+1;
第六判断单元,用于根据第十八执行单元的结果,判断是否k>numberlist0+numberlist1
第十九执行单元,用于当第六判断单元判断出是时,直接利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;通知第三判断单元进行判断;若第六判断单元判断为否时,则通知第五判断单元继续判断;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
其中,所述第三情况单元进一步包括:第二十执行单元、
第二十执行单元,用于当第五判断单元判断为否,且framem_i为B帧,则,判断是否(poc(refk)≥t并且refk∈list0)或者(poc(refk)≥t并且refk∈list1),若是则refk为framem_i的参考帧;否则,refk不再作为framem_i的参考帧;通知第十八执行单元设置k=k+1;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
其中,所述第三情况单元进一步包括:第二十一执行单元、第二十二执行单元、第七判断单元、第二十三执行单元;
第二十一执行单元,用于当第五判断单元判断为否,且framem_i为P帧,则判断是否poc(refk)≥t并且refk∈list0,若是,则refk为famem_i的参考帧;若否,则refk不再作为framem_i的参考帧;通知第二十二执行单元设置k=k+1;
第二十二执行单元,用于设置k=k+1;
第七判断单元,用于判断是否k>numberlist0
第二十三执行单元,用于当第七判断单元判断结果为是时,进一步判断是否list0为空,若进一步判断为是,则变换framem_i类别为I帧,进行编码;若进一步判断为否,则直接利用已筛选完毕的list0,对framem_i进行编码;最后设置第二当前编码帧为第一当前编码帧;通知第三判断单元进行判断;当第七判断单元判断结果为否时,则通知第五判断单元继续判断;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
其中,所述第三情况单元进一步包括:第二十四执行单元;
第二十四执行单元,用于当第五判断单元判断为否,且framem_i为I帧,则先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
并且,以上所述的第四执行单元、第五执行单元、第八执行单元、第十执行单元、第十六执行单元所述的“获取第二当前编码帧”具体为:
判断min(FrameNum(framem)|framem未编码)是否存在,若不存在则结束;
若存在,则将min(FrameNum(framem)|framem未编码)用FrameNum(framem_i)表示,即:FrameNum(framem_i)=min(FrameNum(framem)|famem未编码);framem_i就表示所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;
所述的“设置第二当前编码帧为第一当前编码帧”具体为:
framet=framem_i
其中,framem表示第m帧编码帧,即可以是所述任一编码帧;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m表示编码帧framem在所有编码帧中的时间序号,简称m为编码帧framem的时间序号;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;FrameNum(framem)表示framem的编码序号;FrameNum(framem_i)表示framem_i的编码序号;min(变量|条件)表示对满足条件的所有变量求最小值。
综上所述,本发明提出一种基于宏块统计信息的参考帧筛选策略,通过各帧宏块的统计信息的不同情况,对参考帧进行快速筛选,实现了参考列表的自适应调整。并且本发明可在率失真性能基本不变的情况下,提升编码速度,使编码器在率失真性能和计算量两者之间达到进一步的优化实现。
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (28)

1.一种基于宏块统计信息的参考帧筛选方法,其特征在于,所述的方法包括:
判断第一当前编码帧是否为I帧,
若第一当前编码帧不是I帧,则将所述的第一当前编码帧编码;
获取编码后的第一当前编码帧中,I宏块及广义I宏块的第一数量;
判断所述第一数量是否小于第一参数,若第一数量不小于第一参数,则根据预置视频序列的编码结构,进行参考帧的筛选;
然后判断是否所述视频序列中所有的帧都已经编码;若否,则返回步骤“判断第一当前编码帧是否为I帧”;若是则结束;
其中,所述的“根据预置视频序列的编码结构,进行参考帧的筛选”具体为:当所述的视频序列的编码结构为:含有B帧且当前编码帧为P帧时,则
首先,获取第二当前编码帧;
然后,设置k=1;
接着,判断是否m_i<t,若是,则进一步判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),如果进一步判断为是,则refk为framem_i的参考帧;如果进一步判断为否,则refk不再作为framem_i的参考帧;
再接着,设置k=k+1;
最后,判断是否k符合下列条件:
k>numberlist0+numberlist1,若是,则首先利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,广义I宏块表示宏块中至少包含一个为帧内预测模式的子块;list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数;所述当前编码帧为P帧中,当前编码帧即为第一当前编码帧。
2.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于:“判断所述第一数量是否小于第一参数”还包括:
若第一数量小于第一参数,则获取第二当前编码帧,设置第二当前编码帧为第一当前编码帧,接着继续判断是否所有的帧都已经编码。
3.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于:所述的“判断第一当前编码帧是否为I帧”:
若第一当前编码帧是I帧,将所述的第一当前编码帧编码;
获取第二当前编码帧;
设置第二当前编码帧为第一当前编码帧;然后继续判断是否所有视频序列里的帧都已经编码。
4.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“获取编码后的第一当前编码帧中I宏块及广义I宏块的第一数量”具体为:
首先,进行初始设置,即令numbert I=0,n=1;
然后,判断是否“(Mbt,n∈framet)且(Mbt,n为I宏块或者Mbt,n至少包含一个为帧内预测模式的子块)”,若是,则numbert I=numbert I+1、n=n+1;若否,则n=n+1;
接着,判断是否n>mbwidth*mbheight,若是,则继续执行“判断所述第一数量是否小于第一参数”;若否,则继续“判断是否‘(Mbt,n∈framet)且(Mbt,n为I宏块或者Mbt,n至少包含一个为帧内预测模式的子块)’”;
其中,numbert I表示framet帧中I宏块及广义I宏块的第一数量;Mbt,n表示第t帧编码帧的第n个宏块;n表示宏块Mbt,n在framet中的位置序号;mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数,framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
5.根据权利要求1至4其中之一所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“第一参数”具体为:N*mbwidth*mbheight;
其中N取值范围为0至1的小数;numbert I表示framet帧中I宏块及广义I宏块的第一数量,mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数。
6.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“根据预置视频序列的编码结构,进行参考帧的筛选”具体为:当所述编码结构为:无B帧、且第一当前编码帧为P帧时;
首先,获取第二当前编码帧;然后,清空list0;
再将第一当前编码帧framet编码后的重构帧作为list0中的第一个参考帧;最后,设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,list0表示前向参考列表;framet为第一当前编码帧;t表示第一当 前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
7.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“判断是否m_i<t”,若否、且framem_i为P帧,则,
首先,清空list0;
然后,将framet编码后的重构帧作为list0中的第一个参考帧;
最后,利用已筛选完毕的list0,对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,list0表示前向参考列表;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
8.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“判断是否m_i<t”,若否、且framem_i为I帧,则先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
9.根据权利要求1所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“根据预置视频序列的编码结构,进行参考帧的筛选”具体为:当前编码结构为含有B帧、且当前编码帧为B帧时,则,
首先,获取第二当前编码帧;
然后,设置k=1;
接着,判断是否m_i<t,若是则,进一步判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),若进一步判断为是,则refk为framem_i的参考帧,若进一步判断为否,则refk不再作为framem_i的参考帧;
再接着,设置k=k+1;
最后,判断是否
k>numberlist0+numberlist1,若是则,首先直接利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数,所述当前编码帧为B帧中,当前编码帧即为第一当前编码帧。
10.根据权利要求9所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“判断是否m_i<t”,若否、且framem_i为B帧,则,
首先,判断是否“(poc(refk)≥t并且refk∈list0)或者(poc(refk)≥t并且refk∈list1)”,若是则refk为framem_i的参考帧;否则,refk不再作为framem_i的参考帧;
然后,设置k=k+1;
接着,判断是否
k>numberlist0+numberlist1,若是则,首先直接利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
11.根据权利要求9所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“判断是否m_i<t”,若否、且framem_i为P帧,则,
首先,判断是否poc(refk)≥t并且refk∈list0,若是,则refk为framem_i的参考帧;若否,则refk不再作为framem_i的参考帧;
然后,设置k=k+1;
接着,判断是否
k>numberlist0,若是则首先利用已筛选完毕的list0,对framem_i进行编码;然后 设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
12.根据权利要求9所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“判断是否m_i<t”,若否、且framem_i为I帧,则先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;继续判断是否所属视频序列中所有的帧都已经编码;
其中,framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
13.根据权利要求1、9或10其中之一所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的
“判断是否k>numberlist0+numberlist1”,若否则继续“判断是否m_i<t”;
其中,list0表示前向参考列表、list1表示后向参考列表;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
14.根据权利要求11其中所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的
“判断是否k>numberlist0”,若否则继续“判断是否m_i<t”;
其中,list0表示前向参考列表、list1表示后向参考列表;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
15.根据权利要求2、3、6至12其中之一所述的基于宏块统计信息的参考帧筛选方法,其特征在于,所述的“获取第二当前编码帧”具体为:
判断min(FrameNum(framem)|framem未编码)是否存在,若不存在则结束;
若存在,则将min(FrameNum(framem)|framem未编码)用FrameNum(framem_i)表示,即:FrameNum(framem_i)=min(FrameNum(framem)|framem未编码);framem_i就表示所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;
所述的“设置第二当前编码帧为第一当前编码帧”具体为:
framet=framem_i
其中,framem表示第m帧编码帧,即可以是任一所述编码帧;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m表示编码帧framem在所有编码帧中的时间序号,简称m为编码帧framem的时间序号;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;FrameNum(framem)表示framem的编码序号;FrameNum(framem_i)表示framem_i的编码序号;min(变量|条件)表示对满足条件的所有变量求最小值。
16.一种基于宏块统计信息的参考帧筛选装置,其特征在于,所述的装置包括:第一判断单元、第一执行单元、第二判断单元、第二执行单元;第三判断单元;第三执行单元;
第一判断单元,用于判断第一当前编码帧是否为I帧;
第一执行单元,用于当判断出第一当前编码帧不是I帧,则将所述的第一当前编码帧编码;获取编码后的第一当前编码帧中,I宏块及广义I宏块的第一数量;
第二判断单元,用于判断所述第一数量是否小于第一参数;
第二执行单元,用于当判断出第一数量不小于第一参数,则根据预置视频序列的编码结构,进行参考帧的筛选;
第三判断单元,用于判断是否视频序列中所有的帧都已经编码;
第三执行单元,用于当判断所述视频序列中的帧没有全部编码,则进入第一判断单元;当判断所述视频序列中帧全部编码时则结束;
其中,第二执行单元进一步包括第二情况单元,第二情况单元包括:第十执行单元、第十一执行单元、第十二执行单元;
第十执行单元,用于获取第二当前编码帧;设置k=1;
第十一执行单元,包括第四判断单元、第十三执行单元;
第四判断单元,用于判断是否m_i<t,
第十三执行单元,用于当第四判断单元判断为是时,则进一步判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),如果进一步判断为是,则refk为framem_i的参考帧;如果进一步判断为否,则refk不再作为framem_i的参考帧;
第十二执行单元,用于设置k=k+1;判断是否k符合下列条件:
k>numberlist0+numberlist1,若是,则首先利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,广义I宏块表示宏块中至少包含一个为帧内预测模式的子块;list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk 在list0和list1所有参考帧中的序号;设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
17.根据权利要求16所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述装置进一步包括第四执行单元;
第四执行单元,用于当第二判断单元判断出第一数量小于第一参数,则获取第二当前编码帧,设置第二当前编码帧为第一当前编码帧,接着通知第三判断单元判断是否所有的帧都已经编码。
18.根据权利要求17所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述装置进一步包括第五执行单元;
第五执行单元,用于当第一判断单元判断出第一当前编码帧是I帧,将所述的第一当前编码帧编码;获取第二当前编码帧;设置第二当前编码帧为第一当前编码帧;然后继续通知第三判断单元判断是否所有视频序列里的帧都已经编码。
19.根据权利要求18所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述第一执行单元包括:设置单元、第六执行单元、第七执行单元;
设置单元,用于进行初始设置,即令numbert I=0,n=1;
第六执行单元,用于判断是否“(Mbt,n∈framet)且(Mbt,n为I宏块或者Mbt,n至少包含一个为帧内预测模式的子块)”,若是,则numbert I=numbert I+1、n=n+1;若否,则n=n+1;
第七执行单元,用于根据第六执行单元的结果判断是否n>mbwidth*mbheight,若是,则通知第二判断单元继续执行“判断所述第一数量是否小于第一参数”;若否,则通知第六执行单元继续判断;
其中,numbert I表示framet帧中I宏块及广义I宏块的第一数量;Mbt,n表示第t帧编码帧的第n个宏块;n表示宏块Mbt,n在framet中的位置序号;mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数,framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
20.根据权利要求19所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述第二判断单元所述的第一参数为N*mbwidth*mbheight,其中N取值范围为0至1的小数;
其中,numbert I表示framet帧中I宏块及广义I宏块的第一数量, mbwidth,mbheight分别表示一帧图像划分成宏块以后,图像以宏块为单位的列数和行数。
21.根据权利要求20所述的基于宏块统计信息的参考帧筛选装置,其特征在于,第二执行单元包括第一情况单元;所述第一情况单元包括:第八执行单元、第九执行单元;
第八执行单元,用于获取第二当前编码帧;然后,清空list0;
第九执行单元,用于将第一当前编码帧framet编码后的重构帧作为list0中的第一个参考帧;最后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,list0表示前向参考列表;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
22.根据权利要求21所述的基于宏块统计信息的参考帧筛选装置,其特征在于,第十一执行单元,进一步包括第十四执行单元;
第十四执行单元,用于当第四判断单元判断为否、且framem_i为P帧,则,首先,清空list0;
然后,将framet编码后的重构帧作为list0中的第一个参考帧;
最后,利用已筛选完毕的list0,对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,list0表示前向参考列表;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
23.根据权利要求22所述的基于宏块统计信息的参考帧筛选装置,其特征在于,第十一执行单元,进一步包括第十五执行单元,
第十五执行单元,用于当第四判断单元判断为否、且framem_i为I帧,则,则先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
24.根据权利要求23所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述第二执行单元进一步包括第三情况单元;所述第三情况单元包括:第十六执行单元、第五判断单元、第十七执行单元、第十八执行单元、第六判断单元、第十九执行单元;
第十六执行单元,用于获取第二当前编码帧;设置k=1;
第五判断单元,用于判断是否m_i<t;
第十七执行单元,用于当第五判断单元判断为是时,则,进一步判断是否(poc(refk)<t并且refk∈list0)或者(poc(refk)<t并且refk∈list1),若进一步判断为是,则refk为framem_i的参考帧,若进一步判断为否,则refk不再作为framem_i的参考帧;
第十八执行单元,用于设置k=k+1;
第六判断单元,用于根据第十八执行单元的结果,判断是否k>numberlist0+numberlist1
第十九执行单元,用于当第六判断单元判断出是时,直接利用已筛选完毕的list0、list1,对framem_i进行编码;然后设置第二当前编码帧为第一当前编码帧;通知第三判断单元进行判断;若第六判断单元判断为否时,则通知第五判断单元继续判断;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;设置k=1此时表示从第一个参考帧开始处理;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
25.根据权利要求24所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述第三情况单元进一步包括:第二十执行单元、
第二十执行单元,用于当第五判断单元判断为否,且framem_i为B帧,则,判断是否“(poc(refk)≥t并且refk∈list0)或者(poc(refk)≥t并且refk∈list1)”,若是则refk为framem_i的参考帧;否则,refk不再作为framem_i的参考帧;通知第十八执行单元设置k=k+1;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
26.根据权利要求25所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述第三情况单元进一步包括:第二十一执行单元、第二十二执行单元、第七判断单元、第二十三执行单元;
第二十一执行单元,用于当第五判断单元判断为否,且framem_i为P帧,则判断是否poc(refk)≥t并且refk∈list0,若是,则refk为framem_i的参考帧;若否,则refk不再作为framem_i的参考帧;通知第二十二执行单元设置k=k+1;
第二十二执行单元,用于设置k=k+1;
第七判断单元,用于判断是否k>numberlist0
第二十三执行单元,用于当第七判断单元判断结果为是时,进一步判断是否list0为空,若进一步判断为是,则变换framem_i类别为I帧,进行编码;若进一步判断为否,则直接利用已筛选完毕的list0,对framem_i进行编码;最后设置第二当前编码帧为第一当前编码帧;通知第三判断单元进行判断;当第七判断单元判断结果为否时,则通知第五判断单元继续判断;
其中,list0表示前向参考列表、list1表示后向参考列表;refk表示第k个参考帧,k表示refk在list0和list1所有参考帧中的序号;poc(refk)表示refk对应的原始图像在所有编码帧中的时间序号;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号;numberlist0表示前向参考列表中参考帧的帧数;numberlist1表示后向参考列表中参考帧的帧数。
27.根据权利要求26所述的基于宏块统计信息的参考帧筛选装置,其特征在于,所述第三情况单元进一步包括:第二十四执行单元;
第二十四执行单元,用于当第五判断单元判断为否,且framem_i为I帧,则先对framem_i进行编码;然后,设置第二当前编码帧为第一当前编码帧;通知第三判断单元继续判断;
其中,framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;framet为第一当前编码帧;t表示第一当前编码帧framet在所有编码帧中的时间序号,简称t为第一编码帧framet的时间序号。
28.根据权利要求24至27其中之一所述的基于宏块统计信息的参考帧 筛选装置,其特征在于:所述的第四执行单元、第五执行单元、第八执行单元、第十执行单元、第十六执行单元所述的“获取第二当前编码帧”具体为:
判断min(FrameNum(framem)|framem未编码)是否存在,若不存在则结束;
若存在,则将min(FrameNum(framem)|framem未编码)用FrameNum(framem_i)表示,即:FrameNum(framem_i)=min(FrameNum(framem)|framem未编码);framem_i就表示所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;
所述的“设置第二当前编码帧为第一当前编码帧”具体为:
framet=framem_i
其中,framem表示第m帧编码帧,即可以是任一所述编码帧;framem_i表示第m_i帧编码帧;framem_i为所有未编码帧中具有最小编码序号的编码帧,称为第二当前编码帧;m表示编码帧framem在所有编码帧中的时间序号,简称m为编码帧framem的时间序号;m_i表示编码帧framem_i在所有编码帧中的时间序号,简称m_i为编码帧framem_i的时间序号;FrameNum(framem)表示framem的编码序号;FrameNum(framem_i)表示framem_i的编码序号;min(变量|条件)表示对满足条件的所有变量求最小值。
CN201210226130.8A 2012-07-03 2012-07-03 一种基于宏块统计信息的参考帧筛选方法、装置 Expired - Fee Related CN102833535B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210226130.8A CN102833535B (zh) 2012-07-03 2012-07-03 一种基于宏块统计信息的参考帧筛选方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210226130.8A CN102833535B (zh) 2012-07-03 2012-07-03 一种基于宏块统计信息的参考帧筛选方法、装置

Publications (2)

Publication Number Publication Date
CN102833535A CN102833535A (zh) 2012-12-19
CN102833535B true CN102833535B (zh) 2017-08-25

Family

ID=47336475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210226130.8A Expired - Fee Related CN102833535B (zh) 2012-07-03 2012-07-03 一种基于宏块统计信息的参考帧筛选方法、装置

Country Status (1)

Country Link
CN (1) CN102833535B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103227925B (zh) * 2013-05-13 2016-05-11 深圳市云宙多媒体技术有限公司 一种自适应b帧编码方法和系统
CN105898328A (zh) * 2015-12-14 2016-08-24 乐视云计算有限公司 包含自参考编码的参考帧集设置方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1649413A (zh) * 2005-01-26 2005-08-03 上海大学 H.264/avc多参考帧的快速选择方法
CN101720042A (zh) * 2009-11-27 2010-06-02 宁波大学 一种多视点视频信号的编码方法
CN102055977A (zh) * 2009-11-06 2011-05-11 三星电子株式会社 使用多个参考帧的快速运动估计方法
KR20110070823A (ko) * 2009-12-18 2011-06-24 한국전자통신연구원 비디오 부호화/복호화 방법 및 장치
CN102150429A (zh) * 2008-09-11 2011-08-10 谷歌公司 用于使用构建的参考帧进行视频编码的系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1649413A (zh) * 2005-01-26 2005-08-03 上海大学 H.264/avc多参考帧的快速选择方法
CN102150429A (zh) * 2008-09-11 2011-08-10 谷歌公司 用于使用构建的参考帧进行视频编码的系统及方法
CN102055977A (zh) * 2009-11-06 2011-05-11 三星电子株式会社 使用多个参考帧的快速运动估计方法
CN101720042A (zh) * 2009-11-27 2010-06-02 宁波大学 一种多视点视频信号的编码方法
KR20110070823A (ko) * 2009-12-18 2011-06-24 한국전자통신연구원 비디오 부호화/복호화 방법 및 장치

Also Published As

Publication number Publication date
CN102833535A (zh) 2012-12-19

Similar Documents

Publication Publication Date Title
CN106464905B (zh) 用于块内复制模式编码的块向量预测方法
CN102640492B (zh) 对图像边界的编码单元进行编码和解码的方法和设备
CN101490968B (zh) 用于视频压缩的并行处理装置
CN101431675B (zh) 一种像素运动估计方法和装置
CN1290342C (zh) 可执行区块比对移动补偿与全域移动补偿的装置与方法
CN105959699B (zh) 一种基于运动估计和时空域相关性的快速帧间预测方法
CN110087087A (zh) Vvc帧间编码单元预测模式提前决策及块划分提前终止方法
CN101583036B (zh) 像素域视频转码中确定运动特征和高效编码模式关系的方法
CN104469362A (zh) 用于对运动矢量进行编码和解码的方法和设备
CN102075756B (zh) 视频多帧预测编解码方法和装置
CN105379274A (zh) 图像编码设备、图像编码方法、记录介质和程序以及图像解码设备、图像解码方法、记录介质和程序
CN106507116B (zh) 一种基于3d显著性信息和视点合成预测的3d-hevc编码方法
CN106454349B (zh) 一种基于h.265视频编码的运动估计块匹配方法
CN105306945A (zh) 一种监控视频的可伸缩浓缩编码方法和装置
CN103188496A (zh) 基于运动矢量分布预测的快速运动估计视频编码方法
CN101291436B (zh) 视频编/解码方法和视频编/解码装置
CN104811729B (zh) 一种视频多参考帧编码方法
CN106331700A (zh) 参考图像编码和解码的方法、编码设备和解码设备
CN104519362B (zh) 一种邻帧预测深度相似性的视频编码方法
CN102196253B (zh) 一种帧类型自适应选择的视频编码方法及装置
CN102833535B (zh) 一种基于宏块统计信息的参考帧筛选方法、装置
CN107105240A (zh) 一种hevc‑scc复杂度控制方法及其系统
CN1268136C (zh) 基于图像切片结构的帧场自适应编码方法
CN107105255A (zh) 视频文件中添加标签的方法和装置
CN1925616B (zh) 一种宏块对级帧场自适应编解码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SHENZHEN TEMOBI SCIENCE + TECHNOLOGY CO., LTD.

Effective date: 20140805

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140805

Address after: Unit B4 9 building 518057 Guangdong city of Shenzhen province Nanshan District high in the four EVOC Technology Building No. 31

Applicant after: Shenzhen Yunzhou Multimedia Technology Co., Ltd.

Address before: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Applicant before: Shenzhen Temobi Science & Tech Development Co.,Ltd.

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: The central Shenzhen city of Guangdong Province, 518057 Keyuan Road, Nanshan District science and Technology Park No. 15 Science Park Sinovac A Building 1 unit 403, No. 405 unit

Applicant after: Shenzhen Yunzhou Multimedia Technology Co., Ltd.

Address before: Unit B4 9 building 518057 Guangdong city of Shenzhen province Nanshan District high in the four EVOC Technology Building No. 31

Applicant before: Shenzhen Yunzhou Multimedia Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170825

Termination date: 20190703