CN105847828B - 一种用于整数运动估计的参考块像素更新并行实现方法 - Google Patents
一种用于整数运动估计的参考块像素更新并行实现方法 Download PDFInfo
- Publication number
- CN105847828B CN105847828B CN201610062398.0A CN201610062398A CN105847828B CN 105847828 B CN105847828 B CN 105847828B CN 201610062398 A CN201610062398 A CN 201610062398A CN 105847828 B CN105847828 B CN 105847828B
- Authority
- CN
- China
- Prior art keywords
- reference block
- pixel
- processing elements
- block
- buffer area
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/527—Global motion vector estimation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种用于整数运动估计的参考块像素更新并行实现方法涉及数字视频编解码技术领域。本发明采用二维处理元阵列结构,对参考块像素更新并行处理,有效的提升了运动估计运算效率。通过采用根据即将处理的参考块和当前处理完成的参考块的相对位置选取不同的缓存区更新数据的方法,加快了参考块像素的更新速度,提高了像素更新的灵活性。通过采用单处理元存储4*4像素块的方式,相对于传统的像素块的存储方式(单处理元存储单像素),处理单元使用的数量缩减至原来的1/16。
Description
技术领域
本发明属于数字视频编解码技术领域,涉及视频压缩的整像素运动估计方法。
背景技术
运动估计是视频编码和视频处理中广泛使用的技术。运动估计的基本思想是由于活动图像邻近帧中的景物存在一定的相关性,因此可以将图形中的每一帧分成互不重叠的块,并且认为块中所有像素的位移量都相同。然后设法搜出每一个块在邻近帧中的位置,并且得出两者在空间位置的相对偏移量,得到的相对偏移量就是通常所说的运动矢量,得到运动矢量的过程就被称为运动估计。
随着视频质量不断提高H.264已经不能满足压缩要求,因此2013年1月26号HEVC正式成为国际上最新的视频压缩标准。但是运动估计传统的宏块大小是16*16,所以更新参考块的数据量相对较小;现在HEVC中LCU大小是64*64,更新参考块的数据量变大,对带宽提出更高的要求,旧的体系架构相对不太适合。
因此研究并设计能够支持 HEVC 视频编码标准的整数运动估计的参考块像素更新模块体系结构,并不是套用原有的架构,而是要重新设计其架构。该架构可以满足能够满足LCU参考块更新要求,并且没有增加带宽。
发明内容
本发明实例提供一种使用306个PE(Processing Element,处理元)构成的整数运动估计中参考块更新模块并行架构;
为实现上述目的,本发明所采用的技术方法如下:
一种用于整数运动估计的参考块像素更新并行实现方法,基于邻接互连的二维处理元阵列结构,其特征在于,包括以下步骤:
步骤1加法树模块利用缓存区1和缓存区2从外存加载64*64大小的参考块,该参考块位于搜索窗的左上角,并且以4*4大小的像素块按照自上到下、从左到右的存储方式,存放到PE阵列中,每个处理元存放一个4*4大小的参考块,加法树模块进行像素数据处理;
步骤二:加法树模块像素数据处理完成后,根据下一个将要处理的参考块和当前处理完成的参考块的数据相关性,选择缓存区加载搜索窗中的像素数据;
步骤三:在步骤二得到的像素数据的基础上,根据下一个将要处理的参考块和当前处理完成的参考块的数据相关性在加法树模块完成64*64大小的参考块的数据更新;
步骤四:重复步骤二和步骤三,直到搜索窗加载完成;
如权利要求1所述的方法,其特征在于,步骤二中根据即将处理参考块和当前处理完成的参考块的相对位置选取不同的缓存区更新数据,具体的:如果即将处理的参考块位于当前处理完成的参考块的左侧,则通过缓存区1从外存读取和当前处理完成的参考块相邻的左侧的一列像素数据,每个处理元存放4个像素,按照从上到下的顺序,依次存储;如果即将处理的参考块位于当前处理完成的参考块的右侧,则通过缓存区2从外存读取和当前处理完成的参考块相邻的右侧的一列数据,每个处理元存放4个像素,按照从上到下的顺序,依次存储;如果即将处理的参考块位于当前处理完成的参考块的下方,则通过缓存区3从外存读取和当前处理完成的参考块相邻的下方的一行数据,每个处理元存放4个像素,按照从左到右的顺序,依次存储;
步骤三的特征在于:加法树模块通过缓存区获取即将处理的参考块的像素数据,根据当前处理完成的参考块和即将处理的参考块的位置关系,重构参考块数据,具体的:
a.如果即将处理的参考块位于当前处理完成的参考块的左侧,即由缓存区1加载参考块像素到加法树模块;
a1.缓存区1中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给右侧相邻的处理元;
a2.加法树模块中的各个处理元,把内存中的4*4像素块的最右侧一列,即d4、d8、d12、d16,依次发送给右侧相邻的处理元,并且同时接收左侧处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
a3.加法树模块中的各个处理元,重构4*4参考块,具体的, 把各个处理元中当前4*4参考块的第3列像素,作为重构4*4参考块的第4列像素,把当前4*4参考块的第2列像素,作为重构4*4参考块的第3列像素,把当前4*4参考块的第1列像素,作为重构4*4参考块的第2列像素,把步骤a2接收的4个像素值作为重构4*4参考块的第1列的像素;
a4.下一个参考块的重构完成;
b. 如果即将处理的参考块位于当前处理完成的参考块的右侧,即由缓存区2加载参考块像素到加法树模块;
b1.缓存区2中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给左侧相邻的处理元;
b2.加法树模块中的各个处理元,把内存中的4*4像素块的最左侧一列,即d1、d5、d9、d13,依次发送给左侧相邻的处理元,并且同时接收右侧处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
b3.加法树模块中的各个处理元,重构4*4参考块,具体的, 把各个处理元中当前4*4参考块的第2列像素,作为重构4*4参考块的第1列像素,把当前4*4参考块的第3列像素,作为重构4*4参考块的第2列像素,把当前4*4参考块的第4列像素,作为重构4*4参考块的第3列像素,把步骤b2接收的4个像素值作为重构4*4参考块的第4列的像素;
b4.下一个参考块的重构完成;
c. 如果即将处理的参考块位于当前处理完成的参考块的下方,即由缓存区3加载参考块像素到加法树模块;
c1.缓存区3中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给上方相邻的处理元;
c2.加法树模块中的各个处理元,把内存中的4*4像素块的最上方一行,即d1、d2、d3、d4,依次发送给上方相邻的处理元,并且同时接收下方处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
c3.加法树模块中的各个处理元,重构4*4参考块,具体的, 把各个处理元中当前4*4参考块的第2行像素,作为重构4*4参考块的第1行像素,把当前4*4参考块的第3行像素,作为重构4*4参考块的第2行像素,把当前4*4参考块的第4行像素,作为重构4*4参考块的第3行像素,把步骤c2接收的4个像素值作为重构4*4参考块的第4行的像素;
c4.下一个参考块的重构完成;
本发明的有益效果如下:
采用二维处理元阵列结构,通过使用3个缓存区,更新参考块像素数据,降低了带宽;
通过采用单PE存储4*4像素块的方式,相对于传统的像素块的存储方式(单PE存储单像素),处理单元使用的数量缩减至原来的1/16。
通过使用参考块重构方法重构参考块,提高了数据复用率至98.4%。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,用来解释本发明,并不构成对本发明的限制。
在附图中:
图1为本发明提供的参考块更新数据流程图;
图2为本发明提供的PE邻接互连示意图;
图3为本发明提供的加法树阵列和缓存区分布示意图;
图4为本发明提供的搜索窗示意图;
图5为本发明提供的搜索窗左上角参考块示意图;
图6为下一个参考块在当前参考块左侧的示意图;
图7为缓存区1加载参考块数据示意图;
图8为下一个参考块在当前参考块右侧的示意图;
图9为缓存区2加载参考块数据示意图;
图10为下一个参考块在当前参考块下方的示意图;
图11为缓存区3加载参考块数据示意图;
图12为缓存区1和加法树模块数据交互;
图13为缓存区1加载数据完成后加法树模块单个处理元重构参考块;
图14为缓存区2和加法树模块数据交互;
图15为缓存区2加载数据完成后加法树模块单个处理元重构参考块;
图16为缓存区3和加法树模块数据交互;
图17为缓存区3加载数据完成后加法树模块单个处理元重构参考块。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
以下实施例一种用于整数运动估计的参考块像素更新并行实现方法,基于邻接互连的二维处理元阵列结构,其特征在于,包括以下步骤:
图2是 PE邻接互连示意图,参考块像素更新是在该二维邻接互连PE阵列上实现的;
图3是加法树阵列和缓存区分布示意图,灰色部分是缓存区模块(最左边一列是缓存区1,最右边一列是缓存区2,最下边一行是缓存区3),中间16*16个PE是加法树模块。一共采用了18*17个PE;
图4是和当前块匹配的大小是[-8,8)的搜索窗;
图5是参考块存储示意图,大小为64*64的参考块,存储到加法树单元;
步骤一:加法树模块利用缓存区1和缓存区2从外存加载64*64大小的参考块,该参考块位于搜索窗的左上角,并且以4*4大小的像素块,按照自上到下、从左到右的存储方式,存放到处理元阵列中,每个处理元存放一个4*4大小的参考块,加法树模块进行像素数据处理;
步骤二:加法树模块像素数据处理完成后,根据下一个将要处理的参考块和当前处理完成的参考块的数据相关性,采用蛇形扫描的方式更新参考块数据,根据两个参考块的位置关系选择缓存区加载搜索窗中的像素数据;
步骤二的特征在于:采用蛇形扫描的方式更新参考块数据,即根据将要处理的参考块和当前处理完成的参考块之间的数据相关性,将要处理的参考块可以通过当前处理完成的参考块更新一行或者一列像素数据得到。具体的,根据这两个参考块的相对位置选取不同的缓存区更新数据:
图6所示,即将处理的参考块位于当前处理完成的参考块的左侧,当前处理完成的参考块更新一列像素值,可以重构成下一个参考块;
图7所示左侧的一列像素被读入缓存区1,并且按照从上到下的顺序存储;
如果即将处理的参考块位于当前处理完成的参考块的左侧,则通过缓存区1从外存读取和当前处理完成的参考块相邻的左侧的一列像素数据,每个处理元存放4个像素,按照从上到下的顺序,依次存储;
图8所示,即将处理的参考块位于当前处理完成的参考块右侧,当前处理完成的参考块更新一列像素值,可以重构成下一个参考块;
图9所示右侧的一列像素被读入缓存区2,并且按照从上到下的顺序存储;
如果即将处理的参考块位于当前处理完成的参考块的右侧,则通过缓存区2从外存读取和当前处理完成的参考块相邻的右侧的一列像素数据,每个处理元存放4个像素,按照从上到下的顺序,依次存储;
图10所示,即将处理的参考块位于当前处理完成的参考块的下方,当前参考块更新一行像素值,可以重构成下一个参考块;
图11所示下方的一行像素被读入缓存区3,并且按照从左到右的顺序存储;
如果即将处理的参考块位于当前处理完成的参考块的下方,则通过缓存区3从外存读取和当前处理完成的参考块相邻的下方的一行数据,每个处理元存放4个像素,按照从左到右的顺序,依次存储;
步骤三:在步骤二得到的像素数据的基础上,当前处理完成的参考块和即将处理的参考块的位置关系在加法树模块完成64*64大小的参考块的数据更新;
步骤三的特征在于:加法树模块通过缓存区获取即将处理的参考块的像素数据,根据处理完成的参考块和即将处理的参考块的位置关系,重构参考块数据,具体的:
a.如果下一个参考块位于当前参考块的左侧,即由缓存区1加载参考块像素到加法树模块;
a1.缓存区1中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给右侧相邻的处理元;
如图7所示最左侧是缓存区1,把数据x1、x2、x3、x4,依次发送给右边相邻的处理元;
a2.加法树模块中的各个处理元,把内存中的4*4像素块的最右侧一列,即d4、d8、d12、d16,依次发送给右侧相邻的处理元,并且同时接收左侧处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
加法树模块中每一行处理元的执行操作如图12所示,最左边的处理元接收缓存区1中的处理元发送的4个像素值,并且把它们保存到内存中, 即D1、D2、D3、D4,并且发送4*4像素块的最右侧一列(d4、d8、d12、d16);其他的处理元把内存中的4*4像素块的最右侧一列(d4、d8、d12、d16),依次发送给右侧相邻的处理元,并且接收左侧相邻处理元发送的像素值,最后把它们保存到内存中, 即D1、D2、D3、D4;
a3.加法树模块中的各个处理元,重构4*4参考块,具体的, 把各个处理元中当前4*4参考块的第3列像素,作为重构4*4参考块的第4列像素,把当前4*4参考块的第2列像素,作为重构4*4参考块的第3列像素,把当前4*4参考块的第1列像素,作为重构4*4参考块的第2列像素,把步骤a2接收的4个像素值作为重构4*4参考块的第1列的像素;
如图13所示,4*4参考块重构,具体的,把当前4*4参考块的第4列删除,把处理元中当前4*4参考块的第3列像素(d3、d7、d11、d15),作为重构4*4参考块的第4列像素(d4、d8、d12、d16),把处理元中当前4*4参考块的第2列像素(d2、d6、d10、d14),作为重构4*4参考块的第3列像素(d3、d7、d11、d15),把当前4*4参考块的第1列像素(d1、d5、d9、d13),作为重构4*4参考块的第2列像素(d2、d6、d10、d14),把接收的四个像素(D1、D2、D3、D4)作为重构4*4参考块的第一列(d1、d5、d9、d13);
a4.下一个参考块的重构完成;
b. 如果即将处理的参考块位于当前处理完成的参考块的右侧,即由缓存区2加载参考块像素到加法树模块;
b1.缓存区2中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给左侧相邻的处理元;
如图9所示最右侧是缓存区2,把数据x1、x2、x3、x4,依次发送给左边相邻的处理元;
b2. 加法树模块中的各个处理元,把内存中的4*4像素块的最左侧一列,即d1、d5、d9、d13,依次发送给左侧相邻的处理元,并且同时接收右侧处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
加法树模块中每一行处理元的执行操作如图15所示,最右边的处理元接收缓存区2中的处理元发送的4个像素值,并且把它们保存到内存中即D1、D2、D3、D4,,并且发送4*4像素块的最左侧一列(d1、d5、d9、d13);其他的处理元把内存中的4*4像素块的最左侧一列(d1、d5、d9、d13),依次发送给左侧相邻的处理元,并且接收右侧相邻处理元发送的像素值(d1、d5、d9、d13),最后把它们保存到内存中, 即D1、D2、D3、D4;
b3.加法树模块中的各个处理元,重构4*4参考块,具体的, 把各个处理元中当前4*4参考块的第2列像素,作为重构4*4参考块的第1列像素,把当前4*4参考块的第3列像素,作为重构4*4参考块的第2列像素,把当前4*4参考块的第4列像素,作为重构4*4参考块的第3列像素,把步骤b2接收的4个像素值作为重构4*4参考块的第4列的像素;
如图15所示,4*4参考块重构,具体的,把当前4*4参考块的第1列删除,把处理元中当前4*4参考块的第2列像素(d2、d6、d10、d14),作为重构4*4参考块的第1列像素(d1、d5、d9、d13),把处理元中当前4*4参考块的第3列像素(d3、d7、d11、d15),作为重构4*4参考块的第2列像素(d2、d6、d10、d14),把当前4*4参考块的第4列像素(d4、d8、d12、d16),作为重构4*4参考块的第3列像素(d3、d7、d11、d15),把接收的四个像素(D1、D2、D3、D4)作为重构4*4参考块的第4列(d4、d8、d12、d16);
b4.下一个参考块的重构完成;
c. 如果即将处理的参考块位于当前处理完成的参考块的下方,即由缓存区3加载参考块像素到加法树模块;
c1.缓存区3中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给上方相邻的处理元;
如图11所示最下方是缓存区3,把数据x1、x2、x3、x4,依次发送给上边相邻的处理元;
c2.加法树模块中的各个处理元,把内存中的4*4像素块的最上方一行,即d1、d2、d3、d4,依次发送给上方相邻的处理元,并且同时接收下方处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
加法树模块中每一列处理元的执行操作如图16所示,最下边的处理元接收缓存区3中的处理元发送的4个像素值,并且把它们保存到内存中, 即D1、D2、D3、D4,并且发送4*4像素块的最上方一行(d1、d2、d3、d4);其他的处理元把内存中的4*4像素块的最上方一行(d1、d2、d3、d4),依次发送给上方相邻的处理元,并且接收下方相邻处理元发送的像素值(d1、d2、d3、d4),最后把它们保存到内存中, 即D1、D2、D3、D4;
c3. 加法树模块中的各个处理元,重构4*4参考块,具体的, 把各个处理元中当前4*4参考块的第2行像素,作为重构4*4参考块的第1行像素,把当前4*4参考块的第3行像素,作为重构4*4参考块的第2行像素,把当前4*4参考块的第4行像素,作为重构4*4参考块的第3行像素,把步骤c2接收的4个像素值作为重构4*4参考块的第4行的像素;
如图17所示,4*4参考块重构,具体的,把当前4*4参考块的第1行删除,把处理元中当前4*4参考块的第2行像素(d5、d6、d7、d8),作为重构4*4参考块的第1行像素(d1、d2、d3、d4),把处理元中当前4*4参考块的第3行像素(d9、d10、d11、d12),作为重构4*4参考块的第2行像素(d5、d6、d7、d8),把当前4*4参考块的第4行像素(d13、d14、d15、d16),作为重构4*4参考块的第3行像素(d9、d10、d11、d12),把接收的四个像素(D1、D2、D3、D4)作为重构4*4参考块的第4行(d13、d14、d15、d16);
c4.下一个参考块的重构完成;
步骤四:重复步骤二和步骤三,直到搜索窗加载完成;
以搜索窗大小是[-8,8)为例说明具体步骤如下:
a1 当y=7,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a2 当y=6,x = 7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a3 当y=6,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a4 当y=5,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a5 当y=5,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a6 当y=4,x = 7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a7 当y=4,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a8 当y=3,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a9 当y=3,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a10 当y=2,x=7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a11 当y=2,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a12 当y=1,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a13 当y=1,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a14 当y=0,x=7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a15 当y=0,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a16 当y=-1,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a17 当y=-1,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a18 当y=-2,x=7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a19 当y=-2,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a20 当y=-3,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a21 当y=-3,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据
a22 当y=-4,x=7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a23 当y=-4,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a24 当y=-5,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a25 当y=-5,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a26 当y=-6,x=7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a27 当y=-6,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a28 当y=-7,x = -8时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a29 当y=-7,-8<x<8时,缓存区2读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a30 当y=-8,x=7时,缓存区3读取搜索窗数据,并且传递给加法树模块更新参考块数据;
a31 当y=-8,-8=<x<7时,缓存区1读取搜索窗数据,并且传递给加法树模块更新参考块数据。
Claims (2)
1.一种用于整数运动估计的参考块像素更新并行实现方法,基于邻接互连的二维处理元阵列结构,其特征在于,包括以下步骤:
步骤一:加法树模块利用缓存区1和缓存区2从外存加载64*64大小的参考块,该参考块位于搜索窗的左上角,并且以4*4大小的像素块,按照自上到下、从左到右的存储方式,存放到处理元阵列中,每个处理元存放一个4*4大小的参考块,加法树模块进行像素数据处理;
步骤二:加法树模块像素数据处理完成后,根据下一个将要处理的参考块和当前处理完成的参考块的数据相关性,采用蛇形扫描的方式更新参考块数据,根据两个参考块的位置关系选择缓存区加载搜索窗中的像素数据;
步骤三:在步骤二得到的像素数据的基础上,根据下一个将要处理的参考块和当前处理完成的参考块的数据相关性在加法树模块完成64*64大小的参考块的数据更新;
步骤四:重复步骤二和步骤三,直到搜索窗加载完成;
其中,步骤二中根据即将处理参考块和当前处理完成的参考块的相对位置选取不同的缓存区更新数据,具体的:如果即将处理的参考块位于当前处理完成的参考块的左侧,则通过缓存区1从外存读取和当前处理完成的参考块相邻的左侧的一列像素数据,每个处理元存放4个像素,按照从上到下的顺序,依次存储;如果即将处理的参考块位于当前处理完成的参考块的右侧,则通过缓存区2从外存读取和当前处理完成的参考块相邻的右侧的一列数据,每个处理元存放4个像素,按照从上到下的顺序,依次存储;如果即将处理的参考块位于当前处理完成的参考块的下方,则通过缓存区3从外存读取和当前处理完成的参考块相邻的下方的一行数据,每个处理元存放4个像素,按照从左到右的顺序,依次存储。
2.如权利要求1所述的方法,其特征在于,步骤三中加法树模块通过缓存区获取即将处理的参考块的像素数据,根据当前处理完成的参考块和即将处理的参考块的位置关系,重构参考块数据,具体的:
a.如果即将处理的参考块位于当前处理完成的参考块的左侧,即由缓存区1加载参考块像素到加法树模块;
a1.缓存区1中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给右侧相邻的处理元;
a2.加法树模块中的各个处理元,把内存中的4*4像素块的最右侧一列,即d4、d8、d12、d16,依次发送给右侧相邻的处理元,并且同时接收左侧处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
a3.加法树模块中的各个处理元,重构4*4参考块,具体的,把各个处理元中当前4*4参考块的第3列像素,作为重构4*4参考块的第4列像素,把当前4*4参考块的第2列像素,作为重构4*4参考块的第3列像素,把当前4*4参考块的第1列像素,作为重构4*4参考块的第2列像素,把步骤a2接收的4个像素值作为重构4*4参考块的第1列的像素;
a4.下一个参考块的重构完成;
b.如果即将处理的参考块位于当前处理完成的参考块的右侧,即由缓存区2加载参考块像素到加法树模块;
b1.缓存区2中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给左侧相邻的处理元;
b2.加法树模块中的各个处理元,把内存中的4*4像素块的最左侧一列,即d1、d5、d9、d13,依次发送给左侧相邻的处理元,并且同时接收右侧处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
b3.加法树模块中的各个处理元,重构4*4参考块,具体的,把各个处理元中当前4*4参考块的第2列像素,作为重构4*4参考块的第1列像素,把当前4*4参考块的第3列像素,作为重构4*4参考块的第2列像素,把当前4*4参考块的第4列像素,作为重构4*4参考块的第3列像素,把步骤b2接收的4个像素值作为重构4*4参考块的第4列的像素;
b4.下一个参考块的重构完成;
c.如果即将处理的参考块位于当前处理完成的参考块的下方,即由缓存区3加载参考块像素到加法树模块;
c1.缓存区3中的各个处理元把内存中的4个像素即x1、x2、x3、x4,依次发送给上方相邻的处理元;
c2.加法树模块中的各个处理元,把内存中的4*4像素块的最上方一行,即d1、d2、d3、d4,依次发送给上方相邻的处理元,并且同时接收下方处理元发送的4个像素值,把它们保存到内存中,即D1、D2、D3、D4;
c3.加法树模块中的各个处理元,重构4*4参考块,具体的,把各个处理元中当前4*4参考块的第2行像素,作为重构4*4参考块的第1行像素,把当前4*4参考块的第3行像素,作为重构4*4参考块的第2行像素,把当前4*4参考块的第4行像素,作为重构4*4参考块的第3行像素,把步骤c2接收的4个像素值作为重构4*4参考块的第4行的像素;
c4.下一个参考块的重构完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610062398.0A CN105847828B (zh) | 2016-01-29 | 2016-01-29 | 一种用于整数运动估计的参考块像素更新并行实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610062398.0A CN105847828B (zh) | 2016-01-29 | 2016-01-29 | 一种用于整数运动估计的参考块像素更新并行实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105847828A CN105847828A (zh) | 2016-08-10 |
CN105847828B true CN105847828B (zh) | 2019-02-05 |
Family
ID=56580659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610062398.0A Active CN105847828B (zh) | 2016-01-29 | 2016-01-29 | 一种用于整数运动估计的参考块像素更新并行实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105847828B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108024116B (zh) * | 2016-10-28 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种数据缓存方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101945289A (zh) * | 2010-10-22 | 2011-01-12 | 上海交通大学 | 全搜索扩展可变块运动估计电路 |
CN102647594A (zh) * | 2012-04-18 | 2012-08-22 | 北京大学 | 一种整像素精度运动估计方法及其*** |
CN102932643A (zh) * | 2012-11-14 | 2013-02-13 | 上海交通大学 | 一种适用于hevc标准的扩展可变块运动估计电路 |
CN105245905A (zh) * | 2015-11-02 | 2016-01-13 | 西安邮电大学 | 一种用于并行结构的多视点视频编码强滤波实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI296091B (en) * | 2005-11-15 | 2008-04-21 | Novatek Microelectronics Corp | Motion estimation circuit and motion estimation processing element |
-
2016
- 2016-01-29 CN CN201610062398.0A patent/CN105847828B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101945289A (zh) * | 2010-10-22 | 2011-01-12 | 上海交通大学 | 全搜索扩展可变块运动估计电路 |
CN102647594A (zh) * | 2012-04-18 | 2012-08-22 | 北京大学 | 一种整像素精度运动估计方法及其*** |
CN102932643A (zh) * | 2012-11-14 | 2013-02-13 | 上海交通大学 | 一种适用于hevc标准的扩展可变块运动估计电路 |
CN105245905A (zh) * | 2015-11-02 | 2016-01-13 | 西安邮电大学 | 一种用于并行结构的多视点视频编码强滤波实现方法 |
Non-Patent Citations (3)
Title |
---|
曹伟,等.全搜索运动估计算法的高效VLSI结构设计.《固体电子学研究与进展》.2006,第26卷(第2期), |
谷会涛,等.支持多种标准的高清视频运动估计协处理器.《计算机研究与发展》.2011,第48卷(第11期), |
邓磊,等.基于AVC/AVS标准高效运动估计硬件结构设计.《计算机研究与发展》.2006,第43卷(第11期), |
Also Published As
Publication number | Publication date |
---|---|
CN105847828A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103688533B (zh) | 可减少行存储器的色度帧内预测方法及装置 | |
CN103283234B (zh) | 用于视频编码的样本自适应偏移的方法和装置 | |
US11051045B2 (en) | High efficiency adaptive loop filter processing for video coding | |
US20030020835A1 (en) | Methods and apparatus for removing compression artifacts in video sequences | |
US7720311B1 (en) | Memory and compute efficient block-based two-dimensional sample-rate converter for image/video applications | |
US8494062B2 (en) | Deblocking filtering apparatus and method for video compression using a double filter with application to macroblock adaptive frame field coding | |
CN105979271A (zh) | 视频编解码***中共享信息的方法与装置 | |
CN1989769A (zh) | 用于直接存储器访问的图像数据结构 | |
EP2819415B1 (en) | Image decoding apparatus | |
US20110085601A1 (en) | Video decoding apparatus and method based on multiprocessor | |
CN110337002A (zh) | 一种在多核处理器平台上hevc多层次高效并行解码算法 | |
CN111510739A (zh) | 一种视频传输方法及装置 | |
CN104521234B (zh) | 合并去区块处理和取样自适应偏移处理的视频处理方法和装置 | |
CN105847828B (zh) | 一种用于整数运动估计的参考块像素更新并行实现方法 | |
CN106921862A (zh) | 多核解码器***和视频解码方法 | |
CN103475877A (zh) | 视频传输方法和*** | |
CN106060080B (zh) | 一种医疗视频信号采集转码*** | |
CN102055971B (zh) | 视频压缩的去区块效应滤波装置与方法 | |
US20100014597A1 (en) | Efficient apparatus for fast video edge filtering | |
KR102247196B1 (ko) | 병렬 디코딩 경로를 사용하는 vc2 디코딩 | |
CN102034223A (zh) | 去方向性高速运动目标模糊的计算方法 | |
CN102300086A (zh) | 对参考帧边界进行扩展和对运动补偿参考样本位置进行限定的方法 | |
CN1293514C (zh) | 一种数字图像的缩放处理*** | |
CN102665056A (zh) | 视频和图像在显示终端的显示方法 | |
CN110418197B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |