欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于gpu的運(yùn)動(dòng)估計(jì)方法

文檔序號(hào):7794875閱讀:387來(lái)源:國(guó)知局
一種基于gpu的運(yùn)動(dòng)估計(jì)方法
【專利摘要】本發(fā)明公開了一種基于GPU的運(yùn)動(dòng)估計(jì)方法,具體流程為:CPU將圖像數(shù)據(jù)送入GPU,然后計(jì)算N×N塊的SAD,合成2N×2N的CU塊中其他模式PU塊的SAD值,求得各PU塊的最佳SAD,GPU將圖像的各PU塊的最佳SAD傳回CPU,CPU根據(jù)CU的尺寸更新當(dāng)前N×N?PU塊的SAD信息,將得到幀間預(yù)測(cè)最佳劃分模式以及最小cost和運(yùn)動(dòng)矢量。通過本發(fā)明方法能夠加速運(yùn)動(dòng)估計(jì)運(yùn)算效率,提高編碼速度。
【專利說明】—種基于GPU的運(yùn)動(dòng)估計(jì)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻編碼【技術(shù)領(lǐng)域】,尤其涉及一種基于GPU的運(yùn)動(dòng)估計(jì)方法。
【背景技術(shù)】
[0002]隨著人們對(duì)視頻壓縮標(biāo)準(zhǔn)的要求不斷提高,從2010年開始,IS0/IEC與ITU-T開始聯(lián)合在全球征集下一代視頻壓縮標(biāo)準(zhǔn)的提案,該視頻標(biāo)準(zhǔn)命名為HEVC(High efficiencyVideo Coding),同時(shí)建立了其測(cè)試模型HM。新標(biāo)準(zhǔn)已于2013年發(fā)布,它的目標(biāo)是在相同視頻質(zhì)量(PSNR)下碼率降低到H.264的40%_50%左右,這將使高清視頻傳輸對(duì)帶寬的要求進(jìn)一步降低。不過HEVC的優(yōu)越性能均是以增加編解碼的復(fù)雜度的代價(jià)獲得的,與H.264相t匕,HEVC的復(fù)雜度達(dá)到前者的3倍以上。因此為了實(shí)時(shí)應(yīng)用,如何加速視頻編碼器成為問題的關(guān)鍵。在現(xiàn)階段,為了加速視頻編解碼器,人們采用了 CPU的SSE等多媒體指令集、FPGA硬件電路以及DSP芯片等方法進(jìn)行編解碼器加速的研究,獲得了相對(duì)理想的加速效果。不過這些方法都增加了 PC機(jī)的成本,同時(shí)其性能提升也有很大的瓶頸。
[0003]1999年NVIDIA公司發(fā)布了第一顆GPU的圖形處理芯片Geforce256,其強(qiáng)大的浮點(diǎn)計(jì)算能力以及優(yōu)異的并行計(jì)算能力從發(fā)布開始就受到了業(yè)界的關(guān)注。同時(shí)隨著GPU的不斷發(fā)展,GPU的應(yīng)用已不僅僅局限于圖形顯示,它在通用計(jì)算方面也展現(xiàn)了極大的潛力。在國(guó)內(nèi)外,已經(jīng)有些公司以及研究機(jī)構(gòu)開始將GPU應(yīng)用于其專業(yè)領(lǐng)域,如航空、生物、氣象、金融等等,并且都取得了很好的效果。特別是對(duì)于一些數(shù)據(jù)量大、平行性比較好的項(xiàng)目取得了高達(dá)幾十倍的加速,應(yīng)GPU加速將大大縮短項(xiàng)目的研發(fā)周期,同時(shí)也將帶來(lái)相當(dāng)大的經(jīng)濟(jì)效益。
[0004]當(dāng)前,不論是H.264/AVC還是AVS都將GPU并行作為編解碼加速的一個(gè)研究熱點(diǎn),并且都取得了良好的成果。很多基于CUDA的視頻處理軟件,如Badaboom和Mediacoder的應(yīng)用也有效證明了 GPU并行的可行性。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的缺陷,提供一種基于GPU的運(yùn)動(dòng)估計(jì)方法,該方法通過借助于CUDA與GPU的結(jié)合來(lái)選擇最佳的SAD,從而提高加速運(yùn)動(dòng)估計(jì)運(yùn)算效率,具體流程為:CPU將圖像數(shù)據(jù)送入GPU,然后計(jì)算NXN塊的SAD,合成2NX 2N的⑶塊中其他模式PU塊的SAD值,求得各PU塊的最佳SAD,GPU將圖像的各I3U塊的最佳SAD傳回CPU,CPU根據(jù)CU的尺寸更新當(dāng)前NXN PU塊的SAD信息,將得到幀間預(yù)測(cè)最佳劃分模式以及最小cost和運(yùn)動(dòng)矢量。
[0006]優(yōu)選地,該方法的遞歸方向與HM中的遞歸方向相反,這是因?yàn)橹挥星蟮卯?dāng)前CU更深一層的⑶塊的運(yùn)動(dòng)估計(jì)信息時(shí)才能夠更新當(dāng)前NXN PU塊的SAD信息。
[0007]優(yōu)選地,計(jì)算NXN塊的SAD時(shí),將當(dāng)前幀數(shù)據(jù)以及參考幀傳入到設(shè)備端,即GPU中,并且使用紋理內(nèi)存進(jìn)行綁定。
[0008]優(yōu)選地,該方法使用了歸約合并的方法分別對(duì)各塊的搜索范圍窗口中的SAD進(jìn)行比較,得到每種塊模式下最小SAD的運(yùn)動(dòng)矢量,即該塊模式下的最佳運(yùn)動(dòng)矢量。
[0009]優(yōu)選地,當(dāng)⑶塊已經(jīng)是最小深度的⑶塊時(shí)不需要對(duì)NXN PU的SAD進(jìn)行更新。
[0010]優(yōu)選地,⑶塊尺寸越大,網(wǎng)格中的塊個(gè)數(shù)也就越少,加速比顯著增加。
[0011]本發(fā)明技術(shù)方案帶來(lái)的有益效果:
[0012]本發(fā)明為了加速運(yùn)動(dòng)估計(jì)運(yùn)算效率,提出了基于GPU的運(yùn)動(dòng)估計(jì)方法,通過借助于CUDA與GPU的結(jié)合來(lái)選擇最佳的SAD,從而加速運(yùn)動(dòng)估計(jì)運(yùn)算效率,提高編碼效率。
【專利附圖】

【附圖說明】
[0013]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
[0014]圖1是本發(fā)明的實(shí)施例中CU塊中PU塊的合成樹圖;
[0015]圖2是本發(fā)明的實(shí)施例中SAD搜索范圍內(nèi)的歸約合并圖;
[0016]圖3是本發(fā)明的實(shí)施例中最佳劃分方式比較圖;
[0017]圖4是本發(fā)明的基于GPU的運(yùn)動(dòng)估計(jì)方法流程圖;
[0018]圖5是本發(fā)明的⑶塊運(yùn)動(dòng)估計(jì)CPU算法與GPU算法加速比比較圖。
【具體實(shí)施方式】
[0019]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0020]運(yùn)動(dòng)估計(jì)即搜索窗邊內(nèi)尋找與當(dāng)前塊最匹配的數(shù)據(jù)塊,這樣就存在著如何判斷兩個(gè)塊是否匹配的問題,所以必須定義一個(gè)匹配準(zhǔn)則,常用的匹配方法有最小均方差(MSE)、最小平均絕對(duì)值誤差(MAD)、閾值差別計(jì)數(shù)(NTD)以及常用的絕對(duì)差值和(SAD)。得到整個(gè)搜索范圍的SAD后,必須對(duì)所有的SAD進(jìn)行選擇,得到一個(gè)最佳的SAD。本發(fā)明提出了一種基于GPU的運(yùn)動(dòng)估計(jì)方法,該方法通過借助于CUDA與GPU的結(jié)合來(lái)選擇最佳的SAD,從而加速運(yùn)動(dòng)估計(jì)運(yùn)算效率,提高編碼效率。
[0021]由于HEVC編碼采用遞歸的方法進(jìn)行編碼,所以編碼器也將采用遞歸的方法對(duì)64X64到8X8的CU塊進(jìn)行運(yùn)動(dòng)估計(jì)。不過需要注意的是,該算法的遞歸方向應(yīng)該與HM中的遞歸方向相反,這是因?yàn)橹挥星蟮卯?dāng)前CU更深一層的CU塊的運(yùn)動(dòng)估計(jì)信息時(shí)才能夠更新當(dāng)前NXN PU塊的SAD信息。下面將以8X8的CU塊為例說明算法的流程。
[0022]Stepl先計(jì)算圖像中所有4X4塊的SAD值;
[0023]將當(dāng)前幀數(shù)據(jù)以及參考幀傳入到設(shè)備端,即GPU中,并且使用紋理內(nèi)存進(jìn)行綁定。調(diào)用Kerne_SAD函數(shù)計(jì)算4X4塊的SAD值,其中kernel_SAD的網(wǎng)格(Grid)維度為 dim3 (ffidth/N, Height/N, I),網(wǎng)格中 block 的線程維度為 dim3 (2 X Search_Range, 2X Search_Range, I),其中 Search_Range 為運(yùn)動(dòng)估計(jì)的搜索范圍,Width 和 Height分別為圖像的寬度與高度。[0024]St印2合成其它I3U塊的SAD值;
[0025]在⑶塊的尺寸大小為8時(shí),此時(shí)為最小編碼樹深度,I3U塊的模式有4X4、4X8、8X4和8X8。在上面一步中求得了所有4X4塊的SAD,其它塊的合并過程如圖1所示。兩個(gè)橫向的4 X 4的SAD值合并成一個(gè)8 X 4的SAD,兩個(gè)縱向的4 X 4的SAD值合并成一個(gè)4X8的SAD,最后將兩個(gè)4X8的SAD值合并成一個(gè)8X8的SAD值。
[0026]St印3求得各模式I3U塊的搜索范圍內(nèi)的最小SAD值;
[0027]在算法中,本文使用了歸約合并的方法分別對(duì)4X4、4X8、8X4以及8X8四種PU塊的搜索范圍窗口中的SAD進(jìn)行比較,得到每種塊模式下最小SAD的運(yùn)動(dòng)矢量,即該塊模式下的最佳MV。下面將對(duì)該過程進(jìn)行說明,假設(shè)搜索范圍為8,則搜索點(diǎn)的數(shù)目達(dá)到了 256,其歸約合并過程如圖2所示。先對(duì)256個(gè)SAD對(duì)半劃分,得到128組,進(jìn)行兩兩比較得到128個(gè)相對(duì)最小的SAD。依次類推,再將128進(jìn)行對(duì)半分為64組,比較得到32個(gè)最小的SAD,總共經(jīng)過7次歸約合并就可得到該搜索范圍內(nèi)的最佳運(yùn)動(dòng)矢量。
[0028]St印4CPU處理過程;
[0029]CPU的處理過程包括更新當(dāng)前NXN PU塊的最佳SAD信息以及選擇幀間預(yù)測(cè)最佳劃分模式,同時(shí)得到最小cost和相應(yīng)的運(yùn)動(dòng)矢量。對(duì)于8 X 8⑶運(yùn)動(dòng)估計(jì),求出4種PU塊的搜索范圍內(nèi)的最小SAD以及最佳運(yùn)動(dòng)矢量以后,因?yàn)樵揅U塊已經(jīng)是最小深度的CU塊了,所以不需要對(duì)NXN 的SAD進(jìn)行更新。接下來(lái)直接對(duì)塊的四種劃分模式進(jìn)行比較以得到⑶塊的最佳PU劃分方式。具體如圖5所示,其中4X 8模式SAD值是兩個(gè)4X 8塊SAD值之和,同樣8x4模式SAD值是兩個(gè)8X4塊SAD之和,最后4X4模式SAD值是4個(gè)4X4塊SAD值相加。然后對(duì)這四種模式SAD進(jìn)行比較,得到一個(gè)最佳的預(yù)測(cè)塊(PU)劃分方式以及最佳運(yùn)動(dòng)矢量(MV)。
[0030]對(duì)于其他尺寸的⑶塊的運(yùn)動(dòng)估計(jì),所不同的是,該⑶塊的kerne 1_SAD函數(shù)的網(wǎng)格維度變?yōu)閐im3 (ffidth/N, Height/N, I),對(duì)16X 16CU塊來(lái)說,其尺寸就為dim3 (ffidth/8, Height/8, I);同時(shí),對(duì)于其他大于8 X 8的CU塊來(lái)說,CPU處理過程必須先更新NXN PU塊的SAD信息。下面以16X 16⑶塊為簡(jiǎn)單說明,16X 16⑶塊的PU塊有4種的分塊模式為16X 16、16X8、8X 16以及8X8,在計(jì)算比較16X 16⑶塊的劃分過程中,先更新8 X 8塊的信息。在比較過程中,16 X 16塊中四個(gè)8 X 8分塊采用的SAD值為8X8的多種劃分模式比較得到的最小SAD值。處理完16X16⑶塊后,則將信息傳遞回編碼器。這里信息包括整幅圖像中所有16X 16⑶和8X8⑶的劃分方式以及其相應(yīng)的最小SAD值。
[0031]本發(fā)明方法的總流程如圖4所示,具體為:CPU將圖像數(shù)據(jù)送入GPU,然后計(jì)算NXN塊的SAD,合成2NX 2N的⑶塊中其他模式I3U塊的SAD值,求得各PU塊的最佳SAD,GPU將圖像的各I3U塊的最佳SAD傳回CPU,CPU根據(jù)⑶的尺寸更新當(dāng)前NXN PU塊的SAD信息,將得到幀間預(yù)測(cè)最佳劃分模式以及最小cost和運(yùn)動(dòng)矢量。
[0032]基于GPU的運(yùn)動(dòng)估計(jì)算法在以下的環(huán)境中進(jìn)行了測(cè)試:CPU: Inter?'Core?i7-26003.40GHz ;內(nèi)存 16.0GB ;顯卡:NVIDIA GeForce GTX460 (1024MB 顯存);系統(tǒng) windows7spl+Microsoft visual studio2010 ;CUDA 工具:CUDA driver4.1、CUDAtoolkit4.1和 CUDA SDK4.1for windows7。
[0033]圖5是各尺寸⑶以及各視頻尺寸CPU運(yùn)動(dòng)估計(jì)方法與GPU運(yùn)動(dòng)估計(jì)方法加速比對(duì)比圖。從圖5中可以看出,GPU算法與CPU算法的加速比隨著序列尺寸的增加而遞增。而圖像中,⑶塊尺寸越大,那么網(wǎng)格(grid)中的塊個(gè)數(shù)也就越少,加速比顯著增加。
[0034]以上對(duì)本發(fā)明實(shí)施例所提供的一種基于GPU的運(yùn)動(dòng)估計(jì)方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種基于GPU的運(yùn)動(dòng)估計(jì)方法,其特征在于,該方法通過借助于CUDA與GPU的結(jié)合來(lái)選擇最佳的SAD,從而提高加速運(yùn)動(dòng)估計(jì)運(yùn)算效率,具體流程為:CPU將圖像數(shù)據(jù)送入GPU,然后計(jì)算NXN塊的SAD,合成2NX 2N的⑶塊中其他模式I3U塊的SAD值,求得各PU塊的最佳SAD,GPU將圖像的各I3U塊的最佳SAD傳回CPU,CPU根據(jù)⑶的尺寸更新當(dāng)前NXNPU塊的SAD信息,將得到幀間預(yù)測(cè)最佳劃分模式以及最小cost和運(yùn)動(dòng)矢量。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法的遞歸方向與HM中的遞歸方向相反,這是因?yàn)橹挥星蟮卯?dāng)前⑶更深一層的⑶塊的運(yùn)動(dòng)估計(jì)信息時(shí)才能夠更新當(dāng)前NXN PU塊的SAD信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,計(jì)算NXN塊的SAD時(shí),將當(dāng)前幀數(shù)據(jù)以及參考幀傳入到設(shè)備端,即GPU中,并且使用紋理內(nèi)存進(jìn)行綁定。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法使用了歸約合并的方法分別對(duì)各PU塊的搜索范圍窗口中的SAD進(jìn)行比較,得到每種塊模式下最小SAD的運(yùn)動(dòng)矢量,即該塊模式下的最佳運(yùn)動(dòng)矢量。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)CU塊已經(jīng)是最小深度的CU塊時(shí)不需要對(duì)NXN PU的SAD進(jìn)行更新。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,CU塊尺寸越大,網(wǎng)格中的塊個(gè)數(shù)也就越少,加速比顯著增加。
【文檔編號(hào)】H04N19/51GK103747262SQ201410009541
【公開日】2014年4月23日 申請(qǐng)日期:2014年1月8日 優(yōu)先權(quán)日:2014年1月8日
【發(fā)明者】梁凡, 劉海軍 申請(qǐng)人:中山大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宁津县| 裕民县| 时尚| 金乡县| 弋阳县| 正蓝旗| 库伦旗| 莱芜市| 汝南县| 余庆县| 绿春县| 龙门县| 宁波市| 九台市| 孟连| 九龙坡区| 台山市| 绵阳市| 乾安县| 武穴市| 于田县| 大同市| 漯河市| 锦屏县| 华亭县| 舟曲县| 万荣县| 大石桥市| 莒南县| 巴彦淖尔市| 抚远县| 黄浦区| 乌兰浩特市| 营山县| 定襄县| 瓦房店市| 青岛市| 金门县| 澄江县| 彭阳县| 福州市|