两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的方法及編碼器的制作方法

文檔序號(hào):7629500閱讀:146來(lái)源:國(guó)知局
專利名稱:一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的方法及編碼器的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)視頻編碼技術(shù),涉及對(duì)計(jì)算機(jī)圖像的處理,具體涉及一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的方法及編碼器,本發(fā)明應(yīng)用于手持?jǐn)z像設(shè)備中的視頻編碼器。
背景技術(shù)
隨著數(shù)碼相機(jī)、數(shù)碼攝像機(jī)等設(shè)備的日益普及,人們對(duì)數(shù)碼產(chǎn)品的要求也進(jìn)一步提高。手持?jǐn)z像設(shè)備由于人為的抖動(dòng)而造成圖像的晃動(dòng)。這種惱人的現(xiàn)象可以通過(guò)防抖技術(shù)來(lái)消除。
現(xiàn)階段在數(shù)碼設(shè)備中的防抖系統(tǒng)主要分為兩大類光學(xué)防抖和電子防抖。光學(xué)防抖是通過(guò)鏡頭內(nèi)置的儀器感應(yīng)相機(jī)的抖動(dòng),通過(guò)調(diào)整鏡頭內(nèi)透鏡的位置而達(dá)到防抖效果。電子防抖,是通過(guò)電子手段來(lái)對(duì)圖像進(jìn)行處理,以減輕抖動(dòng)對(duì)成像的影響。
電子防抖方法通常采用數(shù)字圖像處理的方法,避免防抖硬件的使用。由于造價(jià)低廉,通常用于低端的數(shù)碼相機(jī)和數(shù)碼攝像機(jī)中。由此可見(jiàn),光學(xué)防抖和電子防抖兩種技術(shù)各有優(yōu)缺點(diǎn)。光學(xué)防抖技術(shù)的防抖效果好,可以充分利用CCD的采集像素,但是需要透鏡運(yùn)動(dòng)補(bǔ)償裝置,因此造價(jià)相對(duì)較高。電子防抖無(wú)需透鏡運(yùn)動(dòng)補(bǔ)償裝置,造價(jià)低廉,實(shí)現(xiàn)簡(jiǎn)單,但是降低CCD的利用率。無(wú)論是光學(xué)防抖還是電子防抖,多數(shù)方法都需要一個(gè)運(yùn)動(dòng)的傳感器—抖動(dòng)補(bǔ)償陀螺儀來(lái)感知運(yùn)動(dòng)的方向和強(qiáng)度,從而采用光學(xué)方法和電子方法進(jìn)行補(bǔ)償。
數(shù)字視頻信號(hào)的數(shù)據(jù)量非常大,對(duì)于一個(gè)640×480@30fps的視頻序列,如果采用RGB24的數(shù)據(jù)形式,則數(shù)據(jù)率26MB/s。隨著圖像尺寸的增加和幀率的提高,數(shù)據(jù)率還會(huì)更高。高數(shù)據(jù)率對(duì)傳輸設(shè)備和存儲(chǔ)設(shè)備都提出了更高的要求。為了降低數(shù)據(jù)率,更為有效的傳輸和存儲(chǔ)視頻數(shù)據(jù),視頻壓縮技術(shù)就應(yīng)運(yùn)而生。通過(guò)數(shù)據(jù)壓縮技術(shù),消除圖像中的冗余信息,既保證圖像質(zhì)量滿足實(shí)際的需求,又大大減少數(shù)據(jù)量,降低傳輸和存儲(chǔ)系統(tǒng)的負(fù)擔(dān)?,F(xiàn)階段常用的視頻壓縮方法有Mpeg1,Mpeg2,Mpeg4,H.26X和VC-1等。

發(fā)明內(nèi)容
本發(fā)明提出了一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的方法及編碼器,所述方法無(wú)需外加運(yùn)動(dòng)傳感器,而通過(guò)運(yùn)動(dòng)估計(jì)方法獲得全局的運(yùn)動(dòng)矢量,用于描述存在的抖動(dòng);通過(guò)基于宏塊與塊的運(yùn)動(dòng)矢量插值方法,形成用于最終編碼的基于宏塊與塊的運(yùn)動(dòng)矢量。這樣,具備防抖功能的視頻編碼器就可以僅通過(guò)一次運(yùn)動(dòng)估計(jì)過(guò)程,同時(shí)獲取用于防抖的全局運(yùn)動(dòng)矢量和用于最終編碼的基于宏塊與塊的運(yùn)動(dòng)矢量,大大減少了計(jì)算的復(fù)雜度。
本發(fā)明所述方法可應(yīng)用于數(shù)字?jǐn)z像機(jī)中的視頻編碼器,本發(fā)明所述的視頻編碼器中,整合了視頻壓縮和電子防抖兩大功能,在數(shù)據(jù)壓縮的同時(shí)實(shí)現(xiàn)防抖功能。該視頻編碼器的優(yōu)勢(shì)在于無(wú)需外加的抖動(dòng)補(bǔ)償傳感器,而是利用了現(xiàn)有的視頻編碼器中的運(yùn)動(dòng)估計(jì)模塊來(lái)分析拍攝景物的運(yùn)動(dòng)情況,獲取全局運(yùn)動(dòng)矢量用于補(bǔ)償抖動(dòng);同時(shí),本發(fā)明將視頻編碼器中運(yùn)動(dòng)估計(jì)模塊和防抖模塊緊密耦合,通過(guò)二者的結(jié)合,實(shí)現(xiàn)了對(duì)編碼圖像的防抖功能,通過(guò)共用運(yùn)動(dòng)矢量,減少了單獨(dú)進(jìn)行視頻壓縮和防抖實(shí)現(xiàn)的運(yùn)算代價(jià)。本發(fā)明僅通過(guò)一次運(yùn)動(dòng)估計(jì)即可得到用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量,又通過(guò)插值方法獲得用于視頻編碼的塊與宏塊的運(yùn)動(dòng)矢量,大大節(jié)省了由于單獨(dú)運(yùn)動(dòng)估計(jì)進(jìn)行補(bǔ)償運(yùn)動(dòng)矢量計(jì)算的計(jì)算量。
本發(fā)明具體是這樣實(shí)現(xiàn)的一種基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,包括如下處理(一)運(yùn)動(dòng)估計(jì)對(duì)輸入的當(dāng)前幀,進(jìn)行預(yù)裁剪,形成預(yù)裁剪后的有效像素區(qū)域;對(duì)當(dāng)前幀的預(yù)裁剪有效像素區(qū)域的每個(gè)宏塊與塊進(jìn)行運(yùn)動(dòng)估計(jì);由視頻編碼器的運(yùn)動(dòng)估計(jì)模塊輸出每個(gè)宏塊與塊相對(duì)于參考幀的運(yùn)動(dòng)矢量;(二)防抖統(tǒng)計(jì)宏塊與塊的運(yùn)動(dòng)矢量的分布頻度,以頻度最高的運(yùn)動(dòng)矢量作為相對(duì)全局運(yùn)動(dòng)矢量;計(jì)算絕對(duì)全局運(yùn)動(dòng)矢量,用于裁剪有效像素區(qū)域;依據(jù)絕對(duì)全局運(yùn)動(dòng)矢量,在總像素區(qū)域的圖像大小上重新裁剪有效像素區(qū)域,補(bǔ)償由于抖動(dòng)形成的全局運(yùn)動(dòng)矢量;(三)運(yùn)動(dòng)矢量插值根據(jù)預(yù)裁剪后有效像素區(qū)域中宏塊與塊的運(yùn)動(dòng)矢量和當(dāng)前幀用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量,通過(guò)插值獲得抖動(dòng)補(bǔ)償后重新裁剪有效像素區(qū)域宏塊與塊的運(yùn)動(dòng)矢量;(四)視頻編碼對(duì)通過(guò)插值獲取重新裁剪后有效像素區(qū)域的宏塊與塊的運(yùn)動(dòng)矢量,形成基于數(shù)據(jù)塊和基于宏塊的運(yùn)動(dòng)矢量,將運(yùn)動(dòng)矢量輸入視頻編碼器的運(yùn)動(dòng)補(bǔ)償和編碼模塊,進(jìn)行后續(xù)的視頻數(shù)據(jù)編碼。
所述(一)運(yùn)動(dòng)估計(jì)中,當(dāng)前幀預(yù)裁剪的位置以參考幀的絕對(duì)運(yùn)動(dòng)矢量為依據(jù);
所述運(yùn)動(dòng)矢量的精度可以是整像素,或者半像素、或者1/4像素。
所述(二)防抖中,所述絕對(duì)全局運(yùn)動(dòng)矢量,在幀號(hào)為1時(shí)為零;在幀號(hào)大于1時(shí)為相對(duì)全局運(yùn)動(dòng)矢量的和。
所述(三)運(yùn)動(dòng)矢量插值中,所述插值采用雙線性插值方法,或者其它插值方法實(shí)現(xiàn);所述運(yùn)動(dòng)矢量的精度依據(jù)視頻編碼器的精度要求進(jìn)行四舍五入。
所述(四)視頻編碼中,通過(guò)(三)運(yùn)動(dòng)矢量插值所得到的數(shù)據(jù)塊運(yùn)動(dòng)矢量計(jì)算數(shù)據(jù)塊全局運(yùn)動(dòng)矢量相對(duì)于所述數(shù)據(jù)塊運(yùn)動(dòng)矢量的方差;如果所述方差小于給定閥值,則選擇1MV方式,否則選擇4MV方式;若運(yùn)動(dòng)矢量的精度為整像素時(shí),給定閥值為2;若運(yùn)動(dòng)矢量的精度為半像素時(shí),給定閥值為1。
所述(四)視頻編碼中,如果裁剪后有效像素區(qū)域的位置為宏塊,如果對(duì)應(yīng)預(yù)裁剪有效像素區(qū)域的幾個(gè)數(shù)據(jù)塊中有一個(gè)為幀內(nèi)編碼方式,則采用幀內(nèi)編碼方式;如果裁剪后有效像素區(qū)域的位置包含預(yù)裁剪有效像素區(qū)域中邊界以外的宏塊,或者采用相鄰的宏塊編碼方式,或者采用幀內(nèi)編碼方式。
一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,包括運(yùn)動(dòng)估計(jì)模塊,運(yùn)動(dòng)補(bǔ)償和編碼模塊,防抖模塊和運(yùn)動(dòng)矢量插值模塊;所述防抖模塊和運(yùn)動(dòng)矢量插值模塊添加于所述運(yùn)動(dòng)估計(jì)模塊與所述運(yùn)動(dòng)補(bǔ)償和編碼模塊之間;所述運(yùn)動(dòng)估計(jì)模塊,用于對(duì)輸入的當(dāng)前幀進(jìn)行預(yù)裁剪,對(duì)預(yù)裁剪后的有效像素區(qū)域的每個(gè)宏塊進(jìn)行運(yùn)動(dòng)估計(jì),然后輸出宏塊與塊相對(duì)于參考幀的運(yùn)動(dòng)矢量;所述防抖模塊,用于統(tǒng)計(jì)宏塊與塊的運(yùn)動(dòng)矢量的分布頻度,以頻度最高的運(yùn)動(dòng)矢量作為相對(duì)全局運(yùn)動(dòng)矢量;將計(jì)算得到的絕對(duì)全局運(yùn)動(dòng)矢量用于在總像素區(qū)域的圖像大小上重新裁剪有效像素區(qū)域,補(bǔ)償由于抖動(dòng)形成的全局運(yùn)動(dòng)矢量;所述運(yùn)動(dòng)矢量插值模塊,用于根據(jù)預(yù)裁剪后有效像素區(qū)域中宏塊與塊的運(yùn)動(dòng)矢量和當(dāng)前幀用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量,進(jìn)行插值獲得抖動(dòng)補(bǔ)償后重新裁剪有效像素區(qū)域宏塊與塊的運(yùn)動(dòng)矢量;所述運(yùn)動(dòng)補(bǔ)償和編碼模塊,用于對(duì)通過(guò)插值獲取重新裁剪后有效像素區(qū)域的宏塊與塊的運(yùn)動(dòng)矢量,形成基于數(shù)據(jù)塊和基于宏塊的運(yùn)動(dòng)矢量,對(duì)輸入的運(yùn)動(dòng)矢量,進(jìn)行后續(xù)的視頻數(shù)據(jù)編碼。
所述運(yùn)動(dòng)估計(jì)模塊中,當(dāng)前幀預(yù)裁剪的位置以參考幀的絕對(duì)運(yùn)動(dòng)矢量為依據(jù);所述運(yùn)動(dòng)矢量的精度可以是整像素,或者半像素、或者1/4像素。
所述防抖模塊中,所述絕對(duì)全局運(yùn)動(dòng)矢量,在幀號(hào)為1時(shí)為零;在幀號(hào)大于1時(shí)為相對(duì)全局運(yùn)動(dòng)矢量的和。
所述運(yùn)動(dòng)矢量插值模塊中,所述插值采用雙線性插值方法,或者其它插值方法實(shí)現(xiàn);所述運(yùn)動(dòng)矢量的精度依據(jù)視頻編碼器的精度要求進(jìn)行四舍五入。
所述運(yùn)動(dòng)補(bǔ)償和編碼模塊,對(duì)通過(guò)運(yùn)動(dòng)矢量插值所得到的數(shù)據(jù)塊運(yùn)動(dòng)矢量計(jì)算數(shù)據(jù)塊全局運(yùn)動(dòng)矢量相對(duì)于所述數(shù)據(jù)塊運(yùn)動(dòng)矢量的方差;若運(yùn)動(dòng)矢量的精度為整像素時(shí),給定閥值為2;若運(yùn)動(dòng)矢量的精度為半像素時(shí),給定閥值為1;如果所述方差小于給定閥值,則選擇1MV方式,否則選擇4MV方式。
所述運(yùn)動(dòng)補(bǔ)償和編碼模塊,如果裁剪后有效像素區(qū)域的位置為宏塊,如果對(duì)應(yīng)預(yù)裁剪有效像素區(qū)域的幾個(gè)數(shù)據(jù)塊中有一個(gè)為幀內(nèi)編碼方式,則采用幀內(nèi)編碼方式;如果裁剪后有效像素區(qū)域的位置包含預(yù)裁剪有效像素區(qū)域中邊界以外的宏塊,或者采用相鄰的宏塊編碼方式,或者采用幀內(nèi)編碼方式。
現(xiàn)有的防抖技術(shù)多采用了外加的運(yùn)動(dòng)傳感器,表示外界的全局運(yùn)動(dòng)。如果將防抖模塊和視頻編碼模塊相互分割,則需要進(jìn)行兩次運(yùn)動(dòng)估計(jì),一次用于獲取全局運(yùn)動(dòng)矢量,進(jìn)行防抖補(bǔ)償;一次用于視頻編碼中的宏塊和塊的運(yùn)動(dòng)矢量,用于視頻編碼。
本發(fā)明較前面介紹的多種光學(xué)和電子防抖方法,具有實(shí)現(xiàn)簡(jiǎn)單,無(wú)需外接運(yùn)動(dòng)傳感器,完全通過(guò)數(shù)字圖像處理方法實(shí)現(xiàn)運(yùn)動(dòng)的估計(jì)、抖動(dòng)圖像的補(bǔ)償。通過(guò)與視頻壓縮的相互結(jié)合,僅通過(guò)一次運(yùn)動(dòng)估計(jì)過(guò)程完成補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量的計(jì)算和編碼的運(yùn)動(dòng)矢量的計(jì)算。本發(fā)明提供了一種簡(jiǎn)單、有效而且廉價(jià)的數(shù)碼攝像機(jī)具有防抖功能的視頻編碼器,可以應(yīng)用于數(shù)碼攝像機(jī)、攝像頭等具備視頻編碼模塊的多媒體設(shè)備中。


圖1是CCD總像素,CCD有效像素以及防抖補(bǔ)償后有效像素的關(guān)系示意圖;圖2是具備防抖功能的視頻編碼器結(jié)構(gòu)圖;
圖3是具備防抖功能的視頻編碼器處理流程圖;圖4是運(yùn)動(dòng)矢量插值過(guò)程示意圖。
具體實(shí)施例方式
本發(fā)明提出的方法,使得視頻編碼器具備防抖功能,是為了解決由于拍攝過(guò)程中,因?yàn)槭值亩秳?dòng)造成的圖像平移抖動(dòng),不涉及由于旋轉(zhuǎn)和縮放造成的抖動(dòng)。
本發(fā)明為了實(shí)現(xiàn)電子防抖,不能夠利用全部CCD的采集像素值,因此有效的像素?cái)?shù)小于CCD的總像素?cái)?shù),這是實(shí)現(xiàn)電子防抖必然出現(xiàn)的情況。而有效像素?cái)?shù)相對(duì)總像素?cái)?shù)的比例是由防抖所支持的抖動(dòng)幅度有關(guān)系的。假定本發(fā)明所支持的最大抖動(dòng)通過(guò)相對(duì)移動(dòng)范圍作為指標(biāo),給定CCD的有效像素區(qū)域?yàn)镃CD總像素區(qū)域的中心,則最大的抖動(dòng)的補(bǔ)償范圍不能超出CCD總像素的區(qū)域,因此在水平方向的最大補(bǔ)償范圍為[-YMAX,YMAX],在垂直方向上的最大補(bǔ)償范圍為[-XMAX,XMAX]。
如果抖動(dòng)總范圍位于這個(gè)范圍內(nèi),則可以進(jìn)行補(bǔ)償實(shí)現(xiàn)電子防抖;如果超過(guò)這個(gè)范圍,則不進(jìn)行電子防抖。CCD總像素,CCD有效像素以及防抖補(bǔ)償后的有效像素的關(guān)系如圖1所示。假定總像素區(qū)域大小為M×N,防抖補(bǔ)償后的有效像素區(qū)域大小為M′×N′,則有M′<M,N′<N。
本發(fā)明所述的具備防抖功能的視頻編碼器的結(jié)構(gòu)如圖2所示。
本發(fā)明所述的整個(gè)防抖處理流程如圖3所示,具體描述如下;(一)運(yùn)動(dòng)估計(jì)運(yùn)動(dòng)估計(jì)采用圖2中所示的視頻編碼器所具有的運(yùn)動(dòng)估計(jì)模塊進(jìn)行,輸入當(dāng)前幀后,運(yùn)動(dòng)估計(jì)模塊輸出每個(gè)宏塊與塊相對(duì)于參考幀的運(yùn)動(dòng)矢量。這里運(yùn)動(dòng)矢量的精度可以是整像素,半像素或者1/4像素等,這里的精度決定了后面的防抖模塊和運(yùn)動(dòng)矢量插值模塊的運(yùn)算精度。
圖像的運(yùn)動(dòng)估計(jì)是基于塊與宏塊進(jìn)行的?,F(xiàn)在的多種視頻編碼器支持16×8,8×16,8×8,8×4,4×8和4×4等多種類型的分塊方式。這里僅以Mpeg4中的運(yùn)動(dòng)矢量編碼方法為例,Mpeg4中存在16×16的宏塊和8×8的塊。運(yùn)動(dòng)估計(jì)是以宏塊為單位而進(jìn)行的。每個(gè)塊的大小為8×8。這里假定圖像可以分為S×T個(gè)16×16的宏塊,則有2S×2T個(gè)8×8的數(shù)據(jù)塊。
在Mpeg4中,宏塊的編碼方式有三類Intra,1MV和4MV。Intra是幀內(nèi)編碼方式,運(yùn)動(dòng)矢量可以是基于宏塊的,通常稱為1MV方式,即一個(gè)宏塊只有一個(gè)運(yùn)動(dòng)矢量,也可以表示為4MV,表示一個(gè)宏塊有四個(gè)數(shù)據(jù)塊表示,每個(gè)數(shù)據(jù)塊都有各自的運(yùn)動(dòng)矢量。但是本發(fā)明并不僅限于這些大小類型的數(shù)據(jù)塊,也適用于上述的多種尺寸的分塊方法。
這里需要說(shuō)明的是,由于本發(fā)明采用了防抖功能,對(duì)參考幀進(jìn)行了防抖的運(yùn)動(dòng)矢量補(bǔ)償。因此采用運(yùn)動(dòng)估計(jì)方法進(jìn)行運(yùn)動(dòng)矢量獲取時(shí),當(dāng)前幀圖像需要進(jìn)行預(yù)裁剪,形成預(yù)裁剪后的有效像素區(qū)域。當(dāng)前幀預(yù)裁剪的位置以參考幀的絕對(duì)運(yùn)動(dòng)矢量為依據(jù)。對(duì)預(yù)裁剪的當(dāng)前幀的有效像素區(qū)域進(jìn)行運(yùn)動(dòng)估計(jì)。預(yù)裁剪后的有效像素區(qū)域大小為M′×N′,可以分為S×T個(gè)宏塊。
對(duì)上述的每一個(gè)宏塊進(jìn)行運(yùn)動(dòng)估計(jì)。這里用于補(bǔ)償抖動(dòng)的第1幀的全局運(yùn)動(dòng)矢量為0,則第K幀相對(duì)于第K-1幀的補(bǔ)償抖動(dòng)的相對(duì)全局運(yùn)動(dòng)矢量為MVK,則第K幀補(bǔ)償抖動(dòng)的絕對(duì)全局運(yùn)動(dòng)矢量(或者相對(duì)于第1幀的相對(duì)運(yùn)動(dòng)矢量)表示為AMVK。
(二)防抖防抖是采用圖2中的防抖模塊進(jìn)行,就是利用當(dāng)前幀圖像中的數(shù)據(jù)塊的運(yùn)動(dòng)矢量獲取全局運(yùn)動(dòng)矢量的過(guò)程。
該過(guò)程具體可以分為幾個(gè)步驟通過(guò)運(yùn)動(dòng)估計(jì)模塊后,形成了多個(gè)宏塊與塊的相對(duì)于參考幀的運(yùn)動(dòng)矢量。
為了統(tǒng)一運(yùn)算過(guò)程,這里以每個(gè)8×8的數(shù)據(jù)塊為單位描述運(yùn)動(dòng)矢量。每個(gè)數(shù)據(jù)塊的運(yùn)動(dòng)矢量可以用MVK(i,j)表示,這里K表示幀號(hào),從1開(kāi)始。i,j分別為數(shù)據(jù)塊的位置,圖像的左上角為(1,1)數(shù)據(jù)塊,右下角為(2S,2T)。其中對(duì)于幀內(nèi)編碼Intra方式的宏塊,這里的運(yùn)動(dòng)矢量設(shè)置為0。
統(tǒng)計(jì)數(shù)據(jù)塊的運(yùn)動(dòng)矢量的分布頻度,以頻度最高的運(yùn)動(dòng)矢量作為相對(duì)全局運(yùn)動(dòng)矢量MVK。
計(jì)算全局的絕對(duì)運(yùn)動(dòng)矢量,用于裁剪有效像素區(qū)域。
AMVK=0K=1Σi=1KMViK>1]]>依據(jù)絕對(duì)運(yùn)動(dòng)矢量,在原始M×N的總有效像素圖像上重新裁剪有效像素區(qū)域,得到用于補(bǔ)償由于抖動(dòng)形成的全局運(yùn)動(dòng)矢量。重新裁剪后,有效像素圖像的大小為M′×N′。
(三)運(yùn)動(dòng)矢量插值運(yùn)動(dòng)矢量插值是在圖2中的運(yùn)動(dòng)矢量插值模塊中進(jìn)行的,根據(jù)預(yù)裁剪后有效像素區(qū)域中宏塊與塊的運(yùn)動(dòng)矢量和當(dāng)前幀用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量,進(jìn)行插值獲得抖動(dòng)補(bǔ)償后重新裁剪有效像素區(qū)域宏塊與塊的運(yùn)動(dòng)矢量,實(shí)現(xiàn)裁剪后圖像的運(yùn)動(dòng)矢量生成,而無(wú)需進(jìn)行二次運(yùn)動(dòng)估計(jì)。
圖像在進(jìn)行了防抖模塊后形成了裁剪后的有效像素區(qū)域,而裁剪后的有效像素區(qū)域數(shù)據(jù)塊的運(yùn)動(dòng)矢量與預(yù)裁剪圖像數(shù)據(jù)塊運(yùn)動(dòng)矢量的定義通常不一致。整個(gè)運(yùn)動(dòng)矢量的插值過(guò)程可以通過(guò)圖5表示。
圖中陰影部分宏塊表示通過(guò)抖動(dòng)補(bǔ)償裁剪后圖像數(shù)據(jù)塊定義的位置,而B(niǎo)lock1~Block4表示預(yù)裁剪圖像的數(shù)據(jù)塊定義的位置,運(yùn)動(dòng)矢量插值模塊就是通過(guò)Block1~Block4的運(yùn)動(dòng)矢量通過(guò)插值方法獲得抖動(dòng)裁剪后圖像中數(shù)據(jù)塊的運(yùn)動(dòng)矢量。
假定Block1~Block4的運(yùn)動(dòng)矢量分別為MVK(i,j),MVK(i+1,j),MVK(i,j+1),MVK(i+1,j+1);抖動(dòng)補(bǔ)償后裁剪后圖像中的數(shù)據(jù)塊運(yùn)動(dòng)矢量表示為MV′K(i′,j′);當(dāng)前幀用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量為MVK。假定這里的全局運(yùn)動(dòng)矢量全部為整像素的。
下面用雙線性插值方法為例描述MV′K(i′,j′)的獲得。這里方法不僅限于雙線性插值方法,其它的插值方法同樣適用。這里數(shù)據(jù)塊的大小假定為8×8。
對(duì)于補(bǔ)償抖動(dòng)后的有效像素區(qū)域中的(i′,j′)位置的運(yùn)動(dòng)矢量可以由預(yù)裁剪圖像中第(i,j),(i+1,j),(i,j+1),(i+1,j+1)位置的四個(gè)數(shù)據(jù)塊的運(yùn)動(dòng)矢量通過(guò)插值實(shí)現(xiàn)。
對(duì)于(i,j),(i+1,j),(i,j+1),(i+1,j+1)超越圖像邊界的位置這里不進(jìn)行計(jì)算,在后面的視頻編碼模塊中會(huì)進(jìn)行處理。(i′,j′)位置和MVK共同決定了(i,j)位置,(i′,j′)和(i,j)二者的關(guān)系為i′=MVK.X/8+ij′=MVK.Y/8+j其中,/為整除操作,MVK.X和MVK.Y分別為全局運(yùn)動(dòng)矢量在水平方向和垂直方向的分量。這里采用雙線性插值方法,得到防抖裁剪后圖像第(i′,j′)位置的圖像相對(duì)于預(yù)裁剪圖像(i,j)位置的水平和垂直方向的偏差分別為dx=Mod(MVK.X,8)dy=Mod(MVK.Y,8)其中Mod(x,a)函數(shù)表示x模a得到的余數(shù)。因此有在補(bǔ)償抖動(dòng)后的有效像素區(qū)域中第(i′,j′)位置的運(yùn)動(dòng)矢量可以表示為MV′K(i′,j′).X=((8-dx)(8-dy)MVK(i,j).X+dx(8-dy)MVK(i+1,j).X+(8-dx)dyMVK(i,j+1).X+dxdyMVK(i+1,j+1).X)/64MV′(i′,j′)K.Y=((8-dx)(8-dy)MVK(i,j).Y+dx(8-dy)MVK(i+1,j).Y+(8-dx)dyMVK(i,j+1).Y+dxdyMVK(i+1,j+1).Y)/64
對(duì)于抖動(dòng)補(bǔ)償裁剪后圖像中有效像素區(qū)域內(nèi)的任意一個(gè)數(shù)據(jù)塊,只要(i,j),(i+1,j),(i,j+1),(i+1,j+1)不超越預(yù)裁剪圖像邊界的位置,就能夠得到對(duì)應(yīng)的插值后數(shù)據(jù)塊的運(yùn)動(dòng)矢量。
這里運(yùn)動(dòng)矢量的精度依據(jù)視頻編碼器的精度要求進(jìn)行四舍五入。
同時(shí)可以看出,當(dāng)采用半像素精度時(shí),dx和dy求解中的模數(shù)8應(yīng)該為16;插值公式中的系數(shù)也應(yīng)該把8改為16,同時(shí)除數(shù)為256。其它精度以此類推。
(四)視頻編碼通過(guò)運(yùn)動(dòng)矢量插值后獲取了裁剪后有效像素區(qū)域中每個(gè)數(shù)據(jù)塊的相對(duì)于參考幀的運(yùn)動(dòng)矢量后,就可以進(jìn)行視頻編碼。所述視頻編碼是在圖2所示的運(yùn)動(dòng)補(bǔ)償和編碼模塊中實(shí)現(xiàn)。
編碼過(guò)程包括以下過(guò)程將基于數(shù)據(jù)塊的運(yùn)動(dòng)矢量進(jìn)行編碼方式分析,形成基于數(shù)據(jù)塊和基于宏塊的運(yùn)動(dòng)矢量。對(duì)應(yīng)裁剪后圖像的每個(gè)數(shù)據(jù)塊依據(jù)下列原則處理如果第(i,j)位置的數(shù)據(jù)塊為宏塊,如果對(duì)應(yīng)預(yù)裁剪有效像素區(qū)域的幾個(gè)數(shù)據(jù)塊中有一個(gè)為幀內(nèi)編碼方式,則該(i,j)位置的數(shù)據(jù)塊為幀內(nèi)編碼方式。
通過(guò)(三)運(yùn)動(dòng)矢量插值所得到的數(shù)據(jù)塊運(yùn)動(dòng)矢量MV′K(i′,j′),計(jì)算四個(gè)數(shù)據(jù)塊的全局運(yùn)動(dòng)矢量MVK相對(duì)于該值的方差,即D′K(i′,j′)=Σp,q=01(MVK(i+p,j+q)-MV′K(i′,j′))2]]>如果給定閥值T,有DK′(i′,j′)<T,則選擇1MV方式,否則選擇4MV方式。這里T的典型值可以選擇。
當(dāng)為整像素時(shí)為T(mén)=2,當(dāng)為半像素時(shí)為T(mén)=1。T可以根據(jù)用戶的設(shè)計(jì)要求自行選擇。
如果第(i,j)位置的宏塊包含預(yù)裁剪有效像素區(qū)域邊界以外的宏塊,因?yàn)椴淮嬖谠摵陦K的運(yùn)動(dòng)矢量,可以采用兩種方法進(jìn)行處理一個(gè)是直接采用相鄰的宏塊編碼方式;另一個(gè)是采用幀內(nèi)編碼方式。
將運(yùn)動(dòng)矢量輸入視頻編碼器的運(yùn)動(dòng)補(bǔ)償和編碼模塊,進(jìn)行后續(xù)的視頻數(shù)據(jù)編碼。
權(quán)利要求
1.一種基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,其特征在于,包括如下處理(一)運(yùn)動(dòng)估計(jì)對(duì)輸入的當(dāng)前幀,進(jìn)行預(yù)裁剪,形成預(yù)裁剪后的有效像素區(qū)域;對(duì)當(dāng)前幀的預(yù)裁剪有效像素區(qū)域的每個(gè)宏塊與塊進(jìn)行運(yùn)動(dòng)估計(jì);由視頻編碼器的運(yùn)動(dòng)估計(jì)模塊輸出每個(gè)宏塊與塊相對(duì)于參考幀的運(yùn)動(dòng)矢量;(二)防抖統(tǒng)計(jì)宏塊與塊的運(yùn)動(dòng)矢量的分布頻度,以頻度最高的運(yùn)動(dòng)矢量作為相對(duì)全局運(yùn)動(dòng)矢量;計(jì)算絕對(duì)全局運(yùn)動(dòng)矢量,用于裁剪有效像素區(qū)域;依據(jù)絕對(duì)全局運(yùn)動(dòng)矢量,在總像素區(qū)域的圖像大小上重新裁剪有效像素區(qū)域,補(bǔ)償由于抖動(dòng)形成的全局運(yùn)動(dòng)矢量;(三)運(yùn)動(dòng)矢量插值根據(jù)預(yù)裁剪后有效像素區(qū)域中宏塊與塊的運(yùn)動(dòng)矢量和當(dāng)前幀用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量,通過(guò)插值獲得抖動(dòng)補(bǔ)償后重新裁剪有效像素區(qū)域宏塊與塊的運(yùn)動(dòng)矢量;(四)視頻編碼對(duì)通過(guò)插值獲取重新裁剪后有效像素區(qū)域的宏塊與塊的運(yùn)動(dòng)矢量,形成基于數(shù)據(jù)塊和基于宏塊的運(yùn)動(dòng)矢量,將運(yùn)動(dòng)矢量輸入視頻編碼器的運(yùn)動(dòng)補(bǔ)償和編碼模塊,進(jìn)行后續(xù)的視頻數(shù)據(jù)編碼。
2.如權(quán)利要求1所述的基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,其特征在于所述(一)運(yùn)動(dòng)估計(jì)中,當(dāng)前幀預(yù)裁剪的位置以參考幀的絕對(duì)運(yùn)動(dòng)矢量為依據(jù);所述運(yùn)動(dòng)矢量的精度可以是整像素,或者半像素、或者1/4像素。
3.如權(quán)利要求1所述的基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,其特征在于所述(二)防抖中,所述絕對(duì)全局運(yùn)動(dòng)矢量,在幀號(hào)為1時(shí)為零;在幀號(hào)大于1時(shí)為相對(duì)全局運(yùn)動(dòng)矢量的和。
4.如權(quán)利要求1所述的基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,其特征在于所述(三)運(yùn)動(dòng)矢量插值中,所述插值采用雙線性插值方法,或者其它插值方法實(shí)現(xiàn);所述運(yùn)動(dòng)矢量的精度依據(jù)視頻編碼器的精度要求進(jìn)行四舍五入。
5.如權(quán)利要求1所述的基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,其特征在于所述(四)視頻編碼中,通過(guò)(三)運(yùn)動(dòng)矢量插值所得到的數(shù)據(jù)塊運(yùn)動(dòng)矢量計(jì)算數(shù)據(jù)塊全局運(yùn)動(dòng)矢量相對(duì)于所述數(shù)據(jù)塊運(yùn)動(dòng)矢量的方差;如果所述方差小于給定閥值,則選擇1MV方式,否則選擇4MV方式;若運(yùn)動(dòng)矢量的精度為整像素時(shí),給定閥值為2;若運(yùn)動(dòng)矢量的精度為半像素時(shí),給定閥值為1。
6.如權(quán)利要求1所述的基于動(dòng)態(tài)圖像消除視頻編碼抖動(dòng)的實(shí)現(xiàn)方法,其特征在于所述(四)視頻編碼中,如果裁剪后有效像素區(qū)域的位置為宏塊,如果對(duì)應(yīng)預(yù)裁剪有效像素區(qū)域的幾個(gè)數(shù)據(jù)塊中有一個(gè)為幀內(nèi)編碼方式,則采用幀內(nèi)編碼方式;如果裁剪后有效像素區(qū)域的位置包含預(yù)裁剪有效像素區(qū)域中邊界以外的宏塊,或者采用相鄰的宏塊編碼方式,或者采用幀內(nèi)編碼方式。
7.一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,其特征在于,包括運(yùn)動(dòng)估計(jì)模塊,運(yùn)動(dòng)補(bǔ)償和編碼模塊,防抖模塊和運(yùn)動(dòng)矢量插值模塊;所述防抖模塊和運(yùn)動(dòng)矢量插值模塊添加于所述運(yùn)動(dòng)估計(jì)模塊與所述運(yùn)動(dòng)補(bǔ)償和編碼模塊之間;所述運(yùn)動(dòng)估計(jì)模塊,用于對(duì)輸入的當(dāng)前幀進(jìn)行預(yù)裁剪,對(duì)預(yù)裁剪后的有效像素區(qū)域的每個(gè)宏塊進(jìn)行運(yùn)動(dòng)估計(jì),然后輸出宏塊與塊相對(duì)于參考幀的運(yùn)動(dòng)矢量;所述防抖模塊,用于統(tǒng)計(jì)宏塊與塊的運(yùn)動(dòng)矢量的分布頻度,以頻度最高的運(yùn)動(dòng)矢量作為相對(duì)全局運(yùn)動(dòng)矢量;將計(jì)算得到的絕對(duì)全局運(yùn)動(dòng)矢量用于在總像素區(qū)域的圖像大小上重新裁剪有效像素區(qū)域,補(bǔ)償由于抖動(dòng)形成的全局運(yùn)動(dòng)矢量;所述運(yùn)動(dòng)矢量插值模塊,用于根據(jù)預(yù)裁剪后有效像素區(qū)域中宏塊與塊的運(yùn)動(dòng)矢量和當(dāng)前幀用于補(bǔ)償抖動(dòng)的全局運(yùn)動(dòng)矢量,進(jìn)行插值獲得抖動(dòng)補(bǔ)償后重新裁剪有效像素區(qū)域宏塊與塊的運(yùn)動(dòng)矢量;所述運(yùn)動(dòng)補(bǔ)償和編碼模塊,用于對(duì)通過(guò)插值獲取重新裁剪后有效像素區(qū)域的宏塊與塊的運(yùn)動(dòng)矢量,形成基于數(shù)據(jù)塊和基于宏塊的運(yùn)動(dòng)矢量,對(duì)輸入的運(yùn)動(dòng)矢量,進(jìn)行后續(xù)的視頻數(shù)據(jù)編碼。
8.如權(quán)利要求7所述的基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,其特征在于所述運(yùn)動(dòng)估計(jì)模塊中,當(dāng)前幀預(yù)裁剪的位置以參考幀的絕對(duì)運(yùn)動(dòng)矢量為依據(jù);所述運(yùn)動(dòng)矢量的精度可以是整像素,或者半像素、或者1/4像素。
9.如權(quán)利要求7所述的基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,其特征在于所述防抖模塊中,所述絕對(duì)全局運(yùn)動(dòng)矢量,在幀號(hào)為1時(shí)為零;在幀號(hào)大于1時(shí)為相對(duì)全局運(yùn)動(dòng)矢量的和。
10.如權(quán)利要求7所述的基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,其特征在于所述運(yùn)動(dòng)矢量插值模塊中,所述插值采用雙線性插值方法,或者其它插值方法實(shí)現(xiàn);所述運(yùn)動(dòng)矢量的精度依據(jù)視頻編碼器的精度要求進(jìn)行四舍五入。
11.如權(quán)利要求7所述的基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,其特征在于所述運(yùn)動(dòng)補(bǔ)償和編碼模塊,對(duì)通過(guò)運(yùn)動(dòng)矢量插值所得到的數(shù)據(jù)塊運(yùn)動(dòng)矢量計(jì)算數(shù)據(jù)塊全局運(yùn)動(dòng)矢量相對(duì)于所述數(shù)據(jù)塊運(yùn)動(dòng)矢量的方差;若運(yùn)動(dòng)矢量的精度為整像素時(shí),給定閥值為2;若運(yùn)動(dòng)矢量的精度為半像素時(shí),給定閥值為1;如果所述方差小于給定閥值,則選擇1MV方式,否則選擇4MV方式。
12.如權(quán)利要求7所述的基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的編碼器,其特征在于所述運(yùn)動(dòng)補(bǔ)償和編碼模塊,如果裁剪后有效像素區(qū)域的位置為宏塊,如果對(duì)應(yīng)預(yù)裁剪有效像素區(qū)域的幾個(gè)數(shù)據(jù)塊中有一個(gè)為幀內(nèi)編碼方式,則采用幀內(nèi)編碼方式;如果裁剪后有效像素區(qū)域的位置包含預(yù)裁剪有效像素區(qū)域中邊界以外的宏塊,或者采用相鄰的宏塊編碼方式,或者采用幀內(nèi)編碼方式。
全文摘要
本發(fā)明屬于計(jì)算機(jī)視頻編碼技術(shù),涉及對(duì)計(jì)算機(jī)圖像的處理,本發(fā)明提出了一種基于動(dòng)態(tài)圖像實(shí)現(xiàn)視頻編碼防抖的方法及編碼器,本發(fā)明無(wú)需外加運(yùn)動(dòng)傳感器,而通過(guò)運(yùn)動(dòng)估計(jì)方法獲得全局的運(yùn)動(dòng)矢量,用于描述存在的抖動(dòng);通過(guò)基于宏塊與塊的運(yùn)動(dòng)矢量插值方法,形成用于最終編碼的基于宏塊與塊的運(yùn)動(dòng)矢量。這樣,具備防抖功能的視頻編碼器就可以僅通過(guò)一次運(yùn)動(dòng)估計(jì)過(guò)程,同時(shí)獲取用于防抖的全局運(yùn)動(dòng)矢量和用于最終編碼的基于宏塊與塊的運(yùn)動(dòng)矢量,大大減少了計(jì)算的復(fù)雜度。本發(fā)明所述方法可應(yīng)用于數(shù)字?jǐn)z像機(jī)中的視頻編碼器,所述的視頻編碼器,整合了視頻壓縮和電子防抖兩大功能。
文檔編號(hào)H04N7/26GK1791221SQ200510132890
公開(kāi)日2006年6月21日 申請(qǐng)日期2005年12月29日 優(yōu)先權(quán)日2005年12月29日
發(fā)明者夏煜, 王浩, 白鋒 申請(qǐng)人:北京中星微電子有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
清涧县| 双城市| 商丘市| 阿巴嘎旗| 儋州市| 钟山县| 迁安市| 巴彦淖尔市| 革吉县| 潜山县| 望城县| 朔州市| 攀枝花市| 安乡县| 石棉县| 岗巴县| 毕节市| 云龙县| 扎囊县| 天等县| 沈丘县| 桐乡市| 山西省| 兰溪市| 沾化县| 兖州市| 青浦区| 朝阳区| 宁武县| 靖边县| 富民县| 磐石市| 刚察县| 建湖县| 汉中市| 南岸区| 普宁市| 隆尧县| 衢州市| 九龙坡区| 白水县|