CN101568032B - 补差点数据储存方法 - Google Patents
补差点数据储存方法 Download PDFInfo
- Publication number
- CN101568032B CN101568032B CN 200910141065 CN200910141065A CN101568032B CN 101568032 B CN101568032 B CN 101568032B CN 200910141065 CN200910141065 CN 200910141065 CN 200910141065 A CN200910141065 A CN 200910141065A CN 101568032 B CN101568032 B CN 101568032B
- Authority
- CN
- China
- Prior art keywords
- working area
- point
- integer
- storing method
- data storing
- 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.)
- Active
Links
Images
Abstract
本发明提供一种补差点数据储存方法,运用存在于高速缓存中的暂存区,以及存储重迭记录的观念,储存计算过的补差点数据,避免重复计算,藉以降低系统运算量并降低自外部存储器读取整数点来计算补差点的次数。此外本发明提供此暂存区的数据储存方式,利用存储地址旋转的观念,以储存超出暂存区边界的补差点数据。本发明亦根据补差点坐标小数部分的不同组合,将补差点数据分多个区域储存,藉以节省暂存区存储空间,而且便于在暂存区内搜寻补差点数据。
Description
本申请是申请日为2006年10月17日、申请号为200610135945X、发明名称为“补差点数据储存方法”的发明专利申请的分案申请。
技术领域
本发明是关于在视频编码与解码系统中的补差点运算(interpolation),且特别是关于视频编码与解码系统中的补差点数据储存方法。
背景技术
在目前视频编码与解码系统中,动态估计(motion estimation)具有1/2、1/4、1/8点的精准度,而此非整数点不存在于外部存储器之中,为利用存在外部存储器的整数点计算而来。所以在视频编码与解码系统中,无论动态估计或动态补偿(motion compensation),只要涉及非整数点的动态向量(motion vector),都会使用补差点运算。
举例而言,如图1所示,在H.264视频系统规格中,其1/2点位置像素(pixel)的值为利用六组系数(six-tap)的有限脉冲响应滤波器(finiteimpulse response,简称为FIR)所计算出来。图1当中,白色方块(如A、B、C、D等)表示整数点位置,而内含线条的方块(如aa、bb、h、m等)表示需要补差点运算的1/2点位置。b点位置像素的值为算式(E-5F+20G+20H-5I+J)/32的值取整数值。h点位置像素的值为算式(A-5C+20G+20M-5R+T)/32的值取整数值。由上述算式得知,计算1/2点位置像素的值需4个乘法运算。以目前最为普遍的图像格式CIF格式(common intermediate format,简称CIF)而言,每一画面(frame)具有352*288个像素,计算CIF格式所有1/2点位置像素的值需(703*575-352*288(整数点))*4=1,211,396个乘法运算,约120万个乘法运算;计算所有1/8点位置像素的值约需5000万个乘法运算。其中1/4点位置像素的值可以利用加法器与位移器,因此不列于评估。此外,在CIF格式中,所有1/2点位置具有703*575-352*288(整数点)=302,846个像素,即表示储存所有1/2点位置像素的值约需296Kbytes的存储器空间;储存所有1/8点位置像素的值约需6Mbytes的存储器空间。由于补差点为利用外部存储器储存的整数点推演而来,若考虑外部存储器频宽为16位,则为了计算1/2、1/4及1/8点位置像素的值,各需抓取整个画面的整数点数据,也就是要抓取396*256*1.5/16=76032次。
由上列叙述可知,在视频编码与解码系统中,计算补差点的运算量与所需储存补差点的存储器空间所费极大,而且需多次读取储存整数点的外部存储器。
发明内容
本发明提供一种补差点数据储存方法,利用暂存区(memory buffer)存在于高速缓存(cache)中,藉以储存计算过的补差点数据,可降低运算量与存储器存取次数。
本发明还提供一种补差点数据储存方法,采用有效利用存储器空间的储存方式,藉以避免上述暂存区空间的浪费。
本发明的一较佳实施例为利用动态向量差(motion vector difference)的大小分布比例来分析图像,藉以决定暂存区存在于高速缓存的空间大小。补差点为利用动态向量找到参考画面的宏区块(macroblock),藉以计算出补差点,而这些动态向量对应参考画面的宏区块,在一般彼此间关联性强的图像会有较多重迭之处,因此利用此一暂存区储存前些计算过的补差点,避免重复计算的运算量以及对外部存储器读取整数点位置像素的次数。
本发明另一较佳实施例为该暂存区存在于高速缓存中的储存方式。利用这些补差点对应于外部存储器内的逻辑坐标的小数点部分,将暂存区划分为多个区域,使用这些区域储存非整数点位置的补差点数据。如此不需要保留整数点位置也能在暂存区内迅速搜寻补差点数据,兼具节省高速缓存空间与提高效率的优点。
本发明还提供一种补差点数据储存方法,包括:判断暂存区内是否储存非整数点的补差点数据;若该暂存区已储存该补差点数据,则提供该补差点数据;以及若该暂存区未储存该补差点数据,则自存储器读取邻近该非整数点的整数点数据,据以计算该补差点数据,然后将该补差点数据存入该暂存区。
本发明还提供一种补差点数据储存方法,包括:将暂存区划分为多个区域;以及使用该些区域储存多个非整数点的补差点数据;其中,每一上述非整数点的每一逻辑坐标的小数部分与同一区域的另一上述非整数点的对应逻辑坐标的小数部分皆相同。
本发明还提供一种补差点数据储存方法,包括:将暂存区划分为多个区域;使用该些区域储存多个非整数点的补差点数据,其中,每一上述非整数点的每一逻辑坐标的小数部分与同一区域的另一上述非整数点的对应逻辑坐标的小数部分皆相同;若特定非整数点的补差点数据已储存于该暂存区,则直接提供该补差点数据;以及若该暂存区未储存该特定非整数点的补差点数据,则自存储器读取邻近该特定非整数点的整数点数据,据以计算该补差点数据,然后将该补差点数据存入该暂存区。
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举本发明的较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为一般视频编码与解码系统的补差点运算示意图。
图2为本发明一实施例的补差点数据暂存区示意图。
图3及图4为本发明一实施例的存储地址旋转示意图。
图5为本发明一实施例的分区域储存方法示意图。
[主要元件标号说明]
200:高速缓存的暂存区
201、202:宏方块
203:宏方块的重迭部分
310、320:补差点数据暂存区在参考画面的对应边界
315、325:参考画面的非整数点宏区块
500:补差点数据暂存区
501、502、503:暂存区内的储存区域
511、521、531:暂存区内的非整数点数据
MV1、MV2:动态向量
具体实施方式
以下较佳实施例的说明以视频编码器或视频解码器为例。本实施例的视频编码器或视频解码器使用外部存储器储存参考画面(reference frame)整数点位置像素的数据,并使用内建的高速缓存做为暂存区,储存之前计算过的非整数点位置像素的值。
若欲降低系统运算量与外部存储器存取频率,可以利用容量较大的高速缓存储存计算过的补差点数据,但是太大的高速缓存会造成电路面积与价格上的问题。因此本实施例使用相对较小的暂存区,例如32*32像素,加上存储地址旋转的观念(细节后述),就可以有效降低系统运算量与外部存储器存取频率,同时也不需要太大的高速缓存。在本实施例中,每当需要一个非整数点的补差点数据,会先判断暂存区内是否储存这个非整数点的补差点数据,若有储存就直接取出使用,不用重复计算。反之,若暂存区没储存这个补差点数据,就从外部存储器读取邻近上述非整数点的整数点数据,据以计算所需的补差点数据,然后将计算得出的补差点数据存入暂存区,以后就能重复使用。
图2绘示上述方法的一个范例。请参照图2,200是用来储存补差点数据的暂存区。假设目前画面的某一宏区块根据动态向量MV1对应到参考画面的非整数点宏区块201,而且根据动态向量MV2对应到参考画面的非整数点宏区块202。计算宏区块201的补差点数据时,已将这些补差点数据存入暂存区200。当需要宏区块202的补差点数据时,两宏区块重迭部分203的补差点数据可由暂存区200直接提供,不用重复计算。就宏区块202而言,原本需要31*31*4=3844个乘法运算,扣掉重迭部分203之后只需31*4-16*2=368个乘法运算,节省了约90.4%的计算量。
本实施例的暂存区大小不限定32*32像素。实际上,本实施例是先统计至少一个视频数据流(video bitstream)的动态向量差(MVD:motion vectordifference)的大小分布,然后根据上述大小分布决定暂存区的大小。所谓动态向量差的大小,在此定义为动态向量差的各坐标分量的最大值。例如某个动态向量差为(a,b),若a大于b,则此动态向量差的大小为a,否则为b。
本实施例分析三个视频数据流,其名称为News、Silent及Football,分别可以代表低频、中频及高频的视频图像。视频数据流News主要为播报新闻,其图像移动变化小;视频数据流Silent主要为手语动作,其图像移动集中在部分区域,移动变化较News高;视频数据流Football为美式足球运动场景,运动员与球移动变化大。以上三个视频数据流皆为CIF规格,分析结果如下列的表1所示。
MVD<8像素 | 8<MVD<16像素 | 16<MVD<32像素 | MVD>32像素 | |
News | 67% | 32.9% | 0.1% | 0% |
Silent | 22% | 57% | 19% | 2% |
Football | 11% | 36% | 45% | 8% |
表1各种视频数据流的动态向量差分析统计表
表1当中,绝大部分的动态向量差皆小于32像素,所以本实施例的暂存区大小设定为32*32像素。若集中处理高频视频,可使用64*64像素的暂存区;若集中处理低频视频,则16*16像素的暂存区就已经足够。总之暂存区大小可视动态向量差的大小分布比例做调整,例如设定暂存区的最小边长必须大于所有视频数据流的所有动态向量差当中,一个预设比例的动态向量差。
本实施例的暂存区是二维阵列,会对应到参考画面中一个同等大小的区域,因为暂存区大小有限,难免会有非整数点的宏区块超出暂存区边界。请参照图3。假设暂存区原本在参考画面中的对应边界为310,其左上角在参考画面的逻辑坐标为(2.5,3.5),右下角在参考画面的逻辑坐标为(34.5,35.5),以左上角为起点。边界310可容纳宏区块315,其左上角在参考画面的逻辑坐标为(18.5,19.5),右下角在参考画面的逻辑坐标为(34.5,35.5)。宏区块315的非整数点逻辑坐标都是根据目前画面的某一宏区块与其动态向量计算得出。
图3当中,另一宏区块325的左上角逻辑坐标为(20.5,21.5),右下角逻辑坐标为(36.5,37.5)。对目前的边界310而言,若要储存宏区块325的补差点数据,就有部分非整数点会超出范围。在本实施例中,若有非整数点超出暂存区边界,就调整暂存区的起点的逻辑坐标,使这个非整数点落入暂存区的新边界。在图3的范例,为了容纳宏区块325的补差点数据,会将暂存区的起点逻辑坐标从(2.5,3.5)移动至(4.5,5.5),也就是将暂存区边界从310移动至320。
补差点数据在暂存区内的存取是根据其真实坐标,暂存区内的真实坐标不同于参考画面的逻辑坐标。每当暂存区的起点移动时,起点的逻辑坐标与真实坐标会同步移动,如此已储存在暂存区内的补差点数据就不必因为起点移动而跟随挪移。非整数点的真实坐标计算方法是,对上述非整数点的每一个逻辑坐标,计算此逻辑坐标减去起点的对应逻辑坐标加上起点的对应真实坐标的结果,以上述结果作为此非整数点的此逻辑坐标的对应真实坐标。上述的每一个逻辑坐标是指对应每一个坐标轴的不同子坐标,而上述不同子坐标之间的对应关系是指对应同一坐标轴。例如图3的范例中,暂存区边界310的起点逻辑坐标为(2.5,3.5),起点真实坐标为[0][0]。宏区块315左上角的x逻辑坐标为18.5,将其减去起点的x逻辑坐标2.5再加上起点的x真实坐标0,结果为16,此即为宏区块315左上角的x真实坐标。同理,宏区块315左上角的y逻辑坐标为19.5,将其减去起点的y逻辑坐标3.5再加上起点的y真实坐标0,结果为16,此即为宏区块315左上角的y真实坐标。当暂存区边界从310移动至320之后,新的起点逻辑坐标为(4.5,5.5),新的起点真实坐标为[2][2]。将宏区块315左上角的逻辑坐标(18.5,19.5)减去起点逻辑坐标(4.5,5.5)再加上起点真实坐标[2][2],结果是同样的真实坐标[16][16]。从上述结果可知,由于起点的逻辑坐标与真实坐标同步移动,同一非整数点在边界移动前后的真实坐标相同,因此其补差点数据不必跟随起点移动而在暂存区内挪移。
移动起点位置之后,非整数点的真实坐标仍有可能超出暂存区界限,例如图3当中,宏区块325右下角的真实坐标为[34][34],超出最大可容许坐标[31][31]。此时本实施例的对策为存储地址旋转,如图4所示,将真实坐标超出暂存区右侧的非整数点储存在暂存区左侧,将真实坐标超出暂存区下端的非整数点储存在暂存区上端,反之亦然。更精确地说,就是若有非整数点的对应某一坐标轴的真实坐标小于暂存区对应同一坐标轴的坐标下限,则将此真实坐标加上暂存区对应同一坐标轴的边长。反之,若有非整数点的对应某一坐标轴的真实坐标大于暂存区对应同一坐标轴的坐标上限,则将此真实坐标减去暂存区对应同一坐标轴的边长。例如宏区块325右上角的逻辑坐标为(36.5,21.5),真实坐标为[34][18],其x真实坐标超出暂存区的x轴上限31,必须减去暂存区的x轴边长32,然后根据调整后的真实坐标[2][18]在暂存区内作存取。同理,宏区块325左下角的逻辑坐标为(20.5,37.5),真实坐标为[18][34],其y真实坐标超出暂存区的y轴上限31,必须减去暂存区的y轴边长32,然后根据调整后的真实坐标[18][2]在暂存区内作存取。
以下请参照图5,在图5的暂存区500当中,除了非整数点(以x标示)以外,也保留了整数点的储存位置(以o标示)。这是为了便于在暂存区500之内搜寻非整数点的补差点数据,然而这样会浪费存储空间。反之,若为了节省高速缓存而不保留整数点位置,则需要较复杂的寻址运算以决定非整数点的储存位置。为了兼顾存储空间与运算效率,本实施例采用如图5所示的方法,将暂存区划分为多个区域,然后将非整数点的补差点数据分散储存在上述区域。区域501储存x坐标为1/2,y坐标为整数点的非整数点数据,例如511。区域502储存y坐标为1/2,x坐标为整数点的非整数点数据,例如521。区域503储存x、y坐标皆为1/2的非整数点数据,例如531。如此每个区域中的非整数点都呈规律排列,不仅容易寻址,也能避免整数点空间的存储浪费。
图5的分区储存方法是以1/2点为例,其实上述的分区储存方法也适用于其它种非整数点,例如1/4点或1/8点。1/4点的暂存区应分为42-1=15个区域,1/8点的暂存区应分为82-1=63个区域,依此类推。一般原则是每一个区域中,每一个非整数点对应每一个坐标轴的逻辑坐标的小数部分,与同一区域的另一个非整数点的对应同一坐标轴的逻辑坐标的小数部分皆相同。例如图5的区域502中,每一个非整数点的x逻辑坐标小数部分皆为0,而且每一个非整数点的y逻辑坐标小数部分皆为0.5。此外,每一个区域的非整数点的逻辑坐标小数部分所构成的集合各不相同。例如图5的范例中,区域501的非整数点的逻辑坐标小数部分的集合为{0.5,0},区域502为{0,0.5},区域503为{0.5,0.5},三个区域的集合各不相同。
以下说明本实施例的实验结果。本实施例的实验环境为H.264解码端,分别测试CIF格式的视频数据流News、Silent以及Football,比较国际标准组织(ISO:International Standards Organization)的参考码JM8.2以及本实施例的方法,评估计算1/2点位置像素的值所需的乘法计算量(乘法运算次数)与每一画面的存储器存取量。实验结果如以下的表2、表3及表4所示。从下列表格可看出,本实施例和已知的JM8.2相比,确实可降低乘法计算量与存储器存取频率。
News | JM8.2 | 本实施例 | 增进率 |
乘法计算量 | 35.7万/画面 | 11.3万/画面 | 68% |
存储器存取量 | 148.5K字节/画面 | 49.5K字节/画面 | 66.7% |
表2 CIF视频数据流News的实验结果
Silent | JM8.2 | 本实施例 | 增进率 |
乘法计算量 | 20.6万/画面 | 8.6万/画面 | 58.5% |
存储器存取量 | 148.5K字节/画面 | 65.4K字节/画面 | 56% |
表3 CIF视频数据流Silent的实验结果
Football | JM8.2 | 本实施例 | 增进率 |
乘法计算量 | 8.7万/画面 | 6.7万/画面 | 23% |
存储器存取量 | 148.5K字节/画面 | 117.4K字节/画面 | 21% |
表4 CIF视频数据流Football的实验结果
综上所述,本实施例采用相对较小的暂存区以储存先前计算的补差点数据,可降低补差点的运算量,降低自外部存储器读取整数点数据的频率,而且不需要太大的高速缓存。本实施例也采用分区域储存非整数点数据的方式,以维持简易的寻址运算,并且避免浪费暂存区空间。本发明的应用不限于视频编码与解码,任何需要重复计算补差点的运算系统皆可应用。计算补差点所需的整数点数据不限于取自参考画面,也可以取自二维以上的任意数据阵列。相对于上述的运算系统,整数点数据除了储存在外部存储器,也可以储存在内建的一般存储器。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (10)
1.一种补差点数据储存方法,包括:
将暂存区划分为多个区域;以及
使用该些区域储存多个非整数点的补差点数据;
其中,每一上述非整数点的每一逻辑坐标的小数部分与同一区域的另一上述非整数点的对应逻辑坐标的小数部分皆相同。
2.根据权利要求1所述的补差点数据储存方法,其中,每一上述非整数点的每一逻辑坐标的小数部分的集合与不同区域的另一上述非整数点的每一逻辑坐标的小数部分的集合皆不相同。
3.根据权利要求1所述的补差点数据储存方法,其中该补差点数据储存方法应用于视频编码或视频解码。
4.根据权利要求3所述的补差点数据储存方法,还包括:
统计至少一视频数据流的动态向量差的大小分布;以及
根据上述大小分布决定该暂存区的大小。
5.根据权利要求1所述的补差点数据储存方法,还包括:
若特定非整数点的补差点数据已储存于该暂存区,则直接提供该补差点数据;以及
若该暂存区未储存该特定非整数点的补差点数据,则自存储器读取邻近该特定非整数点的整数点数据,据以计算该补差点数据,然后将该补差点数据存入该暂存区。
6.根据权利要求5所述的补差点数据储存方法,其中,该暂存区储存的每一上述非整数点的每一逻辑坐标的小数部分的集合与不同区域的另一上述非整数点的每一逻辑坐标的小数部分的集合皆不相同。
7.根据权利要求5所述的补差点数据储存方法,还包括:
若该特定非整数点超出该暂存区的边界,则调整该暂存区的起点的逻辑坐标,使该特定非整数点落入该暂存区的边界。
8.根据权利要求7所述的补差点数据储存方法,还包括:
对该特定非整数点的每一逻辑坐标,计算该逻辑坐标减去该起点的对应逻辑坐标加上该起点的对应真实坐标的结果,以上述结果作为该特定非整数点的该逻辑坐标的对应真实坐标;
若该特定非整数点的该真实坐标小于该暂存区的对应下限,则将该真实坐标加上该暂存区的对应边长;
若该特定非整数点的该真实坐标大于该暂存区的对应上限,则将该真实坐标减去该暂存区的对应边长;以及
使用该特定非整数点的上述真实坐标存取该暂存区。
9.根据权利要求5所述的补差点数据储存方法,其中该补差点数据储存方法由运算系统执行,使用该运算系统的高速缓存器做为该暂存区,储存该些整数点数据的该存储器为该运算系统的外部存储器。
10.根据权利要求9所述的补差点数据储存方法,其中该运算系统为视频编码器或视频解码器,而且该补差点数据储存方法还包括:
统计至少一视频数据流的动态向量差的大小分布;以及
根据上述大小分布决定该暂存区的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910141065 CN101568032B (zh) | 2006-10-17 | 2006-10-17 | 补差点数据储存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910141065 CN101568032B (zh) | 2006-10-17 | 2006-10-17 | 补差点数据储存方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610135945 Division CN101166272B (zh) | 2006-10-17 | 2006-10-17 | 补差点数据储存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101568032A CN101568032A (zh) | 2009-10-28 |
CN101568032B true CN101568032B (zh) | 2011-07-27 |
Family
ID=41283946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910141065 Active CN101568032B (zh) | 2006-10-17 | 2006-10-17 | 补差点数据储存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101568032B (zh) |
-
2006
- 2006-10-17 CN CN 200910141065 patent/CN101568032B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101568032A (zh) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101998120B (zh) | 图像编码装置、图像编码方法及图像编码集成电路 | |
US20060050976A1 (en) | Caching method and apparatus for video motion compensation | |
CN101163244A (zh) | 视频解码器运动补偿过程中的像素缓存方法及系统 | |
CN109348234B (zh) | 一种高效亚像素运动估计方法及系统 | |
Berjon et al. | GPU-based implementation of an optimized nonparametric background modeling for real-time moving object detection | |
CN108537729B (zh) | 图像无级缩放方法、计算机装置及计算机可读存储介质 | |
CN101438598B (zh) | 用于产生两个独立绝对差和的指令 | |
CN1214648C (zh) | 用于在纹理映射引擎中执行运动补偿的方法与设备 | |
CN101783958B (zh) | Avs视频标准中时域直接模式运动矢量的计算方法和装置 | |
CN101533511A (zh) | 更新背景图像的方法和装置 | |
CN101568032B (zh) | 补差点数据储存方法 | |
CN101166272B (zh) | 补差点数据储存方法 | |
US8731071B1 (en) | System for performing finite input response (FIR) filtering in motion estimation | |
CN103440637B (zh) | 用于图像序列增强的方法和装置 | |
US20130127887A1 (en) | Method for storing interpolation data | |
CN106780291B (zh) | 一种实时畸变图像处理加速装置 | |
CN1319276C (zh) | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 | |
US9794580B2 (en) | Cache management device, and motion picture system and method using the same | |
JP2000287214A (ja) | 動き検出方法および装置 | |
CN115018713B (zh) | 实现图形旋转的数据存储及访问方法、装置和存储介质 | |
CN113630601B (zh) | 一种仿射运动估计方法、装置、设备及存储介质 | |
CN102891998B (zh) | 一种图像缩放、编码方法及系统 | |
CN109089124B (zh) | 一种面向运动估计的帧间数据重用方法及装置 | |
CN101459838B (zh) | 一种帧间预测系统、方法及多媒体处理器 | |
CN201467378U (zh) | 图像处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |