一種搜索窗的滑動(dòng)方法及其裝置制造方法
【專利摘要】本發(fā)明涉及視頻編碼領(lǐng)域,尤其涉及一種搜索窗的滑動(dòng)方法及其裝置,以解決運(yùn)動(dòng)較大的視頻圖像搜索到目標(biāo)匹配塊概率較低,壓縮率較低的問題。本發(fā)明實(shí)施例的方法包括針對當(dāng)前幀的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗內(nèi)搜索目標(biāo)匹配塊;若搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。根據(jù)所述方法實(shí)現(xiàn)搜索窗向各個(gè)方向滑動(dòng),避免了搜索窗只能固定滑動(dòng),搜索到目標(biāo)匹配塊概率較低的問題,提高了搜索到目標(biāo)匹配塊的概率以及視頻壓縮率。
【專利說明】一種搜索窗的滑動(dòng)方法及其裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻編碼【技術(shù)領(lǐng)域】,尤其涉及一種搜索窗的滑動(dòng)方法及其裝置。
【背景技術(shù)】
[0002]許多視頻或動(dòng)畫的連續(xù)前后兩幀具有很大的相關(guān)性,也即連續(xù)的視頻其相鄰幀之間具有冗余信息,因此在視頻壓縮和視頻通信中,不需要將每一幀的所有像素信息傳輸?shù)浇獯a器端,而只需要傳輸對象運(yùn)動(dòng)信息,解碼器即可根據(jù)前一幀圖像和運(yùn)動(dòng)信息更新當(dāng)前幀,從而達(dá)到壓縮的目的。這種方法的關(guān)鍵是確定運(yùn)動(dòng)信息,即進(jìn)行運(yùn)動(dòng)估計(jì)。運(yùn)動(dòng)估計(jì)是指在參考幀中搜索一個(gè)與當(dāng)前幀圖像塊最相似的圖像塊,即目標(biāo)匹配塊,也就是最佳匹配塊,搜索結(jié)果用運(yùn)動(dòng)向量來表示。
[0003]由于視頻編碼中參考幀存儲容量很大,所以一般把參考幀存儲在外部存儲器中,但外部存儲器的訪問延遲相對SRAM大很多(Static Random Access Memory,靜態(tài)隨機(jī)存C:器),故會對視頻編碼器性能造成很大影響。
[0004]理想情況下(如圖1所示),運(yùn)動(dòng)估計(jì)可以搜索參考幀中任意待匹配塊,也就是說搜索窗為整個(gè)參考幀,搜索窗的高度為參考幀的高度H,搜索窗的寬度為參考幀的寬度W。這種情況下的壓縮率較高,但由于編碼器需要一個(gè)能存儲整個(gè)參考幀大小的內(nèi)部SRAM以減小讀取參考幀數(shù)據(jù)的延遲,對于高清的視頻編碼來說需要的SRAM太大,所以很難投入實(shí)際使用。
[0005]目前采用的兩種運(yùn)動(dòng)估計(jì)方案,是通過限制搜索窗的大小來降低對內(nèi)部SRAM的需求。
[0006]方案一(如圖2所示):對搜索窗進(jìn)行垂直方向上高度限制,也就是說搜索窗寬度仍為參考幀的寬度W,但搜索窗的高度遠(yuǎn)小于參考幀的高度,限定為SH,圖中黑色方塊是參考幀中與當(dāng)前宏塊位置相同的待匹配塊的位置,實(shí)線范圍為當(dāng)前宏塊的搜索窗范圍。首先在搜索窗內(nèi)進(jìn)行當(dāng)前宏塊的目標(biāo)匹配塊的搜索,搜索完成后,判斷當(dāng)前宏塊的宏塊行是否搜索完成,若沒有搜索完成,當(dāng)前宏塊的下一宏塊繼續(xù)在該搜索窗內(nèi)搜索其對應(yīng)的目標(biāo)匹配塊;若當(dāng)前宏塊的宏塊行已經(jīng)搜索完成,則搜索窗向下滑動(dòng)一個(gè)宏塊行(如圖2中虛線所示),當(dāng)前宏塊的下一宏塊在滑動(dòng)后的搜索窗內(nèi)搜索其對應(yīng)的目標(biāo)匹配塊。
[0007]方案二 (如圖3所示):對搜索窗水平和垂直方向設(shè)置寬度和高度的限制,也就是說搜索窗為一個(gè)比當(dāng)前宏塊大的矩形區(qū)域,如圖3所示,搜索窗的高度限定為SH,寬度限定為SW,圖中黑色方塊是參考幀中與當(dāng)前宏塊位置相同的待匹配塊的位置,實(shí)線范圍為當(dāng)前宏塊的搜索窗范圍。首先在搜索窗內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊,搜索完成后,搜索窗向右滑動(dòng)一個(gè)宏塊列(如圖3中虛線所示),當(dāng)前宏塊的下一宏塊在虛線所示的搜索窗內(nèi)搜索其對應(yīng)的目標(biāo)匹配塊;若當(dāng)前宏塊為當(dāng)前宏塊行的最后一個(gè)宏塊,則當(dāng)前宏塊的下一宏塊的搜索窗中心與下一待匹配塊行的最左側(cè)的待匹配塊重合。
[0008]從上述兩個(gè)方案可以看出,當(dāng)視頻圖像序列時(shí)靜止的,或運(yùn)動(dòng)較緩慢時(shí),上述兩種方案在對應(yīng)的搜索窗范圍內(nèi)搜索一個(gè)與當(dāng)前幀宏塊最相似的待匹配塊(即目標(biāo)匹配塊)的概率較高,但對于含有較大運(yùn)動(dòng)的視頻圖像序列,上述兩種方案在對應(yīng)的搜索窗范圍內(nèi)搜索一個(gè)與當(dāng)前幀宏塊最相似的待匹配塊(即目標(biāo)匹配塊)的概率就會較低。
[0009]因此對于含有較大運(yùn)動(dòng)的視頻圖像序列,上述兩種方案會出現(xiàn)搜索到目標(biāo)匹配塊的概率較低,視頻壓縮率較低的問題。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的是提供一種搜索窗的滑動(dòng)方法及其裝置,以解決含有較大運(yùn)動(dòng)的視頻圖像序列時(shí)搜索到最優(yōu)匹配塊的概率較低,壓縮率較低的問題。
[0011]本發(fā)明實(shí)施例提供了一種搜索窗的滑動(dòng)方法,包括:
[0012]針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0013]若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置;
[0014]當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。
[0015]本發(fā)明實(shí)施例提供了另一種搜索窗的滑動(dòng)方法,包括:
[0016]針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0017]若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,并基于滑動(dòng)后得到的搜索窗繼續(xù)搜索目標(biāo)匹配塊;
[0018]在當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,將滑動(dòng)后得到的搜索窗進(jìn)行固定滑動(dòng),得到當(dāng)前宏塊的下一宏塊的搜索窗。
[0019]本發(fā)明實(shí)施例提供了一種搜索窗的滑動(dòng)裝置,包括:
[0020]運(yùn)動(dòng)估計(jì)單元,用于針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0021]搜索窗確定單元,若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置;
[0022]搜索窗滑動(dòng)單元,當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。
[0023]本發(fā)明實(shí)施例提供了另一種搜索窗的滑動(dòng)裝置,包括:
[0024]運(yùn)動(dòng)估計(jì)單元,用于針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0025]搜索窗運(yùn)動(dòng)單元,用于若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,并基于滑動(dòng)后得到的搜索窗繼續(xù)搜索目標(biāo)匹配塊;
[0026]搜索窗滑動(dòng)單元,用于在當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,將滑動(dòng)后得到的搜索窗進(jìn)行固定滑動(dòng),得到當(dāng)前宏塊的下一宏塊的搜索窗。
[0027]本發(fā)明實(shí)施例采用針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置的方法,避免了對含有較大運(yùn)動(dòng)的視頻圖像序列搜索窗只能固定滑動(dòng),可能無法搜索到目標(biāo)匹配塊的問題,提高了搜索到目標(biāo)匹配塊的概率和視頻壓縮率。
【專利附圖】
【附圖說明】
[0028]圖1為【背景技術(shù)】中理想情況下搜索窗的大?。?br>
[0029]圖2為【背景技術(shù)】中進(jìn)行垂直高度限制的搜索窗大小及移動(dòng)方向;
[0030]圖3為【背景技術(shù)】中進(jìn)行垂直高度限制和水平寬度限制的搜索窗大小及移動(dòng)方向;
[0031]圖4為本發(fā)明實(shí)施例中一種搜索窗的滑動(dòng)方法的流程示意圖;
[0032]圖5為本發(fā)明實(shí)施例中以菱形搜索算法為例確定當(dāng)前宏塊的目標(biāo)匹配塊的示意圖;
[0033]圖6為本發(fā)明實(shí)施例根據(jù)搜索到部分?jǐn)?shù)據(jù)位于搜索窗垂直方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置的不意圖;
[0034]圖7為本發(fā)明實(shí)施例根據(jù)搜索到部分?jǐn)?shù)據(jù)位于搜索窗水平方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置的不意圖;
[0035]圖8為本發(fā)明實(shí)施例根據(jù)搜索到部分?jǐn)?shù)據(jù)位于搜索窗垂直方向之外的待匹配塊和搜索到部分?jǐn)?shù)據(jù)位于搜索窗水平方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置的不意圖;
[0036]圖9為本發(fā)明實(shí)施例確定當(dāng)前宏塊的目標(biāo)匹配塊的搜索方法流程示意圖;
[0037]圖10為本發(fā)明實(shí)施例下一宏塊是第一列宏塊時(shí),確定下一宏塊的搜索窗的位置的方法流程示意圖;
[0038]圖11為本發(fā)明實(shí)施例判斷搜索窗滑動(dòng)方法的流程示意圖;
[0039]圖12為本發(fā)明實(shí)施例中另一種搜索窗的滑動(dòng)方法的流程示意圖;
[0040]圖13為本發(fā)明實(shí)施例中另一種搜索窗的滑動(dòng)的具體方法的流程示意圖;
[0041]圖14為本發(fā)明實(shí)施例中一種搜索窗的滑動(dòng)裝置的示意圖;
[0042]圖15為本發(fā)明實(shí)施例中含有搜索窗數(shù)據(jù)讀取單元的一種搜索窗的滑動(dòng)裝置的示意圖;
[0043]圖16為本發(fā)明實(shí)施例中另一種搜索窗的滑動(dòng)裝置的示意圖;
[0044]圖17為本發(fā)明實(shí)施例中含有參考數(shù)據(jù)讀取單元另一種搜索窗的滑動(dòng)裝置的示意圖。
【具體實(shí)施方式】
[0045]本發(fā)明實(shí)施例采用了針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置的方法。由于采用這種方法可以使搜索窗根據(jù)視頻數(shù)據(jù)向各個(gè)方向進(jìn)行滑動(dòng),從而提高了含有較大運(yùn)動(dòng)的視頻圖像序列搜索到目標(biāo)匹配塊的概率,并提高了含有較大運(yùn)動(dòng)的視頻圖像序列的壓縮率。
[0046]本發(fā)明實(shí)施例中目標(biāo)匹配塊是指當(dāng)前幀中當(dāng)前宏塊在參考幀的搜索窗范圍內(nèi),搜索到的與其匹配誤差最小的待匹配塊,也就是當(dāng)前幀的當(dāng)前宏塊對應(yīng)的目標(biāo)匹配塊。
[0047]下面結(jié)合說明書附圖對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
[0048]如圖4所示,本發(fā)明實(shí)施例中一種搜索窗的滑動(dòng)方法包括下列步驟:
[0049]步驟401:針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0050]步驟402:若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置;
[0051]步驟403:當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。
[0052]較佳地,步驟401具體包括:確定搜索窗范圍內(nèi)搜索的起始匹配塊,若搜索窗范圍內(nèi)沒有匹配的待匹配塊,則將搜索窗中央的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊;
[0053]若搜索窗范圍內(nèi)較有可能的待匹配塊的個(gè)數(shù)不少于一個(gè),則將與當(dāng)前宏塊匹配誤差最小的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊。
[0054]較佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六邊形搜索算法,三步法,新三步法,四步法等搜索算法。
[0055]以菱形搜索算法為例,如圖5所示,為本發(fā)明實(shí)施例確定當(dāng)前宏塊的目標(biāo)匹配塊的方法。
[0056]圖中實(shí)線區(qū)域?yàn)楫?dāng)前宏塊的搜索窗的范圍,設(shè)待匹配塊I為起始匹配塊,以待匹配塊I為中心的周圍4個(gè)標(biāo)記的待匹配塊為搜索算法的搜索范圍,將待匹配塊I和周圍4個(gè)標(biāo)記的待匹配塊分別與當(dāng)前宏塊進(jìn)行比較,找出與當(dāng)前宏塊匹配誤差最小的待匹配塊;若待匹配塊I為匹配誤差最小的待匹配塊,則認(rèn)為待匹配塊I為當(dāng)前宏塊的目標(biāo)匹配塊。
[0057]若周圍4個(gè)標(biāo)記的待匹配塊的其中一個(gè)待匹配塊為誤差最小的待匹配塊,則將該待匹配塊作為中心,并重復(fù)待匹配塊I的搜索過程;以待匹配塊I上方的標(biāo)記為2的待匹配塊為該搜索范圍內(nèi)的匹配誤差最小的待匹配塊為例,將待匹配塊2作為下一搜索范圍的中心,將待匹配塊2以及其周圍的4個(gè)標(biāo)記的待匹配塊分別與當(dāng)前宏塊進(jìn)行比較,找出與當(dāng)前宏塊匹配誤差最小的待匹配塊,若作為搜索中心的待匹配塊2為匹配誤差最小的待匹配塊,則認(rèn)為待匹配塊2為當(dāng)前宏塊的目標(biāo)匹配塊,并結(jié)束搜索;若待匹配塊2周圍的4個(gè)標(biāo)記的待匹配塊的其中一個(gè)待匹配塊為誤差最小的待匹配塊,則將該匹配誤差最小的待匹配塊作為搜索中心繼續(xù)搜索匹配誤差最小的待匹配塊,直至作為搜索中心的待匹配塊是當(dāng)前宏塊匹配誤差最小的待匹配塊時(shí),結(jié)束搜索,并將該搜索中心的待匹配塊作為當(dāng)前宏塊的目標(biāo)匹配塊。
[0058]較佳地,步驟402具體包括:判斷在當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中,是否搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊;如果沒有,下一宏塊對應(yīng)的搜索窗水平向右滑動(dòng)一個(gè)宏塊;如果有,根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;
[0059]如果下一宏塊是第一列宏塊時(shí),判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則認(rèn)為該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量為0,將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
[0060]其中,幀間預(yù)測是指不是根據(jù)當(dāng)前的解碼圖像,而是從已解碼的參考圖像得到的預(yù)測值。幀間預(yù)測宏塊是指由幀間預(yù)測方法得到的宏塊。
[0061]宏塊的中心是指該宏塊的中心像素行與該宏塊的中心像素列的重疊部分的像素。
[0062]較佳地,根據(jù)第N次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗水平方向之外的待匹配塊和/或第M次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗垂直方向之外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;或根據(jù)第L次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;其中,M,N, L為正整數(shù)。
[0063]下面以上述菱形搜索算法搜索到的部分?jǐn)?shù)據(jù)在搜索窗外的待匹配塊X+1的位置為例,闡述本發(fā)明實(shí)施例確定下一宏塊的搜索窗的位置的方法,如圖6所示,為根據(jù)第N次搜索到部分?jǐn)?shù)據(jù)位于搜索窗垂直方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置,假設(shè)N為1,圖中實(shí)線部分為當(dāng)前宏塊的搜索窗,虛線部分為下一宏塊根據(jù)部分?jǐn)?shù)據(jù)在搜索窗外的待匹配塊X+1的位置確定的對應(yīng)的搜索窗:
[0064]在當(dāng)前宏塊的目標(biāo)匹配塊搜索過程中,讀取下一宏塊對應(yīng)搜索窗水平向右滑動(dòng)的一個(gè)宏塊列的參考數(shù)據(jù);當(dāng)前宏塊的目標(biāo)匹配塊已搜索完畢,待匹配塊X+1為當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中第一次搜索到的部分?jǐn)?shù)據(jù)在搜索窗垂直方向之外的待匹配塊,讀取第一次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗垂直方向外的待匹配塊的位置垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù),下一宏塊的搜索窗首先固定水平向右移動(dòng)一個(gè)宏塊列,再向垂直方向移動(dòng)S_dy個(gè)像素行。
[0065]其中,s_dy是整數(shù)。s_dy是搜索窗滑動(dòng)的垂直方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素。s_dy為正整數(shù)表示垂直向下滑動(dòng),O為垂直不滑動(dòng),負(fù)整數(shù)表示垂直向上滑動(dòng)。
[0066]如圖7所示,為根據(jù)第M次搜索到部分?jǐn)?shù)據(jù)位于搜索窗水平方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置,假設(shè)M為2,圖中實(shí)線部分為當(dāng)前宏塊的搜索窗,虛線部分為下一宏塊根據(jù)部分?jǐn)?shù)據(jù)在搜索窗外的待匹配塊Y+1的位置確定的對應(yīng)的搜索窗:
[0067]在當(dāng)前宏塊的目標(biāo)匹配塊搜索過程中,讀取下一宏塊對應(yīng)搜索窗水平向右滑動(dòng)的一個(gè)宏塊列的參考數(shù)據(jù);當(dāng)前宏塊的目標(biāo)匹配塊已搜索完畢,待匹配塊Y+1為當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中第二次搜索到的部分?jǐn)?shù)據(jù)在搜索窗水平方向之外的待匹配塊,讀取第二次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗水平方向外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行的數(shù)據(jù),下一宏塊的搜索窗先固定水平向右移動(dòng)一個(gè)宏塊列后,再向水平方向移動(dòng)S_dx個(gè)像素行。
[0068]其中,s_dx是整數(shù)。s_dx是搜索窗滑動(dòng)的水平方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素。s_dx為正整數(shù)表示水平向右滑動(dòng),O為水平不滑動(dòng),負(fù)整數(shù)表示水平向左滑動(dòng)
[0069]如圖8所示,為根據(jù)第N次搜索到部分?jǐn)?shù)據(jù)位于搜索窗垂直方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置和第M次搜索到部分?jǐn)?shù)據(jù)位于搜索窗水平方向之外的待匹配塊確定下一宏塊對應(yīng)的搜索窗的位置,假設(shè)N為2,M為I ;圖中實(shí)線部分為當(dāng)前宏塊的搜索窗,虛線部分為下一宏塊根據(jù)部分?jǐn)?shù)據(jù)在搜索窗水平方向外的待匹配塊Z+2和部分?jǐn)?shù)據(jù)在搜索窗垂直方向外的待匹配塊T+1的位置確定的對應(yīng)的搜索窗:
[0070]在當(dāng)前宏塊的目標(biāo)匹配塊搜索過程中,讀取下一宏塊對應(yīng)搜索窗水平向右滑動(dòng)的一個(gè)宏塊列的參考數(shù)據(jù);當(dāng)前宏塊的目標(biāo)匹配塊已搜索完畢,待匹配塊Z+2為當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中第一次搜索到的部分?jǐn)?shù)據(jù)在搜索窗水平方向之外的待匹配塊,待匹配塊T+1為當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中第二次搜索到的部分?jǐn)?shù)據(jù)在搜索窗垂直方向之外的待匹配塊,讀取第一次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗水平方向外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行的數(shù)據(jù),以及讀取第二次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗垂直方向外的待匹配塊的位置垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù),下一宏塊的搜索窗先固定水平向右移動(dòng)一個(gè)宏塊列后,向水平方向移動(dòng)s_dx個(gè)像素行,再向垂直方向移動(dòng)s_dy個(gè)像素行,然后讀取下一宏塊的搜索窗與當(dāng)前宏塊的搜索窗不重合部分的參考數(shù)據(jù)。其中,下一宏塊的搜索窗也可以先固定水平向右移動(dòng)一個(gè)宏塊列后,向垂直方向移動(dòng)s_dy個(gè)像素行,再向水平方向移動(dòng)s_dx個(gè)像素行。
[0071]其中,s_dX、s_dy是整數(shù)。s_dx是搜索窗滑動(dòng)的水平方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素,s_dy是搜索窗滑動(dòng)的垂直方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素。s_dx為正整數(shù)表示水平向右滑動(dòng),O為水平不滑動(dòng),負(fù)整數(shù)表示水平向左滑動(dòng);s_dy為正整數(shù)表示垂直向下滑動(dòng),O為垂直不滑動(dòng),負(fù)整數(shù)表示垂直向上滑動(dòng)。
[0072]其中,還可以根據(jù)第L次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置,在當(dāng)前宏塊的目標(biāo)匹配塊搜索過程中,讀取下一宏塊對應(yīng)搜索窗水平向右滑動(dòng)的一個(gè)宏塊列的參考數(shù)據(jù);當(dāng)前宏塊的目標(biāo)匹配塊已搜索完畢,待匹配塊S+1為當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中第L次搜索到的部分?jǐn)?shù)據(jù)在搜索窗之外的待匹配塊,讀取待匹配塊S+1所在像素行或像素列的數(shù)據(jù),下一宏塊的搜索窗固定水平向右移動(dòng)一個(gè)宏塊列后,再向待匹配塊S+1所在像素行或像素列移動(dòng)s_dn個(gè)像素行或像素列。
[0073]其中,s_dn是整數(shù)。s_dn是搜索窗根據(jù)搜索窗之外的待匹配塊水平方向或垂直方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素。s_dn為正整數(shù)表示水平向右或垂直向上滑動(dòng),O為水平不滑動(dòng),負(fù)整數(shù)表示水平向左或垂直向下滑動(dòng)。
[0074]在實(shí)施中,步驟402中,若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,還包括:
[0075]判斷搜索目標(biāo)匹配塊的過程中,搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值;若不大于設(shè)定的閾值,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定的當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置;
[0076]若搜索窗滑動(dòng)的次數(shù)大于設(shè)定的閾值,確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置為當(dāng)前宏塊對應(yīng)的搜索窗水平向右滑動(dòng)一個(gè)宏塊的位置。
[0077]較佳地,步驟402中,如果當(dāng)前宏塊的下一宏塊處于宏塊行的第一列時(shí),則根據(jù)下列方法確定當(dāng)前宏塊的下一宏塊的搜索窗:
[0078]判斷搜索窗根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置的滑動(dòng)次數(shù)是否大于的閾值;如果大于設(shè)定的閾值,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心;如果不大于設(shè)定的閾值,則根據(jù)第一列的宏塊周圍是否有幀間預(yù)測宏塊確定搜索窗的位置。[0079]如果當(dāng)前宏塊的下一宏塊為當(dāng)前幀的第一宏塊行的第一個(gè)宏塊時(shí),當(dāng)前宏塊的下一宏塊周圍不會出現(xiàn)幀間預(yù)測宏塊,可直接設(shè)定當(dāng)前宏塊的搜索窗中心與當(dāng)前宏塊的中心重疊。
[0080]若當(dāng)前宏塊的下一宏塊為第一列宏塊,且其周圍有幀間預(yù)測宏塊,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置:
[0081 ] s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?l:-1))/(s_dx*4))*s_dx ;
[0082]s_oy= ((mvp_y+(s_dy*2)*(mvp_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0083]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的X方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的I方向的偏移值,s_ox與s_oy的計(jì)數(shù)單位為整像素;
[0084]mvp_x是預(yù)測得到的水平運(yùn)動(dòng)矢量;mvp_y是預(yù)測得到的垂直運(yùn)動(dòng)矢量,mvp_x和mvp_y的計(jì)數(shù)單位為1/4像素;
[0085]若該第一列宏塊的周圍沒有幀間預(yù)測宏塊,則判斷上一宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。根據(jù)上一宏塊行的部分或者全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量mv設(shè)置搜索窗的位置的方法如下:
[0086]s_ox=((mv平均_x+(s_dx*2)*(mv平均_χ>=0?1:-1))/(s_dx*4))*s_dx ;
[0087]s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0088]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的X方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的I方向的偏移值,s_ox與s_oy的計(jì)數(shù)單位為整像素;
[0089]mvTO_x是上一宏塊行部分或者全部幀間預(yù)測宏塊的水平平均運(yùn)動(dòng)矢量,mvTO_y是上一宏塊行部分或者全部幀間預(yù)測宏塊的垂直平均運(yùn)動(dòng)矢量,他們的計(jì)數(shù)單位為1/4像素,如果上一宏塊行部分或者全部區(qū)域里沒有幀間預(yù)測宏塊或上一宏塊行部分或者全部區(qū)域里的幀間預(yù)測宏塊的數(shù)量小于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,則認(rèn)為
均為 O。
[0090]較佳的,在搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊之后,暫停該宏塊的目標(biāo)匹配塊的搜索過程,確定部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊中的部分?jǐn)?shù)據(jù)的像素行和/或像素列,在下一宏塊對應(yīng)的搜索窗中讀取確定的所述的像素行和/或像素列,然后繼續(xù)該宏塊的目標(biāo)匹配塊的搜索過程;
[0091]或者在根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置之后,確定所述部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊中的部分?jǐn)?shù)據(jù)的像素行和/或像素列;在下一宏塊對應(yīng)的搜索窗中讀取確定的所述的像素行和/或像素列。
[0092]如圖9所示,為當(dāng)前宏塊的目標(biāo)匹配塊的具體搜索:
[0093]步驟901:判斷搜索窗范圍內(nèi)較有可能的待匹配塊的個(gè)數(shù)是否大于0,如果大于0,執(zhí)行步驟902,否則執(zhí)行步驟903 ;
[0094]步驟902:從較有可能的待匹配塊中找到與當(dāng)前宏塊匹配誤差最小的待匹配塊,將該待匹配塊作為搜索的起始匹配塊,執(zhí)行步驟904 ;
[0095]步驟903:將搜索窗中心的待匹配塊作為搜索的起始匹配塊,執(zhí)行步驟904 ;
[0096]步驟904:按照一定的搜索策略在搜索窗內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊,記錄下第一次部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊的信息。
[0097]較佳地,步驟904中,在搜索過程中,目標(biāo)匹配塊不包括部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊,若多次搜索到有部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊,可根據(jù)需要設(shè)定記錄任意一次部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊的位置。其中根據(jù)需要設(shè)定記錄任意一次部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊的位置包括但不限于下列方式:記錄任意一次部分?jǐn)?shù)據(jù)位于搜索窗水平方向之外的待匹配塊的位置,或記錄任意一次部分?jǐn)?shù)據(jù)位于搜索窗垂直方向之外的待匹配塊的位置,或記錄任意一次部分?jǐn)?shù)據(jù)位于搜索窗水平方向之外的待匹配塊的位置和任意一次部分?jǐn)?shù)據(jù)位于搜索窗垂直方向之外的待匹配塊的位置。
[0098]其中,步驟904也可以包括:按照一定的搜索策略在搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊,目標(biāo)匹配塊不包括部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊。如果在搜索過程中,多次搜索到有部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊,記錄下第一次部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊的信息,并讀取部分?jǐn)?shù)據(jù)超出搜索窗范圍的待匹配塊的相關(guān)信息。
[0099]圖10所示,為當(dāng)前宏塊的下一宏塊是第一列宏塊時(shí),確定下一宏塊的搜索窗的位置的具體步驟:
[0100]步驟1001:判斷根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置的滑動(dòng)次數(shù)是否大于設(shè)定的閾值,如果大于,則執(zhí)行步驟1002,否則執(zhí)行步驟1003 ;
[0101]步驟1002:將該位于第一列的宏塊,在參考幀中相同位置的待匹配塊的中心,作為的下一宏塊的搜索窗的中心,并結(jié)束本流程;
[0102]步驟1003:判斷下一宏塊周圍是否有幀間預(yù)測宏塊,如果有,執(zhí)行步驟1004 ;否則執(zhí)行步驟1005 ;
[0103]步驟1004:根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程;
[0104]步驟1005:判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,如果大于,則執(zhí)行步驟1006,否則,執(zhí)行步驟1002 ;
[0105]步驟1006:根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程。[0106]如圖11所示,本發(fā)明實(shí)施例判斷搜索窗滑動(dòng)方法具體包括下列步驟:
[0107]步驟1101:判斷當(dāng)前宏塊在搜索窗范圍內(nèi)的較有可能的待匹配塊的個(gè)數(shù)是否大于O ;如果大于O,執(zhí)行步驟1102 ;否則執(zhí)行步驟1103 ;
[0108]步驟1102:在較有可能的待匹配塊中找到與當(dāng)前宏塊最相似的匹配塊作為起始匹配塊,然后執(zhí)行步驟1104;
[0109]步驟1103:將搜索窗中央的待匹配塊作為起始匹配塊,然后執(zhí)行步驟1104 ;
[0110]步驟1104:按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊,然后執(zhí)行步驟1105 ;
[0111]步驟1105:判斷當(dāng)前宏塊是否為當(dāng)前宏塊行的最后一個(gè)宏塊,如果不是,執(zhí)行步驟1106,否則執(zhí)行步驟1107 ;
[0112]步驟1106:判斷當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中,是否有部分?jǐn)?shù)據(jù)在搜索窗外的待匹配塊,如果有執(zhí)行步驟1108,否則執(zhí)行步驟1109 ;
[0113]步驟1107:判斷根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置的次數(shù)是否大于的閾值;如果大于,執(zhí)行步驟1111,否則執(zhí)行步驟 1112 ;
[0114]步驟1108:判斷根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置的滑動(dòng)次數(shù)是否大于的閾值;如果大于,執(zhí)行步驟1109,否則執(zhí)行步驟1110 ;
[0115]步驟1109:當(dāng)前宏塊的搜索窗固定水平向右移動(dòng)一個(gè)宏塊列,得到下一宏塊對應(yīng)的搜索窗,并結(jié)束本流程;
[0116]步驟1110:根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程;
[0117]步驟1111:將在參考幀中與當(dāng)前宏塊的下一宏塊位置相同的待匹配塊作為的下一宏塊的搜索窗的中心,并結(jié)束本流程;
[0118]步驟1112:判斷下一宏塊周圍是否有幀間預(yù)測宏塊,如果有,執(zhí)行步驟1113,否則執(zhí)行步驟1114 ;
[0119]步驟1113:根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定下一宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程;
[0120]步驟1114:判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,如果大于,執(zhí)行步驟1115,否則,執(zhí)行步驟1111;
[0121]步驟1115:根據(jù)當(dāng)前宏塊行的部分或者全部幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量確定下一宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程。
[0122]較佳地,如當(dāng)前宏塊為當(dāng)前幀的第一個(gè)宏塊行的第一個(gè)宏塊時(shí),當(dāng)前宏塊周圍不會出現(xiàn)幀間預(yù)測宏塊,當(dāng)前宏塊的搜索窗的位置可根據(jù)當(dāng)前宏塊周圍沒有幀間預(yù)測宏塊的方法確定,也可直接設(shè)定當(dāng)前宏塊的搜索窗的中心與當(dāng)前宏塊在參考幀中相同位置的待匹配塊的中心重疊。
[0123]較佳地,步驟1107和步驟1109中,閾值的設(shè)定,可根據(jù)視頻圖像序列的內(nèi)容以及視頻編碼器性能進(jìn)行設(shè)定,如果含有頻繁運(yùn)動(dòng)的視頻圖像序列,閾值可以設(shè)定較大,如果是靜止的或運(yùn)動(dòng)較少的視頻圖像序列,閾值可以設(shè)定略??;如果視頻編碼器性能比較強(qiáng),則閾值可以也可以設(shè)定較大,否則可以設(shè)定略小。
[0124]如圖12所示,為本發(fā)明實(shí)施例另一種搜索窗的滑動(dòng)方法,該方法包括:
[0125]步驟1201:針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0126]步驟1202:若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,并基于滑動(dòng)后得到的搜索窗繼續(xù)搜索目標(biāo)匹配塊;
[0127]步驟1203:在當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,將滑動(dòng)后得到的搜索窗進(jìn)行固定滑動(dòng),得到當(dāng)前宏塊的下一宏塊的搜索窗。
[0128]較佳地,步驟1201具體包括:確定搜索窗范圍內(nèi)搜索的起始匹配塊,若搜索窗范圍內(nèi)沒有匹配的待匹配塊,則將搜索窗中央的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊;
[0129]若搜索窗范圍內(nèi)較有可能的待匹配塊的個(gè)數(shù)不少于一個(gè),則將與當(dāng)前宏塊匹配誤差最小的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊。
[0130]較佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六邊形搜索算法,三步法,新三步法,四步法等搜索算法。具體搜索算法如圖5所示,在此不再贅述。
[0131]較佳地,步驟1202具體包括:判斷在當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程中,是否搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊;如果沒有搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,在搜索到當(dāng)前宏塊的目標(biāo)匹配塊后,搜索窗水平向右滑動(dòng)一個(gè)宏塊作為下一宏塊的搜索窗的位置;
[0132]如果搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,則根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置使當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng),并基于滑動(dòng)后的窗口搜索當(dāng)前宏塊的目標(biāo)匹配塊,然后根據(jù)當(dāng)前宏塊搜索到目標(biāo)匹配塊時(shí)搜索窗的位置,水平向右滑動(dòng)一個(gè)宏塊列作為下一宏塊的搜索窗的位置。
[0133]如果當(dāng)前宏塊的下一宏塊是第一列宏塊時(shí),下一宏塊的搜索窗的位置的確定方法為:判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則認(rèn)為該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量為O,將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
[0134]其中,幀間預(yù)測是指不是根據(jù)當(dāng)前的解碼圖像,而是從已解碼的參考圖像得到的預(yù)測值。幀間預(yù)測宏塊是指由幀間預(yù)測方法得到的宏塊。
[0135]較佳地,當(dāng)前宏塊在搜索最優(yōu)匹配的過程中,如果搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,則判斷當(dāng)前宏塊的搜索窗根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置進(jìn)行滑動(dòng)的次數(shù)是否大于設(shè)定的閾值,若大于設(shè)定的閾值,則當(dāng)前宏塊的搜索窗不發(fā)生滑動(dòng),繼續(xù)在最后一次滑動(dòng)的搜索窗內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊;若不大于設(shè)定的閾值,根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置使當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng),并在滑動(dòng)后的搜索窗內(nèi)繼續(xù)搜索當(dāng)前宏塊的目標(biāo)匹配塊。當(dāng)前宏塊根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置進(jìn)行滑動(dòng)的方法,與圖6,圖7和圖8中搜索窗的滑動(dòng)方法類似,在此不再贅述。
[0136]較佳地,步驟1202中,如果當(dāng)前宏塊的下一宏塊處于宏塊行的第一列時(shí),則根據(jù)該第一列的宏塊周圍是否有幀間預(yù)測宏塊確定搜索窗的位置。
[0137]如果當(dāng)前宏塊的下一宏塊為第一宏塊行的第一個(gè)宏塊時(shí),下一宏塊周圍不會出現(xiàn)中貞間預(yù)測宏塊,可直接設(shè)定下一宏塊的搜索窗中心與下一宏塊在參考幀中相同位置的待匹配塊的中心重疊。
[0138]當(dāng)該第一列的宏塊周圍有幀間預(yù)測宏塊時(shí),根據(jù)下列公式確定對應(yīng)的搜索窗的位置:
[0139]s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?l:-1))/(s_dx*4))*s_dx ;
[0140]s_oy=((mvp_y+(s_dy*2)*(mvp_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0141]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的水平方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的垂直方向的偏移值,S_0X與s_oy的計(jì)數(shù)單位為整像素;
[0142]mvp_x是預(yù)測得到的水平運(yùn)動(dòng)矢量;mvp_y是預(yù)測得到的垂直運(yùn)動(dòng)矢量,mvp_x和mvp_y的計(jì)數(shù)單位為1/4像素;
[0143]當(dāng)該第一列的宏塊周圍沒有幀間預(yù)測宏塊時(shí),則判斷上一宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。根據(jù)上一宏塊行的部分或者全部的幀間預(yù)測宏塊的的平均運(yùn)動(dòng)矢量mv設(shè)置搜索窗的位置的方法如下:
[0144]s_ox=((mv平均_x+(s_dx*2)*(mv平均_χ>=0?1:-1))/(s_dx*4))*s_dx ;
[0145]s_oy= ((mv平均_y+(s_dy*2) * (mv平均_y>=0?l:-1)) / (s_dy*4)) *s_dy ;
[0146]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的X方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的I方向的偏移值,s_ox與s_oy的計(jì)數(shù)單位為整像素;
[0147]是上一宏塊行部分或者全部幀間預(yù)測宏塊的水平平均運(yùn)動(dòng)矢量, mv平均y是上一宏塊行部分或者全部幀間預(yù)測宏塊的垂直平均運(yùn)動(dòng)矢量,他們的計(jì)數(shù)單位為1/4像素,如果上一宏塊行部分或者全部區(qū)域里沒有幀間預(yù)測宏塊或上一宏塊行部分或者全部區(qū)域里的幀間預(yù)測宏塊的數(shù)量小于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,則認(rèn)為mvTO_x,
均為 O。
[0148]較佳的,當(dāng)前宏塊搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊之后,暫停當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程,確定部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊中的部分?jǐn)?shù)據(jù)的像素行和/或像素列,在搜索窗中讀取確定的所述的像素行和/或像素列,并對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng),然后繼續(xù)當(dāng)前宏塊的目標(biāo)匹配塊的搜索過程。
[0149]如圖13所示,本發(fā)明實(shí)施例另一種搜索窗的滑動(dòng)的具體方法:
[0150]步驟1301:判斷當(dāng)前宏塊在搜索窗范圍內(nèi)的較匹配的待匹配塊的個(gè)數(shù)是否大于O;如果大于,執(zhí)行步驟1302 ;否則執(zhí)行步驟1303 ;
[0151]步驟1302:在較匹配的待匹配塊中找到與當(dāng)前宏塊匹配誤差最小的匹配塊作為起始匹配塊,然后執(zhí)行步驟1304 ;
[0152]步驟1303:將搜索窗中央的待匹配塊作為起始匹配塊,然后執(zhí)行步驟1304 ;
[0153]步驟1304:按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊,然后執(zhí)行步驟1305 ;
[0154]步驟1305:判斷當(dāng)前宏塊是否搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊,若搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊,執(zhí)行步驟1306 ;若沒有搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊,執(zhí)行步驟1308 ;
[0155]步驟1306:判斷當(dāng)前宏塊按照部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊進(jìn)行滑動(dòng)的次數(shù)是否大于閾值,若大于閾值,則執(zhí)行步驟1307 ;若不大于閾值,則執(zhí)行步驟1308 ;
[0156]步驟1307:在當(dāng)前搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊,搜索完成后執(zhí)行步驟 1309 ;
[0157]步驟1308:根據(jù)搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,在滑動(dòng)后的搜索窗范圍內(nèi)繼續(xù)進(jìn)行當(dāng)前宏塊的目標(biāo)匹配塊的搜索,搜索完成后,執(zhí)彳了步驟1309 ;
[0158]步驟1309:判斷當(dāng)前宏塊的下一宏塊是否為第一列宏塊,若不是第一列宏塊,則執(zhí)行步驟1310 ;若是第一列宏塊,則執(zhí)行步驟1311 ;
[0159]步驟1310:在當(dāng)前宏塊的搜索窗的位置處,水平向右移動(dòng)一個(gè)宏塊列,得到當(dāng)前宏塊的下一宏塊的搜索窗,并結(jié)束本流程;
[0160]步驟1311:判斷下一宏塊周圍是否有幀間預(yù)測宏塊,如果有,執(zhí)行步驟1312,否則執(zhí)行步驟1313 ;
[0161]步驟1312:根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定下一宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程;
[0162]步驟1313:判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,如果大于,執(zhí)行步驟1314,否則,執(zhí)行步驟1315;
[0163]步驟1314:根據(jù)當(dāng)前宏塊所在宏塊行的部分或者全部幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量確定下一宏塊對應(yīng)的搜索窗的位置,并結(jié)束本流程;
[0164]步驟1315:將在參考幀中與當(dāng)前宏塊的下一宏塊位置相同的待匹配塊作為的下一宏塊的搜索窗的中心,并結(jié)束本流程。
[0165]較佳地,如當(dāng)前宏塊的下一宏塊為第一個(gè)宏塊行的第一個(gè)宏塊時(shí),當(dāng)前宏塊周圍不會出現(xiàn)幀間預(yù)測宏塊,當(dāng)前宏塊的下一宏塊的搜索窗的位置可根據(jù)當(dāng)前宏塊周圍沒有幀間預(yù)測宏塊的方法確定,也可直接設(shè)定當(dāng)前宏塊的下一宏塊的搜索窗的中心與下一宏塊對應(yīng)的參考幀中相同位置的待匹配塊的中心重疊。
[0166]較佳地,步驟1306中,閾值的設(shè)定,可根據(jù)視頻圖像序列的內(nèi)容以及視頻編碼器性能進(jìn)行設(shè)定,如果含有頻繁運(yùn)動(dòng)的視頻圖像序列,閾值可以設(shè)定較大,如果是靜止的或運(yùn)動(dòng)較少的視頻圖像序列,閾值可以設(shè)定略小;如果視頻編碼器性能比較強(qiáng),則閾值可以也可以設(shè)定較大,否則可以設(shè)定略小。[0167]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種搜索窗的滑動(dòng)裝置,由于該裝置解決問題的原理與本發(fā)明實(shí)施例搜索窗的滑動(dòng)方法相似,因此該裝置的實(shí)施可以參見方法的實(shí)施,重復(fù)之處不再贅述。
[0168]如圖14所示,本發(fā)明實(shí)施例一種搜索窗的滑動(dòng)裝置包括:運(yùn)動(dòng)估計(jì)單元1401、搜索窗確定單元1402和搜索窗滑動(dòng)單元1403。
[0169]運(yùn)動(dòng)估計(jì)計(jì)算單元1401,用于針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0170]搜索窗確定單元1402,用于若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置;
[0171]搜索窗滑動(dòng)單元1403:當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。
[0172]較佳地,運(yùn)動(dòng)估計(jì)計(jì)算單元1401具體用于:確定搜索窗范圍內(nèi)搜索的起始匹配塊,若搜索窗范圍內(nèi)沒有較有可能的待匹配塊,則將搜索窗中央的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊;其中,目標(biāo)匹配塊是指當(dāng)前幀中當(dāng)前宏塊在參考幀的搜索窗范圍內(nèi),搜索到的與其匹配誤差最小的待匹配塊,也就是當(dāng)前幀的當(dāng)前宏塊對應(yīng)的最優(yōu)匹配塊。
[0173]若搜索窗范圍內(nèi)較有可能的待匹配塊的個(gè)數(shù)不少于一個(gè),則將與當(dāng)前宏塊最相似的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊。
[0174]較佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六邊形搜索算法,三步法,新三步法,四步法等搜索算法。
[0175]較佳地,搜索窗確定單元1402具體用于:如果下一宏塊是除第一列宏塊之外的其他宏塊時(shí),判斷在當(dāng)前宏塊的最優(yōu)匹配塊的搜索過程中,是否搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊;如果沒有,下一宏塊對應(yīng)的搜索窗固定水平向右滑動(dòng)一個(gè)宏塊列;如果有,根據(jù)預(yù)先設(shè)定將第N次確定對應(yīng)的搜索區(qū)域中的有部分待匹配塊位于所述搜索窗之外,根據(jù)第N次搜索到的位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;其中,N為正整數(shù)。
[0176]如果下一宏塊是第一列宏塊時(shí),判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊平均運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則認(rèn)為該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量為0,將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
[0177]其中,幀間預(yù)測是指不是根據(jù)當(dāng)前的解碼圖像,而是從已解碼的參考圖像得到的預(yù)測值。
[0178]幀間預(yù)測宏塊是指由幀間預(yù)測方法得到的宏塊。[0179]較佳地,根據(jù)第N次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗水平方向之外的待匹配塊和/或第M次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗垂直方向之外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;或根據(jù)第L次搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;其中,M,N, L為正整數(shù)。
[0180]較佳地,搜索窗確定單元1402還可以用于:如果下一宏塊是除第一列宏塊之外的其他宏塊,且在當(dāng)前宏塊的最優(yōu)匹配塊的搜索過程中搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,判斷根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置確定下一宏塊對應(yīng)的搜索窗除默認(rèn)向右滑動(dòng)一個(gè)宏塊外的滑動(dòng)次數(shù)是否大于的閾值,如果大于設(shè)定的閾值,則下一宏塊對應(yīng)的搜索窗固定水平向右移動(dòng)一個(gè)宏塊列;如果不大于設(shè)定的閾值,則根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置。
[0181]較佳地,搜索窗確定單元1402還可以用于:如果下一宏塊是第一列宏塊,判斷根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置確定下一宏塊對應(yīng)的搜索窗除默認(rèn)向右滑動(dòng)一個(gè)宏塊外的滑動(dòng)次數(shù)是否大于的閾值;如果大于設(shè)定的閾值,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心;如果不大于設(shè)定的閾值,則根據(jù)第一列的宏塊周圍是否有幀間預(yù)測宏塊確定搜索窗的位置。
[0182]較佳地,如果當(dāng)前宏塊的下一宏塊為的第一宏塊行的第一個(gè)宏塊時(shí),下一宏塊的搜索窗的中心與下一宏塊在參考幀中相同位置的待匹配塊的中心重疊。 [0183]較佳地,搜索窗確定單元1402中,若該第一列宏塊的周圍有幀間預(yù)測宏塊,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置:
[0184]s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?l:-1))/(s_dx*4))*s_dx ;
[0185]s_oy=((mvp_y+(s_dy*2)*(mvp_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0186]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的X方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的I方向的偏移值,s_ox與s_oy的計(jì)數(shù)單位為整像素;
[0187]mvp_x是預(yù)測得到的水平運(yùn)動(dòng)矢量;mvp_y是預(yù)測得到的垂直運(yùn)動(dòng)矢量,mvp_x和mvp_y的計(jì)數(shù)單位為1/4像素;
[0188]s_dx是搜索窗滑動(dòng)的水平方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素;s_dy是搜索窗滑動(dòng)的垂直方向步長,可根據(jù)需要設(shè)定為任意整數(shù)值,較佳的可以選擇8像素、12像素或者16像素。
[0189]較佳地,搜索窗確定單元1402中,若該第一列宏塊的周圍沒有幀間預(yù)測宏塊,則判斷上一宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。根據(jù)上一宏塊行的部分或者全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量mv設(shè)置搜索窗的位置的方法如下:
[0190]s_ox=((mv平均_x+(s_dx*2)*(mv平均_χ>=0?1:-1))/(s_dx*4))*s_dx ;
[0191]s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0192]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的X方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的I方向的偏移值,s_ox與s_oy的計(jì)數(shù)單位為整像素;
[0193]mvTO_x是上一宏塊行部分或者全部幀間預(yù)測宏塊的水平平均運(yùn)動(dòng)矢量,mvTO_y是上一宏塊行部分或者全部幀間預(yù)測宏塊的垂直平均運(yùn)動(dòng)矢量,他們的計(jì)數(shù)單位為1/4像素,如果上一宏塊行部分或者全部區(qū)域里沒有幀間預(yù)測宏塊或上一宏塊行部分或者全部區(qū)域里的幀間預(yù)測宏塊的數(shù)量小于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,則認(rèn)為mvTO_x,
均—y均為O ;
[0194]s_dx是搜索窗滑動(dòng)的水平方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素;s_dy是搜索窗滑動(dòng)的垂直方向步長,可根據(jù)需要設(shè)定為任意整數(shù)值,較佳的可以選擇8像素、12像素或者16像素。
[0195]較佳的,如圖15所示,搜索窗的滑動(dòng)裝置還包括搜索窗數(shù)據(jù)讀取單元1504。
[0196]搜索窗數(shù)據(jù)讀取單元1504具體用于:讀取當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗按照預(yù)先設(shè)定的滑動(dòng)方式進(jìn)行固定滑動(dòng)的宏塊行和/或宏塊列的數(shù)據(jù),并讀取搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù)。
[0197]下一宏塊不是第一列宏塊時(shí),在當(dāng)前宏塊的最優(yōu)匹配塊的搜索過程中,讀取搜索窗水平向右一個(gè)宏塊的參考數(shù)據(jù);當(dāng)前宏塊的最優(yōu)匹配塊的搜索過程結(jié)束后,如果在之前水平向右滑動(dòng)一個(gè)宏塊列的基礎(chǔ)上有其他滑動(dòng),則再讀取下一宏塊對應(yīng)搜索窗數(shù)據(jù)。
[0198]下一宏塊是第一列宏塊時(shí),則根據(jù)預(yù)先設(shè)定的方法確定下一宏塊對應(yīng)搜索窗位置后,再緊急讀取下一宏塊對應(yīng)的搜索窗的參考數(shù)據(jù)。
[0199]如圖16所示,本發(fā)明實(shí)施例另一種搜索窗的滑動(dòng)裝置包括:運(yùn)動(dòng)估計(jì)單元1601、搜索窗運(yùn)動(dòng)單元1602、搜索窗滑動(dòng)單元1603。
[0200]運(yùn)動(dòng)估計(jì)單元1601,用于針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊;
[0201]搜索窗運(yùn)動(dòng)單元1602,用于若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,并基于滑動(dòng)后得到的搜索窗繼續(xù)搜索目標(biāo)匹配塊;
[0202]搜索窗滑動(dòng)單元1603,用于在當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,將滑動(dòng)后得到的搜索窗進(jìn)行固定滑動(dòng),得到當(dāng)前宏塊的下一宏塊的搜索窗。
[0203]較佳地,運(yùn)動(dòng)估計(jì)單元1601具體用于:確定搜索窗范圍內(nèi)搜索的起始匹配塊,若搜索窗范圍內(nèi)沒有較有可能的待匹配塊,則將搜索窗中央的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊;
[0204]若搜索窗范圍內(nèi)較有可能的待匹配塊的個(gè)數(shù)不少于一個(gè),則將與當(dāng)前宏塊最相似的待匹配塊作為起始匹配塊,然后按照一定的搜索策略在當(dāng)前宏塊對應(yīng)的搜索窗范圍內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊。
[0205]較佳地,搜索策略可以采用不同的搜索算法,搜索算法可以包括但不限于:菱形搜索算法,六邊形搜索算法,三步法,新三步法,四步法等搜索算法。
[0206]較佳地,搜索窗運(yùn)動(dòng)單元1602具體用于:判斷在當(dāng)前宏塊的最優(yōu)匹配塊的搜索過程中,是否搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊;如果沒有搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,在搜索到當(dāng)前宏塊的最優(yōu)匹配塊后,且下一宏塊不是第一列宏塊時(shí),搜索窗水平向右滑動(dòng)一個(gè)宏塊作為下一宏塊的搜索窗的位置;
[0207]如果搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,則根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置使當(dāng)前宏塊對應(yīng)的搜索窗進(jìn)行滑動(dòng),并繼續(xù)搜索當(dāng)前宏塊的目標(biāo)匹配塊,然后根據(jù)當(dāng)前宏塊搜索到目標(biāo)匹配塊時(shí)搜索窗的位置,搜索窗水平向右滑動(dòng)一個(gè)宏塊作為下一宏塊的搜索窗的位置,其中下一宏塊不是第一列宏塊。
[0208]如果下一宏塊是第一列宏塊時(shí),下一宏塊的搜索窗的位置的確定方法為:判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則認(rèn)為該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量為0,將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
[0209]其中,幀間預(yù)測是指不是根據(jù)當(dāng)前的解碼圖像,而是從已解碼的參考圖像得到的預(yù)測值。幀間預(yù)測宏塊是指由幀間預(yù)測方法得到的宏塊。
[0210]幀間 預(yù)測宏塊是指由幀間預(yù)測方法得到的宏塊。
[0211]其中,若搜索到部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊,則判斷當(dāng)前宏塊的搜索窗根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置進(jìn)行滑動(dòng)的次數(shù)是否大于設(shè)定的閾值,若大于設(shè)定的閾值,則當(dāng)前宏塊的搜索窗不發(fā)生滑動(dòng),繼續(xù)在最后一次滑動(dòng)的搜索窗內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊;若不大于設(shè)定的閾值,根據(jù)搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的匹配塊的位置使當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng),并在滑動(dòng)后的搜索窗內(nèi)繼續(xù)搜索當(dāng)前宏塊的目標(biāo)匹配塊。當(dāng)前宏塊根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置進(jìn)行滑動(dòng)的方法,與圖6,圖7和圖8中搜索窗的滑動(dòng)方法類似,在此不再贅述。
[0212]較佳地,搜索窗運(yùn)動(dòng)算單元1602還可以用于:如果當(dāng)前宏塊的下一宏塊為的第一宏塊行的第一個(gè)宏塊時(shí),下一宏塊的搜索窗的中心與下一宏塊在參考幀中相同位置的待匹配塊的中心重疊。
[0213]如果下一宏塊是第一列宏塊,判斷第一列的宏塊周圍是否有幀間預(yù)測宏塊確定搜索窗的位置。
[0214]若下一宏塊周圍有幀間預(yù)測宏塊,則按照下列公式根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置:
[0215]s_ox=((mvp_x+(s_dx*2)*(mvp_x>=0?l:-1))/(s_dx*4))*s_dx ;
[0216]s_oy= ((mvp_y+(s_dy*2)*(mvp_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0217]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的水平方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的垂直方向的偏移值,S_0X與s_oy的計(jì)數(shù)單位為整像素;
[0218]mvp_x是預(yù)測得到的水平運(yùn)動(dòng)矢量;mvp_y是預(yù)測得到的垂直運(yùn)動(dòng)矢量,mvp_x和mvp_y的計(jì)數(shù)單位為1/4像素;
[0219]s_dx是搜索窗滑動(dòng)的水平方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素;s_dy是搜索窗滑動(dòng)的垂直方向步長,可根據(jù)需要設(shè)定為任意整數(shù)值,較佳的可以選擇8像素、12像素或者16像素。
[0220]若該第一列宏塊的周圍沒有幀間預(yù)測宏塊,則判斷上一宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。根據(jù)上一宏塊行的部分或者全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量mv設(shè)置搜索窗的位置的方法如下:
[0221]s_ox=((mv平均_x+(s_dx*2)*(mv平均_χ>=0?1:-1))/(s_dx*4))*s_dx ;
[0222]s_oy=((mv平均_y+(s_dy*2)*(mv平均_y>=0?l:-1))/(s_dy*4))*s_dy ;
[0223]其中,s_ox為搜索窗中心與當(dāng)前宏塊中心的X方向的偏移值;s_oy為搜索窗中心與當(dāng)前宏塊中心的I方向的偏移值,s_ox與s_oy的計(jì)數(shù)單位為整像素;
[0224]mvTO_x是上一宏塊行部分或者全部幀間預(yù)測宏塊的水平平均運(yùn)動(dòng)矢量,mvTO_y是上一宏塊行部分或者全部幀間預(yù)測宏塊的垂直平均運(yùn)動(dòng)矢量,他們的計(jì)數(shù)單位為1/4像素,如果上一宏塊行部分或者全部區(qū)域里沒有幀間預(yù)測宏塊,則認(rèn)為mv¥tt_x,mv¥tt_y均為O ;
[0225]s_dx是搜索窗滑動(dòng)的水平方向步長,可根據(jù)需要設(shè)定數(shù)值,較佳的可以選擇8像素、12像素或者16像素;s_dy是搜索窗滑動(dòng)的垂直方向步長,可根據(jù)需要設(shè)定為任意整數(shù)值,較佳的可以選擇8像素、12像素或者16像素。
[0226]較佳的,如圖17所示,搜索窗的滑動(dòng)裝置還包括參考數(shù)據(jù)讀取單元1704。
[0227]參考數(shù)據(jù)讀取單元1704具體用于:搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊后,讀取搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù)。
[0228]較佳地,在一個(gè)搜索窗滑動(dòng)裝置中可以同時(shí)包括搜索窗確定單元和搜索窗運(yùn)動(dòng)單元,搜索窗數(shù)據(jù)讀取單元和參考數(shù)據(jù)讀取單元;當(dāng)搜索窗滑動(dòng)裝置采用根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置時(shí),搜索窗滑動(dòng)裝置使用搜索窗確定單元和搜索窗數(shù)據(jù)讀取單元;當(dāng)搜索窗滑動(dòng)裝置采用根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理時(shí),搜索窗滑動(dòng)裝置使用搜索窗運(yùn)動(dòng)單元和參考數(shù)據(jù)讀取單元。
[0229]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0230]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0231]這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0232]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0233]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
[0234]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種搜索窗的滑動(dòng)方法,其特征在于,該方法包括: 針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊; 若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置,并繼續(xù)在當(dāng)前搜索窗內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊; 當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置,包括: 根據(jù)第N次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗水平方向之外的待匹配塊和/或第M次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗垂直方向之外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置; 其中,M和N為正整數(shù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置,包括: 判斷搜索目標(biāo)匹配塊的過程中,搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值;若不大于設(shè)定的閾值,則根據(jù)部 分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置; 若搜索窗滑動(dòng)的次數(shù)大于設(shè)定的閾值,確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置為當(dāng)前宏塊對應(yīng)的搜索窗水平向右滑動(dòng)一個(gè)宏塊的位置。
4.如權(quán)利要求1所述的方法,其特征在于,根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置之后;根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理之前還包括: 讀取當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗按照預(yù)先設(shè)定的滑動(dòng)方式進(jìn)行固定滑動(dòng)的宏塊行和/或宏塊列的數(shù)據(jù),并讀取搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,包括: 確定當(dāng)前宏塊的搜索窗按照預(yù)先設(shè)定的滑動(dòng)方式進(jìn)行固定滑動(dòng),再根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列。
6.如權(quán)利要求1所述的方法,其特征在于,若所述當(dāng)前宏塊的下一宏塊為第一列的宏塊時(shí),根據(jù)下列方式確定下一宏塊對應(yīng)的搜索窗的位置: 針對一個(gè)位于第一列的宏塊,判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置; 否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
7.如權(quán)利要求6所述的方法,其特征在于,判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊之前,還包括: 判斷根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置的搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值; 若大于所述設(shè)定的閾值,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心; 否則,則執(zhí)行判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊的步驟。
8.一種搜索窗的滑動(dòng)方法,其特征在于,該方法包括: 針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊; 若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,并基于滑動(dòng)后得到的搜索窗繼續(xù)搜索目標(biāo)匹配塊; 在當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,將滑動(dòng)后得到的搜索窗進(jìn)行固定滑動(dòng),得到當(dāng)前宏塊的下一宏塊的搜索窗。
9.如權(quán)利要求8所述的方法,其特征在于,所述根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,包括: 根據(jù)第U次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗水平方向之外的待匹配塊和/或第V次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗垂直方向之外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理; 其中,U和V為正整數(shù)。
10.如權(quán)利要求8所述的方法,其特征在于,所述根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,包括: 判斷搜索目標(biāo)匹配塊的過程中,搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值,若不大于,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理;否貝U,不進(jìn)行搜索窗滑動(dòng)并繼續(xù)在當(dāng)前搜索窗內(nèi)搜索當(dāng)前宏塊對應(yīng)的目標(biāo)匹配塊。
11.如權(quán)利要求8所述的方法,其特征在于,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊之后;根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理之前,包括: 讀取搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù)。
12.如權(quán)利要求8所述的方法,其特征在于,若當(dāng)前宏塊的下一宏塊為第一列宏塊時(shí),根據(jù)下列方式確定第一列宏塊對應(yīng)的搜索窗的位置: 針對一個(gè)位于第一列的宏塊,判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置; 否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
13.一種搜索窗的滑動(dòng)裝置,其特征在于,該裝置包括: 運(yùn)動(dòng)估計(jì)單元,用于針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊; 搜索窗確定單元,若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置,并繼續(xù)在當(dāng)前搜索窗內(nèi)搜索當(dāng)前宏塊的目標(biāo)匹配塊; 搜索窗滑動(dòng)單元,當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,根據(jù)下一宏塊對應(yīng)的搜索窗的位置,對當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,得到下一宏塊對應(yīng)的搜索窗。
14.如權(quán)利要求13所述的裝置,其特征在于,所述搜索窗確定單元具體用于: 根據(jù)第N次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗水平方向之外的待匹配塊和/或第M次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗垂直方向之外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置; 其中,M和N為正整數(shù)。
15.如權(quán)利要求13所述的裝置,其特征在于,所述搜索窗確定單元還用于: 判斷確定搜索目標(biāo)匹配塊的過程中,搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值,若不大于,根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定下一宏塊對應(yīng)的搜索窗的位置;否貝U,確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置為當(dāng)前宏塊對應(yīng)的搜索窗水平向右滑動(dòng)一個(gè)宏塊的位置。
16.如權(quán)利要求13所述的裝置,其特征在于,所述裝置還包括搜索窗數(shù)據(jù)讀取單元,用于: 讀取當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗按照預(yù)先設(shè)定的滑動(dòng)方式進(jìn)行固定滑動(dòng)的宏塊行和/或宏塊列的數(shù)據(jù),并讀取搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù)。
17.如權(quán)利要求13所述的裝置,其特征在于,所述搜索窗滑動(dòng)單元,具體用于: 確定當(dāng)前宏塊的搜索窗按照預(yù)先設(shè)定的滑動(dòng)方式進(jìn)行固定滑動(dòng),再根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列。
18.如權(quán)利要求13所述的裝置,其特征在于,所述搜索窗確定單元還用于: 若當(dāng)前宏塊的下一宏塊為第一列的宏塊時(shí),判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置; 否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
19.如權(quán)利要求18所述的裝置,其特征在于,所述搜索窗確定單元具體用于: 若當(dāng)前宏塊的下一宏塊為第一列的宏塊時(shí),判斷根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置確定當(dāng)前宏塊的下一宏塊對應(yīng)的搜索窗的位置的搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值,若大于所述設(shè)定的閾值,將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心;否則,判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊。
20.一種搜索窗的滑動(dòng)裝置,其特征在于,該裝置包括: 運(yùn)動(dòng)估計(jì)單元,用于針對當(dāng)前幀中的當(dāng)前宏塊,在參考幀中確定對應(yīng)的搜索窗,在搜索窗的待匹配塊中搜索目標(biāo)匹配塊; 搜索窗運(yùn)動(dòng)單元,用于若搜索目標(biāo)匹配塊的過程中,搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理,并基于滑動(dòng)后得到的搜索窗繼續(xù)搜索目標(biāo)匹配塊; 搜索窗滑動(dòng)單元,用于在當(dāng)前宏塊的目標(biāo)匹配塊搜索完成后,將滑動(dòng)后得到的搜索窗進(jìn)行固定滑動(dòng),得到當(dāng)前宏塊的下一宏塊的搜索窗。
21.如權(quán)利要求20所述的裝置,其特征在于,所述搜索窗運(yùn)動(dòng)單元用于: 根據(jù)第U次搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗水平方向之外的待匹配塊和/或第V次搜索到部分?jǐn)?shù)據(jù)位于 所述搜索窗垂直方向之外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理; 其中,U和V為正整數(shù)。
22.如權(quán)利要求20所述的裝置,其特征在于,所述搜索窗運(yùn)動(dòng)單元,具體用于: 確定搜索目標(biāo)匹配塊的過程中,判斷搜索窗滑動(dòng)的次數(shù)是否大于設(shè)定的閾值,若不大于,則根據(jù)部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置對所述當(dāng)前宏塊的搜索窗進(jìn)行滑動(dòng)處理;否則,則在最后一次滑動(dòng)得到的搜索窗內(nèi)搜索當(dāng)前宏塊對應(yīng)的目標(biāo)匹配塊。
23.如權(quán)利要求20所述的裝置,其特征在于,該裝置還包括參考數(shù)據(jù)讀取單元,用于: 搜索到部分?jǐn)?shù)據(jù)位于所述搜索窗外的待匹配塊后,讀取搜索到的部分?jǐn)?shù)據(jù)位于搜索窗外的待匹配塊的位置水平滑動(dòng)設(shè)定的像素行和/或垂直滑動(dòng)設(shè)定的像素列的數(shù)據(jù)。
24.如權(quán)利要求20所述的裝置,其特征在于,所述搜索窗滑動(dòng)單元還用于: 若當(dāng)前宏塊的下一宏塊為第一列宏塊時(shí),判斷該位于第一列的宏塊周圍是否有幀間預(yù)測宏塊,如果有,則根據(jù)幀間預(yù)測宏塊的預(yù)測運(yùn)動(dòng)矢量確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;否則,判斷該位于第一列的宏塊的上一個(gè)宏塊行的部分或者全部區(qū)域的幀間預(yù)測宏塊的數(shù)量是否大于設(shè)定的幀間預(yù)測宏塊的數(shù)量的閾值,若大于,則根據(jù)該位于第一列的宏塊的上一個(gè)宏塊行的部分或全部的幀間預(yù)測宏塊的平均運(yùn)動(dòng)矢量,確定該位于第一列的宏塊對應(yīng)的搜索窗的位置;若不大于,則將該位于第一列的宏塊的中心作為該位于第一列的宏塊對應(yīng)的搜索窗的中心。
【文檔編號】H04N19/56GK103841427SQ201210494996
【公開日】2014年6月4日 申請日期:2012年11月27日 優(yōu)先權(quán)日:2012年11月27日
【發(fā)明者】蔡建華, 陶永耀 申請人:炬力集成電路設(shè)計(jì)有限公司