CN1909665A - 可变块大小运动补偿分象素插值的实现方法及实现装置 - Google Patents
可变块大小运动补偿分象素插值的实现方法及实现装置 Download PDFInfo
- Publication number
- CN1909665A CN1909665A CN 200610089144 CN200610089144A CN1909665A CN 1909665 A CN1909665 A CN 1909665A CN 200610089144 CN200610089144 CN 200610089144 CN 200610089144 A CN200610089144 A CN 200610089144A CN 1909665 A CN1909665 A CN 1909665A
- Authority
- CN
- China
- Prior art keywords
- pixel
- interpolation
- value
- type
- carried out
- 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.)
- Pending
Links
Images
Abstract
本发明涉及可变块大小运动补偿分象素插值的实现方法及实现装置,属于信号处理中的视频和图像编解码技术领域,该方法包括:将用于插值的象素数据存储到参考象素块数据缓存区;将多个插值点分为多种类型,分别对每种类型的插值点进行插值,得到运动预测值;将所述运动预测值,根据各类型插值点的按行或者按列存储到运动预测值存储器。该装置包括:依次相连的参考象素块数据缓存模块,分象素插值单元和运动预测值存储器。本发明可以提高分象素插值的效率。
Description
技术领域
本发明属于信号处理中的视频和图像编解码技术领域,特别涉及在编码解码过程中可变块大小运动补偿的VLSI体系结构及数据缓存方法。
背景技术
H.264/AVC是最新的视频编码国际标准。新的视频编码国际标准采用了许多新的编码技术,如基于上下文的变长编码(CAVLC),更高精度的运动矢量预测,可变块大小运动预测与补偿,intra预测,整型变换等,与MPEG-4视频编码国际标准相比,编码效率提高了一倍。
运动补偿的方法是,对于当前帧图像一个被解码的宏块(16×16的象素块),在片外参考帧图像存储器中,根据运动矢量,调入相应的预测块象素值并对预测块象素值进行数据缓存;根据运动矢量分象素的位置,对数据缓存中的预测块象素值,进行分象素精度插值(包括1/4象素精度和1/2象素精度插值),共有16个分象素插值点,其中有1个整象素点G和15个分象素点(a,b,c,d,e,f,g,h,i,j,k,n,p,q,r)。如图1所示。采用运动矢量分象素指向位置的插值点的值作为当前解码象素块的运动预测值。
1/4象素的插值,提高了编码效率,也增加了运算的复杂度和计算量。
传统的实现方法中,因为同一列(或者同一行)象素数据在同一个存储器单元,因此不能并行的读写同一列(同一行)象素数据。硬件实现中,采用移位寄存器阵列,来实现水平方向或者垂直方向的插值。即包括行插值运算单元,又包括列插值运算单元,硬件的使用率较低。同时插值所需的时钟周期数多。
发明内容
本发明的目的是为克服已有技术的不足之处,提供一种分象素插值的实现方法及实现装置,以提高分象素插值的效率。
本发明提出的可变块大小运动补偿分象素插值的实现方法,包括以下步骤:
1)将用于插值的象素数据存储到参考象素块数据缓存区;
2)将多个插值点分为多种类型,分别对每种类型的插值点进行插值,得到运动预测值;
3)将所述运动预测值,根据各类型插值点的按行或者按列存储到运动预测值存储器。
本发明提出的分象素插值实现装置,其特征在于,该装置包括:依次相连的参考象素块数据缓存模块,分象素插值单元和运动预测值存储器;其中:
所述参考象素块数据缓存模块,用于将输入数据根据输入地址进存储到参考象素块缓存器中,所述根据输出地址进行读取参考象素块缓存器中的数据;
所述分象素插值模块,用于根据当前块的运动矢量,确定所需运动预测值的插值点类型,并设定N个分象素的插值单元,一个分象素的插值单元,完成一个分象素点的插值,N个分象素的插值单元并行计算N个分象素点的值;
所述运动预测值存储器,用于存储插值后的结果。
本发明的特点及效果
本发明可提高插值运算单元的硬件利用率。同时大大减少了插值所需的时钟周期数。
附图说明
图1为可变块大小的7种分块模式。
图2为本发明的可变块大小运动补偿分象素插值的实现方法框图。
图3为本发明的可变块大小运动补偿分象素插值实现装置的结构框图。
图4为本发明装置中的参考象素块数据缓存的电路结构框图。
具体实施方式
本发明提出的可变块大小运动补偿分象素插值的实现方法及实现装置结合附图及实施例详细说明如下:
本发明提出的可变块大小运动补偿分象素插值的实现方法,包括以下步骤:
1)将用于插值的象素数据存储到参考象素块数据缓存区;
2)将多个插值点分为多种类型,分别对每种类型的插值点进行插值,得到运动预测值;
3)将所述运动预测值,根据各类型插值点的按行或者按列存储到运动预测值存储器。
下面以H.264/AVC为实施例,对本发明的分象素插值实现方法进行详细说明,本实施例包括如下的步骤,如图2所示:
1)将用于插值的象素数据存储到参考象素块数据缓存区;
设定参考象素块数据缓存区的存储器单元块数为B,B的取值,可以根据应用的不同,方便的通过增加或减少提高并行度或减少硬件的开销,在本实施例中,B取16;B×B大小的块为一个基本块;B×B块内的象素点(p,q),0≤p<B,0≤q<B,映射到B个存储器单元中的位置为(b,A′),其中b为存储器单元的索引,A′为相应与B×B块位置的地址偏移。
所述映射可采用直接映射方式:
b=(p+q%B)%B
A′=q
或采用另外一种映射方式:将B×B块分成4×4的小块,先对4×4小块进行块的线性移位,再对每一个小块进行线性移位,同样可以使行列数据存储分布在不同的存储器模块中。
2)将16个插值点分为6种类型,分别对6种类型的插值点进行插值;
21)根据运动矢量,将16个分象素插值点分为六种类型,分别为类型0,类型1,类型2,类型3,类型4,类型5。如表1所示。
表1
positions | |
Type0 | G |
Type1 | a,b,c |
Type2 | d,h,n |
Type3 | e,g,p,r |
Type4 | f,j,q |
Type5 | i,k |
22)对6种类型的插值点分别进行插值,N个插值运算单元可以并行插值,插值运算单元的数目可配置,可以根据应用的不同,选择不同数目的插值运算单元。在本实施例中,N为4。
如图1所示,
对于类型0,直接将整象素位置的象素值作为运动预测值;
对于类型1,在水平方向上,将象素(例如E,F,G,H,I,J等)逐行并行读取,对读取的象素进行水平方向上的插值,将插值的结果作为运动预测值;
对于类型2,在垂直方向上,将象素(例如A,C,G,M,R,T等)逐列并行读取,对读取的象素进行垂直方向上的插值,将插值的结果作为运动预测值;
对于类型3,首先在垂直方向,将象素(例如A,C,G,M,R,T等)逐列并行读取,对读取的象素进行垂直方向上的插值,得到垂直方向的半象素值(例如cc,dd,h,m,ee,ff),将垂直方向的半象素值保存在寄存器中;然后在水平方向上,将象素(例如E,F,G,H,I,J等)逐行并行读取,对读取的象素进行水平方向的插值,得到水平方向的半象素值(例如aa,bb,b,s,gg,hh);将水平方向的半象素值和垂直方向的半象素值进行线性插值,将线性插值的结果作为运动预测值;
对于类型4,首先在水平方向上,将象素(例如E,F,G,H,I,J等)逐行并行读取,对读取的象素进行水平方向的插值,得到水平方向的半象素值(例如aa,bb,b,s,gg,hh),将水平方向的半象素值保存在寄存器中;然后将水平方向的半象素值(例如aa,bb,b,s,gg,hh)在垂直方向并行读取,对读取的象素值进行垂直方向的插值,将插值的结果作为运动预测值;
对于类型5,首先在垂直方向上,将象素(例如A,C,G,M,R,T)逐列并行读取,对读取的象素进行垂直方向的插值,得到垂直方向的半象素值(例如cc,dd,h,m,ee,ff);然后将垂直方向的半象素值(例如cc,dd,h,m,ee,ff)在水平方向并行读取,对读取的垂直方向的半象素值进行水平方向的插值,将插值的结果作为运动预测值;
3)将插值的结果,即运动预测值,根据各插值类型点的按行或者按列存储到运动预测值存储器。
本发明提出的分象素插值装置,如图3所示,包括以下模块:
参考象素块数据缓存模块,分象素插值单元,运动预测值存储器。
1、参考象素块数据缓存模块
参考象素块数据缓存器将输入数据根据输入地址存储到参考象素块数据缓存。根据输出地址,读取参考象素块暑假缓存器中的数据。
参考象素块数据缓存器的结构,如图4所示,包括以下模块:
11、输入地址调整单元;输入地址调整单元将B×B块的地址通过映射转换成片上数据缓存存储器的物理地址。该映射采用如下的直接映射方式:
B×B块内的象素点(p,q),0≤p<B,0≤q<B,映射到B个存储器模块中的位置为(b,A′),
b=(p+q%B)%B
A′=q
其中b为存储器单元的索引,A′为相应与B×B块位置的地址偏移;
B×B块中每一行和每一列的数据在不同的存储器模块中,从而实现行列数据的并行存取;
或采用另外一种映射方式是,将B×B块分成4×4的小块,先对4×4小块进行块的线性移位,再对每一个小块进行线性移位,同样可以使行列数据存储分布在不同的存储器模块中。
12、输入数据调整单元;
输入数据调整单元将输入数据,移位到对应的存储器单元的位置。
13、输出地址调整单元;
输出地址调整单元将B×B块的地址通过映射转换成片上数据缓存存储器的物理地址。该转换包括如下的直接映射:
B×B块内的象素点(p,q),0≤p<B,0≤q<B,映射到B个存储器模块中的位置为(b,A′),
b=(p+q%B)%B
A′=q
其中b为存储器单元的索引,A′为相应与B×B块位置的地址偏移;
B×B块中每一行和每一列的数据在不同的存储器模块中,从而实现行列数据的并行存取。
或采用另外一种映射方式:将B×B块分成4×4的小块,先对4×4小块进行块的线性移位,再对每一个小块进行线性移位,同样可以使行列数据存储分布在不同的存储器模块中。
14、输出数据调整单元;
输出数据调整单元将输出数据进行调整,调整为B×B块中数据的顺序。
15、B个存储器单元用于存储参考帧象素块数据。
2、分象素插值模块
用于设定分象素的插值单元的个数为N,使一个分象素的插值单元,完成一个分象素点的插值。N个插值单元可并行插值,其数目可配置,可以根据应用的不同,方便的通过增加或减少插值运算单元的数目提高插值速度或减少硬件的开销。
根据当前块的运动矢量,确定所需运动预测值的插值点类型,N个分象素的插值单元并行的计算N个分象素点的值。
3、运动预测值存储器
运动预测值存储器用于存储插值后的结果。
Claims (9)
1、一种可变块大小运动补偿分象素插值的实现方法,其特征在于,包括以下步骤:
1)将用于插值的象素数据存储到参考象素块数据缓存区;
2)将多个插值点分为多种类型,分别对每种类型的插值点进行插值,得到运动预测值;
3)将所述运动预测值,根据各类型插值点的按行或者按列存储到运动预测值存储器。
2、如权利要求1所述的方法,其特征在于,所述步骤1)具体包括:
设定参考象素块数据缓存区的存储器单元块数为B,B×B块内的象素点(p,q),0≤p<B,0≤q<B,映射到B个存储器单元中的位置为(b,A′),其中b为存储器单元的索引,A′为相应与B×B块位置的地址偏移。
3、如权利要求2所述的方法,其特征在于,所述映射为:
b=(p+q%B)%B
A′=q
4、如权利要求2所述的方法,其特征在于,所述映射为:
将B×B块分成小块,先对小块进行块的线性移位,再对每一个小块进行线性移位,使行列数据存储分布在不同的存储器模块中。
5、如权利要求1所述的方法,其特征在于,所述步骤2)中B的取值为16,具体包括:
21)根据运动矢量,将16个象素插值点分为六种类型,分别为类型0,类型1,类型2,类型3,类型4,类型5,每种类型对应的象素插值点分别为类型0为整象素点G,类型1为分象素点a,b,c,类型2为分象素点d,h,n,类型3为分象素点e,g,p,r,类型4为分象素点f,j,q,类型5为分象素点i,k;
22)对所述6种类型的插值点分别在N个插值运算单元进行插值;
对于类型0,直接将整象素位置的象素值作为运动预测值;
对于类型1,在水平方向上,将象素逐行并行读取,对读取的象素进行水平方向上的插值,将插值的结果作为运动预测值;
对于类型2,在垂直方向上,将象素逐列并行读取,对读取的象素进行垂直方向上的插值,将插值的结果作为运动预测值;
对于类型3,首先在垂直方向,将象素逐列并行读取,对读取的象素进行垂直方向上的插值,得到垂直方向的半象素值,将垂直方向的半象素值保存在寄存器中;然后在水平方向上,将象素逐行并行读取,对读取的象素进行水平方向的插值,得到水平方向的半象素值;将水平方向的半象素值和垂直方向的半象素值进行线性插值,将线性插值的结果作为运动预测值;
对于类型4,首先在水平方向上,将象素逐行并行读取,对读取的象素进行水平方向的插值,得到水平方向的半象素值,将水平方向的半象素值保存在寄存器中;然后将水平方向的半象素值在垂直方向并行读取,对读取的象素值进行垂直方向的插值,将插值的结果作为运动预测值;
对于类型5,首先在垂直方向上,将象素逐列并行读取,对读取的象素进行垂直方向的插值,得到垂直方向的半象素值;然后将垂直方向的半象素值在水平方向并行读取,对读取的垂直方向的半象素值进行水平方向的插值,将插值的结果作为运动预测值;
6、一种如权利要求1所述的方法的分象素插值实现装置,其特征在于,该装置包括:依次相连的参考象素块数据缓存模块,分象素插值单元和运动预测值存储器;其中:
所述参考象素块数据缓存模块,用于将输入数据根据输入地址进存储到参考象素块缓存器中,所述根据输出地址进行读取参考象素块缓存器中的数据;
所述分象素插值模块,用于根据当前块的运动矢量,确定所需运动预测值的插值点类型,并设定N个分象素的插值单元,一个分象素的插值单元,完成一个分象素点的插值,N个分象素的插值单元并行计算N个分象素点的值;
所述运动预测值存储器,用于存储插值后的结果。
7、如权利要求6所述的装置,其特征在于,所述参考象素块数据缓存器包括:
输入地址调整单元:用于将B×B块的地址通过映射转换成片上数据缓存存储器的物理地址;
输入数据调整单元:用于将输入数据,移位到对应的存储器单元的位置;
输出地址调整单元:用于将B×B块的地址转换成片上数据缓存存储器的物理地址。
输出数据调整单元:用于输出数据调整单元将输出数据进行调整,调整为B×B块中数据的顺序;
B个存储器单元:用于存储参考帧象素块数据。
8、如权利要求7所述的装置,其特征在于,所述输入地址调整单元和输出地址调整单元中的映射关系为:
B×B块内的象素点(p,q),0≤p<B,0≤q<B,映射到B个存储器模块中的位置为(b,A′),直接映射为:
b=(p+q%B)%B
A′=q
其中b为存储器单元的索引,A′为相应与B×B块位置的地址偏移;
B×B块中每一行和每一列的数据在不同的存储器模块中,从而实现行列数据的并行存取。
9、如权利要求7所述的装置,其特征在于,所述输入地址调整单元和输出地址调整单元中的映射关系为:
将B×B块分成4×4的小块,先对4×4小块进行块的线性移位,再对每一个小块进行线性移位,同样可以使行列数据存储分布在不同的存储器模块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610089144 CN1909665A (zh) | 2006-08-07 | 2006-08-07 | 可变块大小运动补偿分象素插值的实现方法及实现装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610089144 CN1909665A (zh) | 2006-08-07 | 2006-08-07 | 可变块大小运动补偿分象素插值的实现方法及实现装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1909665A true CN1909665A (zh) | 2007-02-07 |
Family
ID=37700639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610089144 Pending CN1909665A (zh) | 2006-08-07 | 2006-08-07 | 可变块大小运动补偿分象素插值的实现方法及实现装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1909665A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100576918C (zh) * | 2007-06-27 | 2009-12-30 | 中国科学院微电子研究所 | 一种数字音视频编解码技术标准帧间预测像素生成装置 |
CN101783947B (zh) * | 2010-02-05 | 2011-11-23 | 合肥工业大学 | 基于插值算法对称性h.264解码器的亮度插值方法 |
-
2006
- 2006-08-07 CN CN 200610089144 patent/CN1909665A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100576918C (zh) * | 2007-06-27 | 2009-12-30 | 中国科学院微电子研究所 | 一种数字音视频编解码技术标准帧间预测像素生成装置 |
CN101783947B (zh) * | 2010-02-05 | 2011-11-23 | 合肥工业大学 | 基于插值算法对称性h.264解码器的亮度插值方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1290342C (zh) | 可执行区块比对移动补偿与全域移动补偿的装置与方法 | |
CN1921628A (zh) | 一种运动矢量检测装置及运动矢量检测方法 | |
CN1287598C (zh) | 用于消除区块效应和/或铃振噪声的滤波方法和装置 | |
CN1933601A (zh) | 用于无损视频编码和解码的方法及设备 | |
CN1663278A (zh) | 视频编码和解码技术 | |
CN1993995A (zh) | 用于预测多角度运动画面的直接模式运动的方法、介质和装置 | |
CN1100872A (zh) | 用于再生预测编码的视频信号的装置和方法 | |
CN1905677A (zh) | 可变块大小运动补偿的数据缓存方法及其实现装置 | |
CN1668108A (zh) | 析像度变换方法及装置 | |
CN1852442A (zh) | 一种分层运动估计方法和超大规模集成电路 | |
CN1149853C (zh) | 带有运动补偿的编码和译码装置 | |
CN1399472A (zh) | 多信道图像编码装置及其编码方法 | |
CN1703094A (zh) | 1/4像素插值应用于1/2像素插值结果的图象插值装置和方法 | |
CN1589028A (zh) | 基于像素流水的帧内预测装置及预测方法 | |
CN1909665A (zh) | 可变块大小运动补偿分象素插值的实现方法及实现装置 | |
CN1946178A (zh) | 一种用于运动估计的vlsi装置及运动估计的方法 | |
CN1745587A (zh) | 用于手持装置的视频编码方法 | |
CN1165457A (zh) | 视频信号编码系统的量化器 | |
CN1520187A (zh) | 用于视频数据压缩的系统和方法 | |
CN1780402A (zh) | 视频图像运动补偿装置 | |
CN1201589C (zh) | 运动估计方法和装置 | |
CN1825960A (zh) | 基于数据缓存的多流水线阶段信息共享方法 | |
CN1787382A (zh) | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 | |
CN1283107C (zh) | 快速运动预测方法及其装置 | |
US8363968B2 (en) | Image coding method for facilitating run length coding and image encoding device thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20070207 |