專利名稱:移動(dòng)預(yù)測(cè)方法及視頻編碼方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于視頻處理,特別是有關(guān)于視頻數(shù)據(jù)的編碼與移動(dòng)預(yù)測(cè)(motion prediction)0
背景技術(shù):
相較于過去的壓縮標(biāo)準(zhǔn),視頻處理之新的H. 264壓縮標(biāo)準(zhǔn)可以通過采取諸如次 像素(sub-pixel)精確度和多重參考的特性以在較低的數(shù)據(jù)比特率下提供良好的視頻質(zhì) 量。視頻壓縮過程一般可被分為5個(gè)次級(jí)步驟幀間移動(dòng)預(yù)測(cè)(inter-prediction)及幀 內(nèi)移動(dòng)予頁測(cè)(intra-prediction)、轉(zhuǎn)換(transform)及反轉(zhuǎn)換(inverse transform)、量化 (quantization)及反量化(inverse-quantization)、回路濾波(loop filter)、以及熵編 碼(entropy coding)。H. 264標(biāo)準(zhǔn)廣泛用于諸如藍(lán)光光盤(Blu-ray disc)、數(shù)字電視廣播 服務(wù)、直播衛(wèi)星電視服務(wù)、電纜電視(cable TV)服務(wù)、以及實(shí)時(shí)視頻通話等應(yīng)用中。一視頻數(shù)據(jù)流包括一系列的幀(frame)。每一幀被分割為多個(gè)編碼單元(例如宏 區(qū)塊(macro block)或延伸宏區(qū)塊(extended macro block))以供視頻編碼。每一編碼單 元可再被切割為多個(gè)分割,其中每一分割被稱為一預(yù)測(cè)單元。每一預(yù)測(cè)單元可再被分割為 多個(gè)子分割,其中每一子分割有一移動(dòng)參數(shù)。由于鄰近的區(qū)塊有相似的移動(dòng)向量,為了減少 移動(dòng)參數(shù)的數(shù)據(jù)傳輸量所導(dǎo)致的傳輸成本,通常會(huì)借著參考鄰近的已編碼區(qū)塊而計(jì)算出一 移動(dòng)向量預(yù)測(cè)值(Motion Vector I^redictor,MVP),藉此以增進(jìn)編碼效率。圖1為目前單元112及多個(gè)相鄰單元A、B、C、D的示意圖。目前幀102包括目前 單元112及多個(gè)候選單元A、B、C、D,而候選單元A、B、C、D鄰接于目前單元112。候選單元 A位于目前單元112的左側(cè),候選單元B位于目前單元112的上方,候選單元C位于目前單 元112的右上角,候選單元D位于目前單元112的左上角。一般而言,目前單元112的移動(dòng) 向量預(yù)測(cè)值是依據(jù)比較候選單元A、B、C的移動(dòng)向量并從中選擇一中間移動(dòng)向量而得。當(dāng)候 選單元C存在時(shí),候選單元A、B、C、D的移動(dòng)向量被比較以從中選取一中間移動(dòng)向量作為目 前單元112的移動(dòng)向量預(yù)測(cè)值。當(dāng)候選單元C不存在,候選單元A、B、D的移動(dòng)向量被比較 并從中選取一中間移動(dòng)向量作為目前單元112的移動(dòng)向量預(yù)測(cè)值。上述的移動(dòng)向量預(yù)測(cè)方法經(jīng)過稍微修改,可產(chǎn)生移動(dòng)向量競(jìng)爭法(Motion Vector Competition,MVC)以供進(jìn)行移動(dòng)預(yù)測(cè)。依據(jù)移動(dòng)向量競(jìng)爭法,較多個(gè)向量被包含于候選單 元集以供目前單元的移動(dòng)預(yù)測(cè),以增進(jìn)移動(dòng)預(yù)測(cè)的準(zhǔn)確度。舉例來說,候選單元集即可包含 目前單元112相鄰單元的移動(dòng)向量、以及位于參考幀104中與目前單元112同樣位置的同 位單元114(參考單元)的移動(dòng)向量。比特率失真度優(yōu)化(rate-distortion optimization)被用來自候選單元集選擇最終移動(dòng)向量預(yù)測(cè)值以供目前單元的移動(dòng)預(yù)測(cè)。目前單元的移動(dòng) 向量依據(jù)最終移動(dòng)向量預(yù)測(cè)值而預(yù)測(cè)。從候選單元集中選擇的最終移動(dòng)向量預(yù)測(cè)值的索引 被作為預(yù)測(cè)信息送至視頻譯碼器。圖2為移動(dòng)預(yù)測(cè)方法200的流程圖。首先,取得對(duì)應(yīng)于目前單元的多個(gè)候選單元 的多個(gè)移動(dòng)向量以供包含于候選單元集之中(步驟20幻。接著,包含于候選單元集的移動(dòng) 向量被互相比較。當(dāng)候選單元集中的該多個(gè)移動(dòng)向量不相等時(shí)(步驟204),自候選單元集 中選取一移動(dòng)向量預(yù)測(cè)值(步驟206),且依據(jù)該移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)目前單元的移動(dòng)向量 (步驟208)。最后,產(chǎn)生關(guān)于所選擇的移動(dòng)向量預(yù)測(cè)值的預(yù)測(cè)信息并在比特流中傳送(步 驟210)。當(dāng)候選單元集中的該多個(gè)移動(dòng)向量皆相等時(shí)(步驟204),依據(jù)候選單元集中任意 的移動(dòng)向量以預(yù)測(cè)目前單元的移動(dòng)向量(步驟212),且不產(chǎn)生關(guān)于該移動(dòng)向量預(yù)測(cè)值的預(yù) 測(cè)信息并在比特流中傳送。由于譯碼比特流過程中的不正確譯碼可能導(dǎo)致剖析錯(cuò)誤(parsing error)的產(chǎn) 生。當(dāng)視頻譯碼時(shí)若在語法剖析(syntax parsing)中發(fā)生剖析錯(cuò)誤,所有后續(xù)的視頻處理 都會(huì)連帶發(fā)生錯(cuò)誤直到系統(tǒng)偵測(cè)到下一個(gè)同步符元(synchronize symbol)為止。若幀間 熵編碼(inter-frame entropy coding)被運(yùn)用,則視頻剖析錯(cuò)誤會(huì)影響到后續(xù)的幀的處 理。例如,幀間熵編碼會(huì)運(yùn)用之前幀的移動(dòng)向量作為目前幀的移動(dòng)向量預(yù)測(cè)值,以達(dá)到編碼 增益的提升。同步符元,例如用來啟動(dòng)幀的重新處理的幀開始碼,有時(shí)并不會(huì)停止剖析錯(cuò)誤 的傳遞。上述的移動(dòng)向量競(jìng)爭法亦可能發(fā)生剖析錯(cuò)誤的傳遞。依據(jù)圖2的移動(dòng)向量競(jìng)爭 法200,當(dāng)候選向量集的移動(dòng)向量彼此相等時(shí),關(guān)于該移動(dòng)向量的預(yù)測(cè)信息不在比特流中傳 送。當(dāng)視頻數(shù)據(jù)流中缺乏移動(dòng)向量的預(yù)測(cè)信息時(shí),被送至視頻譯碼器的編碼視頻數(shù)據(jù)流的 數(shù)據(jù)量減少了。若譯碼器沒偵測(cè)到編碼視頻數(shù)據(jù)流中省略的數(shù)據(jù)而將編碼視頻數(shù)據(jù)流中后 續(xù)數(shù)據(jù)誤當(dāng)作移動(dòng)向量的預(yù)測(cè)信息進(jìn)行譯碼處理,則編碼視頻數(shù)據(jù)流中后續(xù)數(shù)據(jù)的譯碼工 作會(huì)發(fā)生錯(cuò)誤,且此剖析錯(cuò)誤會(huì)繼續(xù)傳遞于譯碼過程。先前幀譯碼過程的剖析錯(cuò)誤可能導(dǎo)致后續(xù)幀譯碼過程的剖析錯(cuò)誤。此稱之為剖析 錯(cuò)誤的傳遞。當(dāng)?shù)谝缓罄m(xù)幀運(yùn)用該先前幀為參考幀時(shí),第一后續(xù)幀的編碼過程運(yùn)用該先前 幀的編碼信息。若先前幀的譯碼過程發(fā)生錯(cuò)誤,由于對(duì)第一后續(xù)幀的譯碼過程需要該先前 幀的譯碼信息,先前幀的剖析錯(cuò)誤會(huì)傳遞至后續(xù)幀的譯碼過程。當(dāng)?shù)诙罄m(xù)幀運(yùn)用該第一 后續(xù)幀為參考幀時(shí),同樣地先前幀的剖析錯(cuò)誤亦會(huì)傳遞至第二后續(xù)幀的解碼過程。因此,剖 析錯(cuò)誤的傳遞會(huì)嚴(yán)重地影響視頻數(shù)據(jù)流的譯碼。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種移動(dòng)預(yù)測(cè)(motion prediction)方法,以解 決習(xí)知技術(shù)存在的問題。首先,取得多個(gè)移動(dòng)向量預(yù)測(cè)值(motion vector predictor)以供 包含于候選單元集之中,以供目前幀(current frame)的目前單元的移動(dòng)預(yù)測(cè)。接著,決定 是否該目前幀為不被其他幀參考以供移動(dòng)預(yù)測(cè)的非參考幀(non-reference frame)。接著, 當(dāng)該目前幀不是該非參考幀,將對(duì)應(yīng)于先前已編碼幀的所有移動(dòng)向量預(yù)測(cè)值自該候選單元 集中移除。最后,依據(jù)該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)該目前單元的移動(dòng)向量。本發(fā)明更提供一種移動(dòng)預(yù)測(cè)(motion prediction)方法。首先,取得多個(gè)移動(dòng)向 量預(yù)測(cè)值(motion vector predictor)以供包含于候選單元集之中,以供目前幀(currentframe)的目前單元的移動(dòng)預(yù)測(cè)。接著,比較該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值。接著, 當(dāng)該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值皆相等,選取至少一候補(bǔ)移動(dòng)向量預(yù)測(cè)值。接著, 將該候補(bǔ)移動(dòng)向量預(yù)測(cè)值增加至該候選單元集。最后,依據(jù)該候選單元集的該多個(gè)移動(dòng)向 量預(yù)測(cè)值預(yù)測(cè)該目前單元的移動(dòng)向量。本發(fā)明提供一種視頻編碼(video encoding)方法。首先,產(chǎn)生控制旗標(biāo)(control flag)以表示是否幀間熵編碼(inter-frame entropy coding)運(yùn)用于視頻數(shù)據(jù)流的一段落 (segment)。當(dāng)該控制旗標(biāo)表示該幀間熵編碼禁止被運(yùn)用時(shí),停止對(duì)該視頻數(shù)據(jù)流之該段落 進(jìn)行幀間熵編碼。當(dāng)該控制旗標(biāo)表示該幀間熵編碼允許被運(yùn)用時(shí),對(duì)該視頻數(shù)據(jù)流的該段 落進(jìn)行幀間熵編碼。本發(fā)明更提供一種視頻編碼(video encoding)方法。于一視頻數(shù)據(jù)流(video datastream)的一段落(segment)的一系列幀(frame)之間插入一系列的目標(biāo)幀。接著, 編碼該視頻數(shù)據(jù)流之該段落為比特流(bitstream)。其中該多個(gè)目標(biāo)幀非依據(jù)幀間熵編碼 (inter-frame entropy coding)進(jìn)行編碼,且編碼順序之后續(xù)幀不于編碼時(shí)參考該多個(gè)目 標(biāo)幀的之前幀。通過本發(fā)明防止了譯碼過程中剖析錯(cuò)誤傳遞的問題。為了讓本發(fā)明的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉數(shù)較佳實(shí) 施例,并配合所附圖示,作詳細(xì)說明如下。
圖1為目前單元及多個(gè)相鄰單元的示意圖;圖2為移動(dòng)預(yù)測(cè)方法的流程圖;圖3為依據(jù)本發(fā)明的視頻編碼器的區(qū)塊圖;圖4為依據(jù)本發(fā)明之可避免剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法的流程圖;圖5為依據(jù)本發(fā)明之可避免譯碼錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法的另一實(shí)施例的流程 圖;圖6為依據(jù)本發(fā)明之可防止剖析錯(cuò)誤傳遞的視頻譯碼方法的流程圖;圖7為依據(jù)本發(fā)明之可防止剖析錯(cuò)誤傳遞的視頻譯碼方法的另一實(shí)施例的流程 圖;圖8為依據(jù)本發(fā)明之可防止剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法的流程圖;圖9為依據(jù)本發(fā)明之可防止剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法的另一實(shí)施例的流程 圖。
具體實(shí)施例方式圖3為依據(jù)本發(fā)明的視頻編碼器300的區(qū)塊圖。于一實(shí)施例中,視頻編碼器300包 括移動(dòng)預(yù)測(cè)模塊302、減除模塊304、轉(zhuǎn)換模塊306、量化模塊308、以及熵編碼模塊(entropy coding module) 310。視頻編碼器300接收視頻輸入并產(chǎn)生數(shù)據(jù)流作為輸出。移動(dòng)預(yù)測(cè)模塊 302對(duì)視頻輸入進(jìn)行移動(dòng)預(yù)測(cè)以產(chǎn)生預(yù)測(cè)樣本及預(yù)測(cè)信息。減除模塊304接著將預(yù)測(cè)樣本 自視頻輸入減除以得到余數(shù),以將視頻輸入的數(shù)據(jù)量減少為余數(shù)的數(shù)據(jù)量。余數(shù)接著被送 至轉(zhuǎn)換模塊306及量化模塊308。轉(zhuǎn)換模塊306對(duì)余數(shù)進(jìn)行離散余弦轉(zhuǎn)換(DiscreteCosineTransformation, DCT)以得到轉(zhuǎn)換余數(shù)。量化模塊308接著量化(quantize)轉(zhuǎn)換余數(shù)以 得到量化余數(shù)。熵編碼模塊310接著對(duì)量化余數(shù)及預(yù)測(cè)信息進(jìn)行熵編碼以得到數(shù)據(jù)流作為 視頻輸出。圖4為依據(jù)本發(fā)明之可避免剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法400的流程圖。假設(shè) 移動(dòng)預(yù)測(cè)模塊302接收視頻輸入數(shù)據(jù)流之目前幀(current frame)的目前單元。首先, 決定供目前單元之移動(dòng)預(yù)測(cè)的移動(dòng)向量預(yù)測(cè)值(motion vectorpredictor)(步驟402)。 移動(dòng)向量預(yù)測(cè)值可來自位于目前幀的單元或先前已編碼幀的單元(時(shí)間方向(temporal direction)).移動(dòng)向量預(yù)測(cè)值可依固定規(guī)則決定或依動(dòng)態(tài)規(guī)則決定。舉例來說,移動(dòng)向 量競(jìng)爭法依據(jù)比特率失真度優(yōu)化(rate-distortion optimization, RD0)法自預(yù)定候選單 元集中選取最終移動(dòng)向量預(yù)測(cè)值。移動(dòng)預(yù)測(cè)模塊302決定是否目前幀為非參考幀(none referenceframe)(步驟404),其中該非參考幀不被其他幀的移動(dòng)預(yù)測(cè)所參考。于一實(shí)施例 中,移動(dòng)預(yù)測(cè)模塊302決定該目前幀的幀型態(tài)。當(dāng)該幀型態(tài)為非參考B型幀(B frame),移 動(dòng)預(yù)測(cè)模塊302決定該目前幀為該非參考幀,當(dāng)該幀型態(tài)為I型幀或P型幀,則決定該目前 幀不為該非參考幀。當(dāng)移動(dòng)預(yù)測(cè)模塊302決定該目前幀不是非參考幀,因?yàn)槟壳皫赡茏兂珊罄m(xù)幀的 參考幀,故目前幀于譯碼過程的剖析錯(cuò)誤可能會(huì)導(dǎo)致后續(xù)幀的剖析錯(cuò)誤。為了防止剖析錯(cuò) 誤傳遞,目前單元的移動(dòng)向量預(yù)測(cè)值不可由先前已編碼幀導(dǎo)出(步驟406)。于一實(shí)施例中, 將對(duì)應(yīng)于不在目前幀的同位單元(collocated unit)的所有移動(dòng)向量預(yù)測(cè)值皆自該候選單 元集中移除。換句話說,最終移動(dòng)向量預(yù)測(cè)值將會(huì)自僅包含目前幀之移動(dòng)向量預(yù)測(cè)值的候 選單元集中選出。候選單元集中的移動(dòng)向量預(yù)測(cè)值可為相鄰單元的移動(dòng)向量或由相鄰單元 的移動(dòng)向量中的一個(gè)或多個(gè)向量產(chǎn)生。因此,當(dāng)移動(dòng)預(yù)測(cè)模塊302依據(jù)候選單元集中的移 動(dòng)向量預(yù)測(cè)值預(yù)測(cè)目前單元的移動(dòng)向量時(shí),參考幀的剖析錯(cuò)誤將不會(huì)導(dǎo)致目前幀的目前單 元的剖析錯(cuò)誤。移動(dòng)預(yù)測(cè)模塊302接著依據(jù)候選單元集中的移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)目前單元的之 移動(dòng)向量。幀間熵編碼(inter-frame entropy coding)僅用來編碼非參考幀中的單元。以 剖析錯(cuò)誤動(dòng)態(tài)控制為例,幀層次之前置碼(syntax)用來控制是否啟動(dòng)幀間熵編碼。當(dāng)處理 非參考幀時(shí),幀間熵編碼可用來編碼或譯碼。反之,幀間熵編碼被關(guān)閉以防止剖析錯(cuò)誤的傳 遞。于其他實(shí)施例中,剖析錯(cuò)誤動(dòng)態(tài)控制方法可依據(jù)序列(sequence)層次之前置碼 (syntax)啟動(dòng)或關(guān)閉幀間熵編碼。舉例來說,當(dāng)在無錯(cuò)誤環(huán)境對(duì)視頻數(shù)據(jù)進(jìn)行編碼時(shí),編 碼器允許幀間熵編碼。然而,當(dāng)在有錯(cuò)誤環(huán)境對(duì)視頻數(shù)據(jù)進(jìn)行編碼時(shí),編碼器關(guān)閉幀間熵編 碼。譯碼器亦可依據(jù)序列層次之前置碼而動(dòng)態(tài)地啟動(dòng)或關(guān)閉幀間熵編碼。此外,剖析錯(cuò)誤 動(dòng)態(tài)控制方法亦可依據(jù)幀(frame)層次之前置碼啟動(dòng)或關(guān)閉幀間熵編碼。在處理非參考幀 時(shí)允許幀間熵編碼的上述實(shí)施例僅是基于序列層次之前置碼的剖析錯(cuò)誤動(dòng)態(tài)控制方法的 一個(gè)舉例。于一實(shí)施例中,候選單元集的移動(dòng)向量預(yù)測(cè)值已獲得。接著,比較該候選單元集中 的該多個(gè)移動(dòng)向量預(yù)測(cè)值(步驟408)。當(dāng)候選單元集中的該多個(gè)移動(dòng)向量預(yù)測(cè)值不相等 時(shí)(步驟410),自候選單元集中選取最終移動(dòng)向量預(yù)測(cè)值(步驟412),且依據(jù)該最終移動(dòng) 向量預(yù)測(cè)值預(yù)測(cè)目前單元的移動(dòng)向量(步驟414)。最后,產(chǎn)生關(guān)于該最終移動(dòng)向量預(yù)測(cè)值的預(yù)測(cè)信息并插入比特流以發(fā)送至對(duì)應(yīng)的視頻譯碼器(步驟416)。當(dāng)候選單元集中的該多 個(gè)移動(dòng)向量預(yù)測(cè)值皆相等時(shí)(步驟410),依據(jù)候選單元集中任意的移動(dòng)向量預(yù)測(cè)值以預(yù)測(cè) 目前單元的移動(dòng)向量(步驟418),而不產(chǎn)生關(guān)于移動(dòng)向量預(yù)測(cè)值的預(yù)測(cè)信息以送至視頻譯 碼器。圖5為依據(jù)本發(fā)明之可避免剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法500的另一實(shí)施例的 流程圖。假設(shè)移動(dòng)預(yù)測(cè)模塊302接收視頻數(shù)據(jù)流之目前幀(current frame)的目前單元, 且目前目前幀的目前單元的移動(dòng)向量由移動(dòng)向量競(jìng)爭所決定的最終移動(dòng)向量預(yù)測(cè)值所預(yù) 測(cè)。于一實(shí)施例中,于視頻輸入數(shù)據(jù)流的序列(sequence)層次決定一規(guī)則以供選擇候選單 元集,且最終移動(dòng)向量預(yù)測(cè)值由該候選單元集中依據(jù)比特率失真度優(yōu)化(rate-distortion optimization)法選取。此外,決定規(guī)則用來選取供目前單元之移動(dòng)預(yù)測(cè)的一至數(shù)個(gè)候選移 動(dòng)向量預(yù)測(cè)值。首先,移動(dòng)預(yù)測(cè)模塊302在候選單元集中獲得與目前單元對(duì)應(yīng)的移動(dòng)向量 預(yù)測(cè)值(步驟50 。移動(dòng)預(yù)測(cè)模塊302接著比較候選單元集中的該多個(gè)移動(dòng)向量預(yù)測(cè)值以 決定是否候選單元集中的該多個(gè)移動(dòng)向量預(yù)測(cè)值皆相等(步驟504)。若候選單元集中的移動(dòng)向量預(yù)測(cè)值皆相等,可于候選單元集中加入更多的移動(dòng)向 量預(yù)測(cè)值,以增加候選單元集中的移動(dòng)向量預(yù)測(cè)值的數(shù)目,從而為移動(dòng)預(yù)測(cè)模塊302提供 更多候選以用于當(dāng)前單元的移動(dòng)預(yù)測(cè)。因此,移動(dòng)預(yù)測(cè)模塊302選取至少一候補(bǔ)移動(dòng)向量 預(yù)測(cè)值以供增加至該候選單元集(步驟506),并自候選單元集中選取一最終移動(dòng)向量預(yù)測(cè) 值(步驟508)。移動(dòng)預(yù)測(cè)模塊302可同時(shí)增添超過一個(gè)候補(bǔ)移動(dòng)向量預(yù)測(cè)值至該候選單元 集,或是一次僅增添一個(gè)候補(bǔ)移動(dòng)向量預(yù)測(cè)值至該候選單元集。于一實(shí)施例中,移動(dòng)預(yù)測(cè)模 塊302依據(jù)固定順序選取候補(bǔ)移動(dòng)向量預(yù)測(cè)值。于一實(shí)施例中,移動(dòng)預(yù)測(cè)模塊302依據(jù)動(dòng) 態(tài)決定的順序選取候補(bǔ)移動(dòng)向量預(yù)測(cè)值。舉例來說,若候選單元集中的移動(dòng)向量預(yù)測(cè)值皆 相等,移動(dòng)預(yù)測(cè)模塊302選取第一候補(bǔ)移動(dòng)向量預(yù)測(cè)值以增加至該候選單元集,并比較第 一候補(bǔ)移動(dòng)向量預(yù)測(cè)值以及該候選單元集中的其他移動(dòng)向量預(yù)測(cè)值。若第一候補(bǔ)移動(dòng)向量 預(yù)測(cè)值仍舊等于該候選單元集中的其他移動(dòng)向量預(yù)測(cè)值,則移動(dòng)預(yù)測(cè)模塊302選取第二候 補(bǔ)移動(dòng)向量預(yù)測(cè)值以增加至該候選單元集。當(dāng)候選單元集中包括至少兩個(gè)不同的移動(dòng)向量 預(yù)測(cè)值時(shí),移動(dòng)預(yù)測(cè)模塊302停止增加候補(bǔ)移動(dòng)向量預(yù)測(cè)值至該候選單元集。接著,編碼器 產(chǎn)生關(guān)于該最終移動(dòng)向量預(yù)測(cè)值的索引作為目前單元的預(yù)測(cè)信息,其中所述最終移動(dòng)向量 預(yù)測(cè)值選自候選單元集。因此,當(dāng)候選單元集中所有的移動(dòng)向量預(yù)測(cè)值相等時(shí),有時(shí)不發(fā)送 索引所引起的剖析錯(cuò)誤傳遞可得以避免。移動(dòng)預(yù)測(cè)模塊302接著依據(jù)該最終移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)目前單元的移動(dòng)向量(步 驟510)。最后,移動(dòng)預(yù)測(cè)模塊302產(chǎn)生預(yù)測(cè)信息,并接著由熵編碼模塊310對(duì)預(yù)測(cè)信息進(jìn) 行編碼(步驟512),其中預(yù)測(cè)信息表明選擇的是候選單元集中的哪個(gè)移動(dòng)向量預(yù)測(cè)值。與 圖2用于實(shí)現(xiàn)移動(dòng)向量競(jìng)爭的習(xí)知移動(dòng)向量預(yù)測(cè)方法200相比,無論候選單元集中的原本 移動(dòng)向量預(yù)測(cè)值是否相等,根據(jù)方法500,移動(dòng)預(yù)測(cè)模塊302最后皆會(huì)產(chǎn)生預(yù)測(cè)信息,因此 可降低因省略預(yù)測(cè)信息所導(dǎo)致的視頻譯碼器中剖析錯(cuò)誤的傳遞的發(fā)生率。為了避免幀間熵編碼(inter-frame entropy coding)中的剖析錯(cuò)誤傳遞,本發(fā)明 提供可動(dòng)態(tài)控制剖析錯(cuò)誤傳遞的視頻編碼方法。圖6為依據(jù)本發(fā)明之可防止剖析錯(cuò)誤傳遞 的視頻譯碼方法600的流程圖。首先,決定是否允許于視頻數(shù)據(jù)流的一段落(segment)發(fā) 生剖析錯(cuò)誤,并產(chǎn)生控制旗標(biāo)(control flag)(步驟602)。于一實(shí)施例中,該段落為視頻序列(video sequence),且該旗標(biāo)適用于整個(gè)視頻序列。于另一實(shí)施例中,該段落為一幀 (frame),且該旗標(biāo)適用于整個(gè)幀。于一實(shí)施例中,該段落的錯(cuò)誤率(error rate)被估計(jì)。 當(dāng)錯(cuò)誤率高于界限值,控制旗標(biāo)便產(chǎn)生以表示該段落不允許幀間熵編碼,以防止剖析錯(cuò)誤 傳遞。當(dāng)錯(cuò)誤率低于界限值,控制旗標(biāo)便產(chǎn)生以表示該段落允許幀間熵編碼,以允許剖析錯(cuò) 誤傳遞。當(dāng)控制旗標(biāo)表示允許幀間熵編碼時(shí)(步驟604),便啟動(dòng)幀間熵編碼(步驟608), 而熵編碼模塊310可運(yùn)用幀間熵編碼對(duì)段落進(jìn)行編碼,以增進(jìn)編碼效率。當(dāng)控制旗標(biāo)表示 不允許幀間熵編碼時(shí)(步驟604),便關(guān)閉幀間熵編碼(步驟606),而熵編碼模塊310可運(yùn) 用幀內(nèi)熵編碼(intra-frameentropy coding)對(duì)段落進(jìn)行編碼,以防止剖析錯(cuò)誤傳遞。圖7為依據(jù)本發(fā)明之可防止剖析錯(cuò)誤傳遞的視頻譯碼方法700的另一實(shí)施例的流 程圖。首先,決定是否允許于視頻數(shù)據(jù)流之段落(segment)發(fā)生剖析錯(cuò)誤,并產(chǎn)生控制旗標(biāo) (control flag)(步驟702)。于一實(shí)施例中,該段落為視頻序列(video sequence),且該旗 標(biāo)適用于整個(gè)視頻序列。于另一實(shí)施例中,該段落為一幀(frame),且該旗標(biāo)適用于整個(gè)幀。 于一實(shí)施例中,該段落的錯(cuò)誤率(error rate)被估計(jì)。當(dāng)錯(cuò)誤率高于界限值,控制旗標(biāo)便產(chǎn) 生以表示該段落不允許幀間熵編碼,以防止剖析錯(cuò)誤傳遞。當(dāng)錯(cuò)誤率低于界限值,控制旗標(biāo) 便產(chǎn)生以表示該段落允許幀間熵編碼。當(dāng)控制旗標(biāo)表示允許幀間熵編碼時(shí)(步驟704),便 啟動(dòng)幀間熵編碼(步驟708),而熵編碼模塊310可運(yùn)用幀間熵編碼對(duì)段落進(jìn)行編碼。當(dāng)控 制旗標(biāo)表示不允許幀間熵編碼時(shí)(步驟704),便于該段落的一系列的幀之間插入一系列的 目標(biāo)幀(步驟706),其中該多個(gè)目標(biāo)幀并非依據(jù)幀間熵編碼進(jìn)行編碼。于一實(shí)施例中,該多 個(gè)目標(biāo)幀為實(shí)時(shí)譯碼更新anstant Decoder Refresh,IDR)幀。實(shí)時(shí)譯碼更新幀可停止后 續(xù)幀參考編碼順序早于實(shí)時(shí)譯碼更新幀的任何較早幀。于另一實(shí)施例中,該多個(gè)目標(biāo)幀為 開放圖片群集(open group of pictures)幀。于另一實(shí)施例中,該多個(gè)目標(biāo)幀為不使用幀 間熵編碼進(jìn)行編碼的一般幀,因此該多個(gè)目標(biāo)幀不參考先前已編碼的幀作為移動(dòng)向量預(yù)測(cè) 值。舉例來說,該多個(gè)目標(biāo)幀可為P型幀或B型幀,而該多個(gè)P型幀或B型幀不參考先前幀 作為移動(dòng)向量預(yù)測(cè)值,例如同位單元。目標(biāo)幀可被周期性地插入段落的幀間以避免剖析錯(cuò) 誤的傳遞。于另一實(shí)施例中,目標(biāo)幀插入該段落的該多個(gè)幀的周期為于一系列(sequence) 層次或圖片群集(group ofpictures)層次決定。由于目標(biāo)幀不依據(jù)幀間熵編碼進(jìn)行編碼, 且目標(biāo)幀的后續(xù)幀不參考先于目標(biāo)幀的任何幀,因此段落幀中產(chǎn)生的剖析錯(cuò)誤不會(huì)傳遞至 目標(biāo)幀及后續(xù)幀的譯碼過程,由此可防止剖析錯(cuò)誤的傳遞。用來控制是否允許于視頻數(shù)據(jù)流的一段落發(fā)生剖析錯(cuò)誤的控制旗標(biāo)可與圖4的 移動(dòng)預(yù)測(cè)方法400相結(jié)合。圖8為依據(jù)本發(fā)明的可防止剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方法800 的流程圖。圖8的方法800的步驟802、804、806、808、810、812、814、816、及818與圖4的 方法400的對(duì)應(yīng)步驟402、404、406、408、410、412、414、416、及418相同。假設(shè)移動(dòng)預(yù)測(cè)模 塊302接收到視頻輸入數(shù)據(jù)流的一段落。于步驟801,首先依據(jù)該段落是否允許幀間熵編碼 以產(chǎn)生該段落的控制旗標(biāo)。當(dāng)該控制旗標(biāo)表示幀內(nèi)熵編碼可運(yùn)用于該段落(步驟803),移 動(dòng)預(yù)測(cè)模塊302實(shí)施步驟810 818以預(yù)測(cè)該段落的多個(gè)編碼單元的移動(dòng)向量,其中步驟 810 818類似于習(xí)知方法200的步驟204 212。當(dāng)該控制旗標(biāo)表示幀內(nèi)熵編碼不可運(yùn) 用于該段落(步驟803),移動(dòng)預(yù)測(cè)模塊302實(shí)施步驟802 818以預(yù)測(cè)該段落之多個(gè)編碼 單元的移動(dòng)向量,以防止剖析錯(cuò)誤的傳遞,其中步驟802 818類似于圖4的方法400的步 驟 402 418。
同樣地,用來控制是否允許于視頻數(shù)據(jù)流之一段落發(fā)生剖析錯(cuò)誤的控制旗標(biāo)可與 圖5的移動(dòng)預(yù)測(cè)方法500相結(jié)合。圖9為依據(jù)本發(fā)明的可防止剖析錯(cuò)誤傳遞的移動(dòng)預(yù)測(cè)方 法900的流程圖。圖8的方法800的步驟902、904、906、908、910及912與圖5的方法500 的對(duì)應(yīng)步驟502、504、506、508、510及512相同。假設(shè)移動(dòng)預(yù)測(cè)模塊302接收到視頻輸入 數(shù)據(jù)流之一段落。于步驟901,首先依據(jù)該段落是否允許幀間熵編碼以產(chǎn)生該段落的控制 旗標(biāo)。當(dāng)該控制旗標(biāo)表示幀內(nèi)熵編碼可運(yùn)用于該段落(步驟90 ,移動(dòng)預(yù)測(cè)模塊302實(shí)施 步驟905、907、909及908 912以預(yù)測(cè)該段落之多個(gè)編碼單元的移動(dòng)向量,其中步驟905、 907,909及908 912類似于習(xí)知方法200的步驟202 212。當(dāng)該控制旗標(biāo)表示幀內(nèi)熵 編碼不可運(yùn)用于該段落(步驟90 ,移動(dòng)預(yù)測(cè)模塊302實(shí)施步驟902 912以預(yù)測(cè)該段落 之多個(gè)編碼單元的移動(dòng)向量,以防止剖析錯(cuò)誤的傳遞,其中步驟902 912類似于圖5的方 法500的步驟502 512。雖然本發(fā)明已就較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬技 術(shù)領(lǐng)域中普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的變更和潤飾。因 此,本發(fā)明的保護(hù)范圍當(dāng)視之前的權(quán)利要求書所界定為準(zhǔn)。
權(quán)利要求
1.一種移動(dòng)預(yù)測(cè)方法,其特征在于,該方法包括下列步驟(a)取得多個(gè)移動(dòng)向量預(yù)測(cè)值以供包含于候選單元集之中,以供目前幀的目前單元的 移動(dòng)預(yù)測(cè);(b)決定是否該目前幀為不被其他幀參考以供移動(dòng)預(yù)測(cè)的非參考幀;(c)當(dāng)該目前幀不是該非參考幀,將對(duì)應(yīng)于先前已編碼幀的所有移動(dòng)向量預(yù)測(cè)值自該 候選單元集中移除;以及(d)依據(jù)該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)該目前單元的移動(dòng)向量。
2.如權(quán)利要求1所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該決定是否該目前幀為該非參考 幀的步驟包括決定該目前幀的幀型態(tài);當(dāng)該幀型態(tài)為I型幀或P型幀,決定該目前幀不為該非參考幀;以及當(dāng)該幀型態(tài)為B型幀,決定該目前幀為該非參考幀。
3.如權(quán)利要求1所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該決定是否該目前幀為該非參考 幀的步驟包括決定該目前幀的幀型態(tài);以及當(dāng)該幀型態(tài)為非參考B型幀,決定該目前幀為該非參考幀。
4.如權(quán)利要求1所述的移動(dòng)預(yù)測(cè)方法,其特征在于,自該目標(biāo)單元集移除移動(dòng)向量預(yù) 測(cè)值的步驟包括決定是否該目標(biāo)單元集包含對(duì)應(yīng)于一單元的至少一目標(biāo)移動(dòng)向量預(yù)測(cè)值,其中該單元 不在該目前幀中;以及當(dāng)該目標(biāo)移動(dòng)向量預(yù)測(cè)值存在于該目標(biāo)單元集中時(shí),自該目標(biāo)單元集中移除該目標(biāo)移 動(dòng)向量預(yù)測(cè)值。
5.如權(quán)利要求1所述的移動(dòng)預(yù)測(cè)方法,其特征在于,取得該多個(gè)移動(dòng)向量預(yù)測(cè)值的步 驟包括自位于該目前幀或之前已編碼幀內(nèi)的一系列單元中決定多個(gè)單元;自該多個(gè)單元選取多個(gè)候選單元;以及取得該多個(gè)候選單元的移動(dòng)向量以作為該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值。
6.如權(quán)利要求5所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該多個(gè)候選單元的選取是依據(jù)固 定選取規(guī)則或動(dòng)態(tài)選取規(guī)則。
7.如權(quán)利要求1所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該方法更包括產(chǎn)生控制旗標(biāo)以表示是否幀間熵編碼運(yùn)用于視頻數(shù)據(jù)流之段落;當(dāng)該控制旗標(biāo)表示該幀間熵編碼不被運(yùn)用時(shí),執(zhí)行該多個(gè)步驟(a)、(b)、(c)、(d)以進(jìn) 行移動(dòng)預(yù)測(cè);以及當(dāng)該控制旗標(biāo)表示該幀間熵編碼被運(yùn)用時(shí),無論該目前幀是否為該非參考幀,皆不自 該候選單元集中移除移動(dòng)向量預(yù)測(cè)值,以進(jìn)行該目前幀的移動(dòng)向量的預(yù)測(cè)。
8.一種移動(dòng)預(yù)測(cè)方法,其特征在于,該方法包括下列步驟(a)取得多個(gè)移動(dòng)向量預(yù)測(cè)值以供包含于候選單元集之中,以供目前幀的目前單元的 移動(dòng)預(yù)測(cè);(b)比較該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值;(C)當(dāng)該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值皆相等,選取至少一候補(bǔ)移動(dòng)向量預(yù)測(cè)值;(d)將該候補(bǔ)移動(dòng)向量預(yù)測(cè)值增加至該候選單元集;以及(e)依據(jù)該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)該目前單元的移動(dòng)向量。
9.如權(quán)利要求8所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該目前單元的移動(dòng)向量的預(yù)測(cè)步 驟包括自該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值選取最終移動(dòng)向量預(yù)測(cè)值;以及 依據(jù)該最終移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)該目前單元的移動(dòng)向量。
10.如權(quán)利要求9所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該方法更包括 產(chǎn)生該最終移動(dòng)向量預(yù)測(cè)值的索引作為該目前單元的預(yù)測(cè)信息;以及 編碼該預(yù)測(cè)信息為數(shù)據(jù)流。
11.如權(quán)利要求8所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該候選移動(dòng)向量預(yù)測(cè)值的選取步 驟包括自多個(gè)預(yù)定移動(dòng)向量預(yù)測(cè)值選取目標(biāo)移動(dòng)向量預(yù)測(cè)值; 比較該目標(biāo)移動(dòng)向量預(yù)測(cè)值與該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值; 當(dāng)該目標(biāo)移動(dòng)向量預(yù)測(cè)值與該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值不相等,決定該目 標(biāo)移動(dòng)向量預(yù)測(cè)值為該候選移動(dòng)向量預(yù)測(cè)值;以及當(dāng)該目標(biāo)移動(dòng)向量預(yù)測(cè)值與該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值相等,重復(fù)該目標(biāo) 移動(dòng)向量預(yù)測(cè)值的選取步驟、該目標(biāo)移動(dòng)向量預(yù)測(cè)值與該候選單元集的該多個(gè)移動(dòng)向量預(yù) 測(cè)值的比較步驟,直到與該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值不同的該目標(biāo)移動(dòng)向量預(yù) 測(cè)值被選取為該候選移動(dòng)向量預(yù)測(cè)值。
12.如權(quán)利要求8所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該多個(gè)移動(dòng)向量預(yù)測(cè)值的取得步 驟包括自位于該目前幀或之前已編碼幀內(nèi)的一系列單元中決定多個(gè)單元; 自該多個(gè)單元選取多個(gè)候選單元;以及取得該多個(gè)候選單元的移動(dòng)向量以作為該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值。
13.如權(quán)利要求12所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該多個(gè)候選單元的選取是依據(jù) 序列層級(jí)所定的選取規(guī)則。
14.如權(quán)利要求8所述的移動(dòng)預(yù)測(cè)方法,其特征在于,該方法更包括 產(chǎn)生控制旗標(biāo)以表示是否幀間熵編碼運(yùn)用于視頻數(shù)據(jù)流之段落;當(dāng)該控制旗標(biāo)表示該幀間熵編碼不被運(yùn)用時(shí),執(zhí)行該多個(gè)步驟(a)、(b)、(c)、(d)、(e) 以進(jìn)行移動(dòng)預(yù)測(cè);以及當(dāng)該控制旗標(biāo)表示該幀間熵編碼被運(yùn)用時(shí),無論該目前幀是否為該非參考幀,皆不自 該候選單元集中移除移動(dòng)向量預(yù)測(cè)值,以進(jìn)行該目前幀的移動(dòng)向量的預(yù)測(cè)。
15.一種視頻編碼方法,其特征在于,該方法包括下列步驟產(chǎn)生控制旗標(biāo)以表示是否幀間熵編碼運(yùn)用于視頻數(shù)據(jù)流之段落; 當(dāng)該控制旗標(biāo)表示該幀間熵編碼禁止被運(yùn)用時(shí),停止對(duì)該視頻數(shù)據(jù)流的該段落進(jìn)行幀 間熵編碼;以及當(dāng)該控制旗標(biāo)表示該幀間熵編碼允許被運(yùn)用時(shí),對(duì)該視頻數(shù)據(jù)流的該段落進(jìn)行幀間熵編碼。
16.如權(quán)利要求15所述的視頻編碼方法,其特征在于,該控制旗標(biāo)的產(chǎn)生步驟包括估計(jì)該段落的數(shù)據(jù)錯(cuò)誤率;當(dāng)該數(shù)據(jù)錯(cuò)誤率高于界限值,產(chǎn)生該控制旗標(biāo)以表示幀間熵編碼禁止被運(yùn)用;以及當(dāng)該數(shù)據(jù)錯(cuò)誤率低于該界限值,產(chǎn)生該控制旗標(biāo)以表示幀間熵編碼允許被運(yùn)用。
17.如權(quán)利要求15所述的視頻編碼方法,其特征在于,該段落為視頻序列或幀。
18.—種視頻編碼方法,其特征在于,該方法包括下列步驟于視頻數(shù)據(jù)流之段落的一系列的幀之間插入一系列的目標(biāo)幀;以及編碼該視頻數(shù)據(jù)流的該段落為比特?cái)?shù)據(jù)流;其中該多個(gè)目標(biāo)幀非依據(jù)幀間熵編碼進(jìn)行編碼,且編碼順序的后續(xù)幀不于編碼時(shí)參考 該多個(gè)目標(biāo)幀的之前幀。
19.如權(quán)利要求18所述的視頻編碼方法,其特征在于,該方法更包括產(chǎn)生控制旗標(biāo),而 該控制旗標(biāo)的產(chǎn)生包括估計(jì)該段落的數(shù)據(jù)錯(cuò)誤率;以及當(dāng)該數(shù)據(jù)錯(cuò)誤率高于界限值,產(chǎn)生該控制旗標(biāo)以控制于該段落的該多個(gè)幀之間插入該 多個(gè)目標(biāo)幀。
20.如權(quán)利要求18所述的視頻編碼方法,其特征在于,該段落為視頻序列或幀。
21.如權(quán)利要求18所述的視頻編碼方法,其特征在于,該該多個(gè)目標(biāo)幀為實(shí)時(shí)譯碼更 新幀。
22.如權(quán)利要求18所述的視頻編碼方法,其特征在于,該多個(gè)目標(biāo)幀為不允許使用對(duì) 應(yīng)于之前已編碼幀的任何移動(dòng)向量預(yù)測(cè)值的一般幀。
23.如權(quán)利要求18所述的視頻編碼方法,其特征在于,該多個(gè)目標(biāo)幀是被周期性的插 入該段落的該多個(gè)幀之間。
24.如權(quán)利要求23所述的視頻編碼方法,其特征在于,該多個(gè)目標(biāo)幀插入該段落的該 多個(gè)幀的周期是于一系列層次或圖片群集層次決定。
全文摘要
本發(fā)明提供一種移動(dòng)預(yù)測(cè)方法及視頻編碼方法,其中移動(dòng)預(yù)測(cè)方法包括首先,取得多個(gè)移動(dòng)向量預(yù)測(cè)值以供包含于候選單元集之中,以供目前幀的目前單元之移動(dòng)預(yù)測(cè)。接著,決定是否該目前幀為非參考幀,即不供其他幀參考以用于移動(dòng)預(yù)測(cè)。接著,當(dāng)該目前幀不是該非參考幀,將所有對(duì)應(yīng)于先前已編碼幀的移動(dòng)向量預(yù)測(cè)值自該候選單元集中移除。最后,依據(jù)該候選單元集的該多個(gè)移動(dòng)向量預(yù)測(cè)值預(yù)測(cè)該目前單元的移動(dòng)向量。通過本發(fā)明可防止譯碼過程中剖析錯(cuò)誤傳遞的問題。
文檔編號(hào)H04N7/26GK102131095SQ20111002028
公開日2011年7月20日 申請(qǐng)日期2011年1月18日 優(yōu)先權(quán)日2010年1月18日
發(fā)明者傅智銘, 林建良, 蔡玉寶, 雷少民, 黃毓文 申請(qǐng)人:聯(lián)發(fā)科技股份有限公司