CN108495138A - 一种基于gpu的整像素运动估计方法 - Google Patents
一种基于gpu的整像素运动估计方法 Download PDFInfo
- Publication number
- CN108495138A CN108495138A CN201810266001.9A CN201810266001A CN108495138A CN 108495138 A CN108495138 A CN 108495138A CN 201810266001 A CN201810266001 A CN 201810266001A CN 108495138 A CN108495138 A CN 108495138A
- Authority
- CN
- China
- Prior art keywords
- motion vector
- pixel
- motion
- search
- coding unit
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/57—Motion estimation characterised by a search window with variable size or shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种基于GPU的整像素运动估计方法:设置CUDA平台中的内核函数的线程格和线程块的大小;启动CUDA平台整像素运动估计内核函数;在设备端为当前最大编码单元分配共享内存;初始化当前最大编码单元的相关参数、各PU的初始运动矢量和初始像素搜索点;按照运动估计搜索模板中确定的像素搜索点进行搜索,每四个像素搜索点并行搜索;并行计算当前编码单元中各PU的SAD值和运动矢量代价,保存各PU代价最小时对应的运动矢量;判断是否将像素搜索点遍历完成;保存运动估计搜索模板中最优搜索点对应的运动矢量和运动矢量代价;将当前编码单元中各PU对应的最优运动矢量和最优运动矢量代价拷入全局内存。本发明可以有效加速整像素运动估计过程。
Description
技术领域
本发明涉及一种整像素运动估计方法。特别是涉及一种用于视频编码标准AVS2中帧间的基于GPU的整像素运动估计方法。
背景技术
随着高分辨率视频的出现,其对视频信息压缩的要求越来越高。新一代视频编码标准AVS2的出现极大地缓解了这一挑战。AVS2是具有我国自主知识产权的第二代数字音视频编码标准。AVS2通过引入多个创新编码技术,在压缩质量和效率上已经超越传统的视频编码标准AVS1。
为提高预测的灵活性和预测的精确度,AVS2中采用四叉树划分结构,块划分更加灵活。主要分为编码单元(Coding Unit,CU),预测单元(Prediction Unit,PU)和变换单元(Transform Unit,TU)。AVS2中将编码帧分成若干个一定大小互不重叠的矩形块,允许最大编码单元(LCU)尺寸为64x64。每个LCU又可以按照四叉树递归划分为从64x64到8x8不同大小的CU。在帧间运动模式下,64x64到16x16的编码单元下均有7中预测单元(PredictionUnit,PU)的划分为:2N x 2N、2N x N、N x 2N、2NxnU(2N x n+2N x 3n)、2NxnD(2N x n+2Nx 3n)、nLx2N(n x 2N+3n x 2N)、nRx2N(3n x 2N+n x 2N),其中,N为当前编码单元大小的一半,n大小为1/2N,U,D,L和R是“Up”,“Down”,“Left”和“Left”的缩写。具体如图1所示,8x8的编码单元只有前三种预测单元的划分。
运动估计就是在视频序列参考帧上相应的搜索范围内为当前编码块寻找最佳匹配块,使得当前编码块与匹配块的残差尽可能的小,并用运动矢量(MV)表示最佳匹配块的位置。在运动估计中常常采用块匹配算法。整像素运动估计是帧间运动估计较为重要的一个部分。整像素运动估计搜索方法分为全搜索算法和快速搜索算法,通常采用搜索模板。全搜索算法是将一定的搜索范围内的像素点都遍历一遍。全搜索算法通常可以得到全局最优解,效果最好,但是复杂度太高。快速搜索算法中包括三步搜索法、四步搜索法、菱形搜索法、分层块匹配搜索法等。快速搜索算法能够大大降低运动矢量的搜索时间,但是可能得到局部最优解。整像素运动估计结果的评价通常采用公式(1):
JSAD=λ×Rmode+DSAD (1)
其中,JSAD代表当前的运动估计代价,λ代表lagrange乘子,R代表编码运动矢量差值的比特数,DSAD表示当前块与匹配块差的绝对值之和(sum ofabsolute differences,SAD)。由于这些算法通常在CPU上计算,而CPU本身的串行计算方式在很大程度上限制了搜索算法的性能。
由于运动估计部分需要针对大量的像素点进行处理,存在很大的并行优化潜能。所以这一部分采用GPU进行优化会带来编码效率的显著提升。GPU广泛应用在图像处理、深度学习和物理仿真等领域。CUDA(Compute Unified Device Architecture)是由NVIDIA公司提供的基于该公司GPU的运算平台。这种通用并行计算架构能够帮助GPU解决复杂的计算问题。该平台是对C语言以及C++的一种扩展。
CUDA编程模型中将CPU端作为主机端(Host),GPU端作为设备端(Device)。在设备端运行的函数被称为内核函数(kernel function)。内核函数中的线程以线程格(Grid)的形式组织,函数调用时需要确定内核函数线程格中线程块(block)数目和线程(thread)的数目。相比较于CPU来说,GPU有更加复杂的存储模型,其中包括:全局存储器、共享存储器、常量存储器、纹理存储器等。
新一代视频编码标准AVS2中整像素运动估计具有较高的复杂度,在CPU上运算搜索计算量较大,耗时较长。
发明内容
本发明所要解决的技术问题是,提供一种能够降低整像素运动估计的复杂度,加速运动估计过程的基于GPU的整像素运动估计方法。
本发明所采用的技术方案是:一种基于GPU的整像素运动估计方法,包括如下步骤:
1)设置CUDA平台中的内核函数的线程格和线程块的大小;
2)启动CUDA平台整像素运动估计内核函数;
3)在设备端为当前最大编码单元分配共享内存,包括编码单元像素值缓存、子块SAD值存储、PU的运动矢量存储和PU的运动矢量代价存储;
4)将当前最大编码单元的像素值从纹理内存中读入共享内存中的编码单元像素值缓存,并初始化当前最大编码单元的相关参数;
5)从参考帧列表读取当前参考帧,初始化各PU的初始运动矢量和初始像素搜索点;
6)按照运动估计搜索模板中确定的像素搜索点进行搜索,每四个像素搜索点并行搜索;
7)在当前搜索点下,并行计算当前编码单元中各PU的SAD值和运动矢量代价,并将求得的PU的运动矢量代价同上一次循环得到的四个像素搜索点对应的PU的运动矢量代价进行对比,保存各PU代价最小时对应的运动矢量;
8)判断是否将运动估计搜索模板中的像素搜索点遍历完成,若是,则进行步骤9),否则返回步骤6);
9)比较并行搜索后四个搜索点对应PU的运动矢量代价,保存运动估计搜索模板中最优搜索点对应的运动矢量和运动矢量代价;
10)将当前编码单元中各PU对应的最优运动矢量和最优运动矢量代价拷入全局内存;
11)判断参考帧列表中的参考帧是否遍历完成,若是,则结束流程,否则,返回步骤5)。
步骤4)中所述的当前最大编码单元的相关参数包括:编码单元像素值指针、lagrange乘子、编码单元位置索引、运动矢量的范围。
步骤7)中所述的计算当前编码单元中的SAD值和运动矢量代价是采用如下公式计算:
JSAD=λ×Rmode+DSAD
其中,JSAD代表当前的运动估计代价,λ代表lagrange乘子,R代表编码运动矢量差值的比特数,DSAD表示当前块与匹配块差的绝对值之和。
本发明的一种基于GPU的整像素运动估计方法,将整像素运动估计应用于GPU,通过利用视频图像本身的并行性,增加数据处理的并行度,从而大大降低了运动估计算法的复杂度和计算时间,加速运动估计过程。实验证明本发明提出的方法可以有效加速整像素运动估计过程,最高加速比可以达到16.1。
附图说明
图1是帧间PU模式示意图;
图2是本发明一种基于GPU的整像素运动估计方法的流程图。
具体实施方式
下面结合实施例和附图对本发明的一种基于GPU的整像素运动估计方法做出详细说明。
如图2所示,本发明的一种基于GPU的整像素运动估计方法,包括如下步骤:
1)设置CUDA平台中的内核函数的线程格和线程块的大小;
2)启动CUDA平台整像素运动估计内核函数;
3)在设备端为当前最大编码单元分配共享内存,包括编码单元像素值缓存、子块SAD值存储、PU的运动矢量存储和PU的运动矢量代价存储;
4)将当前最大编码单元的像素值从纹理内存中读入共享内存中的编码单元像素值缓存,并初始化当前最大编码单元的相关参数;所述的当前最大编码单元的相关参数包括:编码单元像素值指针、lagrange乘子、编码单元位置索引、运动矢量的范围等。
5)从参考帧列表读取当前参考帧,初始化各PU的初始运动矢量和初始像素搜索点;
6)按照运动估计搜索模板中确定的像素搜索点进行搜索,每四个像素搜索点并行搜索;
7)在当前搜索点下,并行计算当前编码单元中各PU的SAD值和运动矢量代价,并将求得的PU的运动矢量代价同上一次循环得到的四个像素搜索点对应的PU的运动矢量代价进行对比,保存各PU代价最小时对应的运动矢量;
所述的计算当前编码单元中的SAD值和运动矢量代价是采用如下公式计算:
JSAD=λ×Rmode+DSAD
其中,JSAD代表当前的运动估计代价,λ代表lagrange乘子,R代表编码运动矢量差值的比特数,DSAD表示当前块与匹配块差的绝对值之和(SAD)。
8)判断是否将运动估计搜索模板中的像素搜索点遍历完成,若是,则进行步骤9),否则返回步骤6);
9)比较并行搜索后四个搜索点对应PU的运动矢量代价,保存运动估计搜索模板中最优搜索点对应的运动矢量和运动矢量代价;
10)将当前编码单元中各PU对应的最优运动矢量和最优运动矢量代价拷入全局内存;
11)判断参考帧列表中的参考帧是否遍历完成,若是,则结束流程,否则,返回步骤5)。
下面采用不同分辨率的视频序列分别在CPU端和GPU端进行测试,记录各自的运行时间。采用加速比来说明本发明方法的有益效果。计算方法如下:
对不同分辨率视频序列进行整像素运动估计在CPU和GPU运行时间的对比如表1所示。从表1中可以看出,本发明专利所提出的方法能够有效加速帧间整像素运动估计,在处理1920x1080序列时,加速比最高达到了16.14。
表1整像素运动估计在CPU和GPU上运行时间对比
下面给出最佳实施例:
本实施例以BasketballDrive_1920x1080_50.yuv视频序列为例,采用的GPU型号是NVIDIAGeforceGT1030,CUDA运行版本是8.0。在编码设置中,将最大编码单元设置为64x64,整像素运动估计搜索范围设置为32,同时将参考帧提前绑定至GPU的纹理内存中。具体步骤如下:
(1)将CUDA启动内核函数中线程格的大小设置为(i_width_in_lcu,i_height_in_lcu)。i_width_in_lcu表示当前输入帧水平方向上最大编码单元的数量,i_height_in_lcu表示当前输入帧垂直方向上最大编码单元的数量。将线程块的大小设置为(16,16,4)。
(2)启动整像素运动估计内核函数。
(3)创建共享内存,用于存储算法中当前编码单元像素值,子块的SAD值等,并初始化内存和编码单元的相关参数。
(4)进行参考帧列表循环,从参考帧列表中读取当前参考帧。
(5)对当前最大编码单元进行整像素运动估计。按照运动估计搜索模板确定的像素点每四个像素搜索点并行搜索。每个像素搜索点采用16x16个线程并行计算。
(6)在当前像素搜索点下,并行计算当前编码单元中的SAD值和运动矢量代价,并将求得的PU的运动矢量代价同上一次循环得到的四个搜索点对应的PU的运动矢量代价进行对比,保存各PU运动矢量代价最小时对应的运动矢量。
(7)比较并行搜索后四个搜索点对应PU的运动矢量代价,保存搜索模板中最优搜索点对应的运动矢量和运动矢量代价。
Claims (3)
1.一种基于GPU的整像素运动估计方法,其特征在于,包括如下步骤:
1)设置CUDA平台中的内核函数的线程格和线程块的大小;
2)启动CUDA平台整像素运动估计内核函数;
3)在设备端为当前最大编码单元分配共享内存,包括编码单元像素值缓存、子块SAD值存储、PU的运动矢量存储和PU的运动矢量代价存储;
4)将当前最大编码单元的像素值从纹理内存中读入共享内存中的编码单元像素值缓存,并初始化当前最大编码单元的相关参数;
5)从参考帧列表读取当前参考帧,初始化各PU的初始运动矢量和初始像素搜索点;
6)按照运动估计搜索模板中确定的像素搜索点进行搜索,每四个像素搜索点并行搜索;
7)在当前搜索点下,并行计算当前编码单元中各PU的SAD值和运动矢量代价,并将求得的PU的运动矢量代价同上一次循环得到的四个像素搜索点对应的PU的运动矢量代价进行对比,保存各PU代价最小时对应的运动矢量;
8)判断是否将运动估计搜索模板中的像素搜索点遍历完成,若是,则进行步骤9),否则返回步骤6);
9)比较并行搜索后四个搜索点对应PU的运动矢量代价,保存运动估计搜索模板中最优搜索点对应的运动矢量和运动矢量代价;
10)将当前编码单元中各PU对应的最优运动矢量和最优运动矢量代价拷入全局内存;
11)判断参考帧列表中的参考帧是否遍历完成,若是,则结束流程,否则,返回步骤5)。
2.根据权利要求1所述的一种基于GPU的整像素运动估计方法,其特征在于,步骤4)中所述的当前最大编码单元的相关参数包括:编码单元像素值指针、lagrange乘子、编码单元位置索引、运动矢量的范围。
3.根据权利要求1所述的一种基于GPU的整像素运动估计方法,其特征在于,步骤7)中所述的计算当前编码单元中的SAD值和运动矢量代价是采用如下公式计算:
JSAD=λ×Rmode+DSAD
其中,JSAD代表当前的运动估计代价,λ代表lagrange乘子,R代表编码运动矢量差值的比特数,DSAD表示当前块与匹配块差的绝对值之和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810266001.9A CN108495138A (zh) | 2018-03-28 | 2018-03-28 | 一种基于gpu的整像素运动估计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810266001.9A CN108495138A (zh) | 2018-03-28 | 2018-03-28 | 一种基于gpu的整像素运动估计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108495138A true CN108495138A (zh) | 2018-09-04 |
Family
ID=63316677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810266001.9A Pending CN108495138A (zh) | 2018-03-28 | 2018-03-28 | 一种基于gpu的整像素运动估计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108495138A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113068049A (zh) * | 2021-03-16 | 2021-07-02 | 上海富瀚微电子股份有限公司 | 分数像素运动估计装置 |
CN113365078A (zh) * | 2020-03-03 | 2021-09-07 | 炬芯科技股份有限公司 | 帧间编码的运动估计方法、装置及可读存储介质 |
CN113489987A (zh) * | 2021-06-11 | 2021-10-08 | 翱捷科技股份有限公司 | 一种hevc子像素运动估计方法及装置 |
CN115529459A (zh) * | 2022-10-10 | 2022-12-27 | 格兰菲智能科技有限公司 | 中心点搜索方法、装置、计算机设备、存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101489131A (zh) * | 2009-01-22 | 2009-07-22 | 上海广电(集团)有限公司中央研究院 | 一种中心偏移的运动估计实现方法 |
CN102547289A (zh) * | 2012-01-17 | 2012-07-04 | 西安电子科技大学 | 基于gpu并行实现的快速运动估计方法 |
CN103873874A (zh) * | 2014-02-19 | 2014-06-18 | 同观科技(深圳)有限公司 | 一种基于可编程并行处理器的全搜索运动估计方法 |
US20150172687A1 (en) * | 2008-12-31 | 2015-06-18 | Advanced Micro Devices, Inc. | Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors |
CN105245896A (zh) * | 2015-10-09 | 2016-01-13 | 传线网络科技(上海)有限公司 | Hevc并行运动补偿方法及装置 |
WO2017210601A1 (en) * | 2016-06-02 | 2017-12-07 | Stc.Unm | System and methods for parallel processing motion estimation of digital videos |
-
2018
- 2018-03-28 CN CN201810266001.9A patent/CN108495138A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150172687A1 (en) * | 2008-12-31 | 2015-06-18 | Advanced Micro Devices, Inc. | Multiple-candidate motion estimation with advanced spatial filtering of differential motion vectors |
CN101489131A (zh) * | 2009-01-22 | 2009-07-22 | 上海广电(集团)有限公司中央研究院 | 一种中心偏移的运动估计实现方法 |
CN102547289A (zh) * | 2012-01-17 | 2012-07-04 | 西安电子科技大学 | 基于gpu并行实现的快速运动估计方法 |
CN103873874A (zh) * | 2014-02-19 | 2014-06-18 | 同观科技(深圳)有限公司 | 一种基于可编程并行处理器的全搜索运动估计方法 |
CN105245896A (zh) * | 2015-10-09 | 2016-01-13 | 传线网络科技(上海)有限公司 | Hevc并行运动补偿方法及装置 |
WO2017210601A1 (en) * | 2016-06-02 | 2017-12-07 | Stc.Unm | System and methods for parallel processing motion estimation of digital videos |
Non-Patent Citations (2)
Title |
---|
吴羡: "《H.264编码关键模块并行算法设计及其在CUDA上的实现》", 《中国优秀硕士学位论文全文数据库》 * |
高克顺: "《基于GPU的H.264到AVS视频转码并行设计》", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113365078A (zh) * | 2020-03-03 | 2021-09-07 | 炬芯科技股份有限公司 | 帧间编码的运动估计方法、装置及可读存储介质 |
CN113068049A (zh) * | 2021-03-16 | 2021-07-02 | 上海富瀚微电子股份有限公司 | 分数像素运动估计装置 |
CN113489987A (zh) * | 2021-06-11 | 2021-10-08 | 翱捷科技股份有限公司 | 一种hevc子像素运动估计方法及装置 |
CN113489987B (zh) * | 2021-06-11 | 2022-08-23 | 翱捷科技股份有限公司 | 一种hevc子像素运动估计方法及装置 |
CN115529459A (zh) * | 2022-10-10 | 2022-12-27 | 格兰菲智能科技有限公司 | 中心点搜索方法、装置、计算机设备、存储介质 |
CN115529459B (zh) * | 2022-10-10 | 2024-02-02 | 格兰菲智能科技有限公司 | 中心点搜索方法、装置、计算机设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108259912A (zh) | 一种分像素运动估计的并行实现方法 | |
JP2022044612A (ja) | 画像予測方法および関連装置 | |
CN112203095B (zh) | 视频运动估计方法、装置、设备及计算机可读存储介质 | |
CN105681795B (zh) | 用于对帧序列进行视频编码的方法和编码器 | |
KR20170125086A (ko) | 화상 예측 방법 및 관련 장치 | |
CN108495138A (zh) | 一种基于gpu的整像素运动估计方法 | |
CN106878737B (zh) | 高效视频编码中的运动估计加速方法 | |
CN118055253A (zh) | 用于视频代码化中的运动补偿预测的光流估计 | |
JP2006014343A5 (zh) | ||
CN102291581B (zh) | 支持帧场自适应运动估计的实现方法 | |
KR100994773B1 (ko) | 계층적 움직임 추정에 있어서 움직임 벡터 생성 방법 및장치 | |
CN109660800A (zh) | 运动估计方法、装置、电子设备及计算机可读存储介质 | |
KR20180037042A (ko) | 모션 벡터 필드 코딩 방법 및 디코딩 방법, 및 코딩 및 디코딩 장치들 | |
CN109495743A (zh) | 一种基于异构多处理平台的并行化视频编码方法 | |
CN109660799A (zh) | 视频编码中的运动估计方法、装置、电子设备及存储介质 | |
CN111523618A (zh) | 一种基于深度学习的相位展开方法 | |
KR20120123132A (ko) | 패치 시프팅을 통해 벡터 양자화 에러를 감소시키기 위한 방법들 및 장치 | |
US8175160B1 (en) | System, method, and computer program product for refining motion vectors | |
CN105338355B (zh) | 视频分析方法和视频分析装置 | |
CN110113608B (zh) | 一种基于率失真优化的gpu中视频编码快速搜索方法 | |
CN115917597A (zh) | 使用注意力模型将2d表示提升到3d | |
CN106658024B (zh) | 一种快速的视频编码方法 | |
CN102822868B (zh) | 一种用于重新生成视频流的数字图像的背景的方法 | |
CN1201589C (zh) | 运动估计方法和装置 | |
US7627140B2 (en) | Flatted hexagon search method for fast block motion estimation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180904 |
|
WD01 | Invention patent application deemed withdrawn after publication |