專利名稱:一種實現(xiàn)菱形搜索算法的硬件結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本實用新型屬于圖像壓縮技術(shù)領(lǐng)域,涉及一種實現(xiàn)菱形搜索算法的硬件 結(jié)構(gòu)。
背景技術(shù):
現(xiàn)實的視頻信號中含有大量的冗余信息,主要是空間冗余和時間冗余, 可以通過數(shù)據(jù)壓縮去除這些信息數(shù)據(jù)之間的時間空間函數(shù)的自相關(guān)性和互 相關(guān)性(即去除冗余),保留相互獨立的信息分量,從而可以節(jié)約存儲空間, 提高傳輸效率,同時使視頻信息在較低速率的信道上進(jìn)行實時傳送成為可 能。運動估計能夠有效的去除視頻信息之間的時間冗余,它占整個視頻壓縮
編碼量的60%-80%,直接影響著編碼的速度和效率,是視頻編碼的一項關(guān)鍵 技術(shù)。在運動估計中,當(dāng)前將要傳輸?shù)膱D像作為當(dāng)前幀,已傳輸?shù)淖鳛閰⒖?br>
的圖像稱為參考幀。在進(jìn)行運動估計運算時的具體流程為首先將每幀圖像 劃分成NxN的宏塊;然后將當(dāng)前幀的每一個圖像塊與參考幀中對應(yīng)搜索區(qū) 域的所有圖像塊進(jìn)行匹配計算,找出最佳匹配塊;最后輸出最佳匹配塊的行 列坐標(biāo),也就是運動向量MV。因為在對當(dāng)前塊編碼時相當(dāng)于只描述了當(dāng)前 塊相對于參考塊的位移量而沒有具體描述其內(nèi)容,從而實現(xiàn)去除視頻信息之 間的時間冗余,這就是運動估計。
運動估計所采用的主要算法通常為塊匹配算法,而塊匹配法大致可分為 兩類:全搜索算法(FSBMA)和快速搜索算法,而后者又包括了如三步法(TSS),
菱形搜索法(DS算法),四步法(FSS)等。在快速搜索算法中,菱形搜索由于
利用了在現(xiàn)實視頻中最佳匹配點的分布概率主要集中于以中心點為核心的
一個菱形分布的特點,相對于其他典型的快速算法擁有良好的性能表現(xiàn),但
是由于其數(shù)據(jù)流不規(guī)則的特性造成硬件系統(tǒng)難于實現(xiàn),也就限制了菱形搜索
在現(xiàn)實中的實際應(yīng)用。
發(fā)明內(nèi)容
本實用新型的目的是,提供一種實現(xiàn)菱形搜索算法的硬件結(jié)構(gòu),來解決 現(xiàn)有技術(shù)中很難使用硬件結(jié)構(gòu)實現(xiàn)運動估計中菱形搜索算法的問題。
本實用新型所采用的技術(shù)方案是, 一種實現(xiàn)菱形搜索算法的硬件結(jié)構(gòu), 包M核心控制器,核心控制器通過數(shù)據(jù)線分別與參考塊存儲器、PE陣列、 SAD陣列、地址生成器、編碼模塊連接;地址生成器通過數(shù)據(jù)線再與參考塊 存儲器連接;參考塊存儲器和當(dāng)前塊存儲器的信息流輸出端同時接入PE陣 列的信息流輸入端,PE陣列的信息流輸出端與SAD陣列的信息流輸入端 連接;SAD陣列的信息流輸出端與編碼模塊的信息流輸入端連接。
本實用新型的有益效果是,該硬件結(jié)構(gòu)只使用了很低的輸入帶寬和較少 的硬件損耗實現(xiàn)了菱形搜索算法,加快了視頻編碼中運動估計速度。
圖1是本實用新型硬件結(jié)構(gòu)的示意圖2是菱形搜索中的各種搜索位置示意圖,其中圖2(a)所示為鉆石形狀 的九個起始位置、圖2 (b)所示為頂點搜索時需要附加的搜索位置、圖2 (c) 所示為邊搜索時需要附加的搜索位置、圖2(d)所示為最終的最佳匹配位置;
圖3是一個完整的菱形搜索算法例的示意圖4是參考塊存儲器結(jié)構(gòu)示意圖5是參考塊存儲器中的更新順序和輸出順序示意圖,其中圖5(a)所示 為左下到右上的輸出順序、圖5 (b)所示為左上到右下的輸出順序、圖5(c) 所示為右下到左上的輸出順序、圖5 (d)所示為右上到左下的輸出順序;
圖6是PE陣列結(jié)構(gòu)示意圖7是SAD陣列結(jié)構(gòu)示意圖8是菱形搜索的數(shù)據(jù)流分析和掃描順序示意圖9是菱形搜索中的四種移動模式示意圖,其中圖9 (a)為參考塊從左 下到右上的移動、圖9 (b)為參考塊從左上到右下的移動、圖9 (c)為參 考塊從右下到左上的移動、圖9 (d)為參考塊從右上到左下的移動;
圖中,1、當(dāng)前塊存儲器,2、參考塊存儲器,3、 PE陣列,4、 SAD陣 列,5、地址生成器,6、編碼模塊,7、核心控制器。
具體實施方式
以下結(jié)合附圖和具體實施方式
對本實用新型進(jìn)行詳細(xì)說明。
如圖1所示,本實用新型裝置主要包括核心控制器7,核心控制器7通 過數(shù)據(jù)線分別與參考塊存儲器2、 PE陣列3、 SAD陣列4、地址生成器5、 編碼模塊6連接;地址生成器5通過數(shù)據(jù)線再與參考塊存儲器2連接;參考 塊存儲器2和當(dāng)前塊存儲器1的信息流輸出端同時接入PE陣列3的信息流 輸入端,PE陣列3的信息流輸出端與SAD陣列4的信息流輸入端連接; SAD陣列4的信息流輸出端與編碼模塊6的信息流輸入端連接。圖中黑細(xì)線 為交互控制指令的傳輸線,寬箭頭為信息流的傳輸方向。
以下說明中都設(shè)定運動估計劃分的基本圖像塊大小為NxN。
菱形搜索算法(DS算法)的計算方式如下,
如圖2所示,為DS算法第一步和其他步驟的搜索位置,DS算法第一
步的搜索位置呈菱形形狀排列,在以后的步驟中,每一步的搜索位置由上一 步得出的結(jié)果確定。
算法的具體步驟為,
第一步、對搜索窗口中心,如圖2(a)所示的鉆石形狀的九個位置作匹配 運算,如果得出的最佳匹配位置在鉆石的中心(c, c),則跳到第三步;如果得 出的最佳匹配位置在鉆石的邊上(c-l, c+l), (c-l, c-l), (c+l, c-l), (c+l: c+l),或頂點上(c-2, 0) , (c+2, 0) , (0, c-2) , (0, c+2)則跳到第二步;
第二步、如果第一步得到的最佳匹配位置在邊上,即點(c-l,c+l), (c-l, c-l) , (c+l,c-l) , (c+l,c+l),則作邊搜索。邊搜索時需要附加的搜索位置
如圖2(C)所示,在四個邊上的情況相同;如果第一步得到的最佳匹配位置在
頂點上,即點(c-2,0),(c+2,0),(0,c-2),(0,c+2),則作頂點搜索。頂點搜索 時需要附加搜索的位置如圖2 (b)所示。如果這一步得到的最佳匹配位置在中 心位置,則跳到第三步,否則,跳回第二步開始,繼續(xù)作搜索;
第三步、以上一步得到的最佳匹配位置(c,c)為中心,對(c-l,c),(c+l,c), (c,c-l), (c, c+l)四個位置作匹配運算,此時需要附加搜索的位置如圖2 (d) 所示,得到最終的最佳匹配位置。
如圖3所示,是應(yīng)用菱形搜索算法的一個完整過程的例子,如果第一步 得到最小絕對差值之和(SAD)的位置是坐標(biāo)原點,則對a,b,c,d四個位置 作最后的匹配運算。否則要對附加的搜索位置進(jìn)行匹配。圖中得到的最佳匹 配位置是(6, —3)。
根據(jù)算法設(shè)計的整體結(jié)構(gòu)中,每個單元的具體結(jié)構(gòu)和工作原理如下
當(dāng)前塊存儲器1用于存儲當(dāng)前圖像塊的象素值,是一個NxN的寄存器 組,電路開始工作后每個時鐘從外部依次讀入一個象素進(jìn)入相應(yīng)的寄存器,
當(dāng)NxN個時鐘后讀滿并可以進(jìn)入工作狀態(tài),即可以向PE陣列3輸入當(dāng)前塊 的象素值。
如圖4所示,參考塊存儲器2的結(jié)構(gòu)是一個NxN的寄存器組,用于存 儲參考塊的象素值,并將象素值按照一定順序輸出到PE陣列3。為了方便 說明,圖中顯示的是當(dāng)N二4時的結(jié)構(gòu),當(dāng)N為其他值時的結(jié)構(gòu)依此類推。 該結(jié)構(gòu)中的輸入帶寬為一個象素,即8bit。圖中的@ 是編程開關(guān), 可以實現(xiàn)連接和斷開兩種狀態(tài)。根據(jù)對菱形搜索數(shù)據(jù)流的分析得到的四種移 動模式,在參考塊中對應(yīng)的動作如下-
a.左下到右上時,@導(dǎo)通而 關(guān)斷,其對應(yīng)的寄存器間的數(shù)據(jù) 流如下
<formula>formula see original document page 7</formula>b.左上到右下時, 導(dǎo)通而@ @關(guān)斷,其對應(yīng)的寄存器間的數(shù)據(jù)
流如下
<formula>formula see original document page 7</formula>
C.右下到左上時, 導(dǎo)通而@ 關(guān)斷,其對應(yīng)的寄存器間的數(shù)據(jù) 流如下
扁
<formula>formula see original document page 8</formula>
d.右上到左下時, 導(dǎo)通而@ 關(guān)斷,其對應(yīng)的寄存器間的數(shù)據(jù)
流如下
<formula>formula see original document page 8</formula>
因為PE陣列3由N/2個PE構(gòu)成,所以每次由參考塊存儲器2向PE陣 列3輸出N/2個象素點以供其計算。經(jīng)過分析發(fā)現(xiàn),在上述四種移動模式中, 每種的參考塊中間(N-2) X (N-2)的象素總是重復(fù)的。
如圖5所示,本實用新型設(shè)置了與上述四種移動模式相對應(yīng)的輸出順序
a. 左下到右上(如圖5 (a))
b. 左上到右下(如圖5 (b))
c. 右下到左上(如圖5 (c))
d. 右上到左下(如圖5 (d))
圖中數(shù)字代表讀出的順序,深色點代表需要更新的象素點,箭頭表示更新象
素點的順序,參考塊存儲器2每個時鐘周期輸出N/2個象素點,圖中的N為 8,每個時鐘周期可以更新一個象素點。每個參考塊中一共有N+(N-1)個象素 需要更新,而每個時鐘周期輸出N/2個象素,所以只要按照圖中的順序更新 象素和輸出,就能在象素更新結(jié)束后的下一周期將所有象素輸出完畢。
如圖6所示,PE陣列3用于計算當(dāng)前塊和參考塊之間的SAD值。整個 PE陣列3由N/2個PE構(gòu)成,為了方便說明,所以圖中顯示的是當(dāng)N二8時 的PE陣列結(jié)構(gòu),當(dāng)N為其他值時的結(jié)構(gòu)依此類推。每個PE可以計算兩個 象素之間的絕對差值,加法器將PE輸出的絕對差值相加后存儲到累加器 (ACCM),當(dāng)整個參考塊于當(dāng)前塊的象素點(NxN個象素點)被計算完后, 這個參考塊的SAD值經(jīng)過選擇器被送到與其位置對應(yīng)的SAD陣列4中的寄 存器中去。
SAD陣列4用于存儲菱形搜索中對應(yīng)候選塊位置上的SAD值,并將 SAD值提供給編碼模塊6以供其使用。該結(jié)構(gòu)利用菱形搜索的數(shù)據(jù)流特點, 充分復(fù)用了己經(jīng)計算過的SAD值,可以大大減少重復(fù)的計算量。
如圖7所示,圖中的②②是編程開關(guān),根據(jù)控制實現(xiàn)連接和斷開兩 種狀態(tài),其開關(guān)條件取決于最優(yōu)匹配點的位置,并且每次只有一個開關(guān)導(dǎo)通, 其他的開關(guān)此刻都斷開。X1 X4, Y1 Y4的導(dǎo)通條件如下
XI:最優(yōu)點為上方的點;
X2:最優(yōu)點為右方的點;
X3:最優(yōu)點為下方的點;
X4:最優(yōu)點為左方的點;
Yl:最優(yōu)點為右上方的點;
Y2:最優(yōu)點為右下方的點; Y3:最優(yōu)點為左上方的點; Y4:最優(yōu)點為左下方的點;
利用這個結(jié)構(gòu),可以大幅減少重復(fù)的候選點的SAD計算,從而提高了計算速度。
地址生成器5用于根據(jù)參考塊需要輸出到PE陣列3的象素順序產(chǎn)生相 應(yīng)的象素在參考塊中的地址,以使得參考塊能夠正確輸出。
編碼模塊6用于根據(jù)SAD陣列4存儲的SAD值,找到SAD最小的匹 配塊,從而找到最優(yōu)的匹配塊并輸出其運動矢量。
核心控制器7用于協(xié)調(diào)所有模塊的工作和控制所有時序。
如圖8所示,該結(jié)構(gòu)是根據(jù)菱形搜索的數(shù)據(jù)流特點設(shè)計的,菱形搜索的 數(shù)據(jù)流特點可以從菱形搜索流程中看出,為一個菱形搜索的所有候選點的位 置,其中a, b, c三點的對應(yīng)參考塊也顯示了出來,由圖8中可以看出,ab c三點為近鄰點,而近鄰點之間的參考塊之間都有(N-l)X(N-l)的象素是重疊 的。圖8中箭頭顯示的是LDS和SDS的搜索路線。
如圖9所示,在菱形搜索中,其對應(yīng)的參考塊更新象素點的分布方式分 為四種
A、 左下到右上(如圖9 (a))
B、 左上到右下(如圖9 (b))
C、 右下到左上(如圖9 (c))
D、 右上到左下(如圖9 (d))
菱形搜索的方式有大菱形搜索(LDS)和小菱形搜索(SDS),利用上面提出 的四種移動方式,可以涵蓋菱形搜索中所有的移動。最終根據(jù)這個特點設(shè)計
了參考塊存儲器2,使該參考塊存儲器2硬件消耗小且輸入帶寬小的同時保 持了運算所需要的高速度。
另一方面,在計算SAD值的時候,當(dāng)最優(yōu)點不在中央而在邊上或者角 上時,在下一個菱形搜索框中其實有很多候選點對應(yīng)參考塊的SAD值是已 經(jīng)在前一個菱形搜索框中計算過的,其中,當(dāng)最優(yōu)點在角上時,在下一個菱 形搜索框中有4個點的SAD值已經(jīng)在前面的菱形搜索框中計算過,當(dāng)最優(yōu) 點在邊上時,在下一個菱形搜索框中有6個點的SAD值已經(jīng)在前面的菱形 搜索框中計算過。因此利用這個特點設(shè)置SAD陣列4。該陣列在最優(yōu)點在邊 上或角上的情況下,將計算過的SAD值移動到新的菱形搜索框中對應(yīng)的位 置,只計算新的候選點的SAD值,從而減少了重復(fù)計算。
本實用新型根據(jù)上述分析的菱形搜索數(shù)據(jù)流特點,設(shè)置了電路的硬件結(jié) 構(gòu),該電路的工作過程是,首先分別從當(dāng)前幀和參考幀中讀入圖像數(shù)據(jù)進(jìn)入 當(dāng)前塊存儲器1和參考塊存儲器2,然后兩個存儲器的象素按照設(shè)計的順序 進(jìn)入PE陣列3,并由PE陣列3計算出當(dāng)前塊和參考塊之間的SAD值,SAD 值計算完畢后由PE陣列3計送入SAD陣列4中相應(yīng)位置的存儲器中,然后 用同樣的方法計算下一個參考塊的SAD值,如此循環(huán)直到所有菱形搜索需 要的所有參考塊的SAD值計算完畢。最終由編碼模塊6根據(jù)SAD陣列4中 的各模塊的SAD值來判斷最佳匹配點,并由最佳匹配點的位置來判斷下一 次菱形搜索的菱形搜索位置,并再次計算新的菱形搜索范圍內(nèi)所有參考塊的 SAD值,再判斷最優(yōu)點。如此循環(huán),直到最優(yōu)點的位置收斂為中心點,然后 在計算完中心點和周圍四點的SAD值后,由編碼模塊6判斷出SAD值最小 的匹配塊,并將其相對于當(dāng)前塊的水平和垂直位移量作為運動矢量輸出,從 而完成運動估計。
本實用新型充分利用了菱形搜索中的數(shù)據(jù)流特點,減少了重復(fù)數(shù)據(jù)的輸 入和計算并同時提高了計算的速度。
權(quán)利要求1.一種實現(xiàn)菱形搜索算法的硬件結(jié)構(gòu),其特征在于包括核心控制器(7),核心控制器(7)通過數(shù)據(jù)線分別與參考塊存儲器(2)、PE陣列(3)、SAD陣列(4)、地址生成器(5)、編碼模塊(6)連接;地址生成器(5)通過數(shù)據(jù)線再與參考塊存儲器(2)連接;參考塊存儲器(2)和當(dāng)前塊存儲器(1)的信息流輸出端同時接入PE陣列(3)的信息流輸入端,PE陣列(3)的信息流輸出端與SAD陣列(4)的信息流輸入端連接;SAD陣列(4)的信息流輸出端與編碼模塊(6)的信息流輸入端連接。
專利摘要本實用新型公開了一種實現(xiàn)菱形搜索算法的硬件結(jié)構(gòu),包括核心控制器分別與參考塊存儲器、PE陣列、SAD陣列、地址生成器、編碼模塊連接;地址生成器再與參考塊存儲器連接;參考塊存儲器和當(dāng)前塊存儲器的信息流輸出端同時接入PE陣列的信息流輸入端,PE陣列的信息流輸出端與SAD陣列的信息流輸入端連接;SAD陣列的信息流輸出端與編碼模塊的信息流輸入端連接。該硬件結(jié)構(gòu)充分利用了搜索算法中的重復(fù)數(shù)據(jù),只使用了很低的輸入帶寬和較少的硬件損耗實現(xiàn)了運動估計中的菱形搜索算法。本實用新型可以使用于任何視頻編碼硬件設(shè)備中,可以用于多種匹配塊尺寸大小情況下的菱形搜索。
文檔編號H04N7/26GK201066898SQ20072003226
公開日2008年5月28日 申請日期2007年7月17日 優(yōu)先權(quán)日2007年7月17日
發(fā)明者余寧梅, 廖裕民, 王冬芳 申請人:西安理工大學(xué)