CN104994394B - 编码器运动估算方法及装置 - Google Patents

编码器运动估算方法及装置 Download PDF

Info

Publication number
CN104994394B
CN104994394B CN201510221280.3A CN201510221280A CN104994394B CN 104994394 B CN104994394 B CN 104994394B CN 201510221280 A CN201510221280 A CN 201510221280A CN 104994394 B CN104994394 B CN 104994394B
Authority
CN
China
Prior art keywords
sad
ctu
piecemeal
estimation
indicate
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.)
Active
Application number
CN201510221280.3A
Other languages
English (en)
Other versions
CN104994394A (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.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN201510221280.3A priority Critical patent/CN104994394B/zh
Publication of CN104994394A publication Critical patent/CN104994394A/zh
Application granted granted Critical
Publication of CN104994394B publication Critical patent/CN104994394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种编码器运动估算方法及装置,该方法包括:将最大编码单元CTU的运动估计过程封装在一个block中;通过低复杂度的分块模式索引、代价函数、分块SAD归并和MVP进行运动估计。通过本发明,提高了编码器速度。

Description

编码器运动估算方法及装置
技术领域
本发明涉及视频压缩编码技术领域,具体而言,涉及一种编码器运动估算方法及装置。
背景技术
高效视频编码(High Efficiency Video Coding,简称为HEVC)是由国际电联(ITUTelecommunication Standardization Sector,简称为ITU-T)VCEG和ISO/IEC MPEG标准化组织联合发布的最新的视频编码标准,是目前压缩性能最好的标准之一,相比之前主流的编码标准H.264/AVC,带宽节省37%左右,主观质量提高50%以上。编码性能的提高主要是缘于更多变的块大小和更丰富的参考帧和编码模式。对于块大小来说,最大编码单元(Coding Tree Unit,简称为CTU)从H.264/AVC的16x16增加到了64x64大小,并且引入了四叉递归划分结构,编码单元可64x64划分到8x8大小,这些都能带来更准确的编码预测。但是,整个编码器的复杂度随着技术的添加呈数倍的增加,其中帧间编码的时间占据了主要部分(除了全I帧的编码配置)。帧间编码最耗时的部分是运动估计模块。如图1所示,运动估计模块在HEVC参考软件平台(HM)中所占的时间比例超过达到50以上%。
运动估计是用于编码器帧间编码中在参考帧上搜索当前编码块的最佳匹配块的算法。所谓“匹配”的准则是能够得到最小残差(使用绝对差值和或绝对差值平方和等衡量标准)和最少编码比特消耗的综合标准,一般称为最小率失真代价标准。为了匹配的准确度,运动估计一般采用“逐步求精”的匹配方案,即先搜索整像素位置,再搜索1/2乃至1/4像素精度的位置,其中1/2和1/4等分像素位置由图像的整像素点通过插值滤波器插值生成。由于计算复杂度的限制,编码器一般采用近似最优的搜索算法,一般分两类:全搜索和快速搜索。全搜索是在预设的搜索范围之内遍历所有像素点,找到最优。快速搜索则是采用特定的搜索形状:六边形、菱形等,迭代几代,每次更新最优的位置,最后终止于特定条件。第二种方式复杂度低,效果也很好,一般用于纯软件编码器中,然而第一种方式因为其整齐性,广泛地应用于硬件编码器或异构计算平台(如CPU+图像处理单元(Graphic ProcessingUnit,简称为GPU)设备)。
近期随着GPU计算能力,特别是通用计算能力的快速发展,将GPU应用于数据密集型应用的需求越来越大。视频编解码器也不再局限于传统的多媒体向量指令集(MMX/SSE等),而转而寻求GPU并行辅助的解决方案。英伟达(NVIDIA)公司推出易于编程的GPU架构:并行计算架构(Compute Unified Device Architecture,简称为CUDA)使得密集数据的并行更加容易。研究者们已经尝试在GPU上利用CUDA实现H.264/AVC或HEVC编码器运动估计的并行。对于HEVC上的相关并行方法,运动估计只能在像素行集并行,缺少一定的灵活性,压缩性能有存在较大的提升空间。
发明内容
针对相关技术中运动估计缺少灵活性,压缩性能比较低的问题,本发明提供了一种运动估计方法及装置,以解决该问题。
一方面,提供了一种编码器运动估算方法,包括:将最大编码单元CTU的运动估计过程封装在一个块block中;通过低复杂度的分块模式索引、代价函数、分块SAD归并和MVP进行运动估计。
优选地,通过低复杂度的分块模式索引、代价函数、分块SAD归并和MVP进行运动估计包括:
所述低复杂度的模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,其中,编码的方式是从小块到大块,线程的处理原则是处理编号从小到大的分块。
优选地,代价函数通过如下公式确定:
其中,Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0。
优选地,分块SAD由其所包含的4x4块累加得到,累加方式通过如下公式确定:SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD。
优选地,所述MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放。
另一方面,还提供了了一种编码器运动估算装置,包括:封装模块,用于将最大编码单元CTU的运动估计过程封装在一个block中;估计模块,用于通过低复杂度的分块模式索引、代价函数、分块SAD归并和MVP进行运动估计。
优选地,所述估计模块通过所述低复杂度的模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,其中,编码的方式是从小块到大块,线程的处理原则是处理编号从小到大的分块。
优选地,代价函数通过如下公式确定:
其中,Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0。
优选地,分块SAD由其所包含的4x4块累加得到,累加方式通过如下公式确定:SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD。
优选地,所述估计模块中的所述MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放。
通过本发明,利用GPU,根据硬件资源或视频分辨率对并行的计算量作调整,提高了压缩性能。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的编码器运动估算方法的流程图;
图2是根据本发明实施例的基于CUDA的GPU运行估计编码框架;
图3是根据本发明实施例的CTU各分块模式索引表;
图4是根据本发明实施例的推算CTU级MVP的四个16x16块以及时域MVP缩放示意图;
图5是根据本发明实施例的分像素搜索点的示意图;
图6是根据本发明实施例的编码器运动估算装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
下面将结合优选实施例进行说明,以下优选实施例结合了上述实施例及优选实施方式。
本实施例提供了一种编码器运动估算方法,图1是根据本发明实施例的编码器运动估算方法的流程图,如图1所示,包括:
步骤S102,将最大编码单元CTU的运动估计过程封装在一个block中;
步骤S104,通过低复杂度的分块模式索引、代价函数、分块SAD归并和简便的MVP进行运动估计。
优选地,通过低复杂度的分块模式索引、代价函数、分块SAD归并和简便的MVP进行运动估计包括:
所述低复杂度的模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,其中,编码的方式是从小块到大块,线程的处理原则是处理编号从小到大的分块。
优选地,代价函数通过如下公式确定:
其中,Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0。
优选地,分块SAD由其所包含的4x4块累加得到,累加方式通过如下公式确定:SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD。
优选地,所述MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放。
优选实施例一
本优选实施例提供了一种编码器运动估算方法。下面进行详细描述:
本发明要解决的技术问题是利用NVIDIA CUDA编程模型,实现GPU端编码运动估计模块的并行,通过CPU和GPU异步执行隐藏其在CPU端的时间消耗,从而达到节省编码时间的效果。本发明提出了基于CTU并行的GPU运动估计算法。
为了实现运动估计GPU端并行,首先设计了CPU和GPU协作的框架,如图2所示。首先,在编码一帧之前将原始帧传到GPU显存;其次,在编码一帧的时候,成组地启动CTU的运动估计,CPU编码一组CTU的同时,GPU并行地执行下一组CTU的运动估计;最后,CPU编码重构生成的重构帧将传到GPU显存作为新的参考帧。一个CTU的运动估计用一个CUDA线程块(Block)实现,CTU组的大小可以配置成[1,N]区间的任意值,其中N是一帧图像包含的CTU个数,只需要在启动CUDA核函数的时候指定线程网格(Grid)的维度。
对于一个CTU的运动估计的实现,我们分为两个阶段,整像素运动估计和分像素运动估计。在整像素运动估计中,涉及以下几个关键技术:
分块索引:我们的方案最大支持32x32的块大小,并且不支持非对称块划分(AMP,Asymmetric Motion Partition),不同块大小和位置总共有168个,按CUDA WARP(32)补齐后为192个(如图3所示),在线程中通过查找块索引与向量(L,T,R,B)的表得到块的位置,如图3所示,其中L/T为块左上角像素xy坐标(相对于CTU左上角像素点),R/B为块右下角xy坐标加1,这样块大小就为(R-L)×(B-T)。192个分块位置的排列顺序按照先小块后大块的原则,这样在CUDA线程中的处理顺序也是先统一处理小块,再统一处理大块,保证了线程间计算量的均衡。
分块SAD归并:我们将一个CTU分成4x4的小块为单位,例如对于64x64的CTU,共分成16x16=256个4x4块,执行每个4x4块的运动搜索,得到搜索范围内所有运动矢量(MV,Motion Vector)和其对应的绝对差值和(SAD,Sum of Absolute Difference),然后将4x4块归并成任意CTU可能划分成的块,从而得到每个分块大小的所有整像素MV对应的SAD。为了降低累加4x4块的复杂度,本发明设计了一个常数时间累加的技巧,如图3所示,用矩阵存储4x4块的SAD累加值,矩阵第一行和第一列用全零填充,假设矩阵元素(i,j)表示从矩阵元素(0,0)到(i,j)的矩形区域内所有元素值的总和,i,j∈[0,N),N为一行CTU中4x4块的个数。这样分块(L,T,R,B)的SAD值可以按如下计算:
SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B (1)
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD。
代价函数:每个分块大小的最佳整像素MV会在多个线程中执行归约比较得到,其中的比较标准考虑了SAD值和MV码率在最佳MV决策中的比重,在SAD相等时用MV绝对值小的。为了避免比较时太多分支,同时节省比特,整体代价函数被表示成如下的形式:
其中Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0。决策时直接分别比较Costx/y值,最佳Costx/y值再通过移位和乘法得到恢复出相应的SAD和MV。这种形式的好处有两方面,一是节省空间和传输带宽,二是减少比较时的分支。
搜索方法:我们的方案采用全搜索算法,搜索范围可以根据需要配置成(8,16,32,48,64),搜索范围越大,匹配效果越好,但GPU复杂度越高。
MVP(Motion Vector Predictor)推导:由于GPU无法直接使用CPU端的AMVP技术,采用简单的CTU级的时域MVP推导方式,通过上一个编码帧相同位置的CTU的MVP与POC(Picture Order Count)差值放缩得到,如图4所示,推导公式如下:
MVP=ColMV×CurDPoc/ColDPoc (4)
其中ColMV是相同位置的CTU MV,MVi是生成ColMV的四个16x16块的MV,CurDPoc和ColDPoc分别是当前帧和上一帧与参考帧的POC差。推导一个CTU的MVP将应用到该CTU的所有块大小中。当上一帧不存在时,使用当前CTU正上方的CTU取而代之;若无正上方CTU,则MVP置为0。
分像素运动搜索与HM中类似,但是搜索的点从周围的8个变为16个。分为两个步骤:第一步生成最优二分之一像素MV,第二步是在此基础上生成最优的四分之一最优MV。如图5左所示,方块代表整像素点,菱形代表1/2像素点,圆圈1/4像素点,假设当前最佳整像素点在编号为0的位置,第一步操作需要从这25个点中找出最优的MV作为最优1/2像素MV。可喜的是其中9个是整像素点(0~8)在之前的整像素搜索中已经比较过,虽然在此时我们不再知道周围8个MV对应的代价,但可以肯定最优1/2像素MV肯定不会是周围的这8个MV。因此我们可以只利用16个线程同时计算出剩余的16个1/2像素点(9~24),然后比较出来最优的MV并和最优IMV比较。这个操作之后,把搜索中心移动到当前最优的1/2像素MV,假设是编号为17的点,此时如图5右所示,方块代表最佳1/2像素MV的点,而圆圈代表1/4像素MV位置,这时也是只需要16个MV的比较。这样做的好处是充分利用了CUDA的设备特性,即一个warp有32个线程,这32个线程的工作不需要同步,同时可以比HM多搜一倍的分像素点,提高匹配准确性。
优选实施例二
本优选实施例提供了一种编码器运动估算方法。在本优选实施例中,利用CUDA平台的线程结构,将每个CTU的运动估计过程封装在一个Block中,实现任意多CTU并行的灵活可扩展的并行编码结构;在具体实现方面,针对性实现了8、16、32、48、64五种搜索范围,并设计了一些降低复杂度的技巧和MVP推导的方式。本发明整体实施方式如图1给出的流程图所示,具体实施方式分为CPU端和GPU端,CPU端流程如下:
在本优选实施例中,
第一步:将读入的原始Y帧传输到GPU显存。同时,遍历参考帧队列中的重构帧,找到最近编码的一帧,传入GPU显存。
第二步:编码第一组CTU。
第三步:判断是否一帧的CTU都编码结束,若未结束,则同步GPU当前待编码CTU组的结果,得到所有分块索引对应最佳MV和SAD的表,每一项以公式(2)的方式封装。然后启动下一组CTU的GPU端运动估计(如果存在)。否则跳转到第五步。
第四步:编码当前CTU组。运动估计时跳过搜索,直接取用最佳MV作为结果。跳转到第三步。
第五步:熵编码、去块滤波和SAO。
第六步:结束。
GPU端流程如下:
第一步:接收一帧重构帧,启动三个插值内核函数对整帧每个像素插值出15个分像素位置,如表1所示,Axx点为整像素位置,Hxx、Vxx、Bxx点分别为三类分像素位置。第一个函数插值生成V类点和H类点中间值。第二个函数利用H类点中间值生成B类点。第三个函数对H类点中间值进行移位得到H类点。
表1
第二步:若是第一组CTU,直接跳转到下一步。否则根据CPU端指令,若启动则跳转到下一步,否则跳转到第六步。
第三步:整像素运动搜索。包括以下分步骤:
对CTU所有4x4块执行搜索范围内的全搜索,得到所有MV对应的SAD。
对CTU所有分块执行从4x4块按公式(1)的归并。
对CTU所有分块以公式(2)作为代价函数,归约决策出一个最佳的整像素MV。
第四步:分像素运动搜索。首先搜索1/2像素位置,然后搜索1/4像素位置。得到最佳的1/4像素精度MV和对应的SAD。
第五步:与CPU同步,本组CTU的将所有分块的最佳MV和对应的SAD值传回CPU端。跳转到第二步。
第六步:结束。
按照本发明的具体实施方案,本发明可以应用于装备主流显卡的主机上,CUDA版本在5.0以上的软件编码器中。可以降低编码复杂度,提高用户体验。
优选实施例三
本优选实施例提供了一种基于CTU并行的GPU运动估计并行方法。在本优选实施例中,利用CUDA平台的线程结构,本发明将每个CTU的运动估计过程封装在一个Block中,实现任意多CTU并行的灵活可扩展的并行编码结构;在具体实现方面,针对性实现了8、16、32、48、64五种搜索范围,并设计了低复杂度的分块模式索引、代价函数、分块SAD归并和简便的MVP推导方式等技术。
下面通过具体实施方式进行说明。
在本实施例中,一个CTU的运动估计在一个Block中实现,编码端可以自由配置并行的CTU个数。
优选地,低复杂度的模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,编码的原则是从小块到大块,线程的处理原则是处理编号从小到大的分块。保证多个线程的计算量均衡。
优选地,以公式(2)为代价函数。
优选地,分块SAD由其所包含的4x4块累加得到,累加方式如公式(1)。
优选地,GPU端MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放,如公式(3)-(4)和图4所示。
优选地,分像素搜索分为1/2像素和1/4像素搜索两个阶段,搜索位置都是如图5所示的16个点,由16个CUDA线程负责一个分块,每个线程各计算一个1/2像素点和一个1/4像素点的SAD。
优选地,将第一组CTU的运动估计交付给CPU端执行,GPU直接从第二组CTU开始计算,避免首次空等待。
优选地,基于像素点分类的亚像素插值方法,以整像素位置为基准,将亚像素点分为横向、纵向、中间点,通过三个核函数实现插值,第一个插值纵向点和横向点中间值,第二个用横向点中间值插值中间点,第三个计算横向点最终值。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例提供了一种编码器运动估算装置,图6是根据本发明实施例的编码器运动估算装置的结构框图,如图6所示,包括:封装模块72,用于将最大编码单元CTU的运动估计过程封装在一个block中;估计模块74,用于通过低复杂度的分块模式索引、代价函数、分块SAD归并和简便的MVP进行运动估计。
优选地,所述估计模块通过所述低复杂度的模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,其中,编码的方式是从小块到大块,线程的处理原则是处理编号从小到大的分块。
优选地,代价函数通过如下公式确定:
其中,Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0。
优选地,分块SAD由其所包含的4x4块累加得到,累加方式通过如下公式确定:SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD。
优选地,所述估计模块中的所述MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放。
需要说明的是,如以下所使用的,术语“子模块”、“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统和方法较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
在另外一个实施例中,还提供了一种编码器运动估算软件,该软件用于执行上述实施例及优选实施例中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述编码器运动估算软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
本发明实施例还提供了一种编码器运动估算装置,该编码器运动估算装置可以用于实现上述编码器运动估算方法及优选实施方式,已经进行过说明的,不再赘述,下面对编码器运动估算装置中涉及到的模块进行说明。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统和方法以软件来实现较佳,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
通过上述实施例,提供了一种编码器运动估算方法及装置,一种基于多CTU并行的灵活的GPU运动估计方案。并行的CTU数目可根据视频序列和硬件资源在编码前预先配置,范围从1到一帧图像的CTU个数;对于GPU端整像素运动估计实现,本发明实现了8、16、32、48、64五种搜索范围,并设计了低复杂度的分块模式索引、代价函数、分块SAD归并和简便的MVP推导方式等技术;对于GPU端分像素运动估计实现,1/2像素搜索和1/4像素搜索点数各为16个,是HM参考软件的一倍。需要说明的是,这些技术效果并不是上述所有的实施方式所具有的,有些技术效果是某些优选实施方式才能取得的。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种编码器运动估算方法,其特征在于,包括:
将最大编码单元CTU的运动估计过程封装在一个块block中;
通过低复杂度的分块模式索引、代价函数、分块SAD归并和MVP进行运动估计;
所述低复杂度的分块模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,其中,编码的方式是从小块到大块,线程的处理原则是处理编号从小到大的分块;
代价函数通过如下公式确定:
其中,Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0,x表示横向,y表示纵向,SAD表示绝对误差和,<<12和<<1分别表示向左移12位和1位;
分块SAD由其所包含的4x4块累加得到,累加方式通过如下公式确定:SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B (1)
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD,L,T,R,B表示4x4块坐标,从(0,0)开始,L表示左,T表示上,R表示右,B表示下,通过SAD累加值计算出分块SAD值;
所述MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放;
所述编码器运动估算方法的实现方式包括CPU端,具体步骤如下:
第一步:将读入的原始Y帧传输到GPU显存;
第二步:编码第一组CTU;
第三步:判断一帧的CTU是否都编码结束,若未结束,则同步GPU当前待编码CTU组的结果,得到所有分块索引对应最佳MV和SAD的表,每一项以公式(2)的方式进行封装,然后启动下一组CTU的GPU端运动估计;否则跳转到第五步;
第四步:运动估计时跳过搜索,直接取用最佳MV作为结果;跳转到第三步;
第五步:熵编码、去块滤波和SAO;
第六步:结束。
2.一种编码器运动估算装置,其特征在于,包括:
封装模块,用于将最大编码单元CTU的运动估计过程封装在一个block中;
估计模块,用于通过低复杂度的分块模式索引、代价函数、分块SAD归并和MVP进行运动估计;
所述估计模块通过所述低复杂度的分块模式索引,每个分块用坐标左上、右下共四个坐标值表示,并进行编号,其中,编码的方式是从小块到大块,线程的处理原则是处理编号从小到大的分块;
代价函数通过如下公式确定:
其中,Costx/y为代价函数,Sign为自定义取正负函数,负返回1,正返回0,x表示横向,y表示纵向,SAD表示绝对误差和,<<12和<<1分别表示向左移12位和1位;
分块SAD由其所包含的4x4块累加得到,累加方式通过如下公式确定:SL,T,R,B=SR,B+SL-1,T-1-SR,T-1-SL-1,B (1)
其中SL,T,R,B表示分块SAD,Sx,y表示4x4块(x,y)的SAD,L,T,R,B表示4x4块坐标,从(0,0)开始,L表示左,T表示上,R表示右,B表示下,通过SAD累加值计算出分块SAD值;
所述估计模块中的所述MVP推导采用最近编码一帧相同位置CTU的4个16x16块平均值缩放;
所述编码器运动估算装置包括CPU端,所述CPU端的流程如下:
第一步:将读入的原始Y帧传输到GPU显存;
第二步:编码第一组CTU;
第三步:判断一帧的CTU是否都编码结束,若未结束,则同步GPU当前待编码CTU组的结果,得到所有分块索引对应最佳MV和SAD的表,每一项以公式(2)的方式进行封装,然后启动下一组CTU的GPU端运动估计;否则跳转到第五步;
第四步:运动估计时跳过搜索,直接取用最佳MV作为结果;跳转到第三步;
第五步:熵编码、去块滤波和SAO;
第六步:结束。
CN201510221280.3A 2015-05-04 2015-05-04 编码器运动估算方法及装置 Active CN104994394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510221280.3A CN104994394B (zh) 2015-05-04 2015-05-04 编码器运动估算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510221280.3A CN104994394B (zh) 2015-05-04 2015-05-04 编码器运动估算方法及装置

Publications (2)

Publication Number Publication Date
CN104994394A CN104994394A (zh) 2015-10-21
CN104994394B true CN104994394B (zh) 2018-08-07

Family

ID=54306134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510221280.3A Active CN104994394B (zh) 2015-05-04 2015-05-04 编码器运动估算方法及装置

Country Status (1)

Country Link
CN (1) CN104994394B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107135392B (zh) * 2017-04-21 2019-12-10 西安电子科技大学 基于异步模式的hevc运动搜索并行方法
CN113676737B (zh) * 2021-08-02 2024-06-28 上海影谱科技有限公司 一种基于gpu的高效视频编码器及编码方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102148990A (zh) * 2011-04-28 2011-08-10 北京大学 一种运动矢量预测装置和方法
CN102647594A (zh) * 2012-04-18 2012-08-22 北京大学 一种整像素精度运动估计方法及其系统
CN103747262A (zh) * 2014-01-08 2014-04-23 中山大学 一种基于gpu的运动估计方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8934552B2 (en) * 2011-03-31 2015-01-13 Qualcomm Incorporated Combined reference picture list construction and mapping

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102148990A (zh) * 2011-04-28 2011-08-10 北京大学 一种运动矢量预测装置和方法
CN102647594A (zh) * 2012-04-18 2012-08-22 北京大学 一种整像素精度运动估计方法及其系统
CN103747262A (zh) * 2014-01-08 2014-04-23 中山大学 一种基于gpu的运动估计方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Flexible CTU-level Parallel Motion Estimation by CPU and GPU Pipeline for HEVC;马俊成等;《visual communication and image processing conference》;20150302;第282-285页 *

Also Published As

Publication number Publication date
CN104994394A (zh) 2015-10-21

Similar Documents

Publication Publication Date Title
JP7335314B2 (ja) 画像予測方法および関連装置
CN105191309B (zh) 用于下一代视频编码的内容自适应预测距离分析器和分层运动估计系统
CN102714736B (zh) 基于减少的运动矢量预测候选对运动矢量进行编码和解码的方法和设备
CN105025293B (zh) 对视频编码的方法和设备以及对视频解码的方法和设备
CN105959699B (zh) 一种基于运动估计和时空域相关性的快速帧间预测方法
CN109495743B (zh) 一种基于异构多处理平台的并行化视频编码方法
CN104255033B (zh) 用于lm模式计算的简化查找表
CN108141604A (zh) 图像编码和解码方法和图像解码设备
KR20170045264A (ko) 이미지 예측 방법 및 관련 장치
CN104811696B (zh) 一种视频数据的编码方法和装置
CN103583043B (zh) 影像编码方法、装置、影像解码方法、装置
CN104067619A (zh) 视频解码器、视频编码器、视频解码方法以及视频编码方法
CN105933717A (zh) 一种编码单元的模式决策方法和装置
TWI504241B (zh) 影像編碼方法、裝置、影像解碼方法、裝置及其程式產品
CN103414895A (zh) 一种适用于hevc标准的编码器帧内预测装置及方法
CN109889827A (zh) 帧内预测编码方法、装置、电子设备及计算机存储介质
CN104994394B (zh) 编码器运动估算方法及装置
CN101820547A (zh) 帧间模式选择方法
CN110419214A (zh) 帧内预测模式搜索方法及装置、视频编码方法及装置以及记录介质
CN102801982B (zh) 一种应用于视频压缩且基于块积分的快速运动估计方法
CN109565592B (zh) 一种使用基于分割的视频编码块划分的视频编码设备和方法
CN110392265A (zh) 帧间运动估计方法、装置、电子设备及可读存储介质
CN110198442A (zh) 一种用于视频编码的帧内预测方法、装置和存储介质
CN109688411A (zh) 一种视频编码率失真代价估计方法和装置
CN110139098A (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
GR01 Patent grant
GR01 Patent grant