專利名稱:視頻編碼器中一種快速的搜索塊讀取模塊的制作方法
技術領域:
本發明屬于信號處理中的視頻編碼領域,涉及視頻編碼器中一種快速的搜索塊讀取模塊背景技術視頻是指由一系列時間上相關的圖像組成的系列,其中的每幅圖像稱為一個“幀”(本申請中對幀模式和場模式的圖像都統一適用,所以不再區分幀和場,統一稱為幀),每個幀又可以劃分為若干個“塊”,通常塊為正方形或矩形,視頻編碼以塊為基本單位進行編碼,視頻編碼中常用的塊有16×16,8×16,16×8,8×8,4×4等,都是以象素為單位;“象素”則是指構成圖像的點,是構成圖像的最小單元。
對視頻進行編碼的目的是對視頻的數據進行壓縮,以方便存儲和傳輸,而視頻編碼器就是具有該功能的器件。一個好的視頻編碼器,可以在保持視頻盡量好的視覺質量的同時,把數據量壓縮到盡可能低。
視頻編碼器由很多功能模塊組成,其中“運動估計(motion estimation,ME)模塊”是視頻編碼器中的一個重要模塊,承擔了整個編碼過程中90%左右的運算量。運動估計模塊實現的功能是,針對當前需要編碼的塊,從用于參考的一幀圖像中,找出一個和當前要編碼的圖像塊大小相同的、匹配程度最好的塊,并利用這個塊對當前編碼的塊進行預測,得到預測殘差。通常,如果從整個一幀參考圖像中搜尋用于預測的塊,運算量會相當巨大,所以定義一個“搜索范圍”,比一幀圖像的區域小些,比塊的區域大些;所用的匹配程度最好的塊就從這個區域中尋找。
如圖1所示,該圖示意了運動估計模塊所實現的功能,該圖包括了一個m×n的待編碼圖像塊(在圖像處理中,說一個圖像是x×y,是指“寬(水平方向)×高(垂直方向)”,單位為象素,和有時所用的“行數(垂直方向)×列數(水平方向)有所區別),需要對該塊進行編碼;一個W×H的參考幀,這個參考幀中,規定了一個a×b的區域,該區域是搜索范圍;如上所提及的一個a×b的搜索范圍,在這個搜索范圍內,可以選出m×n的塊作為搜索塊;如上所提及的m×n的搜索塊,用于和待編碼塊做匹配程度的檢測;一個m×n的殘差圖像塊,由待編碼圖像塊和搜索圖像塊的對應象素分別作差得到。該圖中表示運動估計模塊的功能為選擇搜索范圍內所有可能的搜索塊,和待編碼圖像塊作差得到一個m×n的殘差圖像塊,根據殘差圖像塊得到搜索塊和待編碼圖像塊匹配程度;由于在a×b的搜索范圍內,有很多m×n的搜索塊,因此最后需要從這些搜索塊中,選擇一個匹配程度最好的搜索塊,這個從所有搜索塊中選取的匹配程度最好的塊,稱為“最佳參考塊”;最后運動估計模塊利用最佳參考塊對待編碼圖像塊進行預測,得到最終真正要使用的殘差圖像塊。
運動估計模塊中,實現從所有搜索塊中選出最佳參考塊這個功能的子模塊,是運動搜索(motion search)模塊。為了從所有搜索塊選出最佳參考塊,一個運動搜索模塊,需要遍歷所有可能的搜索塊,對每個搜索塊作匹配程度檢測。
一種傳統的運動搜索模塊遍歷所有搜索塊的過程如圖2所示,圖中包括一個a×b的搜索范圍;從搜索范圍內選擇的m×n的搜索塊;圖中所示的流程為先從搜索范圍的左上角開始,選擇一個搜索塊,對這個搜索塊作匹配程度檢測,記錄匹配程度;完成后,向下移動一個象素,選擇一個新的搜索塊,對這個搜索塊作匹配程度檢測,記錄匹配程度,并和之前已檢測的搜索塊的匹配程度作比較;完成后,再向下移動一個象素,取新的塊,繼續相同過程,一直到搜索范圍的底端,這樣就完成了搜索范圍中,一個列的搜索塊的匹配程度檢測和比較。之后回到搜索范圍頂端,向右移動一個象素,開始新的一個列的搜索塊的匹配程度檢測和比較,如此進行,直到所有的搜索塊都檢測完,得到最佳參考塊。
運動搜索模塊在搜尋最佳匹配塊的過程中,最主要的工作是計算每個搜索塊的匹配程度。計算一個搜索塊的匹配程度,需要將這個搜索塊中的每個象素,和待編碼圖像塊中的對應象素作差,得到每個象素殘差,然后對所有象素殘差,按一定規則計算其匹配程度度量(比如所有象素殘差的絕對值之和,該度量稱為SAD,SAD越小,匹配越好)。
實現上述功能的傳統的高并行度運動搜索模塊用二維寄存器陣列實現,其結構及工作原理如圖3所示,包括一個參考圖像數據存儲器,用于存儲參考幀搜索范圍內象素的數據,該存儲器每次只能讀出一行象素的數據;一個二維的搜索塊寄存器陣列,用于每次讀出一個塊的象素的數據;一個二維的待編碼圖像塊的寄存器陣列,用于寄存待編碼圖像塊的象素的數據,該寄存器陣列每次可以讀出一個塊的象素的數據,在對一個塊的編碼過程中,這個寄存器陣列內的數據不變,直到完成當前塊的編碼,進入下一個塊的編碼;一個二維的減法器陣列,用于將待編碼圖像塊數據和搜索塊數據作差,計算得到殘差圖像塊的數據;一個匹配程度度量計算器,用于根據殘差圖像塊數據計算得到搜索塊的匹配程度度量;一個匹配程度度量比較器和塊選擇器,用于選出目前為止匹配最好的搜索塊(以位置作為標識);各部件的連接關系為所述參考圖像數據存儲器的輸出端與二維的搜索塊寄存器陣列的輸入端相連,該二維的搜索塊寄存器陣列的輸出端和待編碼圖像塊的寄存器陣列輸出端均與二維的減法器陣列的輸入端相連,二維的減法器陣列的輸出端與匹配程度度量計算器的輸入端相連,匹配程度度量計算器的輸出端與匹配程度度量比較器和塊選擇器的輸入端相連。
在上述運動搜索模塊的結構中,其中的參考圖像數據存儲器和二維的搜索塊寄存器陣列兩個部件構成了運動搜索模塊中的搜索塊讀取模塊,如圖4所示,包括一個參考圖像數據存儲器,用于存儲參考幀搜索范圍內象素的數據,該存儲器每次只能讀出一行象素的數據;一個二維的搜索塊寄存器陣列,用于每次讀出一個塊的象素的數據。其連接關系為所述參考圖像數據存儲器的輸出端與二維的搜索塊寄存器陣列的輸入端相連,該二維的搜索塊寄存器陣列的輸出端為后續模塊提供搜索塊數據。
在上述搜索塊讀取模塊的結構中,二維的搜索塊寄存器陣列的具體結構如圖5所示,由m×n個單元寄存器組成(m、n的取值由待編碼的圖像塊的大小確定,即與該圖像塊的象素數目相同,如m×n為16×16,8×16,16×8,8×8,4×4等),每個單元寄存器寄存一個象素數據;各單元寄存器的連接關系為各列每個單元寄存器的輸出口與該列中上方相鄰的單元寄存器的輸入口相連通(最上方的單元寄存器輸出口不和其他單元寄存器相連),最下方單元寄存器的輸入口構成該二維的搜索塊寄存器陣列的輸入端,與參考圖像數據存儲器的輸出端相連;該二維的搜索塊寄存器陣列的二維的數據輸出端口(由所有單元寄存器的輸出口構成)為后續模塊提供參考塊數據。
圖5中,每個小方塊表示了可以寄存一個象素數據的單元寄存器,小方塊內的數據(x,y)表示了這個單元寄存器在陣列中位于第x行第y列;設待編碼塊大小為m×n,則這個寄存器陣列的大小也是m×n。標識k,k+1...表示在寄存器陣列中,這一行的單元寄存器存儲了搜索范圍中第k行,第k+1行...對應的數據。其中,第k+n行由參考圖像數據存儲器輸出,即將進入寄存器陣列。該寄存器陣列具有逐行向上移位的功能,從參考圖像數據存儲器讀出的新一行的數據由寄存器陣列的下端進入寄存器陣列,同時寄存器陣列原有數據逐行向上移位一個行距,最上面一行數據從寄存器陣列溢出。每加載一行新的數據,從邏輯結構上說,等效于搜索塊的位置往下移動了一個象素。
上述二維的搜索塊寄存器陣列的工作步驟如圖6所示,該圖詳細表示了隨著時間的變化,二維的搜索塊寄存器陣列中數據的交換過程。圖中x坐標表示時間,y坐標表示了寄存器陣列的行標號。每個實線小方塊為寄存器陣列中的一行,其中的文字L(e,f)表示這一行寄存器中所存儲的數據,來自搜索范圍內,(第e行,第f列)開始到(第e行,第f+m-1列)為止的一行長度為m象素的數據。X表示是無效數據。虛線小方塊表示來自參考圖像數據存儲器輸出,即將進入寄存器陣列的一行數據。該工作步驟分s1、s2、...幾個階段,分別為s1)初始化,此時二維的搜索塊寄存器陣列中,所有數據都是無效數據;s2)第1列加載階段,此時開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期加載一行,每加載一行,無效數據減少一行,之前已加載的數據向上移位一行;s3)第1列搜索階段,此時寄存器中已全是第1列的有效數據,開始計算匹配程度度量,同時每個時鐘周期加載一個新的行,其余行向上移位一行,最上一行溢出寄存器陣列,邏輯結構上來說,搜索塊位置向下移動了一個象素的距離;這樣一直到第1列搜索塊完成;s4)第2列加載階段,從第1列過渡到第2列,相當于搜索塊位置向右移動了一個象素距離,此時寄存器陣列中已加載的第1列的數據,對第2列的搜索塊來說,都是無效的數據,需要從第2列的第1行開始重新加載數據;s5)第2列加載完成,進行第2列的搜索,和第1列一樣,直到第2列搜索完成,開始加載第3列數據,如此進行,直到所有搜索塊完成。
執行完上述步驟后,就完成了所有搜索塊的匹配程度檢測,從這些搜索塊中找出匹配程度最好的,作為最佳參考塊,就完成了這個塊的運動搜索,進行這個塊的后續編碼流程,然后開始下個塊的運動搜索。
可以看到,傳統的二維的搜索塊寄存器陣列,在搜索過程中,每完成一個列搜索塊的搜索,都需要重新加載數據到寄存器陣列,帶來了一定程度的額外時間開銷,增加了時間代價。這種代價,在搜索范圍大,塊的大小比較小時,占總時間的比例不高,但是一旦塊的大小增大,搜索范圍減小,這個額外時間開銷所占的比例就會增大。假設塊的大小為m×n,搜索范圍a×b,則加載時間需要(a-m+1)×(n-1)個時鐘周期,完成搜索的總時間為(a-m+1)×(b)個時鐘周期,加載時間的開銷占了總時間的(a-m+1)(n-1)(a-m+1)b=(n-1)b]]>
如果塊大小為8×8,搜索范圍為64×64,則加載時間有399時鐘周期,完成搜索總時間為3648時鐘周期,加載時間占11%;如果大小為16×16,搜索范圍為32×32,則加載時間有255時鐘周期,完成搜索總時間為544時鐘周期,加載時間占到了47%。
發明內容本發明的目的是為克服已有技術的不足之處,提出一種快速的搜索塊讀取模塊,對其中的二維的搜索塊寄存器陣列進行了結構上的改進,使其改進了搜索次序,以很小的額外硬件資源為代價,大大減小了加載時間帶來的額外時間開銷,減小整個搜索過程的時間代價,提高編碼器編碼速度,實現高分辨率下的實時編碼。
本發明提出的一種快速的搜索塊讀取模塊,包括參考圖像數據存儲器,用于存儲參考幀搜索范圍內象素的數據;二維的搜索塊寄存器陣列,用于每次讀出一個塊的象素的數據;其特征在于,所述參考圖像數據存儲器的輸出端同時與二維的搜索塊寄存器陣列的最上一行寄存器輸入端口、最下一行寄存器輸入端口相連,該二維的搜索塊寄存器陣列的數據輸出端口給后續模塊提供搜索塊數據。
本發明的特點及技術效果本發明的主要特點在于,改進了二維的搜索塊寄存器陣列的結構,即增加了若干列的暫存性質的單元寄存器,同時改變了各單元寄存器連接關系,即各單元寄存器之間有三個方向的數據移位通道。因此工作時,使用蛇行搜索路線,將不同位置的搜索塊銜接起來,不再需要每列都重新加載數據。
按照本發明的結構,額外消耗的加載時間只在第1列加載時才有,后續的列都不需要加載過程,假設塊的大小為m×n,搜索范圍a×b,則加載時間需要n-1個時鐘周期,完成搜索的總時間為(a-m+1)×(b-n+1)+(n-1)個時鐘周期,加載時間的開銷占了總時間的(n-1)(a-m+1)(b-n+1)+(n-1)]]>如果塊大小為8×8,搜索范圍為64×64,則加載時間有7時鐘周期,完成搜索總時間為3256時鐘周期,加載時間占0.2%;如果大小為16×16,搜索范圍為32×32,則加載時間有15時鐘周期,完成搜索總時間為304時鐘周期,加載時間占5%。
對比傳統方法,可以發現,本發明不論在加載時間上、總時間上,還是加載時間所占比例上,都大大減小的了代價。在最為總要的指標,總時間上,第一種情況減小了11%,第二種情況減小了56%。
圖1為運動估計模塊的功能示意圖,其中高度和寬度的單位都是象素。
圖2為對所有搜索塊進行匹配程度檢測的一種遍歷次序的示意圖。
圖3為傳統高并行度運動搜索模塊的結構示意圖。
圖4為傳統高并行度運動搜索模塊中搜索塊讀取子模塊的結構示意圖。
圖5為傳統搜索塊讀取模塊中二維的搜索塊寄存器陣列的具體結構示意圖。
圖6為傳統搜索塊讀取模塊的工作步驟示意圖。
圖7為本發明的快速的搜索塊讀取模塊結構示意圖。
圖8為本發明的快速的搜索塊讀取模塊中二維的搜索塊寄存器陣列的具體結構示意圖。
圖9為本發明的快速的搜索塊讀取模塊的工作步驟示意圖。
具體實施方式下面結合附圖及實施例對本發明作進一步詳細說明。
本發明提出的一種快速的搜索塊讀取模塊,其結構如圖7所示,包括一個參考圖像數據存儲器,用于存儲參考幀搜索范圍內象素的數據,該參考圖像數據存儲器每次只能讀出一行象素的數據;一個二維的搜索塊寄存器陣列,用于每次讀出一個塊的象素的數據;各部件的連接關系為所述參考圖像數據存儲器的輸出端同時與二維的搜索塊寄存器陣列的最上行寄存器輸入端口、最下行寄存器輸入端口相連,該二維的搜索塊寄存器陣列的數據輸出端口為后續模塊提供搜索塊數據。
本發明的快速的搜索塊讀取模塊與圖4所示的傳統搜索塊讀取模塊結構相比,該結構增加了一條由參考圖像數據存儲器輸出到二維的搜索塊寄存器陣列上端輸入的數據通路。
上述二維的搜索塊寄存器陣列的具體結構如圖8所示,由(m+1)×n個單元寄存器及三選一多路選擇器組成(m、n為正整數,其取值由待處理的圖像塊的大小確定,即與該圖像塊的象素數目相同),其中m×n中的每個單元寄存器寄存一個象素數據,第m+1列寄存器為暫存單元寄存器;各單元寄存器的連接關系為每個單元寄存器的輸出端口與上、下、左三個相鄰的單元寄存器的輸入端口相連通;每個單元寄存器的輸入端口與上、下、右三個相鄰的單元寄存器的輸出端口通過三選一多路選擇器相連通(三選一多路選擇器的功能是實現在這三個輸出端中,同一個時間只有一個輸出有效地到達輸入端,另外兩個輸出被屏蔽,三選一多路選擇器是電路中的基本單元,所占資源很小);寄存器陣列中第一行和最后一行的單元寄存器構成該二維的搜索塊寄存器陣列的上輸入端口與下輸入端口,均與參考圖像數據存儲器的輸出端相連;該二維的搜索塊寄存器陣列的二維的數據輸出端口(由除去該一列暫存單元寄存器以外的各單元寄存器的輸出端口構成)為后續模塊提供參考塊數據。
圖8中,每個小方塊表示了可以寄存一個象素數據的單元寄存器,小方塊內的數據(x,y)表示了這個單元寄存器在陣列中位于第x行第y列,其中y值為e的,表示新增加的暫存單元寄存器;假設塊大小為m×n,則這個寄存器陣列的大小是(m+1)×n。標識k,k+1…表示在寄存器陣列中,這一行的單元寄存器存儲了搜索范圍中第k行,第k+1行…對應的數據。其中,第k+n,k-1行由參考圖像數據存儲器輸出,即將進入寄存器陣列;上端口和下端口的輸入中,同一時間只有一個有效(邏輯上對應了同一時間搜索塊的位置只能向上移動或向下移動,而不能即向上移動又向下移動)。
該二維的搜索塊寄存器陣列具有逐行向上移位的功能,從存儲器讀出的新一行的數據可以由寄存器陣列的下端進入寄存器陣列,同時寄存器陣列原有數據逐行向上移位一個行距,最上面一行數據從寄存器陣列溢出。每加載一行新的數據,從邏輯結構上說,等效于搜索塊的位置往下移動了一個象素。
該二維的搜索塊寄存器陣列具有逐行向下移位的功能,從存儲器讀出的新一行的數據可以由寄存器陣列的上端進入寄存器陣列,同時寄存器陣列原有數據逐行向下移位一個行距,最下面一行數據從寄存器陣列溢出。每加載一行新的數據,從邏輯結構上說,等效于搜索塊的位置往上移動了一個象素。
該二維的搜索塊寄存器陣列具有逐列向左移位的功能,可以不從存儲器讀出的新一行的數據,同時寄存器陣列所有列逐列向左移動一列,最左面一列數據從寄存器陣列溢出,最右一列的數據(即暫存單元寄存器中的數據)變為無效數據。每進行一次列形式的向左移位,從邏輯結構上說,等效于搜索塊的位置往右移動了一個象素。
本發明的二維的搜索塊寄存器陣列,和圖5所示的傳統二維的搜索塊寄存器陣列相比,該陣列在結構上作了如下的改進1)在傳統二維的搜索塊寄存器陣列的基礎上,最右增加了一列的暫存單元寄存器,在具體實施過程中,也可增加多列的這種單元寄存器,用于一次向水平方向移動多個象素距離;2)在傳統二維的搜索塊寄存器陣列的基礎上,增加了向下逐行移位的數據通路;3)在傳統二維的搜索塊寄存器陣列的基礎上,增加了向左逐列移位的數據通路;在硬件資源上,這幾個改動增加了一列寄存器資源和三選一多路選擇器。
本發明的快速的搜索塊讀取模塊工作步驟如圖9所示,該圖詳細表示了隨著時間的變化,二維的搜索塊寄存器陣列中數據的交換過程。圖中x坐標表示時間,y坐標表示了寄存器陣列的行標號。每個實線小方塊表示了寄存器陣列中的一行,其中的文字表示L(e,f)表示這一行寄存器中所存儲的數據,來自搜索范圍內,(第e行,第f列)開始到(第e行,第f+m列)為止的一行長度為m+1象素的數據。X表示是無效數據。虛線小方塊表示來自參考圖像數據存儲器輸出,即將進入寄存器陣列的一行數據。該工作步驟分s1、s2、…幾個階段,分別為s1)初始化,此時二維的搜索塊寄存器陣列中,所有數據都是無效數據;s2)第1列加載階段,此時開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期在寄存器陣列下端加載一行,每加載一行,無效數據減少一行,之前已加載的數據向上移位一行;s3)第1列搜索階段,此時寄存器中已全是第1列的有效數據,開始計算匹配程度度量,同時每個時鐘周期加載一個新的行,其余行向上移位一行,最上一行溢出寄存器陣列,邏輯結構上來說,搜索塊的位置向下移動了一個象素的距離;這樣一直到第1列搜索塊完成;s4)第2列搜索,在第1列搜索完成后,寄存器陣列向左逐列移位一個象素,邏輯結構上來說,搜索塊的位置向右移動了一個象素的距離,立即切換到第2列的最下方的搜索塊,開始第2列的搜索,之后開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期在寄存器陣列上端加載一行,每加載一行,之前已加載的數據向下移位一行,最下一行溢出寄存器陣列,邏輯結構上來說,搜索塊的位置向上移動了一個象素的距離;這樣直到第2列搜索塊完成;s5)第3列搜索,在第2列搜索完成后,寄存器陣列向左逐列移位一個象素,邏輯結構上來說,搜索塊的位置向右移動了一個象素的距離,立即切換到第3列的最上方的搜索塊,開始第3列的搜索,之后開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期在寄存器陣列下端加載一行,每加載一行,之前已加載的數據向上移位一行,最上一行溢出寄存器陣列,邏輯結構上來說,搜索塊的位置向下移動了一個象素的距離;這樣直到第3列搜索塊完成,如此下去,直到完成所有搜索塊的搜索;執行完上述步驟后,就完成了所有搜索塊的讀取,從這些搜索快中找出匹配程度最好的,選擇為最佳參考塊,就完成了這個塊的運動搜索,進行這個塊的后續編碼流程,然后開始下個塊的運動搜索。
本發明的快速的搜索塊讀取模塊,在完成一個列的搜索塊搜索后,直接轉到下一列的最下端,開始由下向上搜索,到最上端后,直接轉到再下列的最上端,由上向下搜索,完成一個蛇形的搜索路徑。在具體實施過程中,這個蛇行可以是行方向的,也可以是列方向的。
本發明的用于視頻編碼中的快速的搜索塊讀取模塊實施例詳細說明如下假設在運動搜索中,塊大小為16×16,搜索范圍為48×48;用于上述場合的本實施例的快速的搜索塊讀取模塊的具體組成結構如圖7所示,包括一個參考圖像數據存儲器,用于存儲參考幀搜索范圍內象素的數據,存儲量為48×48=2304象素數據,該存儲器每次只能讀出一行象素的數據;一個17×16的二維搜索塊寄存器陣列,用于每次讀出一個塊的象素的數據;本實施例的快速的搜索塊讀取模塊中各部件的連接關系如下參考圖像數據存儲器的輸出端同時與二維的搜索塊寄存器陣列的上輸入端口、下輸入端口相連;二維的搜索塊寄存器陣列的二維的數據輸出端口為后續模塊提供搜索塊數據。
本實施例中的參考圖像數據存儲器可采用已有的部件。
本實施例的二維的搜索塊寄存器陣列組成結構如圖8所示,由一個17列16行的單元寄存器構成的陣列和272個三選一多路選擇器組成,每個寄存器可以存儲一個象素的數據,第17列為暫存單元寄存器;其中,每個單元寄存器的輸出端口與上、下、左三個相鄰的單元寄存器的輸入端口相連通(如沒有對應的相鄰寄存器單元,則不必相連);每個單元寄存器的輸入端口與上、下、右三個相鄰的單元寄存器的輸出端口通過一個三選一多路選擇器相連通(如沒有對應的相鄰寄存器單元,則不必相連);寄存器陣列中第一行和最后一行的單元寄存器構成該二維的搜索塊寄存器陣列的上輸入端口與下輸入端口;寄存器陣列中除去暫存單元寄存器以外的所有單元寄存器的輸出端口構成一個二維的數據輸出端口。
本實施例的具體工作流程如下1)初始化,此時二維的搜索塊寄存器陣列中,所有數據都是無效數據;2)第1列加載,此時開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期在寄存器陣列下端加載一行,每加載一行,無效數據減少一行,之前已加載的數據向上移位一行,一直到加載16行數據;3)第1列搜索,此時寄存器中已全是第1列的有效數據,開始計算匹配程度度量,同時每個時鐘周期加載一個新的行,其余行向上移位一行,最上一行溢出寄存器陣列,邏輯結構上來說,搜索塊向下移動了一個象素的距離;這樣一直到第1列的33(48-16+1)個搜索塊完成;4)第2列搜索,在第1列搜索完成后,寄存器陣列向左逐列移位一個象素,立即切換到第2列的最下方的搜索塊,開始第2列的搜索,之后開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期在寄存器陣列上端加載一行,每加載一行,之前已加載的數據向下移位一行,最下一行溢出寄存器陣列,邏輯結構上來說,搜索塊向上移動了一個象素的距離;這樣直到第2列的33個搜索塊完成;5)第3列搜索,在第2列搜索完成后,寄存器陣列向左逐列移位一個象素,立即切換到第3列的最上方的搜索塊,開始第3列的搜索,之后開始從存儲器中逐行讀出參考圖像數據,每個時鐘周期在寄存器陣列下端加載一行,每加載一行,之前已加載的數據向上移位一行,最上一行溢出寄存器陣列,邏輯結構上來說,搜索塊向下移動了一個象素的距離;這樣直到第3列的33個搜索塊完成,如此下去,直到完成所有搜索塊的搜索。
權利要求
1.視頻編碼器中一種快速的搜索塊讀取模塊,包括一個或多個參考圖像數據存儲器,一個或多個二維的搜索塊寄存器陣列,其特征在于,所述參考圖像數據存儲器的輸出端同時與二維的搜索塊寄存器陣列的最上一行寄存器輸入端口、最下一行寄存器輸入端口相連。
2.如權利要求
1所述的搜索塊讀取模塊,其特征在于,所述二維的搜索塊寄存器陣列由(m+1)×n個單元寄存器及三選一多路選擇器組成,其中m×n中的每個單元寄存器寄存一個象素數據,第m+1列寄存器為暫存單元寄存器,其中m、n為正整數;各單元寄存器的連接關系為每個單元寄存器的輸出端口與上、下、左三個相鄰的單元寄存器的輸入端口相連通;每個單元寄存器的輸入端口與上、下、右三個相鄰的單元寄存器的輸出端口通過三選一多路選擇器相連通;寄存器陣列中第一行和最后一行的單元寄存器構成該二維的搜索塊寄存器陣列的上輸入端口與下輸入端口,均與參考圖像數據存儲器的輸出端相連;該二維的搜索塊寄存器陣列的二維的數據輸出端口為后續模塊提供搜索塊數據。
專利摘要
本發明涉及視頻編碼器中一種快速的搜索塊讀取模塊,屬于信號處理中的視頻編碼領域。該模塊包括參考圖像數據存儲器,二維的搜索塊寄存器陣列;參考圖像數據存儲器的輸出端同時與二維的搜索塊寄存器陣列的最上一行寄存器輸入端口、最下一行寄存器輸入端口相連。其中的二維的搜索塊寄存器陣列由(m+1)×n個單元寄存器及三選一多路選擇器組成,寄存器陣列中第一行和最后一行的單元寄存器構成該二維的搜索塊寄存器陣列的上輸入端口與下輸入端口,均與參考圖像數據存儲器的輸出端相連。本發明在運動搜索過程中,可高效地讀取搜索塊,減小整個搜索過程的時間代價,提高編碼器編碼速度,實現高分辨率下的實時編碼。
文檔編號G06T7/20GK1997156SQ200610144273
公開日2007年7月11日 申請日期2006年12月1日
發明者何蕓, 朱炳強 申請人:清華大學導出引文BiBTeX, EndNote, RefMan