基于插值算法对称性h.264解码器的亮度插值方法

文档序号:7741792阅读:283来源:国知局
专利名称:基于插值算法对称性h.264解码器的亮度插值方法
技术领域
本发明属于视频编解码技术领域,具体涉及基于插值算法对称性复用半像素插值 滤波器的H. 264解码器的亮度插值方法。
背景技术
2005年3月举行的电路与系统国际会议的论文集第5巻4558页至4561页中提到 一种分离一维的亮度插值方法,通过同时算出水平、垂直和水平垂直半像素点来提高插值 的效率。但该方法在提高插值效率的同时并没有充分挖掘插值算法的对称性以降低其超大 规模集成电路实现时的硬件复杂度,因此,采用该方法需要较多的半像素插值滤波器,具有 较大的硬件复杂度,难以节约硬件开销。

发明内容
本发明的目的是提出一种基于插值算法对称性复用半像素插值滤波器的H. 264 解码器的亮度插值方法,以减小其超大规模集成电路实现时的硬件复杂度,节约硬件开销。
本发明基于插值算法对称性复用半像素插值滤波器的H. 264解码器的亮度插值 方法,其特征在于按以下步骤对4x4大小的亮度块插值 先将插值点分为垂直插值点和水平插值点设当前整像素点所在位置为位置0, 横向正向连续相邻于位置0的三个插值点位置分别为位置1、位置2和位置3,竖向正向连 续相邻于位置0的插值点位置分别为位置4、位置8和位置12,横向正向连续相邻于位置4 的插值点位置分别为位置5、位置6和位置7,横向正向连续相邻于位置8的插值点位置分 别为位置9、位置IO和位置ll,横向正向连续相邻于位置12的三个插值点位置分别为位置 13、位置14和位置15 ;如果插值点位置属于位置1、2、3、6或位置14,则该插值点为水平插 值点,如果插值点位置属于位置0、4、5、7、8、9、10、11、12、13或位置15,则该插值点为垂直 插值点; 再根据插值点类型进行数据存储如果为垂直插值点,则将插值数据从帧存中读 取出并按列存储到数据缓冲区中,插值点横坐标x和纵坐标y的值保持不变;如果为水平插 值点,则将插值数据从帧存中读取出来并按行存储到数据缓冲区中,插值点的横坐标x和 纵坐标y的值互换; 再在第一个时钟周期内执行以下步骤
第一级流水线处理 将第一列九个整数像素点数据a00、 a01、 a02、 a03、 a04、 a05、 a06、 a07和a08从
数据缓冲区读出,并将第一列九个整数像素点数据中第一行至第六行整数像素点数据a00、 a01、a02、a03、a04和a05送入第一行六抽头加法树滤波器f irl,将第一列九个整数像素点 数据中第二行至第七行整数像素点数据a01、a02、a03、a04、a05和a06送入第二行六抽头加 法树滤波器fir2,将第一列九个整数像素点中第三行至第八行整数像素点数据a02、 a03、 a04、 a05、 a06和a07送入第三行六抽头加法树滤波器f ir3,将第一列九个整数像素点中第四行至第九行整数像素点数据a03、 a04、 a05、 a06、 a07和a08送入第四行六抽头加法树滤 波器fir4,按以下公式 b02 = (a00-5*a01+20*a02+20*a03-5*a04+a05+16)/32
b03 = (a01-5*a02+20*a03+20*a04-5*a05+a06+16)/32
b04 = (a02-5*a03+20*a04+20*a05-5*a06+a07+16)/32
b05 = (a03-5*a04+20*a05+20*a06-5*a07+a08+16)/32 并行算出第一列垂直半像素点的值并将结果通过寄存器reg寄存一级得第一列 第一行垂直半像素点b02、第一列第二行垂直半像素点b03、第一列第三行垂直半像素点 b04和第一列第四行垂直半像素点b05 ; 将第一列九个整数像素点中第三行整数像素点a02送入第一列第一行寄存器组 得该寄存器组输出regl_ul等于a02,将第一列九个整数像素点中第四行整数像素点a03送 入第一列第二行寄存器组得该寄存器组输出regl_u2等于a03,将第一列九个整数像素点 中第五行整数像素点a04送入第一列第三行寄存器组得该寄存器组输出regl_U3等于a04, 将第一列九个整数像素点中第六行整数像素点a05送入第一列第四行寄存器组得该寄存 器组输出regl_u4等于a05,将第一列九个整数像素点中第七行整数像素点a06送入第一列 第五行寄存器组得该寄存器组输出regl_u5等于a06 ;
再在第二个时钟周期内执行以下步骤
第二级流水线处理 将第一列第一行寄存器组输出regl_Ul送入第二列第一行寄存器组得第二列第 一行寄存器组输出reg2_ul等于a02,将第一列第二行寄存器组输出regl_u2送入第二列第 二行寄存器组得第二列第二行寄存器组输出reg2_u2等于a03,将第一列第三行寄存器组 输出regl_U3送入第二列第三行寄存器组得第二列第三行寄存器组输出reg2_u3等于a04, 将第一列第四行寄存器组输出regl—u4送入第二列第四行寄存器组得第二列第四行寄存 器组输出reg2_u4等于a05,将第一列第五行寄存器组输出regl_U5送入第二列第五行寄存 器组得第二列第五行寄存器组输出reg2_u5等于a06 ; 将第一列第一行垂直半像素点b02送入第二列第六行寄存器组得第二列第六行 寄存器组输出reg2_u6等于b02,将第一列第二行垂直半像素点b03送入第二列第七行寄 存器组得第二列第七行寄存器组输出reg2_u7等于b03,将第一列第三行垂直半像素点b04 送入第二列第八行寄存器组得第二列第八行寄存器组输出reg2_u8等于b04,将第一列第 四行垂直半像素点b05送入第二列第九行寄存器组得第二列第九行寄存器组输出reg2_u9 等于b05 ; 在该第二个时钟周期内的第一级流水线按第一个时钟周期内第一级流水线相同
的方式进行处理,得第二列垂直半像素点b12、 b13、 b14和b15以及第一列寄存器组输出
regl_ul、 regl_u2、 regl_u3、 regl_u4禾卩regl_u5的值; 再在第三、第四、第五、第六和第七个时钟周期内执行以下步骤 在各时钟周期内分别进行第三、四、五、六和第七级流水线处理 把第二列第一行寄存器组输出reg2—ul、第二列第二行寄存器组输出reg2—u2、第
二列第六行寄存器组输出reg2_u6和第二列第一行垂直半像素点b12送入四输入逻辑处理
单元l,经过以下处理得四输入逻辑处理单元1上行输出e02和四输入逻辑处理单元1下行
7输出f02 ; 第一四输入逻辑处理单元mul的处理过程如下,先按照公式
c02 = (reg2_ul+reg2_u6+l) >> 1
d02 = (reg2_u2+reg2_u6+l) >> 1 算出均值处理单元1的输出c02和均值处理单元2的输出d02,然后把第二列第 一行寄存器组输出reg2—ul、第二列第二行寄存器组输出reg2—u2、第二列第六行寄存器组 输出reg2—u6、第二列第一行垂直半像素点bl2、均值处理单元1输出c02和均值处理单元 2输出d02送入六选二模块选择出第一四输入逻辑处理单元mul上行输出e02和第一四输 入逻辑处理单元mul下行输出f02 ; 其中六选二模块的选择过程如下如果向量竖坐标y的值为l,则选择第一四输入 逻辑处理单元mul上行输出e02等于第二列第一行寄存器组输出reg2_ul,如果竖坐标y的 值为2,则选择第一四输入逻辑处理单元mul上行输出e02等于第二列第六行寄存器组输出 reg2_u6,如果竖坐标y的值为3,则选择第一四输入逻辑处理单元mul上行输出e02等于第 二列第二行寄存器组输出reg2—u2,如果竖坐标y的值为0,则选择第一四输入逻辑处理单 元mul上行输出e02为等于0 ;如果向量横坐标x的值为1,则选择第一四输入逻辑处理单 元mul下行输出f02等于第二列第六行寄存器组输出reg2—u6,如果向量横坐标x的值为 3,则选择第一四输入逻辑处理单元mul下行输出f02等于第二列第一行垂直半像素点bl2, 当向量横坐标x的值为0,向量竖坐标y的值为0,则选择第一四输入逻辑处理单元mul下 行输出f02等于第二列第一行寄存器组输出reg2—ul,如果向量竖坐标y的值为l,则选择 第一四输入逻辑处理单元mul下行输出f02等于均值处理单元1的输出c02,如果向量竖坐 标y的值为2,则选择第一四输入逻辑处理单元mul下行输出f02等于第二列第六行寄存器 组输出reg2—u6,如果向量竖坐标y的值为3,则选择第一四输入逻辑处理单元mul下行输 出f02等于均值处理单元2的输出d02,如果向量横坐标x的值为2,则选择第一四输入逻 辑处理单元mul下行输出f0等于0 ; 按第一四输入逻辑处理单元mul同样的操作,把第二列第二行寄存器组输出 reg2—u2、第二列第三行寄存器组输出reg2—u3、第二列第七行寄存器组输出reg2_U7和第 二列第二行垂直半像素点bl3送入第二四输入逻辑处理单元mu2得第二四输入逻辑处理单 元mu2上行输出e03和第二四输入逻辑处理单元mu2下行输出f03,把第二列第三行寄存器 组输出reg2—u3、第二列第四行寄存器组输出reg2—u4、第二列第八行寄存器组输出reg2_ u8和第二列第二行垂直半像素点bl3送入第三四输入逻辑处理单元mu3得第三四输入逻辑 处理单元mu3上行输出e04和第三四输入逻辑处理单元mu3下行输出f04,把第二列第四行 寄存器组输出reg2—u4、第二列第五行寄存器组输出reg2—u5、第二列第九行寄存器组输出 reg2_u9和第二列第三行垂直半像素点b14送入第四四输入逻辑处理单元mu4得第四四输 入逻辑处理单元mu4上行输出e05和第四四输入逻辑处理单元mu4下行输出f05 ;
将第一四输入逻辑处理单元mul上行输出e02送入第一行六抽头脉动阵滤波器 fir6_ul得第一行六抽头脉动阵滤波器fir6_ul输出ul_fir6,第二四输入逻辑处理单元 mu2上行输出e03送入第二行六抽头脉动阵滤波器fir6_u2得第二行六抽头脉动阵滤波器 fir6—u2输出u2—fir6,第三四输入逻辑处理单元mu3上行输出e04送入第三行六抽头脉动 阵滤波器fir6_u3得第三行六抽头脉动阵滤波器fir6_u3输出u3_fir6,第四四输入逻辑处理单元mu4上行输出e05送入第四行六抽头脉动阵滤波器fir6_u4得第四行六抽头脉动 阵滤波器fir6_u4输出u4_fir6 ;将第一四输入逻辑处理单元mul的下行输出f02送入第 三列第一行寄存器组,第三列第一行寄存器组将输出送入第四列第一行寄存器组,第四列 第一行寄存器组将输出送入第五列第一行寄存器组,第五列第一行寄存器组将输出送入第 六列第一行寄存器组得第六列第一行寄存器组输出reg6—ul,将第二四输入逻辑处理单元 mu2的下行输出f03送入第三列第二行寄存器组,第三列第二行寄存器组将输出送入第四 列第二行寄存器组,第四列第二行寄存器组将输出送入第五列第二行寄存器组,第五列第 二行寄存器组将输出送入第六列第二行寄存器组得第六列第二行寄存器组输出reg6—u2, 将第三四输入逻辑处理单元mu3的下行输出f04送入第三列第三行寄存器组,第三列第三 行寄存器组将输出送入第四列第三行寄存器组,第四列第三行寄存器组将输出送入第五列 第三行寄存器组,第五列第三行寄存器组将输出送入第六列第三行寄存器组得第六列第三 行寄存器组输出reg6—u3,将第四四输入逻辑处理单元mu4的下行输出f05送入第三列第四 行寄存器组,第三列第四行寄存器组将输出送入第四列第四行寄存器组,第四列第四行寄 存器组将输出送入第五列第四行寄存器组,第五列第四行寄存器组将输出送入第六列第四 行寄存器组得第六列第四行寄存器组输出reg6_u4 ; 在各该时钟周期内的第一级流水线按第一个时钟周期内第一级流水线相同的方 式进行处理,第二级流水线按第二个时钟周期内第二级流水线相同的方式进行处理;
再在第八个时钟周期内执行以下步骤
第八级流水线处理 将第六列第一行寄存器组输出reg6_ul和第一行六抽头滤波器输出ul_f ir6送入 第一二输入逻辑处理单元mnl得第一列第一行内插点g02,将第六列第二行寄存器组输出 reg6_u2和第二行六抽头滤波器输出u2_f ir6送入第二二输入逻辑处理单元mn2得第一列 第二行内插点g03,将第六列第三行寄存器组输出reg6—u3和第三行六抽头滤波器输出u3_ fir6送入第三二输入逻辑处理单元mn3得第一列第三行内插点g04,将第六列第四行寄存 器组输出reg6_u4和第四行六抽头滤波器输出u4_fir6送入第四二输入逻辑处理单元mn4 得第一列第四行内插点g05; 第一二输入逻辑处理单元mnl对第六列寄存器组输出reg6_ul与第一行六抽头滤 波器输出ul_fir6的处理过程如下,将第六列第一行寄存器组输出reg6_ul与第一行六抽 头滤波器输出ul_fir6送入均值处理单元3得均值处理单元3输出data—ul,将第六列第 一行寄存器组输出reg6—ul、均值处理单元3输出data_ul和第一行六抽头滤波器输出ul_ fir6送入三选一模块得第一列第一行内插点g02 ;三选一模块工作过程为如果向量横坐 标x的值为O,则第一列第一行内插点g02的值为第六列第一行寄存器组输出reg6—ul,如 果向量横坐标x的值为2,则第一列第一行内插点g02的值为第一行六抽头滤波器输出ul_ fir6,如果向量横坐标x的值为1或3,则第一列第一行内插点g02的值为均值处理单元3 输出data—ul,按同样的步骤可以得出第一列第二行内插点g03、第一列第三行内插点g04 和第一列第四行内插点g05; 在该时钟周期内的第一、二、三、四、五、六、七级流水线仍按前面各时钟周期内的 第一、二、三、四、五、六、七级流水线相同的方式进行处理; 最后按流水线的运行次序依次算出第二列内插点g12、 g13、 g14和gl5,第三列内插点g22、 g23、 g24和g25,第四列内插点g32、 g33、 g34和g35的值。 由于本发明采用了基于插值算法对称性复用半像素插值滤波器的11.264解码器 的亮度插值方法,相对于目前现有的分离一维亮度插值方法,本发明利用插值算法的对称 性,复用半像素插值滤波器,从而减小了H. 264解码器中亮度插值模块超大规模集成实现 时的硬件复杂度,节约了硬件开销,降低了成本。


图1是H. 264亮度4x4块半像素插值算法示意图。 图2是H. 264亮度4x4块1/4像素点插值算法局部示意图。 图3是采用本发明基于插值算法对称性复用半像素插值滤波器的11.264解码器的
亮度插值方法所设计的亮度插值器的顶层结构示意图。 图4是插值位置示意图。 图5是对应图3中firl、fir2、fir3和fir4滤波器的六抽头加法树滤波器结构示 意图。 图6是对应图3中的mul、mu2、mu3和mu4模块的四输入逻辑处理单元示意图。
图7是对应图3中的reg皿itl、reg皿it2、reg皿it3禾口reg皿it4模块的移位寄存 器组结构示意图。 图8是对应图3中fir6_ul、fir6_u2、fir6_u3和fir6_u4滤波器的六抽头脉动阵 滤波器结构示意图。 图9是对应图3中的mnl、mn2、mn3和mn4模块的二输入逻辑处理单元示意图。
具体实施方式

实施例1 : 图l给出了 11.264亮度4"块半像素插值算法示意图。如图1中所示在H. 264 中亮度块中共有七种大小不同的块做插值运算,分别是16*16、16*8、8*16、8*8、8*4、4*8和 4*4大小块,最终都可分解为4*4块的插值,由于六抽头滤波器的操作,需要将4*4的块扩展 成9*9的块,图1中以符号a00、al0、a20、a30、a40、a50、a60、a70、a80、a01、all、a21、a31、 a41、 a51、 a61、 a71、 a81、 a02、 a12、 a22、 a32、 a42、 a52、 a62、 a72、 a82、 a03、 a13、 a23、 a33、 a43、 a53、 a63、 a73、 a83、 a04、 a14、 a24、 a34、 a44、 a54、 a64、 a74、 a84、 a05、 a15、 a25、 a35、 a45、 a55、 a65、 a75、 a85、 a06、 a16、 a26、 a36、 a46、 a56、 a66、 a76、 a86、 a07、 a17、 a27、 a37、 a47、 a57、 a67、 a77、 a87、 a08、 a18、 a28、 a38、 a48、 a58、 a68、 a78和a88代表整像素点,符号 h20、 h30、 h40、 h50、 h21、 h31、 h41、 h51、 h22、 h32、 h42、 h52、 h23、 h33、 h43、 h53、 h24、 h34、 h44、h54、h25、h35、h45、h55、h26、h36、h46、h56、h27、h37、h47、h57、h28、h38、h48和h58代 表水平内插半像素点,符号v22、 v32、 v42、 v52、 v62、 v23、 v33、 v43、 v53、 v63、 v24、 v34、 v44、 v54、 v64、 v25、 v35、 v45、 v55和v65代表垂直内插半像素点,符号hv22、 hv32、 hv42、 hv52、 hv23、hv33、hv43、hv53、hv24、hv34、hv44、hv54、hv25、hv35、hv45和hv55代表水平垂直内 插半像素点; 以符号a22表示的整像素点周围的半像素点计算为例,该半像素点值按如下公式 计算
h22 = (C*(a20, a21, a22, a23, a24, a25)T+16) >> 5 (1) v22 = (C*(a02, a12, a22, a32, a42, a52)T+16) >> 5 (2) hv22 = (O(v20, v21, v22, v23, v24, v25)T+16) >> 5 = (C*(h02, h12, h22, h32, h42, h52)T+16) >> 5 (3) 其中矩阵C是滤波系数组成的系数矩阵(1, -5, 20, 20, _5, 1),式中的符号">>"
表示算术右移; 由式(1)和式(2)以及图1中所示各像素点位置可知,h22的计算系数a20、 a21、 a22、 a23、 a24和a25与v22的计算系数a02、 a12、 a22、 a32、 a42和a52关于9*9矩阵的对 角线a00、 all、 a22、 a33、 a44、 a55、 a66、 a77和a88对称,并且h22与v22也关于此对角线 对称,而hv22在此对角线上,并且由式(3)知,它既可以通过对水平半像素进行六抽头滤波 得到,也可以通过对垂直半像素进行六抽头滤波而得到; 图2给出了 H. 264亮度4x4块1/4像素点插值算法局部示意图。如图2中所示 a22、a23、a32和a33为整像素点,其分别处于1/4像素点插值算法局部示意图的4个顶点, h22、v22、hv22、v23和h32为半像素点,h22处于a22和a23的正中间位置,v22处于a22和 a32的正中间位置,v23处于a23和a33的正中间位置,h32处于a32和a33的正中间位置, hv22处于v22和a23的正中间位置,xl、 x2、 x3、 x4、 yl、 y2、 y3、 y4、 xyl、 xy2、 xy3和xy4为 1/4像素内插点,xl处于a22和h22的正中间位置,x2处于a23和h22的正中间位置,x3 处于h22和hv22的正中间位置,x4处于h32和hv22的正中间位置,yl处于a22和v22的 正中间位置,y2处于a32和v22的正中间位置,y3处于hv22和v22的正中间位置,y4处于 hv22和v23的正中间位置,xyl处于h22和v22的正中间位置,xy2处于h22和v23的正中 间位置,xy3处于h32和v22的正中间位置,xy4处于h32和v23的正中间位置;其中1/4像 素点按如下公式计算xl =(a22+h22+l) >> 1(4)x2 =(a23+h22+l) >> 1(5)x3 =(hv22+h22+l) >> 1(6)x4 =(hv22+h32+l) >> 1(7)yi =(a22+v22+l) >> 1(8)y2 =(a32+v22+l) >> 1(9)y3 =(hv22+v22+l) >> 1(10)y4 ==(hv22+v23+l) >> 1(11)xyl ==(h22+v22+l) >> 1(12)xy2=(h22+v23+l) >> 1(13)xy3 ==(v22+h32+l) >> 1(14)xy4=(h32+v23+l) >> 1(15)通过比较以上l/4像素的计算公式以及插值点位置可以发现,1/4像素点xl、 x2x3和x4与1/4像素点yl、y2、y3和y4关于对角线对称,1/4像素点xy2与xy3关于对角线对 称,而1/4像素点xyl和xy4在此对角线上,基于此对称性,图3给出了采用本发明基于插值 算法对称性复用半像素插值滤波器的H. 264解码器的亮度插值方法所设计的亮度插值器 的顶层结构示意图;如图3所示x, y表示插值位置的坐标,第一至第九像素点分别为输入 到亮度插值器的九个整像素点数据,第一至第六像素点送入六抽头加法树滤波器firl进 行六抽头滤波处理,并将六抽头加法树滤波器firl滤波后的结果送入reg2_u2寄存一级, 第二至第七像素点送入六抽头加法树滤波器f ir2进行六抽头滤波处理,并将六抽头加法 树滤波器f ir2滤波后的结果送入reg4_U2寄存一级,第三至第八像素点送入六抽头加法树 滤波器f ir3进行六抽头滤波处理,并将六抽头加法树滤波器f ir3滤波后的结果送入reg6_ u2寄存一级,第四至第九像素点送入六抽头加法树滤波器fir4进行六抽头滤波处理,并将六抽头加法树滤波器fir4滤波后的结果送入reg8_U2寄存一级,同时将第三像素点数据 送入寄存器组regl—ul, regl_ul的输出送入寄存器regl_u2,第四像素点数据送入寄存器 组reg2—ul, reg2_ul的输出送入寄存器reg3_u2,第五像素点数据送入寄存器组reg3_ul, reg3_ul的输出送入寄存器reg5—u2,第六像素点数据送入寄存器组reg4—ul,reg4—ul的输 出送入寄存器reg7—u2,第七像素点数据送入寄存器组reg5—ul, reg5_ul的输出送入寄存 器reg9_u2,将x禾P y的值与regl_u2、 reg2_u2和reg3_u2的输出送入mul, mul的两个输 出分别送入fir6—1和regunitl, fir6—1和regunitl的输出与x和y的值送入mnl算出第 一插值点的值,将x禾P y的值与reg3_u2、 reg4_u2和reg5_u2的输出送入mu2, mu2的两个 输出分别送入f ir6_2和regunit2, f ir6_2和regunit2的输出与x和y的值送入mn2算出 第二插值点的值,将x禾P y的值与reg5_u2、 reg6_u2和reg7_u2的输出送入mu3, mu3的两 个输出分别送入f ir6_3和regunit3, f ir6_3和regunit3的输出与x和y的值送入mn3算 出第三插值点的值,将x禾P y的值与reg7_u2、 reg8_u2和reg9_u2的输出送入mu4, mu4的 两个输出分别送入f ir6_4和regunit4, f ir6_4和regunit4的输出与x和y的值送入mn4 算出第四插值点的值;对于一个4x4大小的亮度块按以下步骤进行插值
先将插值点分为垂直插值点和水平插值点图4给出了插值位置示意图。如图4 所示设当前整像素点所在位置为位置O,横向正 向连续相邻位置O的三个插值点位置分别 为位置1、位置2和位置3,竖向正向连续相邻位置0的插值点位置分别为位置4、位置8和 位置12,横向正向连续相邻位置4的插值点位置分别为位置5、位置6和位置7,横向正向连 续相邻位置8的插值点位置分别为位置9、位置10和位置ll,横向正向连续相邻位置12的 三个插值点位置分别为位置13、位置14和位置15,其中的插值位置0、1、2、3、4、5、6、7、8、9、 10、11、12、13、14、15分别对应图2中的像素点a22、xl、h22、x2、yl、xyl、x3、xy2、 v22、y3、 hv22、y4、y2、xy3、x4、xy4 ;如果插值点位置属于图4中的1、2、3、6或14中任何一个,则该 插值点为水平插值点,如果插值点属于图4中的0、4、5、7、8、9、10、11、12、13或15中任何一 个,则该插值点为垂直插值点; 再根据插值点类型进行数据存储如果为垂直插值点,则将插值数据从帧存中读 取出来并按列存储到数据缓冲区中,插值点横坐标x和纵坐标y的值保持不变,如果为水 平插值点,则将插值数据从帧存中读取出来按行存储到数据缓冲区中,并将插值点横坐标x 和纵坐标y的值互换; 再在第一个时钟周期内执行以下步骤
第一级流水线处理 从数据缓存区读出第一列九个像素点数据,分别为a00、 a01、 a02、 a03、 a04、 a05、 a06、 a07和a08,把这九个像素点的数据送入四个并行的六抽头加法树滤波器firl、 fir2、 fir3和fir4中,按以下公式 data_firl = b02 = (a00-5*a01+20*a02+20*a03-5*a04+a05+16)/32 data_fir2 = b03 = (a01-5*a02+20*a03+20*a04-5*a05+a06+16)/32 data_fir3 = b04 = (a02-5*a03+20*a04+20*a05-5*a06+a07+16)/32 data_fir4 = b05 = (a03-5*a04+20*a05+20*a06-5*a07+a08+16)/32 并行算出第一列垂直半像素点b02、 b03、 b04和b05的值并把结果寄存一级得寄
存器输出data_firl、 data_fir2、 data_fir3和data_fir4,其中六抽头加法树滤波器的结构如图5所示该模块有六个整像素输入,我们令他们为第一像素输入、第二像素输入、第 三像素输入、第四像素输入、第五像素输入和第六像素输入,将第一像素输入和第二像素输 入送入第一加法器相加,并把结果送入第一 S2模块右移两位,同时将第一像素输入和第二 像素输入送入第二加法器相加,第二加法器的输出和第一 S2模块的输出送入第三加法器 相加,将第三像素输入和第四像素输入送入第四加法器相加,并把结果送入S4模块右移四 位,同时将第三像素输入和第四像素输入送入第五加法器相加,并把结果送入第二 S2模块 右移两位,S4模块的输出和第二 S2模块的输出送入第六加法器相加,将第六加法器的输出 和第三加法器的输出送入第七加法器相加,第五像素输入和第六像素输入送入第八加法器 相加,将第八加法器的输出和第七加法器的输出送入第九加法器相加得最终六抽头加法树 滤波器的输出; 把数据a02、a03、a04、a05禾口 a06并行送入寄存器组regl_ul、 regl_u2、 regl_u3、 regl_u4禾口 egl_u5得 regl_ul = a02 regl_u2 = a03
regl_u3 = a04 regl_u4 = a05
regl_u5 = a06 再在第二个时钟周期内执行以下步骤
第二级流水线处理 将寄存器组regl_ul、 regl_u2、 regl_u3、 regl_u4禾口 regl_u5的输出regl_ul、 regl_u2、 regl_u3、 regl_u4禾口 regl_u5并行送入寄存器组reg2_ul、 reg2_u2、 reg2_u3、 reg2_u4禾口 reg2_u5得 reg2_ul = regl_ul = a02 reg2_u2 = regl_u2 = a03
reg2_u3 = regl_u3 = a04 reg2_u4 = regl_u4 = a05
reg2_u5 = regl_u5 = a06 将data_firl、data_fir2、data_fir3禾口 data_fir4送入寄存器组reg2_u6、reg2_ u7、 reg2_u8禾口 reg2_u9得 reg2_u6 = data_firl = b02 reg2_u7 = data_fir2 = b03
reg2_u8 = data_f ir3 = b04 reg2_u9 = data_f ir4 = b05
第一级流水线处理得 从数据缓存区读出第二列九个像素点数据a10、 all、 al2、 al3、 al4、 al5、 al6、 al7
和al8,把九个像素点数据送入四个并行的六抽头加法树滤波器firl、 fir2、 fir3和fir4,
按公式并行算出第二列垂直半像素点b12、 b13、 b14和b15的值并把结果寄存一级得 data_firl = bl2 = (al0-5*all+20*al2+20*al3_5*al4+al5+16)/32 data_fir2 = bl3 = (all-5*al2+20*al3+20*al4_5*al5+al6+16)/32 data_fir3 = bl4 = (al2-5*al3+20*al4+20*al5_5*al6+al7+16)/32 data_fir4 = bl5 = (al3-5*al4+20*al5+20*al6_5*al7+al8+16)/32 矛巴数据al2、al3、al4、a15禾P a16并畔亍送入寄存器纟且regl_ul、 regl_u2、 regl_u3、
regl_u4禾口 regl_u5得 regl_ul = al2 regl_u2 = al3 regl_u3 = al4 regl_u4 = al5
regl_u5 = al6 再在第三个时钟周期内执行以下步骤
第三级流水线处理 把reg2—ul = a02、reg2_u2 = a03、reg2_u6 = b02和data_f irl 二bl2送入第一四 输入逻辑处理单元mul,经过以下处理得e02和f02,其中四输入逻辑处理单元的结构如图6 所示其有四个输入,分别定义他们为第一四输入逻辑输入、第二四输入逻辑输入、第三四 输入逻辑输入和第四四输入逻辑输入,先将第二四输入逻辑输入和第三四输入逻辑输入送 入pr0CesS_aVel,将第三四输入逻辑输入和第四四输入逻辑输入送入pr0CesS_aVe2,最后 将第一四输入逻辑输入、第二四输入逻辑输入、process—avel模块输出、第三四输入逻辑输 入、process—ave2模块输出和第四四输入逻辑输入送入六选二模块mux6to2得最终输出;
先按公式 c02 = (reg2_ul+reg2_u6+l) >> 1
d02 = (reg2_u2+reg2_u6+l) >> 1 算出c02和c03的值,然后把reg2_ul = a02、 reg2_u2 = a03、 reg2_u6 = b02、 data_f irl = b12、 c02和d02送入六选二模土央得出datal_ul和data2_ul的值;
其中六选二模块的选择过程如下如果y的值为1,则选择e02 = reg2_ul = a02, 如果y的值为2,则选择e02 = reg2_u6 = b02 ;如果y的值为3,则选择e02 = reg2_u2 = a03,如果y的值为0,则选择e02为默认值0,如果x的值为1,则选择f02 = reg2_u6 = b02, 如果x的值为3,则选择f02 = data_f irl = b12,当x的值为0时,如果y的值为0,则选择 f02 = reg2_ul = a02,如果y的值为l,则选择f02 = c02,如果y的值为2,则选择f02 = reg2_u6 = b02,如果y的值为3,则选择f02 = d02,如果x的值为2,则选择f02 = 0 ;
按与以上同样的处理方式,把reg2—u2 = a03、reg2_u3 = a04、reg2_u7 = b03和 data_fir2 = b13送入第二四输入逻辑处理单元咖2得e03和f03的值,把reg2—u3 = a03、 reg2_u4 = a04、reg2_u8 = b03和data_f ir2 = b13送入第三四输入逻辑处理单元mu3得 e04禾口 f04的值,矛巴reg2_u4 = a04、 reg2_u5 = a05、 reg2_u9 = b04禾口 data_f ir2 = bl4 送入第四四输入逻辑处理单元mu4得e05和f05的值; 四输入逻辑处理单元组的输出e02、e03、e04和e05分别送给四个六抽头脉动阵滤 波器fir6—ul、fir6—u2、fir6—u3和fir6—u4,四输入逻辑处理单元组的输出f02、f03、f04和 f05分别送给四个移位寄存器组reg皿itl、reg皿it2、reg皿it3禾口reg皿it4,其中reg皿itl 由reg3_l、reg4_l、:reg5_l禾口 reg6_l纟且成,regunit2由reg3_2、reg4_2、:reg5_u2禾口 reg6_2 组成,reg皿it3由reg3_3、 reg4_3、 reg5_3禾卩reg6_3组成,reg皿it4由reg3_4、 reg4_4、 reg5_4和reg6—4组成,其移位寄存器组的结构如图7所示移位寄存器组由四个寄存器组 组成,先将输入送入寄存器组regs0,再将寄存器组regs0的输出送入寄存器组regsl,再将 寄存器组regsl的输出送入寄存器组regs2,最后将寄存器组regs2的输出送入寄存器组 reg3s,寄存器组regs3的输出即为移位寄存器组的输出; 第二级流水线处理,按前面第二级流水线相同的过程和方式对寄存器组reg2—ul、 reg2_u2、reg2_u3、reg2_u4、reg2_u5、reg2_u6、reg2_u7、reg2_u8禾口 reg2—u9进行处理得
reg2_ul = regl_ul = al2 reg2_u2 = regl_u2 = al3
reg2_u3 = regl_u3 = al4 reg2_u4 = regl_u4 = al5[O川]reg2_u5 = regl_u5 = al6reg2_u6 = data_firl = bl2 reg2_u7 = data_fir2 = bl3reg2_u8 = data_fir3 = bl4 reg2_u9 = data_fir4 = bl5 第一级流水线处理,按前面第一级流水线相同的过程和方式处理得 第三列九个像素点从数据缓存区读取出并送入firl、fir2、fir3和fir4滤波器和
寄存器组regl_ul、 regl_u2、 regl_u3、 regl_u4禾口 regl_u5得 data_firl = b22 = (a20-5*a21+20*a22+20*a23_5*a24+a25+16)/32 data_fir2 = b23 = (a21-5*a22+20*a23+20*a24_5*a25+a26+16)/32 data_fir3 = b24 = (a22-5*a23+20*a24+20*a25_5*a26+a27+16)/32 data_fir4 = b25 = (a23-5*a24+20*a25+20*a26_5*a27+a28+16)/32 regl_ul = a22 regl_u2 = a23 regl_u3 = a24 regl_u4 = a25 regl_u5 = a26 再将第三级流水线的输出送入组成流水线第四、五、六和七级的四个并行六抽头脉动阵滤波器fir6_ul、fir6_u2、fir6_u3和fir6_u4和四个并行移位寄存器组regunitl、regunit2、 regunit3和regunit4,六抽头脉动阵滤波器的结构如图8所示该图中标注有D符号的模块表示将数据寄存一级的寄存器单元,标注有Sx符号的模块表示将输入的数据左移x位,该模块有一个输入端口 ,先将输入数据送入第一加法器、第二加法器、第三加法器、第四加法器、第一 S2模块、第二 S2模块和S4模块,并将第一 S2的输出送入第一加法器和第二加法器,第二 S2模块的输出送入第三加法器和第四加法器,S4模块的输出送入第二加法器和第三加法器,再将输入数据送入第一 D模块,将第一 D模块的输出和第四加法器的输出送入第一减法器,再将第一减法器的输出送入第二 D模块,将第二 D模块的输出和第三加法器的输出送入第五加法器,将第五加法器的输出送入第三D模块,将第三D模块的输出和第二加法器的输出送入第六加法器,第六加法器的输出送入第四D模块,再将第四D模块的输出和第一加法器的输出送入第二减法器,第二减法器的输出送入第五D模块,第五D模块的输出和输入送入第七加法器得六抽头脉动阵滤波器的输出;在六个时钟周期后寄存器组regimitl、regimit2、regimit3禾口 regunit4禾口六抽头滤波器组f ir6_ul、f ir6_u2、f ir6_
u3和fir6_u4的输出如下reg6_ul =f02 reg6_u2 = f03 reg6_u3 = f04 reg6_u4 = f05
ul_fir6 =(e02-5氺el2+20氺e22+20氺e32-5氺e42+e52+16L/32u2_fir6 =(e03-5氺el3+20氺e23+20氺e33-5氺e43+e53+16L/32u3_fir6 =(e04-5氺el4+20氺e24+20氺e34-5氺e44+e54+16L/32u4_fir6 =(e05-5氺el5+20氺e25+20氺e35-5氺e45+e55+16L/32 当串行的输入一行九个连续的整像素时,在第六到第九个时钟周期将会连续的输出四个水平半像素值,当串行的输入一行九个连续的垂直半像素时,在第六到第九个时钟周期将会连续的输出四个水平垂直半像素值; 第一、二和三级流水线仍按前面第一、二和三级流水线相同的方式运行;
再进行第八级流水线处理)|f reg6_ul、 reg6_u2、 reg6_u3禾口 reg6_u4与ul_fir6、 u2_fir6、 u3_fir6禾口 u4_fir6送入第一二输入逻辑处理单元mnl得到第一列内插点输出值g02、 g03、 g04和g05,二输入逻辑处理单元的结构如图9所示令该模块输入分别为第一处理单元输入和第二处理单元输入,先将第一处理单元输入和第二处理单元输入送入pr0CesS_aVe3模块,最后将pr0CesS_aVe3模块输出、第一处理单元输入和第二处理单元输入送入三选一模块mux3to1得二输入逻辑处理单元的输出; 二输入逻辑处理单元对reg6_ul、 reg6_u2、 reg6_u3禾口 reg6_u4与ul_fir6、 u2_fir6、u3_fir6和u4_fir6的处理过程如下先X寸reg6_ul、reg6_u2、reg6_u3禾口 reg6—u4与ul_f ir6、u2_f ir6、u3_f ir6禾口 u4_
fir6进行以下运算得出data_ul、 data_u2、 data_u3禾口 data_u4的值 data_ul = (reg6_ul+ul_fir6+l) >> 1 data_u2 = (reg6_u2+u2_fir6+l) >> 1 data_u3 = (reg6_u3+u3_fir6+l) >> 1 data_u4 = (reg6_u4+u4_fir6+l) >> 1 把reg6_ul、 data_ul和ul_f ir6送入三选一模块得第一列内插点g02的值,三选一模块的工作过程为如果x的值为0,则第一列内插点g02的值为reg6_Ul,如果x的值为2,则第一列内插点g02的值为ul—fir6,如果x的值为1或3,则第一列内插点g02的值为data_ul ;按同样的方式可以得出第一列内插点g03、 g04和g05的值;
第一、二、三、四、五、六和七级流水线仍按以前步骤运行; 最后,随着流水线的运行依次算出第一列内插点gl2、gl3、gl4和gl5的值,第二列内插点g22、 g23、 g24和g25的值,第三列内插点g32、 g33、 g34和g35的值。
本发明基于插值算法对称性复用半像素插值滤波器的H. 264解码器的亮度插值方法,由于采取根据插值位置判断插值点类型如果插值点类型为水平插值点,利用矩阵的对称性并对9x9矩阵进行转置处理,则水平插值点类型转变为转置后矩阵的垂直插值点;如果插值点类型为垂直插值点类型,则插值点计算只需垂直插值点和水平插值点或水平垂直插值点中之一 ;因此可以复用水平半像素插值器和水平垂直半像素插值器。通过利用插值算法对称性,复用水平半像素内插滤波器和水平垂直半像素内插滤波器,减少了半像素内插滤波器的使用,从而在满足高数据吞吐率的前提下可以有效的降低H. 264解码器中亮度插值模块超大规模集成实现时的硬件复杂度,减小芯片面积,节约成本。
1权利要求
一种基于插值算法对称性复用半像素插值滤波器的H.264解码器的亮度插值方法,其特征在于按以下步骤对4x4大小的亮度块插值先将插值点分为垂直插值点和水平插值 1设当前整像素点所在位置为位置0,横向正向连续相邻于位置0的三个插值点位置分别为位置1、位置2和位置3,竖向正向连续相邻于位置0的插值点位置分别为位置4、位置8和位置12,横向正向连续相邻于位置4的插值点位置分别为位置5、位置6和位置7,横向正向连续相邻于位置8的插值点位置分别为位置9、位置10和位置11,横向正向连续相邻于位置12的三个插值点位置分别为位置13、位置14和位置15;如果插值点位置属于位置1、2、3、6或位置14,则该插值点为水平插值点,如果插值点位置属于位置0、4、5、7、8、9、10、11、12、13或位置15,则该插值点为垂直插值点;再根据插值点类型进行数据存储如果为垂直插值点,则将插值数据从帧存中读取出并按列存储到数据缓冲区中,插值点横坐标x和纵坐标y的值保持不变;如果为水平插值点,则将插值数据从帧存中读取出来并按行存储到数据缓冲区中,插值点的横坐标x和纵坐标y的值互换;再在第一个时钟周期内执行以下步骤第一级流水线处理将第一列九个整数像素点数据a00、a01、a02、a03、a04、a05、a06、a07和a08从数据缓冲区读出,并将第一列九个整数像素点数据中第一行至第六行整数像素点数据a00、a01、a02、a03、a04和a05送入第一行六抽头加法树滤波器fir1,将第一列九个整数像素点数据中第二行至第七行整数像素点数据a01、a02、a03、a04、a05和a06送入第二行六抽头加法树滤波器fir2,将第一列九个整数像素点中第三行至第八行整数像素点数据a02、a03、a04、a05、a06和a07送入第三行六抽头加法树滤波器fir3,将第一列九个整数像素点中第四行至第九行整数像素点数据a03、a04、a05、a06、a07和a08送入第四行六抽头加法树滤波器fir4,按以下公式b02=(a00-5*a01+20*a02+20*a03-5*a04+a05+16)/32b03=(a01-5*a02+20*a03+20*a04-5*a05+a06+16)/32b04=(a02-5*a03+20*a04+20*a05-5*a06+a07+16)/32b05=(a03-5*a04+20*a05+20*a06-5*a07+a08+16)/32并行算出第一列垂直半像素点的值并将结果通过寄存器reg寄存一级得第一列第一行垂直半像素点b02、第一列第二行垂直半像素点b03、第一列第三行垂直半像素点b04和第一列第四行垂直半像素点b05;将第一列九个整数像素点中第三行整数像素点a02送入第一列第一行寄存器组得该寄存器组输出reg1_u1等于a02,将第一列九个整数像素点中第四行整数像素点a03送入第一列第二行寄存器组得该寄存器组输出reg1_u2等于a03,将第一列九个整数像素点中第五行整数像素点a04送入第一列第三行寄存器组得该寄存器组输出reg1_u3等于a04,将第一列九个整数像素点中第六行整数像素点a05送入第一列第四行寄存器组得该寄存器组输出reg1_u4等于a05,将第一列九个整数像素点中第七行整数像素点a06送入第一列第五行寄存器组得该寄存器组输出reg1_u5等于a06;再在第二个时钟周期内执行以下步骤第二级流水线处理将第一列第一行寄存器组输出reg1_u1送入第二列第一行寄存器组得第二列第一行寄存器组输出reg2_u1等于a02,将第一列第二行寄存器组输出reg1_u2送入第二列第二行寄存器组得第二列第二行寄存器组输出reg2_u2等于a03,将第一列第三行寄存器组输出reg1_u3送入第二列第三行寄存器组得第二列第三行寄存器组输出reg2_u3等于a04,将第一列第四行寄存器组输出reg1_u4送入第二列第四行寄存器组得第二列第四行寄存器组输出reg2_u4等于a05,将第一列第五行寄存器组输出reg1_u5送入第二列第五行寄存器组得第二列第五行寄存器组输出reg2_u5等于a06;将第一列第一行垂直半像素点b02送入第二列第六行寄存器组得第二列第六行寄存器组输出reg2_u6等于b02,将第一列第二行垂直半像素点b03送入第二列第七行寄存器组得第二列第七行寄存器组输出reg2_u7等于b03,将第一列第三行垂直半像素点b04送入第二列第八行寄存器组得第二列第八行寄存器组输出reg2_u8等于b04,将第一列第四行垂直半像素点b05送入第二列第九行寄存器组得第二列第九行寄存器组输出reg2_u9等于b05;在该第二个时钟周期内的第一级流水线按第一个时钟周期内第一级流水线相同的方式进行处理,得第二列垂直半像素点b12、b13、b14和b15以及第一列寄存器组输出reg1_u1、reg1_u2、reg1_u3、reg1_u4和reg1_u5的值;再在第三、第四、第五、第六和第七个时钟周期内执行以下步骤在各时钟周期内分别进行第三、四、五、六和第七级流水线处理把第二列第一行寄存器组输出reg2_u1、第二列第二行寄存器组输出reg2_u2、第二列第六行寄存器组输出reg2_u6和第二列第一行垂直半像素点b12送入四输入逻辑处理单元1,经过以下处理得四输入逻辑处理单元1上行输出e02和四输入逻辑处理单元1下行输出f02;第一四输入逻辑处理单元mu1的处理过程如下,先按照公式c02=(reg2_u1+reg2_u6+1)>>1d02=(reg2_u2+reg2_u6+1)>>1算出均值处理单元1的输出c02和均值处理单元2的输出d02,然后把第二列第一行寄存器组输出reg2_u1、第二列第二行寄存器组输出reg2_u2、第二列第六行寄存器组输出reg2_u6、第二列第一行垂直半像素点b12、均值处理单元1输出c02和均值处理单元2输出d02送入六选二模块选择出第一四输入逻辑处理单元mu1上行输出e02和第一四输入逻辑处理单元mu1下行输出f02;其中六选二模块的选择过程如下如果向量竖坐标y的值为1,则选择第一四输入逻辑处理单元mu1上行输出e02等于第二列第一行寄存器组输出reg2_u1,如果竖坐标y的值为2,则选择第一四输入逻辑处理单元mu1上行输出e02等于第二列第六行寄存器组输出reg2_u6,如果竖坐标y的值为3,则选择第一四输入逻辑处理单元mu1上行输出e02等于第二列第二行寄存器组输出reg2_u2,如果竖坐标y的值为0,则选择第一四输入逻辑处理单元mu1上行输出e02为等于0;如果向量横坐标x的值为1,则选择第一四输入逻辑处理单元mu1下行输出f02等于第二列第六行寄存器组输出reg2_u6,如果向量横坐标x的值为3,则选择第一四输入逻辑处理单元mu1下行输出f02等于第二列第一行垂直半像素点b12,当向量横坐标x的值为0,向量竖坐标y的值为0,则选择第一四输入逻辑处理单元mu1下行输出f02等于第二列第一行寄存器组输出reg2_u1,如果向量竖坐标y的值为1,则选择第一四输入逻辑处理单元mu1下行输出f02等于均值处理单元1的输出c02,如果向量竖坐标y的值为2,则选择第一四输入逻辑处理单元mu1下行输出f02等于第二列第六行寄存器组输出reg2_u6,如果向量竖坐标y的值为3,则选择第一四输入逻辑处理单元mu1下行输出f02等于均值处理单元2的输出d02,如果向量横坐标x的值为2,则选择第一四输入逻辑处理单元mu1下行输出f0等于0;按第一四输入逻辑处理单元mu1同样的操作,把第二列第二行寄存器组输出reg2_u2、第二列第三行寄存器组输出reg2_u3、第二列第七行寄存器组输出reg2_u7和第二列第二行垂直半像素点b13送入第二四输入逻辑处理单元mu2得第二四输入逻辑处理单元mu2上行输出e03和第二四输入逻辑处理单元mu2下行输出f03,把第二列第三行寄存器组输出reg2_u3、第二列第四行寄存器组输出reg2_u4、第二列第八行寄存器组输出reg2_u8和第二列第二行垂直半像素点b13送入第三四输入逻辑处理单元mu3得第三四输入逻辑处理单元mu3上行输出e04和第三四输入逻辑处理单元mu3下行输出f04,把第二列第四行寄存器组输出reg2_u4、第二列第五行寄存器组输出reg2_u5、第二列第九行寄存器组输出reg2_u9和第二列第三行垂直半像素点b14送入第四四输入逻辑处理单元mu4得第四四输入逻辑处理单元mu4上行输出e05和第四四输入逻辑处理单元mu4下行输出f05;将第一四输入逻辑处理单元mu1上行输出e02送入第一行六抽头脉动阵滤波器fir6_u1得第一行六抽头脉动阵滤波器fir6_u1输出u1_fir6,第二四输入逻辑处理单元mu2上行输出e03送入第二行六抽头脉动阵滤波器fir6_u2得第二行六抽头脉动阵滤波器fir6_u2输出u2_fir6,第三四输入逻辑处理单元mu3上行输出e04送入第三行六抽头脉动阵滤波器fir6_u3得第三行六抽头脉动阵滤波器fir6_u3输出u3_fir6,第四四输入逻辑处理单元mu4上行输出e05送入第四行六抽头脉动阵滤波器fir6_u4得第四行六抽头脉动阵滤波器fir6_u4输出u4_fir6;将第一四输入逻辑处理单元mu1的下行输出f02送入第三列第一行寄存器组,第三列第一行寄存器组将输出送入第四列第一行寄存器组,第四列第一行寄存器组将输出送入第五列第一行寄存器组,第五列第一行寄存器组将输出送入第六列第一行寄存器组得第六列第一行寄存器组输出reg6_u1,将第二四输入逻辑处理单元mu2的下行输出f03送入第三列第二行寄存器组,第三列第二行寄存器组将输出送入第四列第二行寄存器组,第四列第二行寄存器组将输出送入第五列第二行寄存器组,第五列第二行寄存器组将输出送入第六列第二行寄存器组得第六列第二行寄存器组输出reg6_u2,将第三四输入逻辑处理单元mu3的下行输出f04送入第三列第三行寄存器组,第三列第三行寄存器组将输出送入第四列第三行寄存器组,第四列第三行寄存器组将输出送入第五列第三行寄存器组,第五列第三行寄存器组将输出送入第六列第三行寄存器组得第六列第三行寄存器组输出reg6_u3,将第四四输入逻辑处理单元mu4的下行输出f05送入第三列第四行寄存器组,第三列第四行寄存器组将输出送入第四列第四行寄存器组,第四列第四行寄存器组将输出送入第五列第四行寄存器组,第五列第四行寄存器组将输出送入第六列第四行寄存器组得第六列第四行寄存器组输出reg6_u4;在各该时钟周期内的第一级流水线按第一个时钟周期内第一级流水线相同的方式进行处理,第二级流水线按第二个时钟周期内第二级流水线相同的方式进行处理;再在第八个时钟周期内执行以下步骤第八级流水线处理将第六列第一行寄存器组输出reg6_u1和第一行六抽头滤波器输出u1_fir6送入第一二输入逻辑处理单元mn1得第一列第一行内插点g02,将第六列第二行寄存器组输出reg6_u2和第二行六抽头滤波器输出u2_fir6送入第二二输入逻辑处理单元mn2得第一列第二行内插点g03,将第六列第三行寄存器组输出reg6_u3和第三行六抽头滤波器输出u3_fir6送入第三二输入逻辑处理单元mn3得第一列第三行内插点g04,将第六列第四行寄存器组输出reg6_u4和第四行六抽头滤波器输出u4_fir6送入第四二输入逻辑处理单元mn4得第一列第四行内插点g05;第一二输入逻辑处理单元mn1对第六列寄存器组输出reg6_u1与第一行六抽头滤波器输出u1_fir6的处理过程如下,将第六列第一行寄存器组输出reg6_u1与第一行六抽头滤波器输出u1_fir6送入均值处理单元3得均值处理单元3输出data_u1,将第六列第一行寄存器组输出reg6_u1、均值处理单元3输出data_u1和第一行六抽头滤波器输出u1_fir6送入三选一模块得第一列第一行内插点g02;三选一模块工作过程为如果向量横坐标x的值为0,则第一列第一行内插点g02的值为第六列第一行寄存器组输出reg6_u1,如果向量横坐标x的值为2,则第一列第一行内插点g02的值为第一行六抽头滤波器输出u1_fir6,如果向量横坐标x的值为1或3,则第一列第一行内插点g02的值为均值处理单元3输出data_u1,按同样的步骤得出第一列第二行内插点g03、第一列第三行内插点g04和第一列第四行内插点g05;在该时钟周期内的第一、二、三、四、五、六、七级流水线仍按前面各时钟周期内的第一、二、三、四、五、六、七级流水线相同的方式进行处理;最后按流水线的运行次序依次算出第二列内插点g12、g13、g14和g15,第三列内插点g22、g23、g24和g25,第四列内插点g32、g33、g34和g35的值。
全文摘要
本发明公开了一种基于插值算法对称性H.264解码器的亮度插值方法,特征是根据插值位置判断插值点类型如果插值点类型为水平插值点,利用矩阵的对称性并对9×9矩阵进行转置处理,则水平插值点类型转变为转置后矩阵的垂直插值点;如果插值点类型为垂直插值点类型,则插值点计算只需垂直插值点和水平插值点或水平垂直插值点中之一;因此可以复用水平半像素插值器和水平垂直半像素插值器。通过利用插值算法对称性,复用水平半像素内插滤波器和水平垂直半像素内插滤波器,减少了半像素内插滤波器的使用,从而在满足高数据吞吐率的前提下可以有效的降低H.264解码器中亮度插值模块超大规模集成实现时的硬件复杂度,减小芯片面积,节约成本。
文档编号H04N7/50GK101783947SQ201010109019
公开日2010年7月21日 申请日期2010年2月5日 优先权日2010年2月5日
发明者宋宇鲲, 张多利, 杜高明, 程贤文, 耿罗锋, 贾靖华 申请人:合肥工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1