CN103747262A - 一种基于gpu的运动估计方法 - Google Patents
一种基于gpu的运动估计方法 Download PDFInfo
- Publication number
- CN103747262A CN103747262A CN201410009541.0A CN201410009541A CN103747262A CN 103747262 A CN103747262 A CN 103747262A CN 201410009541 A CN201410009541 A CN 201410009541A CN 103747262 A CN103747262 A CN 103747262A
- Authority
- CN
- China
- Prior art keywords
- sad
- piece
- gpu
- cpu
- motion estimation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000033001 locomotion Effects 0.000 title claims abstract description 29
- 238000012545 processing Methods 0.000 title abstract description 8
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims description 9
- 230000009467 reduction Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 7
- 238000000638 solvent extraction Methods 0.000 abstract 1
- 230000002194 synthesizing effect Effects 0.000 abstract 1
- 230000001133 acceleration Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于GPU的运动估计方法,具体流程为:CPU将图像数据送入GPU,然后计算N×N块的SAD,合成2N×2N的CU块中其他模式PU块的SAD值,求得各PU块的最佳SAD,GPU将图像的各PU块的最佳SAD传回CPU,CPU根据CU的尺寸更新当前N×N PU块的SAD信息,将得到帧间预测最佳划分模式以及最小cost和运动矢量。通过本发明方法能够加速运动估计运算效率,提高编码速度。
Description
技术领域
本发明涉及视频编码技术领域,尤其涉及一种基于GPU的运动估计方法。
背景技术
随着人们对视频压缩标准的要求不断提高,从2010年开始,ISO/IEC与ITU-T开始联合在全球征集下一代视频压缩标准的提案,该视频标准命名为HEVC(High efficiency Video Coding),同时建立了其测试模型HM。新标准已于2013年发布,它的目标是在相同视频质量(PSNR)下码率降低到H.264的40%-50%左右,这将使高清视频传输对带宽的要求进一步降低。不过HEVC的优越性能均是以增加编解码的复杂度的代价获得的,与H.264相比,HEVC的复杂度达到前者的3倍以上。因此为了实时应用,如何加速视频编码器成为问题的关键。在现阶段,为了加速视频编解码器,人们采用了CPU的SSE等多媒体指令集、FPGA硬件电路以及DSP芯片等方法进行编解码器加速的研究,获得了相对理想的加速效果。不过这些方法都增加了PC机的成本,同时其性能提升也有很大的瓶颈。
1999年NVIDIA公司发布了第一颗GPU的图形处理芯片Geforce256,其强大的浮点计算能力以及优异的并行计算能力从发布开始就受到了业界的关注。同时随着GPU的不断发展,GPU的应用已不仅仅局限于图形显示,它在通用计算方面也展现了极大的潜力。在国内外,已经有些公司以及研究机构开始将GPU应用于其专业领域,如航空、生物、气象、金融等等,并且都取得了很好的效果。特别是对于一些数据量大、平行性比较好的项目取得了高达几十倍的加速,应GPU加速将大大缩短项目的研发周期,同时也将带来相当大的经济效益。
当前,不论是H.264/AVC还是AVS都将GPU并行作为编解码加速的一个研究热点,并且都取得了良好的成果。很多基于CUDA的视频处理软件,如Badaboom和Mediacoder的应用也有效证明了GPU并行的可行性。
发明内容
本发明的目的是为了克服现有技术的缺陷,提供一种基于GPU的运动估计方法,该方法通过借助于CUDA与GPU的结合来选择最佳的SAD,从而提高加速运动估计运算效率,具体流程为:CPU将图像数据送入GPU,然后计算N×N块的SAD,合成2N×2N的CU块中其他模式PU块的SAD值,求得各PU块的最佳SAD,GPU将图像的各PU块的最佳SAD传回CPU,CPU根据CU的尺寸更新当前N×N PU块的SAD信息,将得到帧间预测最佳划分模式以及最小cost和运动矢量。
优选地,该方法的递归方向与HM中的递归方向相反,这是因为只有求得当前CU更深一层的CU块的运动估计信息时才能够更新当前N×N PU块的SAD信息。
优选地,计算N×N块的SAD时,将当前帧数据以及参考帧传入到设备端,即GPU中,并且使用纹理内存进行绑定。
优选地,该方法使用了归约合并的方法分别对各PU块的搜索范围窗口中的SAD进行比较,得到每种块模式下最小SAD的运动矢量,即该块模式下的最佳运动矢量。
优选地,当CU块已经是最小深度的CU块时不需要对N×N PU的SAD进行更新。
优选地,CU块尺寸越大,网格中的块个数也就越少,加速比显著增加。
本发明技术方案带来的有益效果:
本发明为了加速运动估计运算效率,提出了基于GPU的运动估计方法,通过借助于CUDA与GPU的结合来选择最佳的SAD,从而加速运动估计运算效率,提高编码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明的实施例中CU块中PU块的合成树图;
图2是本发明的实施例中SAD搜索范围内的归约合并图;
图3是本发明的实施例中最佳PU划分方式比较图;
图4是本发明的基于GPU的运动估计方法流程图;
图5是本发明的CU块运动估计CPU算法与GPU算法加速比比较图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
运动估计即搜索窗边内寻找与当前块最匹配的数据块,这样就存在着如何判断两个块是否匹配的问题,所以必须定义一个匹配准则,常用的匹配方法有最小均方差(MSE)、最小平均绝对值误差(MAD)、阈值差别计数(NTD)以及常用的绝对差值和(SAD)。得到整个搜索范围的SAD后,必须对所有的SAD进行选择,得到一个最佳的SAD。本发明提出了一种基于GPU的运动估计方法,该方法通过借助于CUDA与GPU的结合来选择最佳的SAD,从而加速运动估计运算效率,提高编码效率。
由于HEVC编码采用递归的方法进行编码,所以编码器也将采用递归的方法对64×64到8×8的CU块进行运动估计。不过需要注意的是,该算法的递归方向应该与HM中的递归方向相反,这是因为只有求得当前CU更深一层的CU块的运动估计信息时才能够更新当前N×N PU块的SAD信息。下面将以8×8的CU块为例说明算法的流程。
Step1先计算图像中所有4×4块的SAD值;
将当前帧数据以及参考帧传入到设备端,即GPU中,并且使用纹理内存进行绑定。调用Kerne_SAD函数计算4×4块的SAD值,其中kernel_SAD的网格(Grid)维度为dim3(Width/N,Height/N,1),网格中block的线程维度为dim3(2×Search_Range,2×Search_Range,1),其中Search_Range为运动估计的搜索范围,Width和Height分别为图像的宽度与高度。
Step2合成其它PU块的SAD值;
在CU块的尺寸大小为8时,此时为最小编码树深度,PU块的模式有4×4、4×8、8×4和8×8。在上面一步中求得了所有4×4块的SAD,其它块的合并过程如图1所示。两个横向的4×4的SAD值合并成一个8×4的SAD,两个纵向的4×4的SAD值合并成一个4×8的SAD,最后将两个4×8的SAD值合并成一个8×8的SAD值。
Step3求得各模式PU块的搜索范围内的最小SAD值;
在算法中,本文使用了归约合并的方法分别对4×4、4×8、8×4以及8×8四种PU块的搜索范围窗口中的SAD进行比较,得到每种块模式下最小SAD的运动矢量,即该块模式下的最佳MV。下面将对该过程进行说明,假设搜索范围为8,则搜索点的数目达到了256,其归约合并过程如图2所示。先对256个SAD对半划分,得到128组,进行两两比较得到128个相对最小的SAD。依次类推,再将128进行对半分为64组,比较得到32个最小的SAD,总共经过7次归约合并就可得到该搜索范围内的最佳运动矢量。
Step4CPU处理过程;
CPU的处理过程包括更新当前N×N PU块的最佳SAD信息以及选择帧间预测最佳划分模式,同时得到最小cost和相应的运动矢量。对于8×8CU运动估计,求出4种PU块的搜索范围内的最小SAD以及最佳运动矢量以后,因为该CU块已经是最小深度的CU块了,所以不需要对N×N PU的SAD进行更新。接下来直接对PU块的四种划分模式进行比较以得到CU块的最佳PU划分方式。具体如图5所示,其中4×8模式SAD值是两个4×8块SAD值之和,同样8x4模式SAD值是两个8×4块SAD之和,最后4×4模式SAD值是4个4×4块SAD值相加。然后对这四种模式SAD进行比较,得到一个最佳的预测块(PU)划分方式以及最佳运动矢量(MV)。
对于其他尺寸的CU块的运动估计,所不同的是,该CU块的kernel_SAD函数的网格维度变为dim3(Width/N,Height/N,1),对16×16CU块来说,其尺寸就为dim3(Width/8,Height/8,1);同时,对于其他大于8×8的CU块来说,CPU处理过程必须先更新N×N PU块的SAD信息。下面以16×16CU块为简单说明,16×16CU块的PU块有4种的分块模式为16×16、16×8、8×16以及8×8,在计算比较16×16CU块的划分过程中,先更新8×8块的信息。在比较过程中,16×16块中四个8×8分块采用的SAD值为8×8的多种划分模式比较得到的最小SAD值。处理完16×16CU块后,则将信息传递回编码器。这里信息包括整幅图像中所有16×16CU和8×8CU的划分方式以及其相应的最小SAD值。
本发明方法的总流程如图4所示,具体为:CPU将图像数据送入GPU,然后计算N×N块的SAD,合成2N×2N的CU块中其他模式PU块的SAD值,求得各PU块的最佳SAD,GPU将图像的各PU块的最佳SAD传回CPU,CPU根据CU的尺寸更新当前N×N PU块的SAD信息,将得到帧间预测最佳划分模式以及最小cost和运动矢量。
基于GPU的运动估计算法在以下的环境中进行了测试:CPU:CoreTMi7-26003.40GHz;内存16.0GB;显卡:NVIDIA GeForce GTX460(1024MB显存);系统windows7sp1+Microsoft visual studio2010;CUDA工具:CUDA driver4.1、CUDA toolkit4.1和CUDA SDK4.1for windows7。
图5是各尺寸CU以及各视频尺寸CPU运动估计方法与GPU运动估计方法加速比对比图。从图5中可以看出,GPU算法与CPU算法的加速比随着序列尺寸的增加而递增。而图像中,CU块尺寸越大,那么网格(grid)中的块个数也就越少,加速比显著增加。
以上对本发明实施例所提供的一种基于GPU的运动估计方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种基于GPU的运动估计方法,其特征在于,该方法通过借助于CUDA与GPU的结合来选择最佳的SAD,从而提高加速运动估计运算效率,具体流程为:CPU将图像数据送入GPU,然后计算N×N块的SAD,合成2N×2N的CU块中其他模式PU块的SAD值,求得各PU块的最佳SAD,GPU将图像的各PU块的最佳SAD传回CPU,CPU根据CU的尺寸更新当前N×N PU块的SAD信息,将得到帧间预测最佳划分模式以及最小cost和运动矢量。
2.根据权利要求1所述的方法,其特征在于,该方法的递归方向与HM中的递归方向相反,这是因为只有求得当前CU更深一层的CU块的运动估计信息时才能够更新当前N×N PU块的SAD信息。
3.根据权利要求1所述的方法,其特征在于,计算N×N块的SAD时,将当前帧数据以及参考帧传入到设备端,即GPU中,并且使用纹理内存进行绑定。
4.根据权利要求1所述的方法,其特征在于,该方法使用了归约合并的方法分别对各PU块的搜索范围窗口中的SAD进行比较,得到每种块模式下最小SAD的运动矢量,即该块模式下的最佳运动矢量。
5.根据权利要求1所述的方法,其特征在于,当CU块已经是最小深度的CU块时不需要对N×N PU的SAD进行更新。
6.根据权利要求1所述的方法,其特征在于,CU块尺寸越大,网格中的块个数也就越少,加速比显著增加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009541.0A CN103747262B (zh) | 2014-01-08 | 2014-01-08 | 一种基于gpu的运动估计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009541.0A CN103747262B (zh) | 2014-01-08 | 2014-01-08 | 一种基于gpu的运动估计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103747262A true CN103747262A (zh) | 2014-04-23 |
CN103747262B CN103747262B (zh) | 2017-10-10 |
Family
ID=50504245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410009541.0A Expired - Fee Related CN103747262B (zh) | 2014-01-08 | 2014-01-08 | 一种基于gpu的运动估计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103747262B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125466A (zh) * | 2014-07-10 | 2014-10-29 | 中山大学 | 一种基于gpu的hevc并行解码方法 |
CN104159123A (zh) * | 2014-08-11 | 2014-11-19 | 哈尔滨工业大学深圳研究生院 | 一种适合于硬件实现的hevc运动估计方法 |
CN104994394A (zh) * | 2015-05-04 | 2015-10-21 | 北京大学 | 编码器运动估算方法及装置 |
CN105245896A (zh) * | 2015-10-09 | 2016-01-13 | 传线网络科技(上海)有限公司 | Hevc并行运动补偿方法及装置 |
CN106878737A (zh) * | 2017-03-02 | 2017-06-20 | 西安电子科技大学 | 高效视频编码中的运动估计加速方法 |
CN107135392A (zh) * | 2017-04-21 | 2017-09-05 | 西安电子科技大学 | 基于异步模式的hevc运动搜索并行方法 |
CN109618165A (zh) * | 2019-01-07 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种图像解码方法、系统及主机和图像处理系统 |
CN110913231A (zh) * | 2019-12-12 | 2020-03-24 | 西安邮电大学 | 一种纹理图整数运动估计并行实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102547289A (zh) * | 2012-01-17 | 2012-07-04 | 西安电子科技大学 | 基于gpu并行实现的快速运动估计方法 |
CN102647588A (zh) * | 2011-02-17 | 2012-08-22 | 北京大学深圳研究生院 | 一种用于分层搜索运动估计的gpu加速方法 |
US8374242B1 (en) * | 2008-12-23 | 2013-02-12 | Elemental Technologies Inc. | Video encoder using GPU |
-
2014
- 2014-01-08 CN CN201410009541.0A patent/CN103747262B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8374242B1 (en) * | 2008-12-23 | 2013-02-12 | Elemental Technologies Inc. | Video encoder using GPU |
CN102647588A (zh) * | 2011-02-17 | 2012-08-22 | 北京大学深圳研究生院 | 一种用于分层搜索运动估计的gpu加速方法 |
CN102547289A (zh) * | 2012-01-17 | 2012-07-04 | 西安电子科技大学 | 基于gpu并行实现的快速运动估计方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125466A (zh) * | 2014-07-10 | 2014-10-29 | 中山大学 | 一种基于gpu的hevc并行解码方法 |
CN104125466B (zh) * | 2014-07-10 | 2017-10-10 | 中山大学 | 一种基于gpu的hevc并行解码方法 |
CN104159123A (zh) * | 2014-08-11 | 2014-11-19 | 哈尔滨工业大学深圳研究生院 | 一种适合于硬件实现的hevc运动估计方法 |
CN104159123B (zh) * | 2014-08-11 | 2017-04-12 | 哈尔滨工业大学深圳研究生院 | 一种适合于硬件实现的hevc运动估计方法 |
CN104994394A (zh) * | 2015-05-04 | 2015-10-21 | 北京大学 | 编码器运动估算方法及装置 |
CN104994394B (zh) * | 2015-05-04 | 2018-08-07 | 北京大学 | 编码器运动估算方法及装置 |
CN105245896A (zh) * | 2015-10-09 | 2016-01-13 | 传线网络科技(上海)有限公司 | Hevc并行运动补偿方法及装置 |
CN106878737B (zh) * | 2017-03-02 | 2019-10-08 | 西安电子科技大学 | 高效视频编码中的运动估计加速方法 |
CN106878737A (zh) * | 2017-03-02 | 2017-06-20 | 西安电子科技大学 | 高效视频编码中的运动估计加速方法 |
CN107135392A (zh) * | 2017-04-21 | 2017-09-05 | 西安电子科技大学 | 基于异步模式的hevc运动搜索并行方法 |
CN107135392B (zh) * | 2017-04-21 | 2019-12-10 | 西安电子科技大学 | 基于异步模式的hevc运动搜索并行方法 |
CN109618165A (zh) * | 2019-01-07 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种图像解码方法、系统及主机和图像处理系统 |
CN110913231A (zh) * | 2019-12-12 | 2020-03-24 | 西安邮电大学 | 一种纹理图整数运动估计并行实现方法 |
CN110913231B (zh) * | 2019-12-12 | 2023-05-30 | 西安邮电大学 | 一种纹理图整数运动估计并行实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103747262B (zh) | 2017-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103747262A (zh) | 一种基于gpu的运动估计方法 | |
KR102447241B1 (ko) | 이미지 인코딩 방법 및 장치, 그리고 이미지 디코딩 방법 및 장치 | |
WO2016050051A1 (zh) | 图像预测方法及相关装置 | |
CN102547289B (zh) | 基于gpu并行实现的快速运动估计方法 | |
CN101584215B (zh) | 综合空时预测 | |
CN102263951B (zh) | 一种快速的分形视频压缩与解压缩方法 | |
CN104067619A (zh) | 视频解码器、视频编码器、视频解码方法以及视频编码方法 | |
US20150208094A1 (en) | Apparatus and method for determining dct size based on transform depth | |
CN107846593B (zh) | 一种率失真优化方法及装置 | |
CN104539949B (zh) | Hevc屏幕编码中基于边缘方向的快速分块的方法及装置 | |
CN104837019B (zh) | 基于支持向量机的avs到hevc优化视频转码方法 | |
CN102801976A (zh) | 基于三维小波视频编码的帧间块模式选择方法 | |
CN103686165A (zh) | 深度图像帧内编解码方法及视频编解码器 | |
CN109640097B (zh) | 自适应因子的视频仿射运动估计方法 | |
CN106303528A (zh) | 一种码流平移场景检测方法及系统 | |
CN102984524B (zh) | 一种基于图层分解的视频编解码方法 | |
CN103873862B (zh) | 一种帧内快速编码方法及系统 | |
CN103491371A (zh) | 基于分层的编码方法、装置和设备 | |
CN102263954B (zh) | 一种基于对象的快速分形视频压缩与解压缩方法 | |
CN103430543A (zh) | 重构和编码图像块的方法 | |
CN102263952B (zh) | 一种基于对象的快速双目立体视频分形压缩与解压缩方法 | |
CN110278434B (zh) | 一种快速多复合帧视频编码的方法、装置及存储介质 | |
CN112738529A (zh) | 帧间预测方法、装置、设备、存储介质以及程序产品 | |
KR102007377B1 (ko) | 고성능 hevc 부호기를 위한 움직임 추정 시스템 및 방법 | |
CN105611299A (zh) | 一种基于hevc的运动估计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171010 Termination date: 20210108 |