CN102143365B - 一种运动估计方法 - Google Patents

一种运动估计方法 Download PDF

Info

Publication number
CN102143365B
CN102143365B CN 201110123175 CN201110123175A CN102143365B CN 102143365 B CN102143365 B CN 102143365B CN 201110123175 CN201110123175 CN 201110123175 CN 201110123175 A CN201110123175 A CN 201110123175A CN 102143365 B CN102143365 B CN 102143365B
Authority
CN
China
Prior art keywords
cuda
sad
value
video memory
mode
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.)
Expired - Fee Related
Application number
CN 201110123175
Other languages
English (en)
Other versions
CN102143365A (zh
Inventor
王彤
武宇文
张浩佚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kechuang Huitong Technology Co.,Ltd.
Beijing Wan Hui Video Technology Development Co.,Ltd.
Original Assignee
VISIONTOPS (BEIJING) TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by VISIONTOPS (BEIJING) TECHNOLOGY Co Ltd filed Critical VISIONTOPS (BEIJING) TECHNOLOGY Co Ltd
Priority to CN 201110123175 priority Critical patent/CN102143365B/zh
Publication of CN102143365A publication Critical patent/CN102143365A/zh
Application granted granted Critical
Publication of CN102143365B publication Critical patent/CN102143365B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明涉及一种运动估计方法,包括:步骤1:利用CUDA流,将用于ME算法的图像数据从内存复制到显存;步骤2:基于CUDA并行计算架构,对复制到显存的数据进行七种分块模式的SAD计算;步骤3:基于CUDA并行计算架构,对步骤2中得到的七种分块模式的SAD值分别取优。本发明采用CUDA并行计算架构,对图像数据进行并行处理,有效的提升了整个运动估计的运算效率。

Description

一种运动估计方法
技术领域
本发明涉及图像处理领域,具体涉及视频编码的运动估计方法。
背景技术
图形处理器(GPU,Graphic Processing Unit)的处理速度在最近几年得到了快速的发展,其计算能力以每年2.8倍的速度增长,高于CPU(CentralProcessing Unit,中央处理器)的发展速度。GPU在并行数值处理能力上要远高于CPU。为了合理的利用GPU的通用计算资源,统一计算设备架构(CUDA,Compute Unified Device Architecture)应运而生。CUDA是一种由Nvidia公司(英伟达公司)推出的通用并行计算架构,该架构使GPU能够更有效的解决复杂计算问题。
现有的主流视频压缩算法都是基于运动估计块匹配的,如H.264/AVC、H.263、AVS、VC-1等。其中,H.264/AVC标准是由ITU-T和ISO/IEC联合开发的,定位于覆盖整个视频应用领域,包括低码率的无线应用、标准清晰度和高清晰度的电视广播应用、Internet上的视频流应用,传输高清晰度的DVD视频以及应用于数码相机的高质量视频应用等;H.263是国际电联ITU-T的一个标准草案,是为低码流通信而设计的;AVS是我国具备自主知识产权的第二代信源编码标准,是《信息技术先进音视频编码》系列标准的简称,其包括系统、视频、音频、数字版权管理等四个主要技术标准和符合性测试等支撑标准;VC-1是由美国微软公司提出并开发的一种视频编码标准。
在现有的视频编码方法中,大都采用以宏块为单位的运动估计(ME,Motion Estimation)来实现帧间压缩。其主要功能是,对当前帧图像中的一个被编码像素块在参考帧图像中的一个指定窗口中搜索与之相差最小的像素块最为最佳匹配。运动估计中需要得到两个值:一个是运动矢量(MV,Motion Vector),被编码的像素块相对于参考帧中最佳匹配像素块的偏移;另一个是被编码像素块与匹配像素块的残差绝对值之和SAD(Sum ofAbsolute Difference)。这部分的计算占了整个编码过程计算量的很大比重。
在编码算法中运动估计对编码质量和编码器实现效率有着重要的影响。如H.264编码算法中采用了1/4像素精度的运动估计算法,以提高编码效率。这必然导致编码复杂度的增加。运动估计的计算复杂度占到H.264的编码器计算复杂度的30%以上。考虑到运动估计在视频编码中的重要性,高效的运动估计算法实现成为视频编码器实现中的最关键的部分。
发明内容
本发明所要解决的技术问题是提供一种基于CUDA的高效的运动估计方法,以提升运动估计的运算效率。
本发明解决上述技术问题的技术方案如下:
一种运动估计方法,基于CUDA并行计算架构,包括:
步骤1:利用CUDA流,将图像数据从内存复制到显存;
步骤2:对复制到显存的图像数据进行七种分块模式的SAD计算;
步骤3:对步骤2中得到的七种分块模式的SAD值分别取优;步骤3中,采用并行归约的方式对每种分块模式的SAD值进行取优,具体地,选用256字节的共享内存为并行归约计算时的存储空间大小,第一次循环将相邻两个数相加,并将值保存在“被加数”的索引位置上,第二轮循环,增大加数索引,将相隔一位的两个数相加,并将值保存在“被加数”的索引位置上,后面以此类推,最后索引1的位置就是加后的总和。
本发明的有益效果是:采用CUDA并行计算架构,对图像数据进行并行处理,有效的提升了整个运动估计的运算效率。采用并行归约进行取优可以提升最优SAD值选取的计算速度,提高计算效率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,步骤1中,利用不同的CUDA流从内存向显存复制同一图像数据的不同部分。
采用上述进一步方案的有益效果是,通过利用CUDA流,采用异步操作能够提高数据从内存传输到显存的效率,相对传统非异步复制数据的效率提高了近30%。
进一步,步骤2中,所述七种分块模式分别为4x4、4x8、8x4、8x8、8x16、16x8和16x16,其中,所述4x8、8x4、8x8、8x16、16x8和16x16分块模式SAD值的计算均通过4x4分块模式的SAD值合并而成。
采用上述进一步方案的有益效果是,通过所述4x4分块模式的SAD值合并计算出4x8、8x4、8x8、8x16、16x8和16x16分块模式的SAD值,可以减少过多的计算过程,提高计算效率。
附图说明
图1为本发明提供的运动估计方法流程图;
图2为利用多CUDA流将图像数据从CPU内存GPU显存的示意图;
图3为针对运动估计方法的SAD值合并示意图;
图4为最优SAD值选取计算中采用的并行归约方式的示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
以下实施例提供了一种基于CUDA的全新的高效的运动估计算法的GPU实现方法(运动估计方法),参照图1,主要包括如下的三个步骤:
1.基于CUDA流处理的数据准备;
2.高效的针对ME算法的SAD计算优化;
3.基于归约的高效的分块模式SAD值的合并。
此方法从数据准备、SAD计算和合并等方面均针对运动估计算法进行专门优化设计,从而有效的提升了整个运动估计的运算效率,也构成了本发明的高效的基于CUDA的运动估计方法。
基于CUDA流处理的数据准备
GPU在处理有规律的并行数据上有很大速度的提升,但是从主机内存复制数据到显存上的速度却比较消耗时间。为了让GPU以最高的效率进行处理,在从主机内存到GPU显存的数据准备上采用了CUDA流处理的方法。
每个CUDA流是按顺序执行的一系列操作,而不同的CUDA流之间是乱序执行的。通过对CUDA流的并行管理,可以实现不同CUDA流有序的并发执行。
不同的CUDA流对应不同数据块位置的起始点,采用异步操作能够提高数据从主机内存传输到GPU显存的效率。如图2所示,流1处理图像的上半部分,流2处理图像的下半部分,两个部分在多CUDA流中进行异步的并行操作,从而很大的提高了效率。
具体实施时,先在程序中声明一个CUDA流的结构数组:
cudaStream_t cpystream[2]
然后对其进行初始化,如下:
for(int i=0;i<2;++i)
cudaStreamCreate(&scpystream[i]);
CUDA流初始化后就可对其进行复制操作,复制过程按照图2分布所示:用流1复制上半部分,用流2复制下半部分,操作如下:
Figure GDA00002847956700041
Figure GDA00002847956700051
上面多CUDA流复制数据的操作,相对传统非异步复制数据的效率提高了近30%。
高效的针对运动估计方法的SAD计算的优化
将主机上的内存数据传输到GPU上之后,需要对4x4分块模式的SAD值进行计算。运动估计要求实现七种不同分块模式的SAD值,分别是4x4、4x8、8x4、8x8、8x16、16x8和16x16。由于每个分块模式SAD值的计算都可以通过4x4分块模式的SAD值合并进行计算。为了减少了过多的计算过程,在求出4x4分块模式的SAD值后,可以通过合并得到其余6种不同分块模式的SAD值。考虑到每个源图上的4x4块都有一个16x16的搜索范围,这里线程块的最大线程数设为16x16,这样线程块里每个线程就可以对应于16x16搜索范围的一个点来进行并行的计算,从而省去很多定位的工作。
合并的过程参照图3所示,图3中每个字母对应一个4x4的块,故整体为16x16。先将4x8的块合并出来,一共有8个块,分别是:AE、IM、BF、JN、CG、KO、DH、LP。然后再求8x4的块,一共有8个块,分别是:AB、CD、EF、GH、IJ、KL、MN、OP。求完8x4的块后,将其求得的值再次合并成8x8的4个块,分别是ABEF、CDGH、IJMN、KLOP。8x8的块求出后,再根据8x8的四个块求出16x8、8x16和16x16的块。其中,16x8的块为ABCDEFGH和IJKLMNOP,8x16的块为ABEFIJMN和CDGHKLOP,16x16的块为ABCDEFGHIJKLMNOP。上面的一对字母合并代表着两个4x4块的合并。
由于最大的子块是16x16,所以线程块分为:图像的宽/16,图像的高/16。由于一个源图上的4x4块都有一个16x16的搜索范围,所以16个块就是一个64x64的矩阵,为了达到合并矩阵的最佳效果,将64x64的矩阵块读入GPU的共享内存中。基于CUDA的设计架构,64x64的矩阵块正好能够使CUDA的并行度达到最佳,从而可以让GPU在进行合并计算时发挥最大的效率。
基于并行归约的高效的分块模式SAD值合并
上述计算完成后,需将计算得来的七个分块模式SAD值分别取优。这里将每个矩阵块放在单独的GPU内核中,通过七个流进行并行计算,充分利用GPU的运算资源,减小计算的等待时间,以提高计算效率。每个块的计算过程是通过并行归约的方式进行的,如图4所示。
并行归约存储空间大小必须为2的整数次方,否则将出现比对不均的情况,这会加大GPU处理的负担。GPU物理结构中每个纯线程块最优上限是256字节的共享内存,如果超出上限,该部分将被分配到其它块上,而其它块也会继续向后传递分配,导致GPU核心计算部分的速处理度下降,从而影响性能。因此,这里选用256字节的共享内存为并行归约计算时的存储空间大小。
如图4所示,第一次循环将相邻两个数相加,并将值保存在“被加数”的索引位置上;第二轮循环,由于相邻两个数已加过,这时增大加数索引,如图4所示,这里为1、3相加,5、7相加,9、11相加;后面以此类推,最后索引1的位置就是加后的总和。这种操作充分利用了CUDA并行的优点,从而提升了在GPU中加法的速度。
上述运动估计方法充分利用了CUDA的特性,有效的提升了运动估计算法的运算效率,同时保证了运动估计算法的效果。上述运动估计方法能够有效地应用于基于块运动估计的视频编码算法系统中,为系统提供高效的运动估计算法实现。该方法从CPU到GUP实现数据传输的方法充分利用了CUDA的流特性,高效地完成了运动估计所需的数据传输需求;利用基于CUDA线程结构进行有效的块合并,实现了全部分块模式SAD值的高效运算;基于并行归约的最优分块模式SAD值的选择,有效地减少了最优分块模式SAD值选择所需的时间。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种运动估计方法,基于CUDA并行计算架构,其特征在于,包括:
步骤1:利用CUDA流,将图像数据从内存复制到显存;
步骤2:对复制到显存的图像数据进行七种分块模式的SAD计算;
步骤3:对步骤2中得到的七种分块模式的SAD值分别取优;
步骤3中,采用并行归约的方式对每种分块模式的SAD值进行取优,具体地,选用256字节的共享内存为并行归约计算时的存储空间大小,第一次循环将相邻两个数相加,并将值保存在“被加数”的索引位置上,第二轮循环,增大加数索引,将相隔一位的两个数相加,并将值保存在“被加数”的索引位置上,后面以此类推,最后索引1的位置就是加后的总和。
2.根据权利要求1所述的运动估计方法,其特征在于:步骤1中,利用不同的CUDA流,并采用异步操作从内存向显存复制同一图像数据的不同部分。
3.根据权利要求1所述的运动估计方法,其特征在于:步骤2中,所述七种分块模式分别为4x4、4x8、8x4、8x8、8x16、16x8和16x16,其中,所述4x8、8x4、8x8、8x16、16x8和16x16分块模式的SAD值均通过4x4分块模式的SAD值合并而成。
CN 201110123175 2011-05-13 2011-05-13 一种运动估计方法 Expired - Fee Related CN102143365B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110123175 CN102143365B (zh) 2011-05-13 2011-05-13 一种运动估计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110123175 CN102143365B (zh) 2011-05-13 2011-05-13 一种运动估计方法

Publications (2)

Publication Number Publication Date
CN102143365A CN102143365A (zh) 2011-08-03
CN102143365B true CN102143365B (zh) 2013-08-14

Family

ID=44410553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110123175 Expired - Fee Related CN102143365B (zh) 2011-05-13 2011-05-13 一种运动估计方法

Country Status (1)

Country Link
CN (1) CN102143365B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547289B (zh) * 2012-01-17 2015-01-28 西安电子科技大学 基于gpu并行实现的快速运动估计方法
CN106791861B (zh) * 2016-12-20 2020-04-07 杭州当虹科技股份有限公司 一种基于CUDA架构的DNxHD VLC编码方法
CN110913231B (zh) * 2019-12-12 2023-05-30 西安邮电大学 一种纹理图整数运动估计并行实现方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
NVIDIA公司.NVIDIA CUDA 编程指南.《NVIDIA公司技术文档》.2008,参见4.5.2.4以及5.10. *
Wei-Nien Chen等.H.264/AVC MOTION ESTIMATION IMPLMENTATION ON COMPUTE UNIFIED DEVICE ARCHITECTURE (CUDA).《ICME of IEEE》.2008,参见2.1、3章节,图1-5. *
高智勇等.基于CUDA的H.264/AVC视频编码的设计与实现.《中南民族大学学报》.2009,第28卷(第1期),参见2.1部分2.2及附图4. *

Also Published As

Publication number Publication date
CN102143365A (zh) 2011-08-03

Similar Documents

Publication Publication Date Title
CN105491377B (zh) 一种计算复杂度感知的视频解码宏块级并行调度方法
CN103369315B (zh) 色度分量的帧内预测模式的编码、解码方法、设备及系统
Khan et al. Hardware-software collaborative complexity reduction scheme for the emerging HEVC intra encoder
CN101908035A (zh) 视频编解码方法、gpu及其与cpu的交互方法及系统
CN106027065A (zh) 解码装置和解码方法
CN102143365B (zh) 一种运动估计方法
CN101710985B (zh) 一种用于图像编码的图像亮度补偿方法
CN101656885A (zh) 多核处理器中并行解码的方法和装置
CN110337002B (zh) 一种在多核处理器平台上hevc多层次并行解码方法
CN102572430B (zh) 一种基于可重构技术的h.264去块滤波算法的实现方法
CN110495178A (zh) 3d视频编码的装置和方法
KR20110134626A (ko) 매크로블록의 연관관계를 고려하여 영상 데이터의 부호화 및 복호화를 병렬 처리하는 장치 및 방법
CN110392266A (zh) 一种基于伪视频序列的光场视频编码方法和终端设备
Yi et al. Task-driven video compression for humans and machines: Framework design and optimization
CN106134198B (zh) 利用深度信息的视频编码装置及其方法
CN105100799A (zh) 一种减少hevc编码器中帧内编码时延的方法
CN103067711A (zh) 一种基于h264协议的整像素运动估计方法
CN110324668A (zh) 图像块编码中的变换方法、解码中的反变换方法及装置
KR20120100448A (ko) 머신 러닝을 이용한 동영상 압축 기법 및 장치
Jiang et al. Highly paralleled low-cost embedded HEVC video encoder on TI KeyStone multicore DSP
CN101090504A (zh) 一种面向视频标准应用的编解码器
CN100586188C (zh) 一种基于avs的帧内预测计算的硬件实现方法
CN103763569A (zh) 一种基于先入先出队列的hevc细粒度并行预测方法
CN104602026B (zh) 一种适用于hevc标准下编码器中全复用的重建环路结构
CN102420989A (zh) 帧内预测方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Beijing City, Changping District Shahe Town, 102200 North Street home five District No. 2 Building 1 unit 1326

Patentee after: Beijing Kechuang Huitong Technology Co.,Ltd.

Address before: 100028 Beijing City, Chaoyang District Henan Xiba Road No. 1 Xintiandi office B306

Patentee before: VisionTops (Beijing) Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170911

Address after: 102200, room 432, west 4, 21 torch street, Changping District science and Technology Park, Beijing

Patentee after: Beijing Wan Hui Video Technology Development Co.,Ltd.

Address before: Beijing City, Changping District Shahe Town, 102200 North Street home five District No. 2 Building 1 unit 1326

Patentee before: Beijing Kechuang Huitong Technology Co.,Ltd.

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: 20130814

Termination date: 20180513