亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

使用二維處理元件陣列的移動估計裝置及其方法

文檔序號:7627299閱讀:238來源:國知局
專利名稱:使用二維處理元件陣列的移動估計裝置及其方法
技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于一種移動估計(Motion Estimation)裝置及其方法,且特別是有關(guān)于一種使用二維處理元件(Processing Element,PE)陣列的移動估計裝置及其方法。
背景技術(shù)
圖像壓縮或圖像編碼是電子元件中各種多媒體應(yīng)用的重要一環(huán)。而移動估計在圖像壓縮當(dāng)中則占很重要的角色。例如,MPEG-4為主流圖像壓縮標(biāo)準(zhǔn)之一且所應(yīng)用的范圍很廣,從高清晰度電視(HDTV)或數(shù)字多功能DVD光驅(qū)等高位率(high-bit-rate)、高質(zhì)量圖像元件到可獲取圖像的手機或數(shù)字個人助理(PDA)等低位率移動處理裝置。在MPEG-4圖像編碼過程中,移動估計花費相當(dāng)多的計算時間以及大部分的系統(tǒng)資源。對MPEG-4圖像編碼而言,60%到80%的計算時間是用在移動估計上。就計算負載及資源使用方面,在處理元件中且特別是在一般具有限的功率容量、有限的存儲資源及有限的處理功率等的移動處理裝置中,移動估計是執(zhí)行MPEG-4編碼器的重要因子。
執(zhí)行圖像壓縮的編碼器中移動估計為最復(fù)雜的部分。移動估計使用圖像系列中鄰近畫面的短暫冗余,以找出移動因子,使目前結(jié)構(gòu)的目前區(qū)塊可以由參考坐標(biāo)的參考區(qū)塊來預(yù)測。與目前區(qū)塊相較,參考區(qū)塊具有最小的誤差計量(Error Measure)。許多移動估計的區(qū)塊比對算法(Block MatchingAlgorithm,BMA)已發(fā)展用以增加效能及/或降低硬件復(fù)雜度。在區(qū)塊比對算法中,例如是三步搜尋(TTS)或四步搜尋(4SS)的步搜尋算法(Step SearchAlgorithm)是發(fā)展用以降低計算冗余(Computation Redundancy)以及提升效能。然而,這些搜尋算法所使用的數(shù)據(jù)流通常不穩(wěn)定以致于算法的硬件操作很復(fù)雜。此外,有鑒于處理裝置所提供的有限資源,處理裝置在執(zhí)行步搜尋算法的整體效能并無法達到算法的理論效能,就移動處理裝置而言更是如此。
在文獻上可找到許多操作BMA的結(jié)構(gòu)式解決方法。例如Costa等人于1995年五月在消費電子學(xué)IEEE會刊第41卷第2部第248頁至第257頁所刊載的「階層式移動估計的超大規(guī)模集成電路(Very Large Scale IntegratedCircuits,VLSI)結(jié)構(gòu)」以及Kim等人于1997年2月在消費電子學(xué)IEEE會刊第43卷第1部第24頁至第33頁提出基于TSS算法的硬件結(jié)構(gòu)并著重于PE陣列的數(shù)據(jù)流。然而,這些硬件結(jié)構(gòu)所使用的PE陣列數(shù)據(jù)流很復(fù)雜并專門用于TSS,導(dǎo)致PE陣列外部存在一些問題。
首先,PE陣列中復(fù)雜的數(shù)據(jù)流導(dǎo)致PE陣列控制電路的操作更復(fù)雜。其次,在移動估計中PE陣列復(fù)雜的數(shù)據(jù)流本身易導(dǎo)致不斷地重復(fù)進行像素數(shù)據(jù)存儲器讀取的操作。在一般的編碼器中,連接移動估計結(jié)構(gòu)及畫面存儲器的存儲器總線,以及編碼器的其它單元會因忙于進行這些重復(fù)的讀取操作而降低整體的效能。雖然這個問題可通過提供額外像素數(shù)據(jù)存儲器區(qū)塊以緩沖來自畫面存儲器的像素數(shù)據(jù),并于TSS算法的每一搜尋步前,將所需的像素數(shù)據(jù)加載存儲區(qū)塊而直接解決。然移動估計的整體效能仍然降低,且需要更高的存儲器成本。另外,專用于TSS算法的數(shù)據(jù)流需精密設(shè)計,較難適用于其它步搜尋算法,例如FSS算法的結(jié)構(gòu)。就有限的資源環(huán)境來說,例如是移動處理裝置,上述PE陣列外部的問題對于硬件操作上非常重要,必須好好改進以提升裝置效能并可提供終端使用者加以使用。
因此,有必要提供一種移動估計結(jié)構(gòu)以解決上述問題并提供電路設(shè)計的擴充性及彈性。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的就是在提供一種具有二維處理元件(2D PE)陣列的移動估計裝置及其方法。根據(jù)本發(fā)明,提供一種用于PE陣列的數(shù)據(jù)流結(jié)構(gòu),以降低2D PE陣列控制硬件的復(fù)雜度。使用此數(shù)據(jù)流結(jié)構(gòu),可以降低好幾倍存儲存取量,因而達到降低計算時間以及功率損耗的目的。2D PE陣列也可以由其結(jié)構(gòu)及數(shù)據(jù)流結(jié)構(gòu)受益,并可達到降低移動估計系統(tǒng)電路面積的目的。使用2D PE陣列單元的移動估計系統(tǒng)也因而更適用于具有有限電源供應(yīng)的移動處理裝置,例如手機或PDA。
根據(jù)本發(fā)明的目的,提出一種移動估計裝置,包括PE陣列。PE陣列單元包括延遲單元陣列以及PE陣列。延遲單元陣列包括多個水平延遲單元(HDU)以及多個垂直延遲單元(VDU)。共有三列HDU,各列HDU具有第一HDU以及第二HDU。每個HDU包括輸入端以及輸出端。在各列HDU中,第一HDU的輸出端是連接第二HDU的輸入端。延遲陣列單元包括第一VDU以及第二VDU。各VDU具有輸入端以及輸出端。第一VDU的輸入端是連接于第一列中第一HDU的輸入端,第一VDU的輸出端是連接第二列中第一HDU的輸入端以及第二VDU的輸入端,第二VDU的輸出端是連接第三列中第一HDU的輸入端。PE陣列包括三列PE,各列PE包括第一PE、第二PE以及第三PE。各個PE包括第一輸入端、第二輸出端、誤差計量輸出端以及控制端。在每一列PE中,第一PE的第二輸入端是連接第一HDU的輸入端。第二PE的第二輸入端是連接第一HDU的輸出端。第三PE的第二輸入端是連接第二HDU的輸出端。各個PE是于控制端為致能狀態(tài)時累計第一輸入端的參考數(shù)據(jù)與第二輸入端的像素數(shù)據(jù)之間的誤差計量。
于一實施例中,PE陣列單元是用以執(zhí)行移動估計N步搜尋算法的搜尋步,而搜尋區(qū)域中像素的像素數(shù)據(jù)是以規(guī)律且順序地掃描像素的方式來讀取。搜尋區(qū)域的多個區(qū)塊是與目前區(qū)塊平行地作比較。當(dāng)完全讀取搜尋區(qū)域時,完成此搜尋步動作,并決定出最小誤差計量。
于本發(fā)明的第二實施例中,執(zhí)行全點移動估計的2D PE陣列單元是用以執(zhí)行移動估計的FSS算法。
根據(jù)本發(fā)明的目的,提出一種執(zhí)行全點移動估計的方法。在規(guī)律且順序地掃描像素的方式讀取搜尋區(qū)域像素數(shù)據(jù)的同時,即可進行N步搜尋算法的一搜尋步。搜尋區(qū)域的多個區(qū)塊是與目前區(qū)塊平行地作比較。
于其它的實施例中,提供用以執(zhí)行移動估計的移動估計系統(tǒng)結(jié)構(gòu),并整合于一電路中。
基于此移動估計方法,來自目前存儲器以及參考存儲器的規(guī)則數(shù)據(jù)流是一行一行依序地讀取,且控制PE陣列單元的控制電路是以簡化方式執(zhí)行。
根據(jù)本發(fā)明的另一目的,2D PE陣列單元在設(shè)計上具備擴充性以及彈性,且可用以找到具有部分像素(Fractional Pixel)準(zhǔn)確度的移動向量(MotionVector),例如是半點或四分之一點移動估計。
為了實現(xiàn)本發(fā)明的上述目的,根據(jù)本發(fā)明的一個方面,提供了一種移動估計裝置,用于圖像處理,包含多個處理元件,每一處理元件具有第一輸入端、第二輸入端、控制端及誤差計量輸出端,該些處理元件所對應(yīng)的該些第一輸入端接收參考數(shù)據(jù);多個延遲單元,針對像素數(shù)據(jù),產(chǎn)生具有特定延遲時間的多個數(shù)據(jù)流送至該些處理元件的該些第二輸入端;以及控制電路,提供多個控制信號至該些處理元件的該些控制端,當(dāng)該些處理元件收到該些控制信號時,計算該第一輸入端與該第二輸入端的誤差計量。
根據(jù)本發(fā)明的另一個方面,還提供了一種移動估計裝置,包括處理元件陣列單元,包括延遲單元陣列,包括多個水平延遲單元,包括三列水平延遲單元,各列水平延遲單元具有第一水平延遲單元以及第二水平延遲單元,各該些水平延遲單元包括輸入端以及輸出端,其中在各列水平延遲單元中,該第一水平延遲單元的該輸出端是連接該第二水平延遲單元的該輸入端;以及多個垂直延遲單元,包括第一垂直延遲單元以及第二垂直延遲單元,各該些垂直延遲單元具有輸入端以及輸出端,其中該第一垂直延遲單元的該輸入端是連接于該第一列中該第一水平垂直延遲單元的該輸入端,該第一垂直延遲單元的該輸出端是連接該第二列中該第一水平延遲單元的該輸入端以及該第二垂直延遲單元的該輸入端,該第二垂直延遲單元的該輸出端是連接該第三列中該第一水平延遲單元的該輸入端;以及處理元件陣列,包括三列處理元件,各列處理元件包括第一處理元件、第二處理元件以及第三處理元件,各該些處理元件包括第一輸入端、第二輸出端、誤差計量輸出端以及控制端,其中在每一列處理元件中,該第一處理元件的該第二輸入端是連接該第一水平延遲單元的該輸入端,該第二處理元件的該第二輸入端是連接該第一水平延遲單元的該輸出端,該第三處理元件的該第二輸入端是連接該第二水平延遲單元的該輸出端,其中各該些處理元件是于該控制端為一致能狀態(tài)時累計該第一輸入端的參考數(shù)據(jù)與該第二輸入端的像素數(shù)據(jù)之間的誤差計量。
根據(jù)本發(fā)明的另一個方面,還提供了一種執(zhí)行全點移動估計的方法,包括(a)定義一區(qū)塊,包括P×Q個像素并具有起始點C(0,0),并且定義搜尋區(qū)域,包括L×J個像素并具有起始點R(0,0),其中L=2×STEP_SIZE+P,J=2×STEP_SIZE+Q;(b)自該起始點R(0,0)至該起始點R(L-1,J-1)一行一行依序地輸出對應(yīng)該搜尋區(qū)域的像素R(i,j)的參考數(shù)據(jù)DR(i,j),并自該起始點C(0,0)至該起始點C(P-1,Q-1)一行一行依序地輸出對應(yīng)該區(qū)塊的像素C(p,q)的像素數(shù)據(jù)DC(p,q);(c)當(dāng)該步驟(b)在執(zhí)行時,決定與該些檢查點(0,0)、(STEP_SIZE,0)、(2×STEP_SIZE,0)、(0,STEP_SIZE)、(STEP_SIZE,STEP_SIZE)、(2×STEP_SIZE,STEP_SIZE)、(0,2×STEP_SIZE)、(STEP_SIZE,2×STEP_SIZE)以及(2×STEP_SIZE,2×STEP_SIZE)相對應(yīng)的多個誤差計量,該步驟(c)包括若i<P且j<Q,根據(jù)該些像素數(shù)據(jù)DC(p,q)以及該些參考數(shù)據(jù)DR(i,j)累計對應(yīng)該檢查點(0,0)的誤差計量;若i≥STEP_SIZE,i≤(L+STEP_SIZE),且j<Q,根據(jù)經(jīng)過對應(yīng)STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x1,y1)以及該些參考數(shù)據(jù)DR(i,j),累計對應(yīng)該檢查點(STEP_SIZE,0)的誤差計量,其中x1=i-STEP_SIZE且y1=j(luò);若i≥2×STEP_SIZE,i≤(L+2×STEP_SIZE),且j<Q,根據(jù)經(jīng)過對應(yīng)2×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x2,y2)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(2×STEP_SIZE,0)的誤差計量,其中x2=i-2×STEP_SIZE,且y2=j(luò);若i<P,j≥STEP_SIZE,且j<(L+STEP_SIZE),根據(jù)經(jīng)過對應(yīng)P×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x3,y3)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(0,STEP_SIZE)的一誤差計量,其中x3=i,且y3=j(luò)-P ×STEP_SIZE;若i≥STEP_SIZE,i<(L+STEP_SIZE),j≥STEP_SIZE,且j<(L+STEP_SIZE),根據(jù)經(jīng)過(1+P)×STEP_SIZE的延遲時間延遲的該些像素數(shù)據(jù)DC(x4,y4)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(STEP_SIZE,STEP_SIZE)的誤差計量,其中x4=i-STEP_SIZE,且y4=j(luò)-P×STEP_SIZE;若i≥2×STEP_SIZE,i<(L+2×STEP_SIZE),j≥STEP_SIZE,且j<(L+STEP_SIZE),根據(jù)經(jīng)過對應(yīng)(2+P)×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x5,y5)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(2×STEP_SIZE,STEP_SIZE)的誤差計量,其中x5=i-2×STEP_SIZE,且y5=j(luò)-P×STEP_SIZE;若i<P,j≥2×STEP_SIZE,且j<(L+2×STEP_SIZE),根據(jù)經(jīng)過對應(yīng)2×P×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x6,y6)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(0,2×STEP_SIZE)的誤差計量,其中x6=i,且y6=j(luò)-2×P×STEP_SIZE;若i≥STEP_SIZE,i<(L+STEP_SIZE),j≥2×STEP_SIZE,且j<(L+2×STEP_SIZE),根據(jù)經(jīng)過對應(yīng)(1+2×P)×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x7,y7)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(STEP_SIZE,2×STEP_SIZE)的誤差計量,其中x7=i-STEP_SIZE,且y7=j(luò)-2×P×STEP_SIZE;以及若i≥2×STEP_SIZE,i<(L+2×STEP_SIZE),j≥2×STEP_SIZE,且j<(L+2×STEP_SIZE),根據(jù)經(jīng)過對應(yīng)(2+2×P)×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x8,y8)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(2×STEP_SIZE,2×STEP_SIZE)的誤差計量,其中x8=i-2×STEP_SIZE,且y8=j(luò)-2×P×STEP_SIZE;其中當(dāng)完成該步驟(b)時,由該步驟(c)所決定,與該些檢查點(0,0)、(STEP_SIZE,0)、(2×STEP_SIZE,0)、(0,STEP_SIZE)、(STEP_SIZE,STEP_SIZE)、(2×STEP_SIZE,STEP_SIZE)、(0,2×STEP_SIZE)、(STEP_SIZE,2×STEP_SIZE)以及(2×STEP_SIZE,2×STEP_SIZE)對應(yīng)的該些誤差計量亦得以完成。
根據(jù)本發(fā)明的另一個方面,還提供了一種全點移動估計的方法,包括(a)定義一區(qū)塊,包括M×N個像素并具有起始點MB(0,0),并且定義搜尋區(qū)域,包括L×J個像素并具有起始點SA(0,0),其中L>P,且J>Q;(b)定義該搜尋區(qū)域包括對應(yīng)多個檢查點的多個具有M×N個像素的子區(qū)域,各該些檢查點是定義為各該些子區(qū)域?qū)?yīng)的起始點;(c)自該起始點SA(0,0)至該起始點SA(L-1,J-1)一行一行依序地輸出對應(yīng)該搜尋區(qū)域像素的像素數(shù)據(jù),并自該起始點MB(0,0)至該起始點MB(M-1,N-1)一行一行依序地輸出對應(yīng)該區(qū)塊像素的像素數(shù)據(jù);(d)當(dāng)該步驟(c)在執(zhí)行時,對于由該步驟(c)所輸出并對應(yīng)該區(qū)塊中一像素的像素數(shù)據(jù),送至延遲單元陣列,用以輸出分別對應(yīng)該些檢查點的多個串輸出數(shù)據(jù)流,其中對于該些檢查點其中之一,C(x,y),該延遲單元陣列是輸出對應(yīng)的輸出數(shù)據(jù)流,且該輸出數(shù)據(jù)流是延遲(x+y×M)個時間單位的像素數(shù)據(jù);(e)當(dāng)該步驟(c)在執(zhí)行時,根據(jù)該步驟(c)所讀取且與該搜尋區(qū)域的像素SA(p,q)相對應(yīng)的該像素數(shù)據(jù),執(zhí)行下列步驟判斷所有子區(qū)域中包括SA(p,q)的子區(qū)域;以及對于各個包括SA(p,q)的子區(qū)域,累計該子區(qū)域?qū)?yīng)的該檢查點C(f,g)所對應(yīng)的誤差計量,該誤差計量系根據(jù)來自與該檢查點C(f,g)相關(guān)的輸出數(shù)據(jù)流的像素數(shù)據(jù)以及對應(yīng)該搜尋區(qū)域的像素SA(p,q)的該些像素數(shù)據(jù)而得,其中來自與該檢查點C(f,g)相關(guān)的輸出數(shù)據(jù)流是對應(yīng)至該區(qū)塊的像素MB(r,s),p=r+f且q=s+g;其中當(dāng)該步驟(c)完成時,該步驟(e)中與所有的該些檢查點相對應(yīng)的該些誤差計量亦得以完成。
根據(jù)本發(fā)明的另一個方面,還提供了一種半點移動估計裝置,其中定義一區(qū)塊,包括P×Q個像素,并具有起始點C(0,0),并且定義搜尋區(qū)域,包括L×J個像素并具有起始點R(0,0),其中L=2+P,J=2+Q,該裝置包括半點值產(chǎn)生單元,響應(yīng)由該搜尋區(qū)域依續(xù)讀取的多個全點值,用以一組一組地產(chǎn)生復(fù)陣列半點值,各組分別包含四個半點值A(chǔ)、B、C及D;處理元件陣列單元,包括延遲單元陣列,包括多個水平延遲單元,包括三列水平延遲單元,每一列水平延遲單元具有第一水平延遲單元以及第二水平延遲單元,各該些水平延遲單元包括輸入端以及輸出端,其中在每一列水平延遲單元中,該第一水平延遲單元的該輸出端是連接該第二水平延遲單元的該輸入端;以及多個垂直延遲單元,包括第一垂直延遲單元以及第二垂直延遲單元,各該些垂直延遲單元具有輸入端以及輸出端,其中該第一垂直延遲單元的該輸入端是連接于該第一列中該第一水平延遲單元的該輸入端,該第一垂直延遲單元的該輸出端是連接該第二列中該第一水平延遲單元的該輸入端以及該第二垂直延遲單元的該輸入端,該第二垂直延遲單元的該輸出端是連接該第三列中該第一水平延遲單元的該輸入端;以及處理元件陣列,包括三列處理元件,各列處理元件包括第一處理元件、第二處理元件以及第三處理元件,各該些處理元件包括第一輸入端、第二輸出端、誤差計量輸出端以及控制端,其中在每一列處理元件中,該第一處理元件的該第二輸入端是連接該第一水平延遲單元的該輸入端,該第二處理元件的該第二輸入端是連接該第一水平延遲單元的該輸出端,該第三處理元件的該第二輸入端是連接該第二水平延遲單元的該輸出端,其中各該些處理元件是于該控制端為致能狀態(tài)時累計該第一輸入端的參考數(shù)據(jù)與該第二輸入端的像素數(shù)據(jù)之間的誤差計量;其中每一組四個半點值中,該半點值A(chǔ)是饋入至該處理元件陣列中該第一列及該第三列的該第一處理元件及該第三處理元件的該些第一輸入端;該半點值B是饋入至該處理元件陣列中該第一列及該第三列的該第二處理元件的該些第一輸入端;該半點值C是饋入至該處理元件陣列中該第二列的該第一處理元件及該第三處理元件的該些第一輸入端;且該半點值D是饋入至該處理元件陣列中該第二列的該第二處理元件的該第一輸入端。
為讓本發(fā)明的上述目的、特征、和優(yōu)點能更明顯易懂,下文特舉一較佳實施例,并配合所附圖式,作詳細說明如下。


第1圖繪示根據(jù)本發(fā)明第一實施例用于移動估計的2D PE陣列單元結(jié)構(gòu)圖。
第2圖繪示在第一輸入端A與第二輸入端B的數(shù)據(jù)間進行SAD的PE結(jié)構(gòu)圖。
第3圖繪示根據(jù)本發(fā)明一實施例2D PE陣列中水平延遲單元(HDU)的結(jié)構(gòu)方塊圖。
第4圖繪示根據(jù)本發(fā)明一實施例2D PE陣列中垂直延遲單元(VDU)的結(jié)構(gòu)方塊圖。
第5圖繪示依照本發(fā)明第二實施例執(zhí)行全點移動估計的2D PE陣列單元配置圖。
第6A圖繪示目前畫面的區(qū)塊以及前一個畫面(參考畫面)的搜尋區(qū)域。
第6B圖繪示執(zhí)行全點移動估計時四步搜尋中每一步的九個搜尋位置。
第7圖繪示依照本發(fā)明第二實施例搜尋區(qū)域的像素掃描順序示意圖。
第8圖繪示根據(jù)本發(fā)明第二實施例對應(yīng)搜尋區(qū)域的子區(qū)域的PE致能周期。
第9圖繪示依照本發(fā)明第三實施例移動估計系統(tǒng)的結(jié)構(gòu)方塊圖。
第10圖繪示于全點搜尋中找到的最佳點執(zhí)行半點搜尋動作示意圖。
第11A圖繪示用以平行輸出四個全點值的準(zhǔn)備延遲單元結(jié)構(gòu)圖。
第11B圖繪示用以將四個全點值轉(zhuǎn)換成四個半點值的半點產(chǎn)生電路結(jié)構(gòu)圖。
第12圖繪示依照本發(fā)明第四實施例利用第1圖的2D PE陣列單元執(zhí)行半點移動估計的結(jié)構(gòu)配置圖。
第13A圖與第13B圖繪示根據(jù)本發(fā)明第四實施例對應(yīng)搜尋區(qū)域的子區(qū)域的PE致能周期示意圖。
第14圖繪示根據(jù)本發(fā)明第五實施例使用2D PE陣列單元執(zhí)行全點及半點移動估計的移動估計系統(tǒng)結(jié)構(gòu)方塊圖。
10存儲器總線100二維處理元件陣列單元140、142、160、162、180、182、300水平延遲單元150、170、400垂直延遲單元110PE0112PE1114PE2120PE3122PE4124PE5130PE6
132PE7134PE8200PE210絕對差值元件250累加器310、320正反器350、450多工器360、2250與邏輯門401~416、421~436正反器460邏輯門610搜尋區(qū)域650區(qū)塊810PE0致能周期818PE8致能周期1000移動估計系統(tǒng)1100、2100移動估計單元1150多工器1160寄存器單元1170最小SAD判斷單元1301~1304子區(qū)域1500存儲器讀取單元1600控制單元1700地址產(chǎn)生單元1750PE致能邏輯電路1770MV產(chǎn)生邏輯電路2200準(zhǔn)備延遲單元2201~2219正反器2300半點產(chǎn)生電路具體實施方式
本發(fā)明的第一實施例提供一種二維處理元件(2D PE)陣列單元。這個陣列單元是配置以進行移動估計N步搜尋算法的一搜尋步,而在搜尋區(qū)域中像素數(shù)據(jù)是以規(guī)律且順序地掃描像素的方式來讀取。搜尋區(qū)域的多個區(qū)塊是與目前區(qū)塊平行地作比較。第二實施例則提供進行全點(Full-pel)移動估計的2DPE陣列單元配置,以進行移動估計的FSS算法。特別是,在搜尋區(qū)域的九個區(qū)塊是用以與目前區(qū)塊平行地作比較。且搜尋區(qū)域中像素數(shù)據(jù)是以根據(jù)本發(fā)明的像素掃描順序來讀取。基于此配置可設(shè)計來自目前存儲器及參考存儲器的規(guī)則數(shù)據(jù)流,且控制PE陣列單元的控制電路可以更簡化方式來操作。在本發(fā)明的第三實施例中,顯示一種移動估計系統(tǒng)結(jié)構(gòu),以執(zhí)行移動估計并整合于一電路中。2D PE陣列單元可設(shè)計得更具擴充性及彈性。在其它實施例中,還使用2D PE陣列來進行半點(Half-pel)移動估計。
二維處理元件(2D PE)陣列單元請參考第1圖,其繪示根據(jù)本發(fā)明第一實施例用于移動估計的二維處理元件(2D PE)陣列單元100結(jié)構(gòu)圖。處理元件(PE)陣列單元100包括延遲單元陣列(Delay Unit Array)以及PE陣列。PE陣列具有三列PE,且每列具有第一PE、第二PE以及第三PE。特別是每個PE具有第一輸入端、第二輸入端,誤差計量輸出端,以及控制端。例如,PE0包括第一輸入端A0、第二輸入端B0、誤差計量輸出端sad0(例如誤差計量為絕對差值(SAD)的總和)、以及控制端PE0en。延遲單元陣列包括多個水平延遲單元(HDU)以及多個垂直延遲單元(VDU)。PE陣列的第二輸入端B0至B8系分別連接至延遲單元陣列以形成2D PE陣列單元。
于第1圖中有三列HDU,且每一列具有第一HDU以及第二HDU。每一個HDU具有輸入端以及輸出端,且在同一列中第一HDU的輸出端連接第二HDU的輸入端。例如,第一列具有HDU 140以及HDU 142,且HDU 140的輸出端連接HDU 142的輸入端。第二列具有HDU 160以及HDU 162,且HDU 160的輸出端連接HDU 162的輸入端。第三列則具有HDU 180及HDU 182,且HDU 180的輸出端連接HDU 182的輸入端。此外,垂直延遲單元(VDU)包括第一VDU 150以及第二VDU 170,且每個VDU具有輸入端以及輸出端。第一VDU 150的輸入端連接至第一列中第一HDU 140的輸入端。第一VDU 150的輸出端連接至第二列中第一HDU 160的輸入端以及第二VDU 170的輸入端。而且第二VDU 170的輸出端連接至第三列中第一HDU 180的輸入端。
第1圖是繪示根據(jù)本發(fā)明第一實施例PE陣列以及延遲單元陣列之間連接關(guān)系。在PE陣列的每一列中,第一PE的第二輸入端連接至第一HDU的輸入端,第二PE的第二輸入端連接至第一HDU的輸出端,且第三PE的第二輸入端連接至第二HDU的輸出端。在PE陣列的第一列中,第一PE 110(PE0)的第二輸入端B0連接至第一HDU 140的輸入端,第二PE 112(PE1)的第二輸入端B1連接至第一HDU 140的輸出端,且第三PE 114(PE2)的第二輸入端B2連接至第二HDU 142的輸出端。在PE陣列的第二列中,第一PE 120(PE3)的第二輸入端B3連接至第一HDU 160的輸入端,第二PE 122(PE4)的第二輸入端B4連接至第一HDU 160的輸出端,且第三PE 124(PE5)的第二輸入端B5連接至第二HDU 162的輸出端。在PE陣列的第三列中,第一PE 130(PE6)的第二輸入端B6連接至第一HDU 180的輸入端,第二PE 132(PE7)的第二輸入端B7連接至第一HDU 180的輸出端,且第三PE 134(PE8)的第二輸入端B8連接至第二HDU 182的輸出端。每一個PE是于控制端致能時用以累計PE第一輸入端的參考數(shù)據(jù)(Reference Data)與PE第二輸入端的像素數(shù)據(jù)(PixelData)之間特定形態(tài)的誤差計量。
第1圖所示的2D PE陣列單元是配置用以執(zhí)行全點移動估計。2D PE陣列單元使用移動估計N步搜尋算法的其中一搜尋步,并于以規(guī)律且順序地掃描像素的方式讀取搜尋區(qū)域的像素數(shù)據(jù)時進行。當(dāng)搜尋區(qū)域掃描完成,且對應(yīng)的像素數(shù)據(jù)完全饋入2D PE陣列單元時,以平行方式進行(對應(yīng)特定檢查點)搜尋區(qū)域的多個區(qū)塊與目前區(qū)塊(Current Macro-block)的比較以產(chǎn)生對應(yīng)檢查點的誤差計量(Error Measure)。再根據(jù)所得到的誤差計量決定具有最小誤差計量的檢查點。也就是說,可于掃描搜尋區(qū)域過程中使用2D PE陣列單元進行移動估計N步搜尋算法的一搜尋步。因此,可使用2D PE陣列單元進行任何的移動估計N步搜尋算法。
在實際的應(yīng)用中,在操作2D PE陣列單元時會選擇進行一特定的誤差計量。2D PE陣列單元可使用任何的誤差計量,例如是絕對差值(SAD)的和、方均誤差(MSE)、或絕對平均誤差(MAE),也可以選擇使用一種或結(jié)合多種誤差計量結(jié)構(gòu)。為了說明方便,接下來的實施例是使用SAD為例。請參考第2圖,其繪示在第一輸入端A與第二輸入端B的數(shù)據(jù)間進行SAD的處理元件(PE)200的結(jié)構(gòu)圖。PE 200包括絕對差值元件(Absolute Difference Device)210以及累加器(Accumulator)250。以同步對應(yīng)方式將參考區(qū)塊(ReferenceMacro-block)及目前區(qū)塊的像素值依序應(yīng)用于絕對差值元件210,可根據(jù)底下的公式(以16點×16點的目前區(qū)塊為例)利用累加器250決定SAD值。
SAD=Σx=0~15,y=0~15|Ref_Datax,yCurr_Datax,y|]]>執(zhí)行全點移動估計的2D PE陣列單元配置請參考第5圖,是繪示依照本發(fā)明第二實施例執(zhí)行全點移動估計的2D PE陣列單元配置圖。由圖可知,所有PE的第一輸入端是連接在一起,使得送至2D PE陣列單元的參考數(shù)據(jù)可同步地送至所有PE的第一輸入端。同時,當(dāng)目前數(shù)據(jù)送至第一列中第一HDU 140的輸入端以及第一PE 110(PE0)的第二輸入端B0時,延遲單元陣列產(chǎn)生具有特定延遲時間的八種不同數(shù)據(jù)流送至PE的個別第二輸入端。在第二實施例中是依序讀取參考數(shù)據(jù)并同步送至每一個PE的第一輸入端,并依序讀取區(qū)塊的目前數(shù)據(jù)送至每一個PE的第二端,使得每一個PE可正確執(zhí)行搜尋區(qū)域的特定參考區(qū)塊與目前區(qū)塊的誤差計量,例如SAD。為了符合需求,必須視2D PE陣列單元所使用的移動估計步搜尋算法來設(shè)定像素掃描順序、延遲單元陣列以及控制PE陣列。
四步搜尋算法在此實施例中,如第5圖所示,2D PE陣列單元將執(zhí)行移動估計四步搜尋(FSS)算法。FSS算法可參考1996年六月由Po等人刊登在視頻科技電路及系統(tǒng)IEEE會刊第6卷第3部第313頁至第317頁。根據(jù)此文獻,F(xiàn)SS算法使用如第6B圖所示于第一步5×5窗口中具有九個檢查點的中央趨勢(Center-biased)搜尋樣式。在搜尋樣式的相鄰兩個檢查點間的步幅(StepSize)STEP_SIZE為2。搜尋窗口中央接著平移至具有最小區(qū)塊變形計量(BDM)的檢查點。下兩步的搜尋窗口大小視最小BDM檢查點而定。假如最小BDM檢查點出現(xiàn)在搜尋視階層窗的中央,進行具有3×3搜尋窗口的最后一步(第四步)搜尋。否則,搜尋窗口大小維持在第二步或第三步的5×5大小。在最后一步中,搜尋窗口縮小為3×3并搜尋到此小窗口為止,步幅降低為1。
在FSS算法中,一步是表示搜尋在搜尋區(qū)域中的最小BDM檢查點。在實際應(yīng)用中,需使用目前存儲器儲存待編碼的畫面像素數(shù)據(jù),且需使用參考存儲器儲存由解碼先前畫面得到的新建構(gòu)畫面像素數(shù)據(jù)。新建構(gòu)畫面用為解碼編碼過后的目前畫面的存儲器。在參考存儲器中,像素數(shù)據(jù)稱為參考數(shù)據(jù)Ref_Data,是對應(yīng)至新建構(gòu)畫面的像素,并為八位的亮度像素值。在目前存儲器中,像素數(shù)據(jù)稱為目前數(shù)據(jù)Curr_Data,對應(yīng)目前畫面的像素,并為八位的亮度像素值。在一步中,如第6A圖所示的搜尋區(qū)域610為需要讀取的參考存儲器數(shù)據(jù)區(qū),其中MPEG-4中區(qū)塊650為16點×16點,搜尋區(qū)域610=x_range·y_range,x_range=16+STEP_SIZE×2,且y_range=16+STEP_SIZE×2。在第6B圖中,于第一步中顯示5×5窗口的九個檢查點,且對應(yīng)每個檢查點的一數(shù)值表示搜尋位置的順序。第6B圖的點0定義為起始點,同時顯示于每一搜尋步的第6A圖中。接著,點1表示用以計算誤差計量(對應(yīng)一參考區(qū)塊)的下一個檢查點。點8為最后一個檢查點。
像素掃描順序請參考第7圖,其繪示依照本發(fā)明第二實施例搜尋區(qū)域的像素掃描順序示意圖。一步的搜尋區(qū)域的參考數(shù)據(jù)是一行一行地由標(biāo)示R(0,0)的起始點依序讀取直到標(biāo)示為R(x_range-1,y_range-1)的搜尋區(qū)域終點。
同樣地,目前區(qū)塊的像素掃描順序或目前區(qū)塊像素值的讀取也是依序式地,一個像素接一個像素,一行接著一行。當(dāng)PE0被致能時,亦即當(dāng)輸入PE0控制端PE0en的致能信號為「致能」?fàn)顟B(tài)時,目前區(qū)塊的像素值是以像素掃描順序來讀取。在一個實施例中,當(dāng)PE0被致能時,在讀取一筆參考數(shù)據(jù)之前立即先讀取一筆目前數(shù)據(jù)。在第5圖中,于FSS算法一步中,由PE決定對應(yīng)第6B圖檢查點的誤差計量,例如是本實施例的SAD。例如,PE0用以使用誤差計量來比較目前區(qū)塊與檢查點(0,0)的參考區(qū)塊,其中檢查點位于參考區(qū)塊左上角。例如于第6B圖中,PE4是用以比較目前區(qū)塊與檢查點(STEP_SIZE,STEP_SIZE),例如是(2,2)的參考區(qū)塊。就PE的此項功能而言,Ref_Data以及Curr_Data必須正確,例如是同步送至PE陣列,使每一個PE可以決定檢查點的誤差計量,亦即SAD。以PE0為例,當(dāng)搜尋區(qū)域的像素(0,0)像素值及區(qū)塊的像素(0,0)像素值分別同步送到第一輸入端A0以及第二輸入端B0時,可正確地獲得絕對差值。其它的PE可藉由延遲單元陣列正確地輸入像素值。就PE0而言,當(dāng)讀取一列目前區(qū)塊中最后像素的像素值Curr_Data并送至第二輸入端B0之后,PE0便被非致能。此時,持續(xù)進行搜尋區(qū)域的掃描,但暫停掃描目前區(qū)塊直到掃描到下一列搜尋區(qū)域的第一個像素。當(dāng)掃描到下一列搜尋區(qū)域的第一個像素時,PE0再次被致能并繼續(xù)掃描目前區(qū)塊。因此,下一列目前區(qū)塊的像素值以及下一列搜尋區(qū)域的像素值可以正確地,例如是同步地送至PE0。以上述方式進行目前區(qū)塊的掃描使得其它PE可以接收到正確的像素值以決定對應(yīng)的誤差計量。
延遲單元陣列搜尋區(qū)域以及目前區(qū)塊的掃描皆以依序方式,一個像素接著一個像素,一行接著一行的方式進行。在第二實施例中,當(dāng)搜尋區(qū)域掃描完成時,將決定出九個檢查點的九個誤差計量以及此步的MBDM。利用上述的目前區(qū)塊像素掃描順序,延遲單元陣列提供具有特定延遲時間的八個不同數(shù)據(jù)流至PE的個別第二輸入端,以便搜尋區(qū)域的像素值以及延遲單元陣列的輸出端像素值可以正確地饋入至PE中。
在FSS算法中,第一步、第二步及第三步的步幅為2,而最后一步的步幅則改為1。每一個HDU的延遲時間為STEP_SIZE個時間單位,而每一個VDU的延遲時間為STEP_SIZE×P,其中P為區(qū)塊的寬度(像素個數(shù)),且本實施例中P值為16。請參考第3圖,其繪示可選擇于一個或二個時間單元之后輸出八位Curr_Data的HDU 300的結(jié)構(gòu)圖。HDU 300包括二個正反器(Flip-flop)310及320、一個多工器(Multiplexer)350以及一與邏輯門(AND LogicGate)360。正反器310為時鐘柵極單元(Clock Gating Cell)。HDU 300可利用多工器350的選擇輸入端(MODE)選擇于一個或二個時間單位后輸出八位Curr_Data。請參考第4圖,其繪示用以選擇于16×1或16×2個時間單位后輸出八位Curr_Data的VDU 400結(jié)構(gòu)圖。VDU 400包括32個正反器,即正反器401到正反器416、正反器421到正反器436,以及與邏輯門460,其中所有正反器為時鐘柵極單元(Clock Gating Cell)。VDU 400可利用多工器450的選擇輸入端(MODE)選擇于16×1或16×2個時間單位(周期)后輸出八位Curr_Data。因此,藉由輸入控制信號至延遲單元陣列的HDU及VDU中多工器的選擇輸入端,延遲單元陣列可提供具特定延遲時間的八個不同數(shù)據(jù)流至PE的個別第二輸入端,因而,搜尋區(qū)域的像素值及目前區(qū)塊的像素值可同步饋入至PE中。當(dāng)步搜尋算法中下一步的步幅改變時,藉由輸出一致能信號至MODE端,延遲單元可以適當(dāng)?shù)鼐哂袀€別延遲時間。
例如,在FSS算法的第一步中,步幅為2。以PE1為例,PE1負責(zé)決定搜尋區(qū)域中目前區(qū)塊與起始點為(2,0)的區(qū)塊之間的誤差計量。因此,當(dāng)搜尋區(qū)域中對應(yīng)(2,0)至(17,0)的Ref_Data依序地饋入至PE1的第一輸入端A1時,PE1即致能。同時,對應(yīng)目前區(qū)塊的(0,0)至(15,0)也必須依序地饋入PE1的第二輸入端B1。請參考第5圖,HDU 140系以延遲時間STEP_SIZE(即兩個時間單元)將Curr_Data饋入至PE1的第二輸入端B1完成這個需求。因此,當(dāng)延遲二個周期時間將Ref_Data及Curr_Data正確且同步地饋入至PE0時,Ref_Data是正確且同步地饋入PE1。對其它的PE而言,例如是PE3以及PE8,操作方式相似,不同在于PE于不同周期致能且饋入至PE第二輸入端的Curr_data是延遲不同周期大小。
另外,HDU及VDU也稱為延遲線并可以其它邏輯線路來操作。假如由2D PE陣列單元執(zhí)行的步搜尋算法在不同的搜尋步當(dāng)中具有不同的步幅,正反器,例如是HDU及VDU的數(shù)目可根據(jù)步搜尋算法的需求而調(diào)整。
PE陣列的控制PE陣列的每一個PE具有控制端PEZen,其中Z代表0至8的數(shù)字。請參考第7圖,掃描搜尋區(qū)域使得Ref_Data以規(guī)則方式饋入至每一個PE的第一輸入端。Curr_Data是饋入PE0,且以特定延遲時間由延遲陣列單元輸出的Curr_Data是饋入其余的PE,即PE1至PE8。以PE4為例,在搜尋區(qū)域掃描過程中,對應(yīng)某些像素例如是搜尋區(qū)域的(0,0)至(1,15)的Ref_Data并不影響檢查點(2,2)的誤差計量決定。因此,致能信號是控制PE4不處理落在參考區(qū)塊范圍外的Ref_Data。根據(jù)本發(fā)明的第二實施例,可提供致能周期使得PE陣列單元正常操作。
請參考第8圖,PE致能周期可直觀地將搜尋區(qū)域再細分為9個子區(qū)域來加以定義。搜尋區(qū)域劃分為具有與目前區(qū)塊相同大小的子區(qū)域子集,分別關(guān)連一系列檢查點(0,0),(STEP_SIZE,0),(2×STEP_SIZE,0),(0,STEP_SIZE),(STEP_SIZE,STEP_SIZE),(2×STEP_SIZE,STEP_SIZE),(0,2×STEP_SIZE),(STEP_SIZE,2×STEP_SIZE),(2×STEP_SIZE,2×STEP_SIZE)。各檢查點是定義為每一個子區(qū)域所對應(yīng)的起始點。在第8圖中,PE0_enable_cycle,PE4_enable_cycle,PE8_enable_cycle是分別以方格810、814、818來表示并分別關(guān)系至檢查點(0,0),(2,2),(4,4)。利用致能周期的定義,PE陣列的控制可方便且操作更簡化。例如,可使用控制邏輯電路來判斷那一個子區(qū)域包括對應(yīng)搜尋區(qū)域中Ref_Data的像素R(i,j)。對每一個判斷為包括像素R(i,j)的子區(qū)域,會致能對應(yīng)的一個致能信號并送至對應(yīng)檢查點的PE控制端。
例如,當(dāng)對應(yīng)(2,2)的Ref_Data被讀取時,控制邏輯電路是判定PE0_enable_cycle、PE1_enable_cycle、PE3_enable_cycle及PE4_enable_cycle(四個子區(qū)域)包括像素(2,2)。對應(yīng)判定為包括像素(2,2)的四個子區(qū)域的致能信號,即PE0_Enable、PE1_Enable、PE3_Enable、PE4_Enable被致能且輸出至對應(yīng)檢查點(0,0)、(2,0)、(0,2)、(2,2)的PE控制端PE0en、PE1en、PE3en、PE4en。
對應(yīng)執(zhí)行FSS算法的第二實施例,表一列出9種PE的致能狀態(tài)。表一具體列出當(dāng)子區(qū)域中包含有對應(yīng)搜尋區(qū)域像素(X,Y)的Ref_Data時將標(biāo)示為PEZ_Enable(Z=0~8)致能信號致能的狀態(tài)。值得注意的是,表一中第二欄的狀態(tài)系定義全點移動估計之前n-1步的子區(qū)域,而第三欄的狀態(tài)則定義全點移動估計最后一步的子區(qū)域。此外,在第二實施例中,致能信號PEZ_Enable(Z=0~8)是分別饋入至PE0至PE8的控制端PEZen(Z=0~8)。
表一

移動估計系統(tǒng)的結(jié)構(gòu)請參考第9圖,其繪示依照本發(fā)明第三實施例移動估計系統(tǒng)(MotionEstimation System)1000的結(jié)構(gòu)方塊圖。移動估計系統(tǒng)1000包括移動估計單元1100、存儲器讀取單元(Memory Reading Unit)1500、控制單元1600以及地址產(chǎn)生單元(Address Generation Unit)1700。第9圖繪示的系統(tǒng)是可輸出例如是FSS算法的步搜尋算法的移動向量(Motion Vector)。移動估計系統(tǒng)1000更可配置以執(zhí)行任何的移動估計N步搜尋算法,例如三步搜尋算法。
移動估計單元1100包括2D PE陣列單元100、多工器(Multiplexer)1150、寄存器單元(Register Unit)1160以及最小SAD判斷單元(DeterminationUnit)1170。
存儲器讀取單元1500為一種提供移動估計系統(tǒng)1000的存儲器讀取接口,其中存儲器讀取接口可搭配連接移動估計系統(tǒng)1000的存儲器總線10所使用的至少一通訊協(xié)議。存儲器總線10例如是連接至參考存儲器以及目前存儲器。因此,移動估計系統(tǒng)1000可通過存儲器讀取單元1500由目前存儲器以及參考存儲器讀取目前數(shù)據(jù)以及參考數(shù)據(jù)。
控制單元1600用以進行步搜尋計數(shù)??刂茊卧?600可以是有限狀態(tài)機(Finite State Machine),例如包括二個計數(shù)電路(Counter Circuit),即X計數(shù)器以及Y計數(shù)器,用以進行步搜尋計數(shù)。X計數(shù)器用以計算一列搜尋區(qū)域讀取像素值的像素數(shù)目。Y計數(shù)器則用以計算搜尋區(qū)域中讀取像素值的像素字段數(shù)。當(dāng)讀取對應(yīng)搜尋區(qū)域像素的一筆Ref_Data數(shù)據(jù)時,X計數(shù)器的計數(shù)值累加1。而當(dāng)X計數(shù)器計數(shù)值達到一默認(rèn)值X_max_count時,Y計數(shù)器計數(shù)值累加1。然后,X計數(shù)器計數(shù)值重置為0。當(dāng)Y計數(shù)器的計數(shù)值達到y(tǒng)_range時,結(jié)束此步搜尋算法。X_max_count為搜尋區(qū)域的寬度(像素數(shù)目),即X_max_count=x_range。在全點移動估計的第一步至第(n-1)步中,X_max_count=x_range=macroblock_size+STEP_SIZE×2。例如,在FSS算法中,X_max_count=16+2×2=20,其中除了最后一步之外,其它步的步幅STEP_SIZE=2。而全點移動估計的最后一步中,X_max_count=x_range,而STEP_SIZE值可以是較小值。在FFS算法的最后一步中,X_max_count=16+1×2=18,其中STEP_SIZE=1。存儲器讀取單元1500產(chǎn)生存儲器讀取信號Ref_ready并送至控制單元1600。存儲器讀取信號是用以通知X及Y計數(shù)器更新其計數(shù)值。例如,當(dāng)對應(yīng)一筆搜尋區(qū)域的一筆Ref_Data數(shù)據(jù)由例如是參考存儲器讀取時,Ref_ready設(shè)定為致能狀態(tài),例如是高電平。PE致能周期系根據(jù)X以及Y計數(shù)器提供的目前計數(shù)值X及Y來決定。
地址產(chǎn)生單元1700包括PE致能邏輯電路1750以及移動向量(MV)產(chǎn)生邏輯電路1770。PE致能邏輯電路1750由計數(shù)器單元1600的X及Y計數(shù)器接收目前計數(shù)值X及Y,再根據(jù)目前計數(shù)值X及Y以及表一產(chǎn)生致能信號,然后將致能信號輸出至移動估計單元1100的2D PE陣列單元100。如上所述,掃描搜尋區(qū)域之后,可獲得九個誤差計量,例如是第二實施例中對應(yīng)九個檢查點的九個SAD。而最小SAD判斷單元1170可判定最小誤差計量并加以輸出。地址產(chǎn)生單元1700接收由最小SAD判斷單元1170輸出的最小誤差計量。MV產(chǎn)生邏輯電路1770產(chǎn)生搜尋算法最后一步的移動向量。此外,地址產(chǎn)生單元1700產(chǎn)生存儲器地址并提供給存儲器讀取單元1500,因而可由存儲器讀取單元1500讀取目前數(shù)據(jù)并饋入至移動估計單元1100。
移動估計系統(tǒng)1000用以執(zhí)行移動估計N步搜尋算法。假設(shè)移動估計系統(tǒng)1000以時鐘信號CLK進行操作。首先,2D PE陣列單元配置如第5圖所示,用以進行全點移動估計。接著,由起始點(0,0)開始讀取搜尋區(qū)域610中像素的Ref_Data數(shù)據(jù),如第6A圖所示。并根據(jù)第7圖的像素掃描順序?qū)⒆x取的Ref_Data數(shù)據(jù)饋入至移動估計單元1100。當(dāng)讀取對應(yīng)像素的Ref_Data數(shù)據(jù)時,如上所述,控制單元1600的X及Y計數(shù)器開始計數(shù),且PE致能邏輯電路1750產(chǎn)生致能信號PEZ_enable(Z=0~8)并輸出至PE陣列單元100。當(dāng)讀取搜尋區(qū)域的Ref_Data數(shù)據(jù)并饋入至移動估計單元1100時,目前區(qū)塊的Curr_Data數(shù)據(jù)也以目前區(qū)塊的像素掃描順序來讀取并饋入至移動估計單元1100。2D PE陣列單元100的每一個PE判斷是否要根據(jù)致能信號PEZ_enable處理目前周期中饋入PE的數(shù)據(jù)并于PEZ_enable信號致能PE時計算正確的誤差計量。當(dāng)搜尋區(qū)域掃描完成且對應(yīng)的像素數(shù)據(jù)完全饋入2D PE陣列單元時,搜尋區(qū)域九個參考區(qū)塊(對應(yīng)特定檢查點)與目前區(qū)塊的比較以平行方式進行,以產(chǎn)生對應(yīng)的誤差計量,亦即第6B圖實施例中對應(yīng)檢查點的SAD。因此,可根據(jù)最小SAD判斷單元1170提供的誤差計量來決定具有最小誤差計量的檢查點。也就是說,在掃描搜尋區(qū)域中,可由2D PE陣列單元100進行移動估計N步搜尋算法的一搜尋步。根據(jù)搜尋步產(chǎn)生的結(jié)果,移動估計系統(tǒng)1000可以根據(jù)N步搜尋算法執(zhí)行依序步搜尋直到獲得一最佳點,亦即最后一步的最小區(qū)塊變形計量,而移動向量即由此決定。因此,通過2D PE陣列單元100,移動估計系統(tǒng)1000可執(zhí)行移動估計的任何N步搜尋算法。
特別是在2D PE陣列單元100的配置上,2D PE陣列單元100的HDU以及VDU根據(jù)步搜尋算法中目前搜尋步的步幅來配置。例如,當(dāng)全點移動估計FSS算法的第一步中STEP_SIZE值設(shè)定為2時,如第3圖所示,HDU藉由將選擇信號饋入選擇輸入端(MODE)使得多工器350可選擇正反器310輸出的方式來設(shè)定。因此,每一個HDU具有二個時間單元(周期)的延遲時間。同樣地也設(shè)定每個VDU并具有32個時間單元(周期)的延遲時間(周期)。當(dāng)2D PE陣列單元100執(zhí)行FSS算法的最后一步時,每一個HDU是設(shè)定為具有一個時間單元的延遲時間,且每一個VDU系設(shè)定為具有16個時間單元的延遲時間。在其中一個實施例中,可使用2D PE陣列單元100,在依序搜尋步中步幅可由4改變?yōu)?,或由2改變?yōu)?,以執(zhí)行三步搜尋。在這種情況下,可根據(jù)第3圖所示的HDU 300來調(diào)整2D PE陣列單元100中HDU的結(jié)構(gòu)以具有四個時間單元的更長延遲時間,并可選擇具有一個、二個或四個時間單位的延遲時間。同樣地,2D PE陣列單元100的VDU結(jié)構(gòu)也可以加以調(diào)整至具有16×4個時間單位的更長延遲時間,并可選擇具有16、32或64個時間單位的延遲時間。
在全點移動估計中,系一行一行依序地讀取搜尋區(qū)域的Ref_Data數(shù)據(jù)。這此實施例中,當(dāng)信號PE0_Enable為致能狀態(tài)時,在讀取對應(yīng)搜尋區(qū)域像素的一筆參考數(shù)據(jù)之前會先讀取對應(yīng)目前區(qū)塊的一筆目前數(shù)據(jù)。
在一個實施例中,可于2D PE陣列單元100的HDU以及VDU中使用柵極時鐘技術(shù)(Gated Clock Technique)來控制移位寄存器以達到有效降低功率耗損的目的。由存儲器讀取單元1500產(chǎn)生的存儲器讀取信號Ref_ready用以控制2D PE陣列單元100的延遲單元陣列。例如,在全點移動估計中,HDU致能信號是設(shè)定為對應(yīng)存儲器讀取信號Ref_ready的邏輯狀態(tài),且VDU致能信號是設(shè)定為相當(dāng)于邏輯運算結(jié)果(Ref_ready&(X_count<16))的邏輯狀態(tài),其中當(dāng)由參考存儲器讀取搜尋區(qū)域像素的Ref_Data數(shù)據(jù)時,Ref_ready是設(shè)定為高電平狀態(tài)。如第3圖所示,HDU致能信號是饋入HDU的HEN端,而VDU致能信號則如第4圖所示饋入至VDU的VEN端。時鐘信號CLK是饋入至CLK端。效能在MPEG-4的環(huán)境下,區(qū)塊大小例如是16×16個像素。假設(shè)對應(yīng)搜尋區(qū)域像素的一筆參考數(shù)據(jù)Ref_Data,以字節(jié)方式排列于一個周期中讀取,且對應(yīng)區(qū)塊中四個依序像素的四塊目前數(shù)據(jù),以字符方式排式于一個周期中讀取。于一個實施例中,第9圖繪示移動估計單元1100的潤飾圖。寄存器單元1160用以儲存對塊目前數(shù)據(jù)(32位),且多工器1150用以由寄存器1160中選擇一筆目前數(shù)據(jù)(8位),并輸出所選定的目前數(shù)據(jù)至2D PE陣列單元100。全點移動估計FSS算法的第一步需要讀取(16+2×2)×(16+2×2)=400塊參考數(shù)據(jù)以及讀取16×16=256塊目前數(shù)據(jù),且其步幅為2。由于儲存于參考存儲器的參考數(shù)據(jù)以字節(jié)方式排列,而非字符方式排列,參考數(shù)據(jù)是以一字節(jié)接著一字節(jié)方式來讀取及存取。那是假設(shè)在最佳狀況下,存儲器讀取單元可于一個周期內(nèi)回復(fù)一筆參考數(shù)據(jù)。然而,儲存在目前存儲器的目前數(shù)據(jù)是字符排列方式且目前數(shù)據(jù)是一字符接著一字符方式存取及讀取。在32位的存儲器總線系統(tǒng)中,假設(shè)在最佳狀況下,四塊目前數(shù)據(jù)皆可在一個周期內(nèi)由存儲器讀取單元回復(fù)。因此,在此假設(shè)下,全點移動估計的第一步需要400+64=464個周期才能完成。在最后一步中,必須讀取(16+1×2)×(16+1×2)=324筆參考數(shù)據(jù)。也就是說,全點移動估計的最后一步系以324+64=384個周期來完成。因此,在最差的情況下,對一個目前區(qū)塊的四步搜尋需要大約464×3+324=1716個周期來完成。
另外,早期結(jié)束是四步搜尋算法的特色之一,平均來說,移動向量可于大約2.5步中來決定,平均的計算時間約為1716×2.5/4=1072.5周期。優(yōu)點上述實施例中2D PE陣列單元以平行操作的九個PE來建構(gòu),且以簡單順序來提供數(shù)據(jù)流,并進行對應(yīng)的控制。
如第7圖所示,由于像素掃描的順序為順序性的,控制2D PE陣列單元的硬件操作以及地址產(chǎn)生方式也具規(guī)則性且單純化。因此,可降低移動估計系統(tǒng)所需的電路面積。
在移動估計的計算過程中,饋入2D PE陣列單元的參考數(shù)據(jù)及目前數(shù)據(jù)可適當(dāng)?shù)卦僦貜?fù)使用。2D PE陣列單元的計算速度是比已知僅使用一個PE的2D PE陣列單元要快九倍。
此外,2D PE陣列單元存儲器存取的次數(shù)是比使用一個PE的2D PE陣列單元要少九倍。由于功率損耗正比于存儲器存取次數(shù),既能降低存儲器存取的時間,便能有效節(jié)省2D PE陣列單元的功率消耗。因此,使用2D PE陣列單元的移動估計系統(tǒng)可適用于有限電源供應(yīng)的移動處理裝置,例如是移動電話或PDA。
此外,根據(jù)本發(fā)明的移動估計系統(tǒng),可降低對存儲器總線的存取次數(shù),因而提高存儲器總線的利用性。
由于不需要如一些已知步驟中暫存參考數(shù)據(jù)的額外大存儲器區(qū)塊,因此也可節(jié)省存儲器資源。根據(jù)本發(fā)明的實施例,當(dāng)參考數(shù)據(jù)饋入至2D PE陣列單元時執(zhí)行移動估計的計算。
再者,2D PE陣列單元為一種彈性結(jié)構(gòu),可以適用于不同的移動估計算法,且可擴充其利用性。特別是如本發(fā)明上述的實施例所述,2D PE陣列單元可用以執(zhí)行移動估計N步搜尋算法。2D PE陣列單元可使用于支持特定形式算法的移動估計系統(tǒng)。除了FSS算法之外,任何N步搜尋算法,例如是用于移動估計的三步搜尋或3-3-3-1搜尋算法皆可通過2D PE陣列單元來執(zhí)行,其3-3-3-1搜尋算法的第一步到第四步的步幅分別為3、3、3及1。具有2D PE陣列單元的移動估計系統(tǒng)也可以選擇性地支持各種算法,例如FSS以及TSS算法。
雖然第5圖所示的2D PE陣列單元原本是用以執(zhí)行全點移動估計,然只要在饋入2D PE陣列單元前準(zhǔn)備好所有的子像素數(shù)據(jù),2D PE陣列單元也可以執(zhí)行子像素移動估計,例如半點或四分之一點移動估計。然而,這種方法額外需要將整體的像素數(shù)據(jù)轉(zhuǎn)換成子像素數(shù)據(jù)的轉(zhuǎn)換過程以及需要暫存由轉(zhuǎn)換程序產(chǎn)生的所有子像素數(shù)據(jù)的存儲器區(qū)塊。此外,2D PE陣列單元僅在轉(zhuǎn)換程序結(jié)束時才開始半點移動估計。而且,在轉(zhuǎn)換程序中于此外加緩沖器中進行存儲器讀寫操作的次數(shù)將增加整體計算時間。
接下來的描述中,第1圖的2D PE陣列單元可不需要儲存所有子像素數(shù)據(jù)的存儲器區(qū)塊而用以執(zhí)行半點移動估計,并可由本發(fā)明第1圖的2D PE陣列單元配置存在的平行性及導(dǎo)線配置特性得到最佳的效益。
為了由第1圖中2D PE陣列單元配置存在的平行性及導(dǎo)線配置特性得到最佳的效益,提供半點值產(chǎn)生單元,而2D PE陣列單元系用以利用半點值產(chǎn)生單元執(zhí)行半點移動估計。
執(zhí)行半點移動估計的2D PE陣列單元配置請參考第12圖,其繪示依照本發(fā)明第四實施例利用第1圖的2D PE陣列單元執(zhí)行半點移動估計的結(jié)構(gòu)配置圖。當(dāng)于第一階段順利找到全點移動估計的最佳點時,在第二階段,可根據(jù)此最佳點,由半點移動估計的「半點」準(zhǔn)確度再找出全點移動估計的最佳點。根據(jù)本發(fā)明的第四實施例,當(dāng)對搜尋區(qū)域中對應(yīng)全點的像素數(shù)據(jù)進行掃描時,起始點為全點最佳點的目前區(qū)塊,設(shè)為C(0,0),是與全點最佳點以及平行的八個相鄰半點檢查點有關(guān)的九個參考區(qū)塊相比較。前一個畫面的搜尋區(qū)域R(i,j)(i=-1~16,j=-1~16)在寬度及長度上比目前區(qū)塊大二個像素,且目前區(qū)塊是定義為C(x,y)(x=0~15,y=0~15)。當(dāng)由點R(-1,1)到點R(16,16)依序一行一行地讀取搜尋區(qū)域的全點移動估計的像素數(shù)據(jù),或稱為全點值DR(i,j)時,平行產(chǎn)生的好幾組四半點值系一組一組地饋入至第12圖的2D PD陣列單元。當(dāng)各組四個半點值饋入至第12圖的2D PE陣列單元時,PE平行地計算其對應(yīng)的誤差計量。當(dāng)搜尋區(qū)域的掃描完成時,決定出九個誤差計量并獲得具半點準(zhǔn)確度的移動向量。
在第12圖中,輸入數(shù)據(jù)A饋入至PE0、PE2、PE6及PE8的第一輸入端。輸入數(shù)據(jù)B饋入至PE1、PE7的第一輸入端。輸入數(shù)據(jù)C是饋入至PE3、PE5的第一輸入端。而輸入數(shù)據(jù)D是饋入至PE4的第一輸入端。A、B、C及D分別代表對應(yīng)標(biāo)示字母A、B、C及D鉆石圖案的像素值。由第10圖可知,半像素R(-0.5,-0.5)、R(0,-0.5)、R(-0.5,0)及R(0,0)的像素數(shù)據(jù)A、B、C及D可由整數(shù)像素R(-1,-1)、R(0,-1)、R(-1,0)及R(0,0)的像素數(shù)據(jù)a、b、c及d推導(dǎo)而得。
半點值(Half-pel Value)的產(chǎn)生為了在讀取全點值時提供一組四個半點值,第12圖所示的第四實施例中2D PE陣列單元使用具有二個額外電路的半點值產(chǎn)生單元(Half-pel ValueGeneration Unit)。半點值產(chǎn)生單元包括準(zhǔn)備延遲單元(Preparation DelayUnit)以及半點產(chǎn)生單元(Half-pel Generation Circuit)。請參考第11A圖,準(zhǔn)備延遲單元2200于一特定時間(周期)后平行地提供四個全點值a、b、c、d。在第11A圖中,10個正反器FF 2201至FF 2219相互串聯(lián)并由與邏輯門2250輸出的控制信號加以控制。由搜尋區(qū)域產(chǎn)生的全點值送至輸入端Ref_In。經(jīng)過一段準(zhǔn)備時間后,即所謂預(yù)備(Prefetch)周期,19個正反器皆饋入數(shù)據(jù),四個全點值a、b、c、d可同步輸出。請參考第11B圖,半點產(chǎn)生電路2300用以通過底下的邏輯表達式將像素數(shù)據(jù)a、b、c、d對應(yīng)地轉(zhuǎn)換為像素數(shù)據(jù)A、B、C、D。
A=(a+b+c+d+2-rounding)>>2,B=(b+d+1-rounding)>>1,C=(c+d+1-rounding)>>1,D=d,
其中A,B,C,D為半點值,且a,b,c,d為全點值。
搜尋區(qū)域以及檢查點在半點移動估計中,搜尋區(qū)域的定義不同于全點移動估計。搜尋區(qū)域=x_range·y_range,x_range=16+STEP_SIZE×2=18,y_range=16+STEP_SIZE×2=18,且STEP_SIZE=1。特別是半點搜尋的檢查點是定義于全點搜尋中找到的最佳點R(0,0)附近。請參考第10圖,所有圓圈為全點而具有斜線的圓圈代表全點最佳點。另外,九個鉆石圖案代表九個檢查點。藉由找尋R(0,0)與其它八個相鄰點R(-0.5,-0.5)、R(0,-0.5)、R(0.5,-0.5)、R(-0.5,0)R(0.5,0)、R(-0.5,0.5)、R(0,0.5)及R(0.5,0.5)的最佳吻合度來找出準(zhǔn)確的半點移動向量。九個檢查點對應(yīng)于分別具有起始點為R(-0.5,-0.5)、R(0,-0.5)、R(0.5,-0.5)、R(-0.5,0)、R(0,0)、R(0.5,0)、R(-0.5,0.5)、R(0,0.5)及R(0.5,0.5)的九個區(qū)塊。在水平及垂直方向相鄰兩點的步幅為1,由16×16半點組成的每一個區(qū)塊可以附近的全點由內(nèi)插方式獲得。搜尋區(qū)域的全點值DR(i,j)是用以產(chǎn)生搜尋區(qū)域的半點值DR(i+0.5,j+0.5),其中i=-1~16,且j=-1~16。而全點移動估計的步幅為1。
半點移動估計操作半點移動估計的操作如下首先,如第12圖所示,2D PE陣列單元用以執(zhí)行半點移動估計,而VDU及HDU是設(shè)定具有特定的延遲時間。
接著,開始預(yù)備周期以產(chǎn)生第一組四個半點值。在預(yù)備周期中,對應(yīng)搜尋區(qū)域中像素DR(-1,-1)到DR(16,16)的全點值Ref_Data是以依序方式讀取并饋入至半點值產(chǎn)生單元。于此實施例中,搜尋區(qū)域的一全點值饋入至準(zhǔn)備延遲單元2200的輸入端Ref_In。當(dāng)來自搜尋區(qū)域的第20個全點值DR(0,0)輸入至延遲單元2200時,全點值a、b、c、d可同時輸出并送至半點產(chǎn)生電路2300。四個半點值A(chǔ)、B、C、D同時由半點產(chǎn)生電路2300產(chǎn)生并饋入至第12圖的2D PE陣列單元。
再者,第12圖的2D PE陣列單元系于各組半點值A(chǔ)、B、C、D一組一組地饋入至第12圖的2D PE陣列單元時累計誤差計量。當(dāng)?shù)谝唤M半點值饋入時,第12圖的2D PE陣列單元先執(zhí)行對應(yīng)檢查點R(-1-1)、R(0,-1)、R(-1,-0)及R(0,0)的誤差計量。當(dāng)一行一行地依序讀取搜尋區(qū)域的全點值DR(i,j)時,九個檢查點R(-0.5,-0.5)、R(0,-0.5)、R(0.5,-0.5)、R(-0.5,0)、R(0,0)、R(0.5,0)、R(-0.5,0.5)、R(0,0.5)及R(0.5,0.5)的誤差計量可以累計方式計算。致能信號輸入至第12圖的2D PE陣列單元以致能對應(yīng)的PE并處理饋入PE的數(shù)據(jù)。當(dāng)搜尋區(qū)域完成掃描時,可決定出九個誤差計量。因此,可決定具有最小誤差計量的檢查點,以獲得具半點準(zhǔn)確度的移動向量。
為了達到上述的目的,必須根據(jù)第12圖中2D PE陣列單元所執(zhí)行半點移動估計設(shè)定像素掃描順序、延遲單元并控制PE陣列。
半點移動估計的像素掃描順序(Pixel Scan Order)半點移動估計中搜尋區(qū)域的像素掃描順序類似于本發(fā)明第四實施例中第7圖所示的全點移動估計。搜尋區(qū)域的參考數(shù)據(jù)系由起始點R(-1,-1)至結(jié)束點R(-1+x_range-1,-1+y_range-1)=R(16,16)一行一行地依序讀取。其中x_range=18,且y_range=18。
同樣地,目前區(qū)塊的像素值由起始點C(0,0)至結(jié)束點C(15,15)一行一行地依序讀取。然而,上述的預(yù)備周期系位于目前區(qū)塊掃描開始之前,第一組四個半點值,即第10圖所示的A、B、C、D系于預(yù)備周期之后提供。在預(yù)備周期中,全點值DR(-1,-1)到DR(-1,0),全部19個全點值由左至右一行一行地依序饋入至準(zhǔn)備延遲單元2200。當(dāng)PE0(或PE1)被致能時,即當(dāng)送至PE0控制端PE0en的致能信號PE0_Enable為致能狀態(tài)時,目前區(qū)塊DC(0,0)到(15,15)的像素值以上述目前區(qū)域的像素掃描順序來讀取。在一個實施例,當(dāng)PE0(或PE1)為致能狀態(tài)時,在讀取參考數(shù)據(jù)之前立即先讀取一筆目前數(shù)據(jù)。
第12圖中,PE決定對應(yīng)第10圖半點移動估計檢查點的誤差計量,例如是本實施例的SAD。例如,PE0系用以使用SAD對目前區(qū)塊與對應(yīng)檢查點R(-0.5,-0.5)的參考區(qū)塊作比較,其中檢查點系第10圖中鉆石圖案代表的左上半點。此外,PE1~PE8用以使用SAD對目前區(qū)塊與分別對應(yīng)檢查點R(0,-0.5)、R(0.5,-0.5)、R(-0.5,0)、R(0,0)、R(0.5,0)、R(-0.5,0.5)、R(0,0.5)及R(0.5,0.5)的參考區(qū)塊作比較。
為了使第12圖中每一個PE皆可正確地決定對應(yīng)檢查點的誤差計量,即SAD。來自半點產(chǎn)生電路2300的半點值A(chǔ)、B、C、D以及目前數(shù)據(jù)需要正確地,例如是同步地送至PE陣列。例如,當(dāng)半點值DR(-0.5,-0.5)即第10圖的A與全點值DC(0,0),即第10圖的d同步送至第一輸入端A0以及第二輸入端B0時,PE0可準(zhǔn)確地計算絕對差值。同樣地,當(dāng)半點值DR(0,-0.5)、DR(-5,0)以及DR(0,0),即第10圖的B、C及D系與輸入PE1、PE3及PE4第二輸入端的全點值DC(0,0)同步分別饋入至PE1、PE3及PE4的第一輸入端時,PE1、PE3以及PE4可正確地決定個別的絕對差值。因此,每次提供的半點值A(chǔ)、B、C及D與全點值DC(i,j)同步饋入至PE0、PE1、PE3、PE4,使得PE0、PE1、PE3、PE4可對應(yīng)地決定誤差計量。
就PE0來說,PE0是于讀取一列目前區(qū)塊的最后一個像素并送至第二輸入端B0之后被非致能。此時,搜尋區(qū)域的掃描動作仍持續(xù)進行中。另外,目前區(qū)塊的掃描動作暫停直到掃描到下一列搜尋區(qū)域的第一個像素。當(dāng)掃描下一列搜尋區(qū)域的第一個像素時,PE0再次致能并繼續(xù)掃描目前區(qū)塊。因此,下一列目前區(qū)塊的半點值以及下一列搜尋區(qū)域的半點值可以正確地,例如是同步地送至PE0。以上述方式來掃描目前區(qū)塊可使得其它PE可以對應(yīng)地接收到正確的像素值以決定誤差計量。通過延遲單元陣列,其它的PE可以正確地輸出像素值。
用作半點移動估計的延遲單元利用對搜尋區(qū)域以及目前區(qū)塊的像素掃描順序,延遲單元必須具有個別的延遲時間,以便重復(fù)使用目前的數(shù)據(jù),即來自目前區(qū)塊的全點值。如上所述,某一時間提供的半點值A(chǔ)、B、C、D例如是與全點值DC(i,j)同步地饋入PE0、PE1、PE3及PE4中,使得PE0、PE1、PE3及PE4可以對應(yīng)地決定誤差計量。因此,在本實施例中,HDU 140、160以及150系設(shè)定為沒有延遲時間。而其它的PE設(shè)定則視下述目前數(shù)據(jù)的再使用狀況而定。
請參照第10圖以及第12圖,當(dāng)PE0被致能時,讀取全點值DC(0,0)并饋入至陣列單元。在此實施例中,于全點值DC(0,0)以及第一組四個半點值,即A、B、C及D產(chǎn)生并分別饋入至PE0、PE1、PE 3及PE4之后,立即讀取全點值DR(0,0)。由于第一組四個半點值并不包含于對應(yīng)PE檢查點的區(qū)塊中,因此PE2、PE5、PE6、PE7及PE8等其它PE為非致能狀態(tài)。然而,當(dāng)PE2、PE5、PE6、PE7及PE8被致能時,必須重復(fù)使用全點值DC(0,0)。如第10圖所示,當(dāng)全點值DC(1,0)被讀取時,在下一個周期中產(chǎn)生包括DR(0.5,-0.5)及DR(0.5,0)的下一組四個半點值。如第12圖所示,當(dāng)產(chǎn)生半點值DR(0.5,-0.5)及DR(0.5,0)時,PE2及PE5被致能且此兩個半點值系饋入至第一輸入端A2及A5,而前一個周期讀取的全點值DC(0,0)系由HDU 142及162輸出至第二輸入端B2及B5。因此,假設(shè)當(dāng)PE0為致能狀態(tài)于每一個周期讀取目前區(qū)塊的一全點值時,HDU 142及162各具有一個時間單元(周期)的延遲時間。
請參照第10圖,當(dāng)讀取全點值DC(0,1)時,在接下來周期中產(chǎn)生包括DR(-0.5,0.5)及DR(0.5,0)的一組四個半點值。如第12圖所示,當(dāng)產(chǎn)生半點值DR(-0.5,0.5)及DR(0.5,0)時,PE6及PE7被致能且此兩個半點值饋入至第一輸入端A6及A7,而前一個周期讀取的全點值DC(0,0)分別由VDU 170及HDU 180輸出至第二輸入端B6及B7。因此,VDU 170系設(shè)定為具有16個時間單元的延遲時間,且HDU 180設(shè)定為延遲時間為0。因此,當(dāng)讀取全點值DC(0,1)時,在下一個周期中產(chǎn)生包括DR(0.5,0.5)的下一組四個半點值。再如第12圖所示,當(dāng)產(chǎn)生半點值DR(0.5,0.5)時,PE8被致能且此半點值饋入至第一輸入端A8,而在上一個周期由HDU 180讀取的全點值DC(0,0)系輸出至第二輸入端B8。因此,EDU 180設(shè)定為具有一個時間單位的延遲時間。
用作半點移動估計的PE陣列控制與上述的討論相似,根據(jù)本發(fā)明的第四實施例,第12圖所示的九個PE具有四個PE致能周期,用以使PE陣列單元正常操作。特別是這些致能周期彼此互相重迭使得某些PE功能在掃描參考數(shù)據(jù)過程的某些時刻是相互平行。PE0、PE1、PE3及PE4的致能周期PE0_enable_cycle是相等。PE2及PE5的致能周期PE2_enable_cycle為相同。PE6及PE7也具有相同的致能周期PE6_enable_cycle。PE8具有個別的致能周期PE8_enable_cycle。這些PE致能周期可通過將搜尋區(qū)域劃分為如目前區(qū)塊一般具有相同大小的子區(qū)域子集來直觀地加以定義。請參照第13A圖及第13B圖,對應(yīng)起始點R(0,0)、R(1,0)、R(0,1)及R(1,1)的四個子區(qū)域1301~1304分別用以定義對應(yīng)PE0、PE2、PE6及PE8的四個致能周期。
通過致能周期的定義,可更方便控制PE陣列并降低操作的復(fù)雜度。例如,PE致能邏輯電路可用以決定當(dāng)讀取全點值DR(i,j)時那一個子區(qū)域包括像素R(i,j)。對每一個決定為具有像素R(i,j)的子區(qū)域而言,是致能其中對應(yīng)的一致能信號并送至對應(yīng)子區(qū)域(或致能周期)的控制PE陣列的PE控制端。
例如,當(dāng)讀取DR(1,0)時,PE致能邏輯電路判定PE0_enable_cycle及PE2_enable_cycle(兩個子區(qū)域)具有像素R(1,0)。對判定為具有像素R(1,0)的兩個子區(qū)域而言,PE0_Enable、PE1_Enable、PE3_Enable、PE4_Enable及PE2_Enable等致能信號被致能并送至對應(yīng)的控制端,即對應(yīng)致能周期PE0_enable_cycle及PE2_enable_cycle中PE的PE0en、PE1en、PE3eh、PE4en、PE2en及PE5en。
與執(zhí)行半點移動估計的第四實施例相同,表二列出如第12圖所示的九個PE的致能狀態(tài)。搜尋區(qū)域的起始點定義為(-1,-1)。表二顯示當(dāng)對應(yīng)搜尋區(qū)域中全點值R(X,Y)的像素值DR(X,Y)位于子區(qū)域中時致能信號PEZ_Enable(Z=0~8)被致能的狀態(tài)。另外,在第二實施例中,致能信號是分別饋入至PE0~PE8的控制端PEZen(Z=0~8)。
表二

注搜尋區(qū)域的起始點定義為(-1,-1)。
執(zhí)行全點及半點移動估計的移動估計系統(tǒng)結(jié)構(gòu)請參照第14圖,其繪示依照本發(fā)明第五實施例的移動估計系統(tǒng)結(jié)構(gòu)圖。移動估計系統(tǒng)2000包括移動估計單元2100、存儲器讀取單元1500、控制單元1600以及地址產(chǎn)生單元1700。第14圖所繪示的系統(tǒng)是可于第一階段中利用步搜尋算法,例如是FSS算法來執(zhí)行全點移動估計,并于第二階段中可選擇性地根據(jù)全點移動估計找出的最佳點執(zhí)行半點移動估計以獲得具半點準(zhǔn)確度的移動向量。移動估計系統(tǒng)2000還可以如同第九圖顯示的系統(tǒng)1000,用以執(zhí)行任意的N步搜尋算法,例如三步搜尋算法,以進行全點移動估計。然而,值得注意的是,移動估計系統(tǒng)2000系可選擇性地執(zhí)行半點移動估計,以使得由全點移動估計獲得的移動向量具有半點準(zhǔn)確度。為了簡潔起見,下列敘述中將不再重復(fù)關(guān)于第一階段中全點移動估計的操作狀況。關(guān)于移動估計系統(tǒng)2000所執(zhí)行的全點移動估計,可參考上述全點移動估計的描述及圖式。
移動估計單元2100包括2D PE陣列單元100、多工器1150、寄存器單元1160以及最小SAD判斷單元1170。此外,移動估計單元2100包括半點值產(chǎn)生單元,用以輸出平行于2D PE陣列單元100的一組半點值。半點值產(chǎn)生單元包括準(zhǔn)備延遲單元(Preparation Delay Unit)2200以及半點產(chǎn)生電路(Half-pel Generation Circuit)2300,如第11A圖以及第11B圖所示。
存儲器讀取單元1500為移動估計系統(tǒng)2000的存儲器讀取接口,且此存儲器讀取接口可利用連接移動估計系統(tǒng)2000的存儲器總線10所使用的至少一種通訊協(xié)議來執(zhí)行。
控制單元1600用以對步搜尋進行計數(shù)??刂茊卧?600可以是一種有限狀態(tài)機器,例如是包括X計數(shù)器與Y計數(shù)器的兩個計數(shù)電路。X計數(shù)器計算一列搜尋區(qū)域中所讀取的像素值數(shù)目。Y計數(shù)器計算搜尋區(qū)域中讀取像素值的像素欄數(shù)。當(dāng)讀取對應(yīng)搜尋區(qū)域像素的一筆Ref_Data數(shù)據(jù)時,X計數(shù)器的計數(shù)值累加1。而當(dāng)X計數(shù)器計數(shù)值達到默認(rèn)值X_max_count時,Y計數(shù)器計數(shù)值累加1。然后,X計數(shù)器計數(shù)值重置為0。當(dāng)Y計數(shù)器的計數(shù)值達到y(tǒng)_range時,結(jié)束此步搜尋算法。由于移動估計系統(tǒng)2000分別于不同二階段來執(zhí)行全點移動估計以及半點移動估計,X及Y計數(shù)器于全點移動估計及半點移動估計需達到不同的默認(rèn)值。
在執(zhí)行全點移動估計的第一階段中,X_max_count為搜尋區(qū)域的寬度(像素數(shù)目),即X_max_count=x_range。在全點移動估計的第一步至第(n-1)步中,X_max_count=x_range=macroblock_size+STEP_SIZE×2。例如,在FSS算法中,X_max_count=16+2×2=20,其中除了最后一步之外,其它步的步幅STEP_SIZE=2。而全點移動估計或半點估計的最后一步中,X_max_count=x_range,而STEP_SIZE值可以是較小值。在半點估計中,X_max_count=16+1×2=18,其中STEP_SIZE=1。存儲器讀取單元1500產(chǎn)生存儲器讀取信號Ref_ready并送至控制單元1600。存儲器讀取信號是用以通知X及Y計數(shù)器更新其計數(shù)值。例如,當(dāng)對應(yīng)一筆搜尋區(qū)域的一筆Ref_Data數(shù)據(jù)由例如是參考存儲器讀取時,Ref_ready設(shè)定為致能狀態(tài),例如是高電平。PE致能周期根據(jù)X以及Y計數(shù)器提供的目前計數(shù)值X及Y以及表一所示全點移動估計的致能狀態(tài)與表二所示半點移動估計的致能狀態(tài)來決定。
地址產(chǎn)生單元1700包括PE致能邏輯電路1750以及移動向量(MV)產(chǎn)生邏輯電路1770。PE致能邏輯電路1750由計數(shù)器單元1600的X及Y計數(shù)器接收目前計數(shù)值X及Y,再根據(jù)目前計數(shù)值X及Y以及表一的全點移動估計或表二的半點移動估計產(chǎn)生致能信號,然后將致能信號輸出至移動估計單元2100的2D PE陣列單元100。如上所述,掃描搜尋區(qū)域之后,可獲得九個誤差計量,例如是第二實施例中對應(yīng)九個檢查點的九個SAD。而最小SAD判斷單元1170可判定最小誤差計量并加以輸出。地址產(chǎn)生單元1700接收由最小SAD判斷單元1170輸出的最小誤差計量。在第一階段中,MV產(chǎn)生邏輯電路1770產(chǎn)生搜尋算法最后一步的移動向量。當(dāng)?shù)诙A段欲執(zhí)行半點移動估計時,于第一階段獲得的移動向量即可用作決定是否具有半點準(zhǔn)確度的根據(jù)。此外,地址產(chǎn)生單元1700產(chǎn)生存儲器地址并提供給存儲器讀取單元1500,因而可由存儲器讀取單元1500讀取目前數(shù)據(jù)并饋入至移動估計單元1100。
半點移動估計過程的移動估計系統(tǒng)操作移動估計系統(tǒng)2000用以執(zhí)行半點移動估計。假設(shè)移動估計系統(tǒng)2000以時鐘信號CLK進行操作,并于第一階段的全點移動估計中找到一最佳點。首先,2D PE陣列單元100是配置如第12圖所示,用以進行半點移動估計。接著,開始預(yù)備周期以自搜尋區(qū)域起始點R(-1,-1)到R(-1,0)讀取搜尋區(qū)域的全點值Ref_Data,并饋入至移動估計單元2100的準(zhǔn)備延遲單元2200,使得半點產(chǎn)生電路2330得以輸出一組四個半點值至2D PE陣列單元100。接著,致能PE0_enable并讀取DR(0,0)。如上所述,控制單元1600的X及Y計數(shù)器開始計數(shù),且PE致能邏輯電路1750根據(jù)表二產(chǎn)生致能信號PEZ_enable(Z=0~8)并輸出至PE陣列單元100。當(dāng)以搜尋區(qū)域的像素掃描順序讀取搜尋區(qū)域的全點值并饋入至移動估計單元2100時,目前區(qū)塊的Curr_Data數(shù)據(jù)也以目前區(qū)塊的像素掃描順序,例如是上述的「半點移動估計像素掃描順序」來讀取并饋入至移動估計單元2100。2D PE陣列單元100的每一個PE判斷是否要根據(jù)致能信號PEZ_enable處理目前周期中饋入PE的數(shù)據(jù),并于PEZ_enable信號致能PE時準(zhǔn)確地計算出誤差計量。當(dāng)搜尋區(qū)域掃描完成且對應(yīng)的像素數(shù)據(jù)完全饋入2D PE陣列單元時,搜尋區(qū)域九個參考區(qū)塊(對應(yīng)特定檢查點)與目前區(qū)塊的比較以平行方式進行,以產(chǎn)生對應(yīng)的誤差計量,亦即第10圖實施例中對應(yīng)半點檢查點的SAD。也就是說,在掃描搜尋區(qū)域中,可由2D PE陣列單元100進行半點移動估計。因此,可根據(jù)最小SAD判斷單元1170所獲得的誤差計量決定具有最小誤差計量的一個全點檢查點,并據(jù)以決定出具半點準(zhǔn)確度的移動向量。所以,通過2D PE陣列單元100,移動估計系統(tǒng)1000可執(zhí)行移動估計的任何N步搜尋算法。
特別是在2D PE陣列單元100的配置上,2D PE陣列單元100的HDU以及VDU的配置如上述的「半點移動估計延遲單元」。
在全點移動估計中,一行一行依序地讀取搜尋區(qū)域的Ref_Data數(shù)據(jù)。在此實施例中,當(dāng)信號PE0_Enalbe為致能狀態(tài)時,在讀取對應(yīng)搜尋區(qū)域像素的一筆參考數(shù)據(jù)之前會先讀取對應(yīng)目前區(qū)塊的一筆目前數(shù)據(jù)。
在一個實施例中,可于2D PE陣列單元100的HDU以及VDU中使用柵極時鐘技術(shù)(gated clock technique)來控制移位寄存器以達到有效降低功率耗損的目的。在半點移動估計中,由存儲器讀取單元1500產(chǎn)生的存儲器讀取信號Ref_ready用以控制2D PE陣列單元100的延遲單元陣列。例如,在半點移動估計中,HDU致能信號HEN_CS設(shè)定為吻合PE1_Enable時序的一邏輯狀態(tài)HEN_CS=Ref_ready&(X_count>0)&(Y_count>0)。VDU致能信號設(shè)定為邏輯狀態(tài)VEN_CS=HEN_CS&(X_count<17)。準(zhǔn)備延遲單元2200的致能信號SEN_CS設(shè)定為SEN_CS=Ref_ready。當(dāng)由參考存儲器讀取搜尋區(qū)域像素的Ref_Data數(shù)據(jù)時,Ref_ready設(shè)定為高電平狀態(tài)。如第3圖所示,HDU致能信號饋入HDU的HEN端,而VDU致能信號則如第4圖所示饋入至VDU的VEN端。準(zhǔn)備延遲單元2200的致能信號SEN_CS饋入至其SEN端,如第11A圖所示。而所有延遲單元的CLK端饋入時鐘信號CLK。
半點移動估計的效能使用如上述的全點移動估計「效能」的假設(shè)。如上述的實施例,半點移動估計需要讀取(16+1×2)×(16+1×2)=324塊參考數(shù)據(jù)以及讀取16×16=256塊目前數(shù)據(jù)。因此,在此假設(shè)下,目前區(qū)塊的半點移動估計需要324+256/4=388周期才能完成。
優(yōu)點在本發(fā)明的第四及第五實施例中,揭露了執(zhí)行半點移動估計的2D PE陣列單元配置以及執(zhí)行全點及半點移動估計的移動估計系統(tǒng)結(jié)構(gòu)。根據(jù)此些實施例,具有準(zhǔn)備延遲單元及半點產(chǎn)生電路的半點值產(chǎn)生單元搭配2D PE陣列單元的配置來執(zhí)行半點移動估計。2D PE陣列單元如第1圖所示,可選擇用以執(zhí)行全點以及半點移動估計。
根據(jù)本發(fā)明,可由第1圖所示2D PE陣列單元配置存在的平行性及導(dǎo)線配置特性得到最佳的效益。在掃描搜尋區(qū)域過程中,不論是半點或全點搜尋,2D PE陣列單元可以平行方式比較目前區(qū)塊與搜尋區(qū)域的一組參考區(qū)塊。當(dāng)完成搜尋區(qū)域的掃描時,完成半點搜尋的步搜尋動作。
搜尋區(qū)域以及區(qū)塊的像素掃描順序系具有規(guī)則性及簡化性,使得控制邏輯及致能信號可以在不使用復(fù)雜硬件的情況下來操作。2D PE陣列的電路設(shè)計系可擴充性并具有彈性。除了半點移動估計之外,2D PE陣列單元也可以適用于任何其它的子像素移動估計,例如是四分之一點移動估計或八分之一點移動估計等。
綜上所述,雖然本發(fā)明已以一較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動與潤飾,因此本發(fā)明的保護范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
1.一種移動估計裝置,用于圖像處理,包含多個處理元件,每一處理元件具有第一輸入端、第二輸入端、控制端及誤差計量輸出端,該些處理元件所對應(yīng)的該些第一輸入端接收參考數(shù)據(jù);多個延遲單元,針對像素數(shù)據(jù),產(chǎn)生具有特定延遲時間的多個數(shù)據(jù)流送至該些處理元件的該些第二輸入端;以及控制電路,提供多個控制信號至該些處理元件的該些控制端,當(dāng)該些處理元件收到該些控制信號時,計算該第一輸入端與該第二輸入端的誤差計量。
2.根據(jù)權(quán)利要求1所述的移動估計裝置,其中該像素數(shù)據(jù)是針對目前畫面以特定掃描方式依序選出。
3.根據(jù)權(quán)利要求1所述的移動估計裝置,其中該參考數(shù)據(jù)是針對搜尋區(qū)域以特定掃描方式依序選出。
4.根據(jù)權(quán)利要求1所述的移動估計裝置,還包含半點值產(chǎn)生單元,使該參考數(shù)據(jù)為半點數(shù)據(jù)值。
5.根據(jù)權(quán)利要求1所述的移動估計裝置,其中該些處理元件是排列成二維陣列,而該些延遲單元則包含多個水平延遲單元與多個垂直延遲單元,以在適當(dāng)時間輸入所需數(shù)據(jù)至該些處理元件的該些第二輸入端。
6.一種移動估計裝置,包括處理元件陣列單元,包括延遲單元陣列,包括多個水平延遲單元,包括三列水平延遲單元,各列水平延遲單元具有第一水平延遲單元以及第二水平延遲單元,各該些水平延遲單元包括輸入端以及輸出端,其中在各列水平延遲單元中,該第一水平延遲單元的該輸出端是連接該第二水平延遲單元的該輸入端;以及多個垂直延遲單元,包括第一垂直延遲單元以及第二垂直延遲單元,各該些垂直延遲單元具有輸入端以及輸出端,其中該第一垂直延遲單元的該輸入端是連接于該第一列中該第一水平垂直延遲單元的該輸入端,該第一垂直延遲單元的該輸出端是連接該第二列中該第一水平延遲單元的該輸入端以及該第二垂直延遲單元的該輸入端,該第二垂直延遲單元的該輸出端是連接該第三列中該第一水平延遲單元的該輸入端;以及處理元件陣列,包括三列處理元件,各列處理元件包括第一處理元件、第二處理元件以及第三處理元件,各該些處理元件包括第一輸入端、第二輸出端、誤差計量輸出端以及控制端,其中在每一列處理元件中,該第一處理元件的該第二輸入端是連接該第一水平延遲單元的該輸入端,該第二處理元件的該第二輸入端是連接該第一水平延遲單元的該輸出端,該第三處理元件的該第二輸入端是連接該第二水平延遲單元的該輸出端,其中各該些處理元件是于該控制端為一致能狀態(tài)時累計該第一輸入端的參考數(shù)據(jù)與該第二輸入端的像素數(shù)據(jù)之間的誤差計量。
7.根據(jù)權(quán)利要求6所述的移動估計裝置,其中定義有一區(qū)塊包括P×Q個像素并具有起始點C(0,0),一搜尋區(qū)域包括L×J個像素,并具有起始點R(0,0),L=2×STEP_SIZE+P,J=2×STEP_SIZE+Q,且該移動估計裝置還包括存儲器讀取單元,用以自該起始點R(0,0)至R(L-1,J-1)一行一行依序地讀取與該搜尋區(qū)域中像素R(i,j)對應(yīng)的參考數(shù)據(jù)DR(i,j),并自該起始點C(0,0)至C(P-1,Q-1)一行一行依序地輸出與該區(qū)塊中像素C(p,q)對應(yīng)的像素數(shù)據(jù)DC(p,q);其中由該存儲器讀取單元讀取的該些像素數(shù)據(jù)DC(p,q)是送至該第一列中該水平延遲單元的該輸入端,且由該存儲器讀取單元讀取的該參考數(shù)據(jù)DR(i,j)是送至該處理元件陣列中每一處理元件的該第一輸入端。
8.根據(jù)權(quán)利要求7所述的移動估計裝置,其中該搜尋區(qū)域是劃分為具有P×Q個像素的多個子區(qū)域分別對應(yīng)至檢查點(0,0)、(STEP_SIZE,0)、(2×STEP_SIZE,0)、(0,STEP_SIZE)、(STEP_SIZE,STEP_SIZE)、(2×STEP_SIZE,STEP_SIZE)、(0,2×STEP_SIZE)、(STEP_SIZE,2×STEP_SIZE)以及(2×STEP_SIZE,2×STEP_SIZE),各該些檢查點是定義為各該些子區(qū)域相對應(yīng)的一起始點;各該些水平延遲單元具有STEP_SIZE個時間單位的延遲時間;各該些垂直延遲單元具有STEP_SIZE×P個時間單位的延遲時間;以及該處理元件陣列是用以累計對應(yīng)該些檢查點的該些誤差計量;其中該移動估計裝置還包括處理元件致能電路,用以產(chǎn)生多個致能信號,以控制該處理元件陣列計算對應(yīng)的該些誤差計量,其中當(dāng)該存儲器讀取單元讀取該些參考數(shù)據(jù)DR(i,j)時,該處理元件致能電路決定包括像素R(i,j)的子區(qū)域;對于每一個包括該像素R(i,j)的子區(qū)域,該些致能信號其中之一是被致能并送至對應(yīng)該檢查點的該處理元件的該控制端;其中當(dāng)該存儲器讀取單元完成讀取該搜尋區(qū)域的該些參考數(shù)據(jù)以及該區(qū)塊的該些像素數(shù)據(jù)時,便獲得對應(yīng)該些檢查點(0,0)、(STEP_SIZE,0)、(2×STEP_SIZE,0)、(0,STEP_SIZE)、(STEP_SIZE,STEP_SIZE)、(2×STEP_SIZE,STEP_SIZE)、(0,2×STEP_SIZE)、(STEP_SIZE,2×STEP_SIZE)以及(2×STEP_SIZE,2×STEP_SIZE)的該些誤差計量。
9.一種執(zhí)行全點移動估計的方法,包括(a)定義一區(qū)塊,包括P×Q個像素并具有起始點C(0,0),并且定義搜尋區(qū)域,包括L×J個像素并具有起始點R(0,0),其中L=2×STEP_S IZE+P,J=2×STEP_SIZE+Q;(b)自該起始點R(0,0)至該起始點R(L-1,J-1)一行一行依序地輸出對應(yīng)該搜尋區(qū)域的像素R(i,j)的參考數(shù)據(jù)DR(i,j),并自該起始點C(0,0)至該起始點C(P-1,Q-1)一行一行依序地輸出對應(yīng)該區(qū)塊的像素C(p,q)的像素數(shù)據(jù)DC(p,q);(c)當(dāng)該步驟(b)在執(zhí)行時,決定與該些檢查點(0,0)、(STEP_SIZE,0)、(2×STEP_SIZE,0)、(0,STEP_SIZE)、(STEP_SIZE,STEP_SIZE)、(2×STEP_SIZE,STEP_SIZE)、(0,2×STEP_SIZE)、(STEP_SIZE,2×STEP_SIZE)以及(2×STEP_SIZE,2×STEP_SIZE)相對應(yīng)的多個誤差計量,該步驟(c)包括若i<P且j<Q,根據(jù)該些像素數(shù)據(jù)DC(p,q)以及該些參考數(shù)據(jù)DR(i,j)累計對應(yīng)該檢查點(0,0)的誤差計量;若i≥STEP_SIZE,i≤(L+STEP_SIZE),且j<Q,根據(jù)經(jīng)過對應(yīng)STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x1,y1)以及該些參考數(shù)據(jù)DR(i,j),累計對應(yīng)該檢查點(STEP_SIZE,0)的誤差計量,其中x1=i-STEP_SIZE且y1=j(luò);若i≥2×STEP_SIZE,i≤(L+2×STEP_SIZE),且j<Q,根據(jù)經(jīng)過對應(yīng)2×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x2,y2)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(2×STEP_SIZE,0)的誤差計量,其中x2=I-2×STEP_SIZE,且y2=j(luò);若i<P,j≥STEP_SIZE,且j<(L+STEP_SIZE),根據(jù)經(jīng)過對應(yīng)P×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x3,y3)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(0,STEP_SIZE)的一誤差計量,其中x3=i,且y3=j(luò)-P×STEP_SIZE;若i≥STEP_SIZE,i<(L+STEP_SIZE),j≥STEP_SIZE,且j<(L+STEP_SIZE),根據(jù)經(jīng)過(1+P)×STEP_SIZE的延遲時間延遲的該些像素數(shù)據(jù)DC(x4,y4)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(STEP_SIZE,STEP_SIZE)的誤差計量,其中x4=i-STEP_SIZE,且y4=j(luò)-P×STEP_SIZE;若i≥2×STEP_SIZE,i<(L+2×STEP_SIZE),j≥STEP_SIZE,且j<(L+STEP_SIZE),根據(jù)經(jīng)過對應(yīng)(2+P)×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x5,y5)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(2×STEP_SIZE,STEP_SIZE)的誤差計量,其中x5=i-2×STEP_SIZE,且y5=j(luò)-P×STEP_SIZE;若i<P,j≥2×STEP_SIZE,且j<(L+2×STEP_SIZE),根據(jù)經(jīng)過對應(yīng)2×P×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x6,y6)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(0,2×STEP_SIZE)的誤差計量,其中x6=i,且y6=j(luò)-2×P×STEP_SIZE;若i≥STEP_SIZE,i<(L+STEP_SIZE),j≥2×STEP_SIZE,且j<(L+2×STEP_SIZE),根據(jù)經(jīng)過對應(yīng)(1+2×P)×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x7,y7)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(STEP_SIZE,2×STEP_SIZE)的誤差計量,其中x7=i-STEP_SIZE,且y7=j(luò)-2×P×STEP_SIZE;以及若i≥2×STEP_SIZE,i<(L+2×STEP_SIZE),j≥2×STEP_SIZE,且j<(L+2×STEP_SIZE),根據(jù)經(jīng)過對應(yīng)(2+2×P)×STEP_SIZE的延遲時間的該些像素數(shù)據(jù)DC(x8,y8)以及該些參考數(shù)據(jù)R(i,j),累計對應(yīng)該檢查點(2×STEP_SIZE,2×STEP_SIZE)的誤差計量,其中x8=i-2×STEP_SIZE,且y8=j(luò)-2×P×STEP_SIZE;其中當(dāng)完成該步驟(b)時,由該步驟(c)所決定,與該些檢查點(0,0)、(STEP_SIZE,0)、(2×STEP_SIZE,0)、(0,STEP_SIZE)、(STEP_SIZE,STEP_SIZE)、(2×STEP_SIZE,STEP_SIZE)、(0,2×STEP_SIZE)、(STEP_SIZE,2×STEP_SIZE)以及(2×STEP_SIZE,2×STEP_SIZE)對應(yīng)的該些誤差計量亦得以完成。
10.根據(jù)權(quán)利要求9所述的全點移動估計方法,其中可根據(jù)對應(yīng)該些檢查點的該些誤差計量決定四步搜尋算法中一搜尋步的最小區(qū)塊變形計量點,且四步搜尋算法的第一步、第二步、第三步以及第四步的步幅STEP_SIZE分別為2、2、2及1。
11.根據(jù)權(quán)利要求9所述的全點移動估計方法,其中可根據(jù)對應(yīng)該些檢查點的該些誤差計量決定3-3-3-1算法中一搜尋步的最小區(qū)塊變形計量點,且3-3-3-1搜尋算法的第一步、第二步、第三步以及第四步的步幅STEP_SIZE分別為3、3、3及1。
12.根據(jù)權(quán)利要求9所述的全點移動估計方法,其中可根據(jù)對應(yīng)該些檢查點的該些誤差計量決定三步搜尋算法中一搜尋步的最小區(qū)塊變形計量點,且三步搜尋算法的第一步、第二步以及第三步的步幅STEP_SIZE分別為4、2及1。
13.一種全點移動估計的方法,包括(a)定義一區(qū)塊,包括M×N個像素并具有起始點MB(0,0),并且定義搜尋區(qū)域,包括L×J個像素并具有起始點SA(0,0),其中L>P,且J>Q;(b)定義該搜尋區(qū)域包括對應(yīng)多個檢查點的多個具有M×N個像素的子區(qū)域,各該些檢查點是定義為各該些子區(qū)域?qū)?yīng)的起始點;(c)自該起始點SA(0,0)至該起始點SA(L-1,1-1)一行一行依序地輸出對應(yīng)該搜尋區(qū)域像素的像素數(shù)據(jù),并自該起始點MB(0,0)至該起始點MB(M-1,N-1)一行一行依序地輸出對應(yīng)該區(qū)塊像素的像素數(shù)據(jù);(d)當(dāng)該步驟(c)在執(zhí)行時,對于由該步驟(c)所輸出并對應(yīng)該區(qū)塊中一像素的像素數(shù)據(jù),送至延遲單元陣列,用以輸出分別對應(yīng)該些檢查點的多個串輸出數(shù)據(jù)流,其中對于該些檢查點其中之一,C(x,y),該延遲單元陣列是輸出對應(yīng)的輸出數(shù)據(jù)流,且該輸出數(shù)據(jù)流是延遲(x+y×M)個時間單位的像素數(shù)據(jù);(e)當(dāng)該步驟(c)在執(zhí)行時,根據(jù)該步驟(c)所讀取且與該搜尋區(qū)域的像素SA(p,q)相對應(yīng)的該像素數(shù)據(jù),執(zhí)行下列步驟判斷所有子區(qū)域中包括SA(p,q)的子區(qū)域;以及對于各個包括SA(p,q)的子區(qū)域,累計該子區(qū)域?qū)?yīng)的該檢查點C(f,g)所對應(yīng)的誤差計量,該誤差計量系根據(jù)來自與該檢查點C(f,g)相關(guān)的輸出數(shù)據(jù)流的像素數(shù)據(jù)以及對應(yīng)該搜尋區(qū)域的像素SA(p,q)的該些像素數(shù)據(jù)而得,其中來自與該檢查點C(f,g)相關(guān)的輸出數(shù)據(jù)流是對應(yīng)至該區(qū)塊的像素MB(r,s),p=r+f且q=s+g;其中當(dāng)該步驟(c)完成時,該步驟(e)中與所有的該些檢查點相對應(yīng)的該些誤差計量亦得以完成。
14.一種半點移動估計裝置,其中定義一區(qū)塊,包括P×Q個像素,并具有起始點C(0,0),并且定義搜尋區(qū)域,包括L×J個像素并具有起始點R(0,0),其中L=2+P,J=2+Q,該裝置包括半點值產(chǎn)生單元,響應(yīng)由該搜尋區(qū)域依續(xù)讀取的多個全點值,用以一組一組地產(chǎn)生復(fù)陣列半點值,各組分別包含四個半點值A(chǔ)、B、C及D;處理元件陣列單元,包括延遲單元陣列,包括多個水平延遲單元,包括三列水平延遲單元,每一列水平延遲單元具有第一水平延遲單元以及第二水平延遲單元,各該些水平延遲單元包括輸入端以及輸出端,其中在每一列水平延遲單元中,該第一水平延遲單元的該輸出端是連接該第二水平延遲單元的該輸入端;以及多個垂直延遲單元,包括第一垂直延遲單元以及第二垂直延遲單元,各該些垂直延遲單元具有輸入端以及輸出端,其中該第一垂直延遲單元的該輸入端是連接于該第一列中該第一水平延遲單元的該輸入端,該第一垂直延遲單元的該輸出端是連接該第二列中該第一水平延遲單元的該輸入端以及該第二垂直延遲單元的該輸入端,該第二垂直延遲單元的該輸出端是連接該第三列中該第一水平延遲單元的該輸入端;以及處理元件陣列,包括三列處理元件,各列處理元件包括第一處理元件、第二處理元件以及第三處理元件,各該些處理元件包括第一輸入端、第二輸出端、誤差計量輸出端以及控制端,其中在每一列處理元件中,該第一處理元件的該第二輸入端是連接該第一水平延遲單元的該輸入端,該第二處理元件的該第二輸入端是連接該第一水平延遲單元的該輸出端,該第三處理元件的該第二輸入端是連接該第二水平延遲單元的該輸出端,其中各該些處理元件是于該控制端為致能狀態(tài)時累計該第一輸入端的參考數(shù)據(jù)與該第二輸入端的像素數(shù)據(jù)之間的誤差計量;其中每一組四個半點值中,該半點值A(chǔ)是饋入至該處理元件陣列中該第一列及該第三列的該第一處理元件及該第三處理元件的該些第一輸入端;該半點值B是饋入至該處理元件陣列中該第一列及該第三列的該第二處理元件的該些第一輸入端;該半點值C是饋入至該處理元件陣列中該第二列的該第一處理元件及該第三處理元件的該些第一輸入端;且該半點值D是饋入至該處理元件陣列中該第二列的該第二處理元件的該第一輸入端。
15.根據(jù)權(quán)利要求14所述的半點移動估計裝置,其中該半點值產(chǎn)生單元包括準(zhǔn)備延遲單元,用以于依序接收該些全點值時平行地提供該些組四個全點值;以及半點產(chǎn)生電路,用以一組一組地將該些組四個全點值轉(zhuǎn)換成該些組四個半點值。
16.根據(jù)權(quán)利要求14所述的半點移動估計裝置,其中該裝置還包括存儲器讀取單元,用以自該起始點R(0,0)至該起始點R(L-1,J-1)一行一行依序地讀取對應(yīng)該搜尋區(qū)域中像素R(i,j)的參考數(shù)據(jù)DR(i,j),并自該起始點C(0,0)至該起始點C(P-1,Q-1)一行一行依序地輸出對應(yīng)該區(qū)塊中像素C(p,q)的像素數(shù)據(jù)DC(p,q);其中該存儲器讀取單元所讀取的該些像素數(shù)據(jù)DC(p,q)是送至該第一列中該水平延遲單元的該輸入端,且該存儲器讀取單元讀取的該些參考數(shù)據(jù)DR(i,j)是送至該半點值產(chǎn)生單元。
全文摘要
本發(fā)明揭露一種移動估計裝置及其方法。移動估計裝置包括處理元件(PE)陣列單元,且PE陣列單元包括延遲單元以及PE陣列。于N步搜尋算法的一步中,延遲單元陣列輸出多個通過目前數(shù)據(jù)所產(chǎn)生且對應(yīng)到多個檢查點的數(shù)據(jù)流,而有規(guī)則的參考數(shù)據(jù)流是饋入至PE陣列。在以規(guī)律且順序地掃描像素的方式讀取搜尋區(qū)域像素數(shù)據(jù)的同時即可進行N步搜尋算法的一搜尋步。當(dāng)完全讀取搜尋區(qū)域時,即完成此搜尋步。因此,PE陣列單元可完成N步搜尋算法。此外,PE陣列單元可用于根據(jù)全點搜尋所找到的最佳點執(zhí)行半點移動估計。
文檔編號H04N7/26GK1774071SQ200510120438
公開日2006年5月17日 申請日期2005年11月10日 優(yōu)先權(quán)日2004年11月10日
發(fā)明者張譽鐘 申請人:聯(lián)發(fā)科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1