專(zhuān)利名稱(chēng):基于插值算法對(duì)稱(chēng)性h.264解碼器的亮度插值方法
技術(shù)領(lǐng)域:
本發(fā)明屬于視頻編解碼技術(shù)領(lǐng)域,具體涉及基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值 濾波器的H. 264解碼器的亮度插值方法。
背景技術(shù):
2005年3月舉行的電路與系統(tǒng)國(guó)際會(huì)議的論文集第5巻4558頁(yè)至4561頁(yè)中提到 一種分離一維的亮度插值方法,通過(guò)同時(shí)算出水平、垂直和水平垂直半像素點(diǎn)來(lái)提高插值 的效率。但該方法在提高插值效率的同時(shí)并沒(méi)有充分挖掘插值算法的對(duì)稱(chēng)性以降低其超大 規(guī)模集成電路實(shí)現(xiàn)時(shí)的硬件復(fù)雜度,因此,采用該方法需要較多的半像素插值濾波器,具有 較大的硬件復(fù)雜度,難以節(jié)約硬件開(kāi)銷(xiāo)。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的H. 264 解碼器的亮度插值方法,以減小其超大規(guī)模集成電路實(shí)現(xiàn)時(shí)的硬件復(fù)雜度,節(jié)約硬件開(kāi)銷(xiāo)。
本發(fā)明基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的H. 264解碼器的亮度插值 方法,其特征在于按以下步驟對(duì)4x4大小的亮度塊插值 先將插值點(diǎn)分為垂直插值點(diǎn)和水平插值點(diǎn)設(shè)當(dāng)前整像素點(diǎn)所在位置為位置0, 橫向正向連續(xù)相鄰于位置0的三個(gè)插值點(diǎn)位置分別為位置1、位置2和位置3,豎向正向連 續(xù)相鄰于位置0的插值點(diǎn)位置分別為位置4、位置8和位置12,橫向正向連續(xù)相鄰于位置4 的插值點(diǎn)位置分別為位置5、位置6和位置7,橫向正向連續(xù)相鄰于位置8的插值點(diǎn)位置分 別為位置9、位置IO和位置ll,橫向正向連續(xù)相鄰于位置12的三個(gè)插值點(diǎn)位置分別為位置 13、位置14和位置15 ;如果插值點(diǎn)位置屬于位置1、2、3、6或位置14,則該插值點(diǎn)為水平插 值點(diǎn),如果插值點(diǎn)位置屬于位置0、4、5、7、8、9、10、11、12、13或位置15,則該插值點(diǎn)為垂直 插值點(diǎn); 再根據(jù)插值點(diǎn)類(lèi)型進(jìn)行數(shù)據(jù)存儲(chǔ)如果為垂直插值點(diǎn),則將插值數(shù)據(jù)從幀存中讀 取出并按列存儲(chǔ)到數(shù)據(jù)緩沖區(qū)中,插值點(diǎn)橫坐標(biāo)x和縱坐標(biāo)y的值保持不變;如果為水平插 值點(diǎn),則將插值數(shù)據(jù)從幀存中讀取出來(lái)并按行存儲(chǔ)到數(shù)據(jù)緩沖區(qū)中,插值點(diǎn)的橫坐標(biāo)x和 縱坐標(biāo)y的值互換; 再在第一個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟
第一級(jí)流水線(xiàn)處理 將第一列九個(gè)整數(shù)像素點(diǎn)數(shù)據(jù)a00、 a01、 a02、 a03、 a04、 a05、 a06、 a07和a08從
數(shù)據(jù)緩沖區(qū)讀出,并將第一列九個(gè)整數(shù)像素點(diǎn)數(shù)據(jù)中第一行至第六行整數(shù)像素點(diǎn)數(shù)據(jù)a00、 a01、a02、a03、a04和a05送入第一行六抽頭加法樹(shù)濾波器f irl,將第一列九個(gè)整數(shù)像素點(diǎn) 數(shù)據(jù)中第二行至第七行整數(shù)像素點(diǎn)數(shù)據(jù)a01、a02、a03、a04、a05和a06送入第二行六抽頭加 法樹(shù)濾波器fir2,將第一列九個(gè)整數(shù)像素點(diǎn)中第三行至第八行整數(shù)像素點(diǎn)數(shù)據(jù)a02、 a03、 a04、 a05、 a06和a07送入第三行六抽頭加法樹(shù)濾波器f ir3,將第一列九個(gè)整數(shù)像素點(diǎn)中第四行至第九行整數(shù)像素點(diǎn)數(shù)據(jù)a03、 a04、 a05、 a06、 a07和a08送入第四行六抽頭加法樹(shù)濾 波器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 并行算出第一列垂直半像素點(diǎn)的值并將結(jié)果通過(guò)寄存器reg寄存一級(jí)得第一列 第一行垂直半像素點(diǎn)b02、第一列第二行垂直半像素點(diǎn)b03、第一列第三行垂直半像素點(diǎn) b04和第一列第四行垂直半像素點(diǎn)b05 ; 將第一列九個(gè)整數(shù)像素點(diǎn)中第三行整數(shù)像素點(diǎn)a02送入第一列第一行寄存器組 得該寄存器組輸出regl_ul等于a02,將第一列九個(gè)整數(shù)像素點(diǎn)中第四行整數(shù)像素點(diǎn)a03送 入第一列第二行寄存器組得該寄存器組輸出regl_u2等于a03,將第一列九個(gè)整數(shù)像素點(diǎn) 中第五行整數(shù)像素點(diǎn)a04送入第一列第三行寄存器組得該寄存器組輸出regl_U3等于a04, 將第一列九個(gè)整數(shù)像素點(diǎn)中第六行整數(shù)像素點(diǎn)a05送入第一列第四行寄存器組得該寄存 器組輸出regl_u4等于a05,將第一列九個(gè)整數(shù)像素點(diǎn)中第七行整數(shù)像素點(diǎn)a06送入第一列 第五行寄存器組得該寄存器組輸出regl_u5等于a06 ;
再在第二個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟
第二級(jí)流水線(xiàn)處理 將第一列第一行寄存器組輸出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 ; 將第一列第一行垂直半像素點(diǎn)b02送入第二列第六行寄存器組得第二列第六行 寄存器組輸出reg2_u6等于b02,將第一列第二行垂直半像素點(diǎn)b03送入第二列第七行寄 存器組得第二列第七行寄存器組輸出reg2_u7等于b03,將第一列第三行垂直半像素點(diǎn)b04 送入第二列第八行寄存器組得第二列第八行寄存器組輸出reg2_u8等于b04,將第一列第 四行垂直半像素點(diǎn)b05送入第二列第九行寄存器組得第二列第九行寄存器組輸出reg2_u9 等于b05 ; 在該第二個(gè)時(shí)鐘周期內(nèi)的第一級(jí)流水線(xiàn)按第一個(gè)時(shí)鐘周期內(nèi)第一級(jí)流水線(xiàn)相同
的方式進(jìn)行處理,得第二列垂直半像素點(diǎn)b12、 b13、 b14和b15以及第一列寄存器組輸出
regl_ul、 regl_u2、 regl_u3、 regl_u4禾卩regl_u5的值; 再在第三、第四、第五、第六和第七個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟 在各時(shí)鐘周期內(nèi)分別進(jìn)行第三、四、五、六和第七級(jí)流水線(xiàn)處理 把第二列第一行寄存器組輸出reg2—ul、第二列第二行寄存器組輸出reg2—u2、第
二列第六行寄存器組輸出reg2_u6和第二列第一行垂直半像素點(diǎn)b12送入四輸入邏輯處理
單元l,經(jīng)過(guò)以下處理得四輸入邏輯處理單元1上行輸出e02和四輸入邏輯處理單元1下行
7輸出f02 ; 第一四輸入邏輯處理單元mul的處理過(guò)程如下,先按照公式
c02 = (reg2_ul+reg2_u6+l) >> 1
d02 = (reg2_u2+reg2_u6+l) >> 1 算出均值處理單元1的輸出c02和均值處理單元2的輸出d02,然后把第二列第 一行寄存器組輸出reg2—ul、第二列第二行寄存器組輸出reg2—u2、第二列第六行寄存器組 輸出reg2—u6、第二列第一行垂直半像素點(diǎn)bl2、均值處理單元1輸出c02和均值處理單元 2輸出d02送入六選二模塊選擇出第一四輸入邏輯處理單元mul上行輸出e02和第一四輸 入邏輯處理單元mul下行輸出f02 ; 其中六選二模塊的選擇過(guò)程如下如果向量豎坐標(biāo)y的值為l,則選擇第一四輸入 邏輯處理單元mul上行輸出e02等于第二列第一行寄存器組輸出reg2_ul,如果豎坐標(biāo)y的 值為2,則選擇第一四輸入邏輯處理單元mul上行輸出e02等于第二列第六行寄存器組輸出 reg2_u6,如果豎坐標(biāo)y的值為3,則選擇第一四輸入邏輯處理單元mul上行輸出e02等于第 二列第二行寄存器組輸出reg2—u2,如果豎坐標(biāo)y的值為0,則選擇第一四輸入邏輯處理單 元mul上行輸出e02為等于0 ;如果向量橫坐標(biāo)x的值為1,則選擇第一四輸入邏輯處理單 元mul下行輸出f02等于第二列第六行寄存器組輸出reg2—u6,如果向量橫坐標(biāo)x的值為 3,則選擇第一四輸入邏輯處理單元mul下行輸出f02等于第二列第一行垂直半像素點(diǎn)bl2, 當(dāng)向量橫坐標(biāo)x的值為0,向量豎坐標(biāo)y的值為0,則選擇第一四輸入邏輯處理單元mul下 行輸出f02等于第二列第一行寄存器組輸出reg2—ul,如果向量豎坐標(biāo)y的值為l,則選擇 第一四輸入邏輯處理單元mul下行輸出f02等于均值處理單元1的輸出c02,如果向量豎坐 標(biāo)y的值為2,則選擇第一四輸入邏輯處理單元mul下行輸出f02等于第二列第六行寄存器 組輸出reg2—u6,如果向量豎坐標(biāo)y的值為3,則選擇第一四輸入邏輯處理單元mul下行輸 出f02等于均值處理單元2的輸出d02,如果向量橫坐標(biāo)x的值為2,則選擇第一四輸入邏 輯處理單元mul下行輸出f0等于0 ; 按第一四輸入邏輯處理單元mul同樣的操作,把第二列第二行寄存器組輸出 reg2—u2、第二列第三行寄存器組輸出reg2—u3、第二列第七行寄存器組輸出reg2_U7和第 二列第二行垂直半像素點(diǎn)bl3送入第二四輸入邏輯處理單元mu2得第二四輸入邏輯處理單 元mu2上行輸出e03和第二四輸入邏輯處理單元mu2下行輸出f03,把第二列第三行寄存器 組輸出reg2—u3、第二列第四行寄存器組輸出reg2—u4、第二列第八行寄存器組輸出reg2_ u8和第二列第二行垂直半像素點(diǎn)bl3送入第三四輸入邏輯處理單元mu3得第三四輸入邏輯 處理單元mu3上行輸出e04和第三四輸入邏輯處理單元mu3下行輸出f04,把第二列第四行 寄存器組輸出reg2—u4、第二列第五行寄存器組輸出reg2—u5、第二列第九行寄存器組輸出 reg2_u9和第二列第三行垂直半像素點(diǎn)b14送入第四四輸入邏輯處理單元mu4得第四四輸 入邏輯處理單元mu4上行輸出e05和第四四輸入邏輯處理單元mu4下行輸出f05 ;
將第一四輸入邏輯處理單元mul上行輸出e02送入第一行六抽頭脈動(dòng)陣濾波器 fir6_ul得第一行六抽頭脈動(dòng)陣濾波器fir6_ul輸出ul_fir6,第二四輸入邏輯處理單元 mu2上行輸出e03送入第二行六抽頭脈動(dòng)陣濾波器fir6_u2得第二行六抽頭脈動(dòng)陣濾波器 fir6—u2輸出u2—fir6,第三四輸入邏輯處理單元mu3上行輸出e04送入第三行六抽頭脈動(dòng) 陣濾波器fir6_u3得第三行六抽頭脈動(dòng)陣濾波器fir6_u3輸出u3_fir6,第四四輸入邏輯處理單元mu4上行輸出e05送入第四行六抽頭脈動(dòng)陣濾波器fir6_u4得第四行六抽頭脈動(dòng) 陣濾波器fir6_u4輸出u4_fir6 ;將第一四輸入邏輯處理單元mul的下行輸出f02送入第 三列第一行寄存器組,第三列第一行寄存器組將輸出送入第四列第一行寄存器組,第四列 第一行寄存器組將輸出送入第五列第一行寄存器組,第五列第一行寄存器組將輸出送入第 六列第一行寄存器組得第六列第一行寄存器組輸出reg6—ul,將第二四輸入邏輯處理單元 mu2的下行輸出f03送入第三列第二行寄存器組,第三列第二行寄存器組將輸出送入第四 列第二行寄存器組,第四列第二行寄存器組將輸出送入第五列第二行寄存器組,第五列第 二行寄存器組將輸出送入第六列第二行寄存器組得第六列第二行寄存器組輸出reg6—u2, 將第三四輸入邏輯處理單元mu3的下行輸出f04送入第三列第三行寄存器組,第三列第三 行寄存器組將輸出送入第四列第三行寄存器組,第四列第三行寄存器組將輸出送入第五列 第三行寄存器組,第五列第三行寄存器組將輸出送入第六列第三行寄存器組得第六列第三 行寄存器組輸出reg6—u3,將第四四輸入邏輯處理單元mu4的下行輸出f05送入第三列第四 行寄存器組,第三列第四行寄存器組將輸出送入第四列第四行寄存器組,第四列第四行寄 存器組將輸出送入第五列第四行寄存器組,第五列第四行寄存器組將輸出送入第六列第四 行寄存器組得第六列第四行寄存器組輸出reg6_u4 ; 在各該時(shí)鐘周期內(nèi)的第一級(jí)流水線(xiàn)按第一個(gè)時(shí)鐘周期內(nèi)第一級(jí)流水線(xiàn)相同的方 式進(jìn)行處理,第二級(jí)流水線(xiàn)按第二個(gè)時(shí)鐘周期內(nèi)第二級(jí)流水線(xiàn)相同的方式進(jìn)行處理;
再在第八個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟
第八級(jí)流水線(xiàn)處理 將第六列第一行寄存器組輸出reg6_ul和第一行六抽頭濾波器輸出ul_f ir6送入 第一二輸入邏輯處理單元mnl得第一列第一行內(nèi)插點(diǎn)g02,將第六列第二行寄存器組輸出 reg6_u2和第二行六抽頭濾波器輸出u2_f ir6送入第二二輸入邏輯處理單元mn2得第一列 第二行內(nèi)插點(diǎn)g03,將第六列第三行寄存器組輸出reg6—u3和第三行六抽頭濾波器輸出u3_ fir6送入第三二輸入邏輯處理單元mn3得第一列第三行內(nèi)插點(diǎn)g04,將第六列第四行寄存 器組輸出reg6_u4和第四行六抽頭濾波器輸出u4_fir6送入第四二輸入邏輯處理單元mn4 得第一列第四行內(nèi)插點(diǎn)g05; 第一二輸入邏輯處理單元mnl對(duì)第六列寄存器組輸出reg6_ul與第一行六抽頭濾 波器輸出ul_fir6的處理過(guò)程如下,將第六列第一行寄存器組輸出reg6_ul與第一行六抽 頭濾波器輸出ul_fir6送入均值處理單元3得均值處理單元3輸出data—ul,將第六列第 一行寄存器組輸出reg6—ul、均值處理單元3輸出data_ul和第一行六抽頭濾波器輸出ul_ fir6送入三選一模塊得第一列第一行內(nèi)插點(diǎn)g02 ;三選一模塊工作過(guò)程為如果向量橫坐 標(biāo)x的值為O,則第一列第一行內(nèi)插點(diǎn)g02的值為第六列第一行寄存器組輸出reg6—ul,如 果向量橫坐標(biāo)x的值為2,則第一列第一行內(nèi)插點(diǎn)g02的值為第一行六抽頭濾波器輸出ul_ fir6,如果向量橫坐標(biāo)x的值為1或3,則第一列第一行內(nèi)插點(diǎn)g02的值為均值處理單元3 輸出data—ul,按同樣的步驟可以得出第一列第二行內(nèi)插點(diǎn)g03、第一列第三行內(nèi)插點(diǎn)g04 和第一列第四行內(nèi)插點(diǎn)g05; 在該時(shí)鐘周期內(nèi)的第一、二、三、四、五、六、七級(jí)流水線(xiàn)仍按前面各時(shí)鐘周期內(nèi)的 第一、二、三、四、五、六、七級(jí)流水線(xiàn)相同的方式進(jìn)行處理; 最后按流水線(xiàn)的運(yùn)行次序依次算出第二列內(nèi)插點(diǎn)g12、 g13、 g14和gl5,第三列內(nèi)插點(diǎn)g22、 g23、 g24和g25,第四列內(nèi)插點(diǎn)g32、 g33、 g34和g35的值。 由于本發(fā)明采用了基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的11.264解碼器 的亮度插值方法,相對(duì)于目前現(xiàn)有的分離一維亮度插值方法,本發(fā)明利用插值算法的對(duì)稱(chēng) 性,復(fù)用半像素插值濾波器,從而減小了H. 264解碼器中亮度插值模塊超大規(guī)模集成實(shí)現(xiàn) 時(shí)的硬件復(fù)雜度,節(jié)約了硬件開(kāi)銷(xiāo),降低了成本。
圖1是H. 264亮度4x4塊半像素插值算法示意圖。 圖2是H. 264亮度4x4塊1/4像素點(diǎn)插值算法局部示意圖。 圖3是采用本發(fā)明基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的11.264解碼器的
亮度插值方法所設(shè)計(jì)的亮度插值器的頂層結(jié)構(gòu)示意圖。 圖4是插值位置示意圖。 圖5是對(duì)應(yīng)圖3中firl、fir2、fir3和fir4濾波器的六抽頭加法樹(shù)濾波器結(jié)構(gòu)示 意圖。 圖6是對(duì)應(yīng)圖3中的mul、mu2、mu3和mu4模塊的四輸入邏輯處理單元示意圖。
圖7是對(duì)應(yīng)圖3中的reg皿itl、reg皿it2、reg皿it3禾口reg皿it4模塊的移位寄存 器組結(jié)構(gòu)示意圖。 圖8是對(duì)應(yīng)圖3中fir6_ul、fir6_u2、fir6_u3和fir6_u4濾波器的六抽頭脈動(dòng)陣 濾波器結(jié)構(gòu)示意圖。 圖9是對(duì)應(yīng)圖3中的mnl、mn2、mn3和mn4模塊的二輸入邏輯處理單元示意圖。
具體實(shí)施方式
實(shí)施例1 : 圖l給出了 11.264亮度4"塊半像素插值算法示意圖。如圖1中所示在H. 264 中亮度塊中共有七種大小不同的塊做插值運(yùn)算,分別是16*16、16*8、8*16、8*8、8*4、4*8和 4*4大小塊,最終都可分解為4*4塊的插值,由于六抽頭濾波器的操作,需要將4*4的塊擴(kuò)展 成9*9的塊,圖1中以符號(hào)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代表整像素點(diǎn),符號(hào) 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代 表水平內(nèi)插半像素點(diǎn),符號(hào)v22、 v32、 v42、 v52、 v62、 v23、 v33、 v43、 v53、 v63、 v24、 v34、 v44、 v54、 v64、 v25、 v35、 v45、 v55和v65代表垂直內(nèi)插半像素點(diǎn),符號(hào)hv22、 hv32、 hv42、 hv52、 hv23、hv33、hv43、hv53、hv24、hv34、hv44、hv54、hv25、hv35、hv45和hv55代表水平垂直內(nèi) 插半像素點(diǎn); 以符號(hào)a22表示的整像素點(diǎn)周?chē)陌胂袼攸c(diǎn)計(jì)算為例,該半像素點(diǎn)值按如下公式 計(jì)算
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是濾波系數(shù)組成的系數(shù)矩陣(1, -5, 20, 20, _5, 1),式中的符號(hào)">>"
表示算術(shù)右移; 由式(1)和式(2)以及圖1中所示各像素點(diǎn)位置可知,h22的計(jì)算系數(shù)a20、 a21、 a22、 a23、 a24和a25與v22的計(jì)算系數(shù)a02、 a12、 a22、 a32、 a42和a52關(guān)于9*9矩陣的對(duì) 角線(xiàn)a00、 all、 a22、 a33、 a44、 a55、 a66、 a77和a88對(duì)稱(chēng),并且h22與v22也關(guān)于此對(duì)角線(xiàn) 對(duì)稱(chēng),而hv22在此對(duì)角線(xiàn)上,并且由式(3)知,它既可以通過(guò)對(duì)水平半像素進(jìn)行六抽頭濾波 得到,也可以通過(guò)對(duì)垂直半像素進(jìn)行六抽頭濾波而得到; 圖2給出了 H. 264亮度4x4塊1/4像素點(diǎn)插值算法局部示意圖。如圖2中所示 a22、a23、a32和a33為整像素點(diǎn),其分別處于1/4像素點(diǎn)插值算法局部示意圖的4個(gè)頂點(diǎn), h22、v22、hv22、v23和h32為半像素點(diǎn),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像素內(nèi)插點(diǎn),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像 素點(diǎn)按如下公式計(jì)算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)通過(guò)比較以上l/4像素的計(jì)算公式以及插值點(diǎn)位置可以發(fā)現(xiàn),1/4像素點(diǎn)xl、 x2x3和x4與1/4像素點(diǎn)yl、y2、y3和y4關(guān)于對(duì)角線(xiàn)對(duì)稱(chēng),1/4像素點(diǎn)xy2與xy3關(guān)于對(duì)角線(xiàn)對(duì) 稱(chēng),而1/4像素點(diǎn)xyl和xy4在此對(duì)角線(xiàn)上,基于此對(duì)稱(chēng)性,圖3給出了采用本發(fā)明基于插值 算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的H. 264解碼器的亮度插值方法所設(shè)計(jì)的亮度插值器 的頂層結(jié)構(gòu)示意圖;如圖3所示x, y表示插值位置的坐標(biāo),第一至第九像素點(diǎn)分別為輸入 到亮度插值器的九個(gè)整像素點(diǎn)數(shù)據(jù),第一至第六像素點(diǎn)送入六抽頭加法樹(shù)濾波器firl進(jìn) 行六抽頭濾波處理,并將六抽頭加法樹(shù)濾波器firl濾波后的結(jié)果送入reg2_u2寄存一級(jí), 第二至第七像素點(diǎn)送入六抽頭加法樹(shù)濾波器f ir2進(jìn)行六抽頭濾波處理,并將六抽頭加法 樹(shù)濾波器f ir2濾波后的結(jié)果送入reg4_U2寄存一級(jí),第三至第八像素點(diǎn)送入六抽頭加法樹(shù) 濾波器f ir3進(jìn)行六抽頭濾波處理,并將六抽頭加法樹(shù)濾波器f ir3濾波后的結(jié)果送入reg6_ u2寄存一級(jí),第四至第九像素點(diǎn)送入六抽頭加法樹(shù)濾波器fir4進(jìn)行六抽頭濾波處理,并將六抽頭加法樹(shù)濾波器fir4濾波后的結(jié)果送入reg8_U2寄存一級(jí),同時(shí)將第三像素點(diǎn)數(shù)據(jù) 送入寄存器組regl—ul, regl_ul的輸出送入寄存器regl_u2,第四像素點(diǎn)數(shù)據(jù)送入寄存器 組reg2—ul, reg2_ul的輸出送入寄存器reg3_u2,第五像素點(diǎn)數(shù)據(jù)送入寄存器組reg3_ul, reg3_ul的輸出送入寄存器reg5—u2,第六像素點(diǎn)數(shù)據(jù)送入寄存器組reg4—ul,reg4—ul的輸 出送入寄存器reg7—u2,第七像素點(diǎn)數(shù)據(jù)送入寄存器組reg5—ul, reg5_ul的輸出送入寄存 器reg9_u2,將x禾P y的值與regl_u2、 reg2_u2和reg3_u2的輸出送入mul, mul的兩個(gè)輸 出分別送入fir6—1和regunitl, fir6—1和regunitl的輸出與x和y的值送入mnl算出第 一插值點(diǎn)的值,將x禾P y的值與reg3_u2、 reg4_u2和reg5_u2的輸出送入mu2, mu2的兩個(gè) 輸出分別送入f ir6_2和regunit2, f ir6_2和regunit2的輸出與x和y的值送入mn2算出 第二插值點(diǎn)的值,將x禾P y的值與reg5_u2、 reg6_u2和reg7_u2的輸出送入mu3, mu3的兩 個(gè)輸出分別送入f ir6_3和regunit3, f ir6_3和regunit3的輸出與x和y的值送入mn3算 出第三插值點(diǎn)的值,將x禾P y的值與reg7_u2、 reg8_u2和reg9_u2的輸出送入mu4, mu4的 兩個(gè)輸出分別送入f ir6_4和regunit4, f ir6_4和regunit4的輸出與x和y的值送入mn4 算出第四插值點(diǎn)的值;對(duì)于一個(gè)4x4大小的亮度塊按以下步驟進(jìn)行插值
先將插值點(diǎn)分為垂直插值點(diǎn)和水平插值點(diǎn)圖4給出了插值位置示意圖。如圖4 所示設(shè)當(dāng)前整像素點(diǎn)所在位置為位置O,橫向正 向連續(xù)相鄰位置O的三個(gè)插值點(diǎn)位置分別 為位置1、位置2和位置3,豎向正向連續(xù)相鄰位置0的插值點(diǎn)位置分別為位置4、位置8和 位置12,橫向正向連續(xù)相鄰位置4的插值點(diǎn)位置分別為位置5、位置6和位置7,橫向正向連 續(xù)相鄰位置8的插值點(diǎn)位置分別為位置9、位置10和位置ll,橫向正向連續(xù)相鄰位置12的 三個(gè)插值點(diǎn)位置分別為位置13、位置14和位置15,其中的插值位置0、1、2、3、4、5、6、7、8、9、 10、11、12、13、14、15分別對(duì)應(yīng)圖2中的像素點(diǎn)a22、xl、h22、x2、yl、xyl、x3、xy2、 v22、y3、 hv22、y4、y2、xy3、x4、xy4 ;如果插值點(diǎn)位置屬于圖4中的1、2、3、6或14中任何一個(gè),則該 插值點(diǎn)為水平插值點(diǎn),如果插值點(diǎn)屬于圖4中的0、4、5、7、8、9、10、11、12、13或15中任何一 個(gè),則該插值點(diǎn)為垂直插值點(diǎn); 再根據(jù)插值點(diǎn)類(lèi)型進(jìn)行數(shù)據(jù)存儲(chǔ)如果為垂直插值點(diǎn),則將插值數(shù)據(jù)從幀存中讀 取出來(lái)并按列存儲(chǔ)到數(shù)據(jù)緩沖區(qū)中,插值點(diǎn)橫坐標(biāo)x和縱坐標(biāo)y的值保持不變,如果為水 平插值點(diǎn),則將插值數(shù)據(jù)從幀存中讀取出來(lái)按行存儲(chǔ)到數(shù)據(jù)緩沖區(qū)中,并將插值點(diǎn)橫坐標(biāo)x 和縱坐標(biāo)y的值互換; 再在第一個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟
第一級(jí)流水線(xiàn)處理 從數(shù)據(jù)緩存區(qū)讀出第一列九個(gè)像素點(diǎn)數(shù)據(jù),分別為a00、 a01、 a02、 a03、 a04、 a05、 a06、 a07和a08,把這九個(gè)像素點(diǎn)的數(shù)據(jù)送入四個(gè)并行的六抽頭加法樹(shù)濾波器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 并行算出第一列垂直半像素點(diǎn)b02、 b03、 b04和b05的值并把結(jié)果寄存一級(jí)得寄
存器輸出data_firl、 data_fir2、 data_fir3和data_fir4,其中六抽頭加法樹(shù)濾波器的結(jié)構(gòu)如圖5所示該模塊有六個(gè)整像素輸入,我們令他們?yōu)榈谝幌袼剌斎?、第二像素輸入、?三像素輸入、第四像素輸入、第五像素輸入和第六像素輸入,將第一像素輸入和第二像素輸 入送入第一加法器相加,并把結(jié)果送入第一 S2模塊右移兩位,同時(shí)將第一像素輸入和第二 像素輸入送入第二加法器相加,第二加法器的輸出和第一 S2模塊的輸出送入第三加法器 相加,將第三像素輸入和第四像素輸入送入第四加法器相加,并把結(jié)果送入S4模塊右移四 位,同時(shí)將第三像素輸入和第四像素輸入送入第五加法器相加,并把結(jié)果送入第二 S2模塊 右移兩位,S4模塊的輸出和第二 S2模塊的輸出送入第六加法器相加,將第六加法器的輸出 和第三加法器的輸出送入第七加法器相加,第五像素輸入和第六像素輸入送入第八加法器 相加,將第八加法器的輸出和第七加法器的輸出送入第九加法器相加得最終六抽頭加法樹(shù) 濾波器的輸出; 把數(shù)據(jù)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 再在第二個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟
第二級(jí)流水線(xiàn)處理 將寄存器組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
第一級(jí)流水線(xiàn)處理得 從數(shù)據(jù)緩存區(qū)讀出第二列九個(gè)像素點(diǎn)數(shù)據(jù)a10、 all、 al2、 al3、 al4、 al5、 al6、 al7
和al8,把九個(gè)像素點(diǎn)數(shù)據(jù)送入四個(gè)并行的六抽頭加法樹(shù)濾波器firl、 fir2、 fir3和fir4,
按公式并行算出第二列垂直半像素點(diǎn)b12、 b13、 b14和b15的值并把結(jié)果寄存一級(jí)得 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 矛巴數(shù)據(jù)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 再在第三個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟
第三級(jí)流水線(xiàn)處理 把reg2—ul = a02、reg2_u2 = a03、reg2_u6 = b02和data_f irl 二bl2送入第一四 輸入邏輯處理單元mul,經(jīng)過(guò)以下處理得e02和f02,其中四輸入邏輯處理單元的結(jié)構(gòu)如圖6 所示其有四個(gè)輸入,分別定義他們?yōu)榈谝凰妮斎脒壿嬢斎搿⒌诙妮斎脒壿嬢斎?、第三?輸入邏輯輸入和第四四輸入邏輯輸入,先將第二四輸入邏輯輸入和第三四輸入邏輯輸入送 入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的值;
其中六選二模塊的選擇過(guò)程如下如果y的值為1,則選擇e02 = reg2_ul = a02, 如果y的值為2,則選擇e02 = reg2_u6 = b02 ;如果y的值為3,則選擇e02 = reg2_u2 = a03,如果y的值為0,則選擇e02為默認(rèn)值0,如果x的值為1,則選擇f02 = reg2_u6 = b02, 如果x的值為3,則選擇f02 = data_f irl = b12,當(dāng)x的值為0時(shí),如果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分別送給四個(gè)六抽頭脈動(dòng)陣濾 波器fir6—ul、fir6—u2、fir6—u3和fir6—u4,四輸入邏輯處理單元組的輸出f02、f03、f04和 f05分別送給四個(gè)移位寄存器組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組成,其移位寄存器組的結(jié)構(gòu)如圖7所示移位寄存器組由四個(gè)寄存器組 組成,先將輸入送入寄存器組regs0,再將寄存器組regs0的輸出送入寄存器組regsl,再將 寄存器組regsl的輸出送入寄存器組regs2,最后將寄存器組regs2的輸出送入寄存器組 reg3s,寄存器組regs3的輸出即為移位寄存器組的輸出; 第二級(jí)流水線(xiàn)處理,按前面第二級(jí)流水線(xiàn)相同的過(guò)程和方式對(duì)寄存器組reg2—ul、 reg2_u2、reg2_u3、reg2_u4、reg2_u5、reg2_u6、reg2_u7、reg2_u8禾口 reg2—u9進(jìn)行處理得
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 第一級(jí)流水線(xiàn)處理,按前面第一級(jí)流水線(xiàn)相同的過(guò)程和方式處理得 第三列九個(gè)像素點(diǎn)從數(shù)據(jù)緩存區(qū)讀取出并送入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 再將第三級(jí)流水線(xiàn)的輸出送入組成流水線(xiàn)第四、五、六和七級(jí)的四個(gè)并行六抽頭脈動(dòng)陣濾波器fir6_ul、fir6_u2、fir6_u3和fir6_u4和四個(gè)并行移位寄存器組regunitl、regunit2、 regunit3和regunit4,六抽頭脈動(dòng)陣濾波器的結(jié)構(gòu)如圖8所示該圖中標(biāo)注有D符號(hào)的模塊表示將數(shù)據(jù)寄存一級(jí)的寄存器單元,標(biāo)注有Sx符號(hào)的模塊表示將輸入的數(shù)據(jù)左移x位,該模塊有一個(gè)輸入端口 ,先將輸入數(shù)據(jù)送入第一加法器、第二加法器、第三加法器、第四加法器、第一 S2模塊、第二 S2模塊和S4模塊,并將第一 S2的輸出送入第一加法器和第二加法器,第二 S2模塊的輸出送入第三加法器和第四加法器,S4模塊的輸出送入第二加法器和第三加法器,再將輸入數(shù)據(jù)送入第一 D模塊,將第一 D模塊的輸出和第四加法器的輸出送入第一減法器,再將第一減法器的輸出送入第二 D模塊,將第二 D模塊的輸出和第三加法器的輸出送入第五加法器,將第五加法器的輸出送入第三D模塊,將第三D模塊的輸出和第二加法器的輸出送入第六加法器,第六加法器的輸出送入第四D模塊,再將第四D模塊的輸出和第一加法器的輸出送入第二減法器,第二減法器的輸出送入第五D模塊,第五D模塊的輸出和輸入送入第七加法器得六抽頭脈動(dòng)陣濾波器的輸出;在六個(gè)時(shí)鐘周期后寄存器組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 當(dāng)串行的輸入一行九個(gè)連續(xù)的整像素時(shí),在第六到第九個(gè)時(shí)鐘周期將會(huì)連續(xù)的輸出四個(gè)水平半像素值,當(dāng)串行的輸入一行九個(gè)連續(xù)的垂直半像素時(shí),在第六到第九個(gè)時(shí)鐘周期將會(huì)連續(xù)的輸出四個(gè)水平垂直半像素值; 第一、二和三級(jí)流水線(xiàn)仍按前面第一、二和三級(jí)流水線(xiàn)相同的方式運(yùn)行;
再進(jìn)行第八級(jí)流水線(xiàn)處理)|f reg6_ul、 reg6_u2、 reg6_u3禾口 reg6_u4與ul_fir6、 u2_fir6、 u3_fir6禾口 u4_fir6送入第一二輸入邏輯處理單元mnl得到第一列內(nèi)插點(diǎn)輸出值g02、 g03、 g04和g05,二輸入邏輯處理單元的結(jié)構(gòu)如圖9所示令該模塊輸入分別為第一處理單元輸入和第二處理單元輸入,先將第一處理單元輸入和第二處理單元輸入送入pr0CesS_aVe3模塊,最后將pr0CesS_aVe3模塊輸出、第一處理單元輸入和第二處理單元輸入送入三選一模塊mux3to1得二輸入邏輯處理單元的輸出; 二輸入邏輯處理單元對(duì)reg6_ul、 reg6_u2、 reg6_u3禾口 reg6_u4與ul_fir6、 u2_fir6、u3_fir6和u4_fir6的處理過(guò)程如下先X寸reg6_ul、reg6_u2、reg6_u3禾口 reg6—u4與ul_f ir6、u2_f ir6、u3_f ir6禾口 u4_
fir6進(jìn)行以下運(yùn)算得出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送入三選一模塊得第一列內(nèi)插點(diǎn)g02的值,三選一模塊的工作過(guò)程為如果x的值為0,則第一列內(nèi)插點(diǎn)g02的值為reg6_Ul,如果x的值為2,則第一列內(nèi)插點(diǎn)g02的值為ul—fir6,如果x的值為1或3,則第一列內(nèi)插點(diǎn)g02的值為data_ul ;按同樣的方式可以得出第一列內(nèi)插點(diǎn)g03、 g04和g05的值;
第一、二、三、四、五、六和七級(jí)流水線(xiàn)仍按以前步驟運(yùn)行; 最后,隨著流水線(xiàn)的運(yùn)行依次算出第一列內(nèi)插點(diǎn)gl2、gl3、gl4和gl5的值,第二列內(nèi)插點(diǎn)g22、 g23、 g24和g25的值,第三列內(nèi)插點(diǎn)g32、 g33、 g34和g35的值。
本發(fā)明基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的H. 264解碼器的亮度插值方法,由于采取根據(jù)插值位置判斷插值點(diǎn)類(lèi)型如果插值點(diǎn)類(lèi)型為水平插值點(diǎn),利用矩陣的對(duì)稱(chēng)性并對(duì)9x9矩陣進(jìn)行轉(zhuǎn)置處理,則水平插值點(diǎn)類(lèi)型轉(zhuǎn)變?yōu)檗D(zhuǎn)置后矩陣的垂直插值點(diǎn);如果插值點(diǎn)類(lèi)型為垂直插值點(diǎn)類(lèi)型,則插值點(diǎn)計(jì)算只需垂直插值點(diǎn)和水平插值點(diǎn)或水平垂直插值點(diǎn)中之一 ;因此可以復(fù)用水平半像素插值器和水平垂直半像素插值器。通過(guò)利用插值算法對(duì)稱(chēng)性,復(fù)用水平半像素內(nèi)插濾波器和水平垂直半像素內(nèi)插濾波器,減少了半像素內(nèi)插濾波器的使用,從而在滿(mǎn)足高數(shù)據(jù)吞吐率的前提下可以有效的降低H. 264解碼器中亮度插值模塊超大規(guī)模集成實(shí)現(xiàn)時(shí)的硬件復(fù)雜度,減小芯片面積,節(jié)約成本。
1權(quán)利要求
一種基于插值算法對(duì)稱(chēng)性復(fù)用半像素插值濾波器的H.264解碼器的亮度插值方法,其特征在于按以下步驟對(duì)4x4大小的亮度塊插值先將插值點(diǎn)分為垂直插值點(diǎn)和水平插值 1設(shè)當(dāng)前整像素點(diǎn)所在位置為位置0,橫向正向連續(xù)相鄰于位置0的三個(gè)插值點(diǎn)位置分別為位置1、位置2和位置3,豎向正向連續(xù)相鄰于位置0的插值點(diǎn)位置分別為位置4、位置8和位置12,橫向正向連續(xù)相鄰于位置4的插值點(diǎn)位置分別為位置5、位置6和位置7,橫向正向連續(xù)相鄰于位置8的插值點(diǎn)位置分別為位置9、位置10和位置11,橫向正向連續(xù)相鄰于位置12的三個(gè)插值點(diǎn)位置分別為位置13、位置14和位置15;如果插值點(diǎn)位置屬于位置1、2、3、6或位置14,則該插值點(diǎn)為水平插值點(diǎn),如果插值點(diǎn)位置屬于位置0、4、5、7、8、9、10、11、12、13或位置15,則該插值點(diǎn)為垂直插值點(diǎn);再根據(jù)插值點(diǎn)類(lèi)型進(jìn)行數(shù)據(jù)存儲(chǔ)如果為垂直插值點(diǎn),則將插值數(shù)據(jù)從幀存中讀取出并按列存儲(chǔ)到數(shù)據(jù)緩沖區(qū)中,插值點(diǎn)橫坐標(biāo)x和縱坐標(biāo)y的值保持不變;如果為水平插值點(diǎn),則將插值數(shù)據(jù)從幀存中讀取出來(lái)并按行存儲(chǔ)到數(shù)據(jù)緩沖區(qū)中,插值點(diǎn)的橫坐標(biāo)x和縱坐標(biāo)y的值互換;再在第一個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟第一級(jí)流水線(xiàn)處理將第一列九個(gè)整數(shù)像素點(diǎn)數(shù)據(jù)a00、a01、a02、a03、a04、a05、a06、a07和a08從數(shù)據(jù)緩沖區(qū)讀出,并將第一列九個(gè)整數(shù)像素點(diǎn)數(shù)據(jù)中第一行至第六行整數(shù)像素點(diǎn)數(shù)據(jù)a00、a01、a02、a03、a04和a05送入第一行六抽頭加法樹(shù)濾波器fir1,將第一列九個(gè)整數(shù)像素點(diǎn)數(shù)據(jù)中第二行至第七行整數(shù)像素點(diǎn)數(shù)據(jù)a01、a02、a03、a04、a05和a06送入第二行六抽頭加法樹(shù)濾波器fir2,將第一列九個(gè)整數(shù)像素點(diǎn)中第三行至第八行整數(shù)像素點(diǎn)數(shù)據(jù)a02、a03、a04、a05、a06和a07送入第三行六抽頭加法樹(shù)濾波器fir3,將第一列九個(gè)整數(shù)像素點(diǎn)中第四行至第九行整數(shù)像素點(diǎn)數(shù)據(jù)a03、a04、a05、a06、a07和a08送入第四行六抽頭加法樹(shù)濾波器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并行算出第一列垂直半像素點(diǎn)的值并將結(jié)果通過(guò)寄存器reg寄存一級(jí)得第一列第一行垂直半像素點(diǎn)b02、第一列第二行垂直半像素點(diǎn)b03、第一列第三行垂直半像素點(diǎn)b04和第一列第四行垂直半像素點(diǎn)b05;將第一列九個(gè)整數(shù)像素點(diǎn)中第三行整數(shù)像素點(diǎn)a02送入第一列第一行寄存器組得該寄存器組輸出reg1_u1等于a02,將第一列九個(gè)整數(shù)像素點(diǎn)中第四行整數(shù)像素點(diǎn)a03送入第一列第二行寄存器組得該寄存器組輸出reg1_u2等于a03,將第一列九個(gè)整數(shù)像素點(diǎn)中第五行整數(shù)像素點(diǎn)a04送入第一列第三行寄存器組得該寄存器組輸出reg1_u3等于a04,將第一列九個(gè)整數(shù)像素點(diǎn)中第六行整數(shù)像素點(diǎn)a05送入第一列第四行寄存器組得該寄存器組輸出reg1_u4等于a05,將第一列九個(gè)整數(shù)像素點(diǎn)中第七行整數(shù)像素點(diǎn)a06送入第一列第五行寄存器組得該寄存器組輸出reg1_u5等于a06;再在第二個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟第二級(jí)流水線(xiàn)處理將第一列第一行寄存器組輸出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;將第一列第一行垂直半像素點(diǎn)b02送入第二列第六行寄存器組得第二列第六行寄存器組輸出reg2_u6等于b02,將第一列第二行垂直半像素點(diǎn)b03送入第二列第七行寄存器組得第二列第七行寄存器組輸出reg2_u7等于b03,將第一列第三行垂直半像素點(diǎn)b04送入第二列第八行寄存器組得第二列第八行寄存器組輸出reg2_u8等于b04,將第一列第四行垂直半像素點(diǎn)b05送入第二列第九行寄存器組得第二列第九行寄存器組輸出reg2_u9等于b05;在該第二個(gè)時(shí)鐘周期內(nèi)的第一級(jí)流水線(xiàn)按第一個(gè)時(shí)鐘周期內(nèi)第一級(jí)流水線(xiàn)相同的方式進(jìn)行處理,得第二列垂直半像素點(diǎn)b12、b13、b14和b15以及第一列寄存器組輸出reg1_u1、reg1_u2、reg1_u3、reg1_u4和reg1_u5的值;再在第三、第四、第五、第六和第七個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟在各時(shí)鐘周期內(nèi)分別進(jìn)行第三、四、五、六和第七級(jí)流水線(xiàn)處理把第二列第一行寄存器組輸出reg2_u1、第二列第二行寄存器組輸出reg2_u2、第二列第六行寄存器組輸出reg2_u6和第二列第一行垂直半像素點(diǎn)b12送入四輸入邏輯處理單元1,經(jīng)過(guò)以下處理得四輸入邏輯處理單元1上行輸出e02和四輸入邏輯處理單元1下行輸出f02;第一四輸入邏輯處理單元mu1的處理過(guò)程如下,先按照公式c02=(reg2_u1+reg2_u6+1)>>1d02=(reg2_u2+reg2_u6+1)>>1算出均值處理單元1的輸出c02和均值處理單元2的輸出d02,然后把第二列第一行寄存器組輸出reg2_u1、第二列第二行寄存器組輸出reg2_u2、第二列第六行寄存器組輸出reg2_u6、第二列第一行垂直半像素點(diǎn)b12、均值處理單元1輸出c02和均值處理單元2輸出d02送入六選二模塊選擇出第一四輸入邏輯處理單元mu1上行輸出e02和第一四輸入邏輯處理單元mu1下行輸出f02;其中六選二模塊的選擇過(guò)程如下如果向量豎坐標(biāo)y的值為1,則選擇第一四輸入邏輯處理單元mu1上行輸出e02等于第二列第一行寄存器組輸出reg2_u1,如果豎坐標(biāo)y的值為2,則選擇第一四輸入邏輯處理單元mu1上行輸出e02等于第二列第六行寄存器組輸出reg2_u6,如果豎坐標(biāo)y的值為3,則選擇第一四輸入邏輯處理單元mu1上行輸出e02等于第二列第二行寄存器組輸出reg2_u2,如果豎坐標(biāo)y的值為0,則選擇第一四輸入邏輯處理單元mu1上行輸出e02為等于0;如果向量橫坐標(biāo)x的值為1,則選擇第一四輸入邏輯處理單元mu1下行輸出f02等于第二列第六行寄存器組輸出reg2_u6,如果向量橫坐標(biāo)x的值為3,則選擇第一四輸入邏輯處理單元mu1下行輸出f02等于第二列第一行垂直半像素點(diǎn)b12,當(dāng)向量橫坐標(biāo)x的值為0,向量豎坐標(biāo)y的值為0,則選擇第一四輸入邏輯處理單元mu1下行輸出f02等于第二列第一行寄存器組輸出reg2_u1,如果向量豎坐標(biāo)y的值為1,則選擇第一四輸入邏輯處理單元mu1下行輸出f02等于均值處理單元1的輸出c02,如果向量豎坐標(biāo)y的值為2,則選擇第一四輸入邏輯處理單元mu1下行輸出f02等于第二列第六行寄存器組輸出reg2_u6,如果向量豎坐標(biāo)y的值為3,則選擇第一四輸入邏輯處理單元mu1下行輸出f02等于均值處理單元2的輸出d02,如果向量橫坐標(biāo)x的值為2,則選擇第一四輸入邏輯處理單元mu1下行輸出f0等于0;按第一四輸入邏輯處理單元mu1同樣的操作,把第二列第二行寄存器組輸出reg2_u2、第二列第三行寄存器組輸出reg2_u3、第二列第七行寄存器組輸出reg2_u7和第二列第二行垂直半像素點(diǎn)b13送入第二四輸入邏輯處理單元mu2得第二四輸入邏輯處理單元mu2上行輸出e03和第二四輸入邏輯處理單元mu2下行輸出f03,把第二列第三行寄存器組輸出reg2_u3、第二列第四行寄存器組輸出reg2_u4、第二列第八行寄存器組輸出reg2_u8和第二列第二行垂直半像素點(diǎn)b13送入第三四輸入邏輯處理單元mu3得第三四輸入邏輯處理單元mu3上行輸出e04和第三四輸入邏輯處理單元mu3下行輸出f04,把第二列第四行寄存器組輸出reg2_u4、第二列第五行寄存器組輸出reg2_u5、第二列第九行寄存器組輸出reg2_u9和第二列第三行垂直半像素點(diǎn)b14送入第四四輸入邏輯處理單元mu4得第四四輸入邏輯處理單元mu4上行輸出e05和第四四輸入邏輯處理單元mu4下行輸出f05;將第一四輸入邏輯處理單元mu1上行輸出e02送入第一行六抽頭脈動(dòng)陣濾波器fir6_u1得第一行六抽頭脈動(dòng)陣濾波器fir6_u1輸出u1_fir6,第二四輸入邏輯處理單元mu2上行輸出e03送入第二行六抽頭脈動(dòng)陣濾波器fir6_u2得第二行六抽頭脈動(dòng)陣濾波器fir6_u2輸出u2_fir6,第三四輸入邏輯處理單元mu3上行輸出e04送入第三行六抽頭脈動(dòng)陣濾波器fir6_u3得第三行六抽頭脈動(dòng)陣濾波器fir6_u3輸出u3_fir6,第四四輸入邏輯處理單元mu4上行輸出e05送入第四行六抽頭脈動(dòng)陣濾波器fir6_u4得第四行六抽頭脈動(dòng)陣濾波器fir6_u4輸出u4_fir6;將第一四輸入邏輯處理單元mu1的下行輸出f02送入第三列第一行寄存器組,第三列第一行寄存器組將輸出送入第四列第一行寄存器組,第四列第一行寄存器組將輸出送入第五列第一行寄存器組,第五列第一行寄存器組將輸出送入第六列第一行寄存器組得第六列第一行寄存器組輸出reg6_u1,將第二四輸入邏輯處理單元mu2的下行輸出f03送入第三列第二行寄存器組,第三列第二行寄存器組將輸出送入第四列第二行寄存器組,第四列第二行寄存器組將輸出送入第五列第二行寄存器組,第五列第二行寄存器組將輸出送入第六列第二行寄存器組得第六列第二行寄存器組輸出reg6_u2,將第三四輸入邏輯處理單元mu3的下行輸出f04送入第三列第三行寄存器組,第三列第三行寄存器組將輸出送入第四列第三行寄存器組,第四列第三行寄存器組將輸出送入第五列第三行寄存器組,第五列第三行寄存器組將輸出送入第六列第三行寄存器組得第六列第三行寄存器組輸出reg6_u3,將第四四輸入邏輯處理單元mu4的下行輸出f05送入第三列第四行寄存器組,第三列第四行寄存器組將輸出送入第四列第四行寄存器組,第四列第四行寄存器組將輸出送入第五列第四行寄存器組,第五列第四行寄存器組將輸出送入第六列第四行寄存器組得第六列第四行寄存器組輸出reg6_u4;在各該時(shí)鐘周期內(nèi)的第一級(jí)流水線(xiàn)按第一個(gè)時(shí)鐘周期內(nèi)第一級(jí)流水線(xiàn)相同的方式進(jìn)行處理,第二級(jí)流水線(xiàn)按第二個(gè)時(shí)鐘周期內(nèi)第二級(jí)流水線(xiàn)相同的方式進(jìn)行處理;再在第八個(gè)時(shí)鐘周期內(nèi)執(zhí)行以下步驟第八級(jí)流水線(xiàn)處理將第六列第一行寄存器組輸出reg6_u1和第一行六抽頭濾波器輸出u1_fir6送入第一二輸入邏輯處理單元mn1得第一列第一行內(nèi)插點(diǎn)g02,將第六列第二行寄存器組輸出reg6_u2和第二行六抽頭濾波器輸出u2_fir6送入第二二輸入邏輯處理單元mn2得第一列第二行內(nèi)插點(diǎn)g03,將第六列第三行寄存器組輸出reg6_u3和第三行六抽頭濾波器輸出u3_fir6送入第三二輸入邏輯處理單元mn3得第一列第三行內(nèi)插點(diǎn)g04,將第六列第四行寄存器組輸出reg6_u4和第四行六抽頭濾波器輸出u4_fir6送入第四二輸入邏輯處理單元mn4得第一列第四行內(nèi)插點(diǎn)g05;第一二輸入邏輯處理單元mn1對(duì)第六列寄存器組輸出reg6_u1與第一行六抽頭濾波器輸出u1_fir6的處理過(guò)程如下,將第六列第一行寄存器組輸出reg6_u1與第一行六抽頭濾波器輸出u1_fir6送入均值處理單元3得均值處理單元3輸出data_u1,將第六列第一行寄存器組輸出reg6_u1、均值處理單元3輸出data_u1和第一行六抽頭濾波器輸出u1_fir6送入三選一模塊得第一列第一行內(nèi)插點(diǎn)g02;三選一模塊工作過(guò)程為如果向量橫坐標(biāo)x的值為0,則第一列第一行內(nèi)插點(diǎn)g02的值為第六列第一行寄存器組輸出reg6_u1,如果向量橫坐標(biāo)x的值為2,則第一列第一行內(nèi)插點(diǎn)g02的值為第一行六抽頭濾波器輸出u1_fir6,如果向量橫坐標(biāo)x的值為1或3,則第一列第一行內(nèi)插點(diǎn)g02的值為均值處理單元3輸出data_u1,按同樣的步驟得出第一列第二行內(nèi)插點(diǎn)g03、第一列第三行內(nèi)插點(diǎn)g04和第一列第四行內(nèi)插點(diǎn)g05;在該時(shí)鐘周期內(nèi)的第一、二、三、四、五、六、七級(jí)流水線(xiàn)仍按前面各時(shí)鐘周期內(nèi)的第一、二、三、四、五、六、七級(jí)流水線(xiàn)相同的方式進(jìn)行處理;最后按流水線(xiàn)的運(yùn)行次序依次算出第二列內(nèi)插點(diǎn)g12、g13、g14和g15,第三列內(nèi)插點(diǎn)g22、g23、g24和g25,第四列內(nèi)插點(diǎn)g32、g33、g34和g35的值。
全文摘要
本發(fā)明公開(kāi)了一種基于插值算法對(duì)稱(chēng)性H.264解碼器的亮度插值方法,特征是根據(jù)插值位置判斷插值點(diǎn)類(lèi)型如果插值點(diǎn)類(lèi)型為水平插值點(diǎn),利用矩陣的對(duì)稱(chēng)性并對(duì)9×9矩陣進(jìn)行轉(zhuǎn)置處理,則水平插值點(diǎn)類(lèi)型轉(zhuǎn)變?yōu)檗D(zhuǎn)置后矩陣的垂直插值點(diǎn);如果插值點(diǎn)類(lèi)型為垂直插值點(diǎn)類(lèi)型,則插值點(diǎn)計(jì)算只需垂直插值點(diǎn)和水平插值點(diǎn)或水平垂直插值點(diǎn)中之一;因此可以復(fù)用水平半像素插值器和水平垂直半像素插值器。通過(guò)利用插值算法對(duì)稱(chēng)性,復(fù)用水平半像素內(nèi)插濾波器和水平垂直半像素內(nèi)插濾波器,減少了半像素內(nèi)插濾波器的使用,從而在滿(mǎn)足高數(shù)據(jù)吞吐率的前提下可以有效的降低H.264解碼器中亮度插值模塊超大規(guī)模集成實(shí)現(xiàn)時(shí)的硬件復(fù)雜度,減小芯片面積,節(jié)約成本。
文檔編號(hào)H04N7/50GK101783947SQ201010109019
公開(kāi)日2010年7月21日 申請(qǐng)日期2010年2月5日 優(yōu)先權(quán)日2010年2月5日
發(fā)明者宋宇鯤, 張多利, 杜高明, 程賢文, 耿羅鋒, 賈靖華 申請(qǐng)人:合肥工業(yè)大學(xué)