CN105959695B - 一种基于gpu的并行像素自适应偏移方法 - Google Patents

一种基于gpu的并行像素自适应偏移方法 Download PDF

Info

Publication number
CN105959695B
CN105959695B CN201610281623.XA CN201610281623A CN105959695B CN 105959695 B CN105959695 B CN 105959695B CN 201610281623 A CN201610281623 A CN 201610281623A CN 105959695 B CN105959695 B CN 105959695B
Authority
CN
China
Prior art keywords
pixel
thread
parallel
gpu
block
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
CN201610281623.XA
Other languages
English (en)
Other versions
CN105959695A (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.)
National Sun Yat Sen University
Original Assignee
National Sun Yat Sen 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 National Sun Yat Sen University filed Critical National Sun Yat Sen University
Priority to CN201610281623.XA priority Critical patent/CN105959695B/zh
Publication of CN105959695A publication Critical patent/CN105959695A/zh
Application granted granted Critical
Publication of CN105959695B publication Critical patent/CN105959695B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提出一种基于GPU的并行像素自适应偏移方法,利用GPU的大量线程进行像素级并行统计、LCU块级并行相对失真计算和像素级并行修正,从而获得显著的时间减幅。标准的SAO算法非常不利于并行化。首先,参数融合机制使SAO块参数具有不确定的数据依赖性;其次,区域像素相关性导致统计时存在大量线程间的数据同步等待。针对上述两项阻碍SAO并行化的挑战,本发明结合GPU的硬件特性,设计了两种基于不同线程映射方法的像素级并行统计算法和一种块级并行相对失真计算算法。通过大量的实验分析,本发明设计并实现的并行SAO(简称cuSAO)相比AVS2标准参考软件的串行SAO(简称rdSAO)在耗时上获得显著的减幅,而且不失精确性,平均耗时减幅高达70%,最多可达90%以上。

Description

一种基于GPU的并行像素自适应偏移方法
技术领域
本发明涉视频编码技术领域,更具体地,涉及一种基于GPU的并行像素自适应偏移方法。
背景技术
如今,视频应用已经深入到各个领域,视频编码技术也面临着越来越多的挑战。2010年4月VCEG和MPEG再次联手,组建JCT-VC工作组开始制定新一代视频编码标准H.265/HEVC,随后不久,我国的AVS工作组也开始筹备我国自主研制的新一代视频编码标准AVS2。
无论是国际标准H.265/HEVC还是我国的AVS2标准,核心目标都是在上一代视频编码标准的基础上,将压缩效率提高一倍,即在保证相同视频图像质量的前提下,视频流的码率再减少50%。然而,更高的压缩比与重建视频图像的主客观质量是矛盾。为了缓和该矛盾,SAO(Sample Adaptive Offset,像素自适应偏移)技术被H.265/HEVC和AVS2两大标准不约而同地加入到各自的编解码框架里,成为改善视频主客观质量的新型关键技术。
SAO技术,又称像素自适应偏移,能在仅提高少量码率的情况下大幅改善视频图像的主客观质量。SAO技术的核心思想是:依据某种分类模式,对图像像素做有限的分类,在编码时为有限个类别的像素寻找修正值并将其编入码流,而在解码时像素根据分类模式自适应地使用相应的值进行修正。
然而在决策最优的分类模式以及修正值时,标准的SAO技术依赖于对全图像素的统计数据,这是一个非常繁琐的过程。国内外不少专家学者在对SAO技术做加速优化时,都是通过回避使用基于像素统计的分类方法,使用新的决策方式获得速度上的提升。虽然避开基于像素统计分类方法的SAO模块能获得很大程度的时间减幅,但这些方法都是对精确性有所妥协的。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷,提供一种高效率、高精确度的基于GPU的并行像素自适应偏移方法。
为解决上述技术问题,本发明的技术方案如下:
一种基于GPU的并行像素自适应偏移方法,所述算法按照以下步骤依次处理视频序列的各帧:
S1:在GPU进行像素级并行统计,一个线程负责一个或多个像素在某种分类模式下的统计;
S2:在GPU进行LCU(最大编码单元)块级并行计算相对失真;
S3:在CPU进行LCU块级串行决策最终SAO(像素自适应偏移)参数;
S4:在GPU进行像素级并行修正。
在一种优选的方案中,步骤S1中,像素级并行统计的具体方法为:一个线程负责一个或多个像素在某种分类模式下的统计,时间复杂度可达O(1),线程与像素的映射方法为以下三种映射方法的任意一种,其中效果最好的为聚簇型线程映射方法:
(1)对齐型线程映射方法:每一个线程负责图像分量中一个像素的统计工作;
(2)跳跃型线程映射方法:1个线程块映射1个LCU块,1个LCU块包含64×64个像素,1个线程块包含16×16个线程。
跳跃型线程映射相比对齐型线程映射的一个改进点是:使用更少的线程,每个线程负责更多的像素统计。使用这种线程布局的理由是:第一,线程块内256个(16×16)线程可以充分利用硬件性能;第二,每个LCU块可以获得一块共享内存,仍然可以利用共享内存作为高速缓存,对数据进行分层汇聚。
(3)聚簇型线程映射方法:每一个线程负责的像素区域是方形聚簇的,即每个线程负责一块像素。
所述聚簇型线程映射方法中,使用一个线程块映射一个编码单元块,每个线程块的线程数量可以调整,但最佳数量为256,每个线程负责的像素区域是方形聚簇的,这样使用的线程更少,可减少未调度线程的等待时间,也减少了线程间数据同步的等待时间,同时,由于每个编码单元块获得一个线程块的映射,即分配到独立的共享内存,可将共享内存充当数据同步时的高速缓存,从而再度加速。
聚簇型线程映射的好处是:第一,只要将一个LCU块横竖方向各分裂16次,即分成256个小块,每个小块的像素由1个线程负责,即可达到单线程块256线程,充分利用硬件资源;第二,在区域像素雷同现象的前提下,每个小块内的像素是高度一致,由单个线程负责可以避开竞争写同一变量的问题,从而减少因为数据同步而等待的时间;第三,线程数量相比对齐型线程映射减少,可以缩短未被调度线程的等待时间;第四,依然是1个线程块映射1个LCU块的线程布局,仍然可以使用共享内存充当高速缓存。
在一种优选的方案中,步骤S2中,LCU块级并行计算相对失真的具体方法为:对于边缘模式(EO,Edge Offset),无论沿哪个方向进行像素比较,像素都被归为5类,其中一类无意义,对应的修正值为0;对于每个LCU块,可以使用4×5个线程分别计算4种边缘分类模式下,每类像素的在各个候选修正值下的相对失真,并将最小相对失真以及对应的修正值存放在线程块的共享内存中,再分配一线程从中选出相对失真最小的边缘模式。
在一种优选的方案中,步骤S2中,LCU块级并行计算相对失真的具体方法为:对于边带模式(BO,BAND Offset),像素被分为32类;因此,每个LCU块用1个线程块映射,每个线程块包含32个线程,分别计算个边带各个候选修正值下的相对失真,并将最小相对失真和取得该值下的修正值暂存于共享内存中;然后,分配29个线程分别计算29个连续四边带的相对失真,再从中选出边带模式下最优的起始边带索引和4个最优偏移值。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出一种基于GPU的并行像素自适应偏移方法,利用GPU的大量线程进行像素级并行统计、块级并行相对失真计算和像素级并行修正,从而获得显著的时间减幅。标准的SAO算法非常不利于并行化。首先,参数融合机制使SAO块参数具有不确定的数据依赖性;其次,区域像素相关性导致统计时存在大量线程间的数据同步等待。针对上述两项阻碍SAO并行化的挑战,本发明结合GPU的硬件特性,设计了两种基于不同线程映射方法的像素级并行统计算法和一种块级并行相对失真计算算法。通过大量的实验分析,本发明设计并实现的并行SAO(简称cuSAO)相比AVS2标准参考软件的串行SAO(简称rdSAO)在耗时上获得显著的减幅,而且不失精确性,平均耗时减幅高达70%,最多可达90%以上。
附图说明
图1为本发明基于GPU的并行像素自适应偏移方法的算法框架图。
图2为跳跃型线程映射方法的示意图。
图3为聚簇型线程映射方法的示意图。
图4为EO块级并行相对失真计算算法。
图5为BO块级并行相对失真计算算法。
图6为LCU块级串行决策最优SAO参数算法。
图7为像素级并行SAO处理算法。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
如图1所示,一种基于GPU的并行像素自适应偏移方法,所述算法按照以下步骤依次处理视频序列的各帧:
S1:在GPU进行像素级并行统计,一个线程负责一个或多个像素在某种分类模式下的统计;
S2:在GPU进行LCU块级并行计算相对失真;
S3:在CPU进行LCU块级串行决策最终SAO参数;
S4:在GPU进行像素级并行修正。
在具体实施过程中,步骤S1中,像素级并行统计的具体方法为:一个线程负责一个或多个像素在某种分类模式下的统计,时间复杂度可达O(1),线程与像素的映射方法为以下三种映射方法的任意一种:
(1)对齐型线程映射方法:每一个线程负责图像分量中一个像素的统计工作;
(2)跳跃型线程映射方法:如图2所示,1个线程块映射1个LCU块,1个LCU块包含64×64个像素,1个线程块包含16×16个线程。跳跃型线程映射相比对齐型线程映射的一个改进点是:使用更少的线程,每个线程负责更多的像素统计。使用这种线程布局的理由是:第一,线程块内256个(16×16)线程可以充分利用硬件性能;第二,每个LCU块可以获得一块共享内存,仍然可以利用共享内存作为高速缓存,对数据进行分层汇聚。
(3)聚簇型线程映射方法:如图3所示,每一个线程负责的像素是聚簇的,即每个线程负责一块像素。
所述聚簇型线程映射方法中,使用一个线程块映射一个编码单元块,每个线程块的线程数量可以调整,但最佳数量为256,每个线程负责的像素区域是方形聚簇的,这样使用的线程更少,可减少未调度线程的等待时间,也减少了线程间数据同步的等待时间,同时,由于每个编码单元块获得一个线程块的映射,即分配到独立的共享内存,可将共享内存充当数据同步时的高速缓存,从而再度加速。
聚簇型线程映射的好处是:第一,只要将一个LCU块横竖方向各分裂16次,即分成256个小块,每个小块的像素由1个线程负责,即可达到单线程块256线程,充分利用硬件资源;第二,在区域像素雷同现象的前提下,每个小块内的像素是高度一致,由单个线程负责可以避开竞争写同一变量的问题,从而减少因为数据同步而等待的时间;第三,线程数量相比对齐型线程映射减少,可以缩短未被调度线程的等待时间;第四,依然是1个线程块映射1个LCU块的线程布局,仍然可以使用共享内存充当高速缓存。
在具体实施过程中,步骤S2中,LCU块级并行计算相对失真的具体方法为:
如图4所示,对于EO模式(边缘模式),无论沿哪个方向进行像素比较,像素都被归为5类,其中一类无意义,对应的修正值为0;对于每个LCU块,可以使用4×5个线程分别计算4种边缘分类模式下,每类像素的在各个候选修正值下的相对失真,并将最小相对失真以及对应的修正值存放在线程块的共享内存中,再分配一线程从中选出相对失真最小的边缘模式。
如图5所示,对于BO模式(边带模式),像素被分为32类;因此,每个LCU块用1个线程块映射,每个线程块包含32个线程,分别计算个边带各个候选修正值下的相对失真,并将最小相对失真和取得该值下的修正值暂存于共享内存中;然后,分配29个线程分别计算29个连续四边带的相对失真,再从中选出边带模式下最优的起始边带索引和4个最优偏移值。
如图6所示,在具体实施过程中,步骤S3中,LCU块级串行决策最终SAO参数的具体方法包括以下步骤:
S31:遍历编码单元块CTB,选出EO,BO模式下的最小ΔJ(相对率失真),其中CTB指最大编码单元块为LCU的一个分量;
S32:取上邻块的ACTUAL_TYPE,OFFSET(偏移值,或修正值),计算当前CTB在参数融合下的ΔJ,其中ACTUAL_TYPE用于保持参数传递性,即在邻块的MODE(模式)也为MERGE(参数融合)时,可以直接从ACTUAL_TYPE得到邻块的SAO参数信息。
S33:取左邻块的ACTUAL_TYPE,OFFSET,计算当前CTB在参数融合下的ΔJ;
S34:比较得出最小ΔJ,判断取最小ΔJ时是否为NO_SAO(不进行SAO处理),若是,则OFFSET全为0,ACTUAL_TYPE为NO_SAO,并跳转到步骤S31;若否,则跳转到步骤S35;
S35:判断取最小ΔJ时是否为邻块参数;
若是,则使用邻块的OFFSET,写MODE为MERGE,TYPE为具体merge哪个邻块,ACTUAL_TYPE为邻块的ACTUAL_TYPE,返回步骤S31;
若否,则使用新OFFSET,写MODE为EO或BO,TYPE为具体模式,ACTUAL_TYPE做相应记录,返回步骤S31;
各字段取值如表1所示。
表1
当然,上述的SAO参数表格含有大量的非码流数据,ACTUAL_TYPE数据只是用于辅助块级串行SAO参数决策算法,在实际写码流时,一个LCU块最多只写入6个数据,即MODE,TYPE,OFFSET[4],如果MODE=MERGE,那么连OFFSET也无须写入码流。
如图7所示,在具体实施过程中,步骤S4中,像素级并行修正的具体方法包括以下步骤:
S41:计算每个线程的下标,将线程下标转化为像素下标,计算对应的LCU索引;
S42:读取当前像素所属CTB的SAO参数的ACTUAL_TYPE信息,判断是否做SAO,若是,则跳转到步骤S43;若否,则当前像素的线程任务结束;
S43:判断是否为边缘模式;
若是,则依据边缘模式方向计算相邻像素的坐标,当前像素与邻像素比较,对其归类,读取该类的修正值并修正,当前像素的线程任务结束;
若否,为边带模式,则计算当前像素所属边带,读取像素所属边带的修正值并修正,当前像素的线程任务结束。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (4)

1.一种基于GPU的并行像素自适应偏移方法,其特征在于,所述方法按照以下步骤依次处理视频序列的各帧:
S1:在GPU进行像素级并行统计,一个线程负责一个或多个像素在预设分类模式下的统计;
S2:在GPU进行最大编码单元块级并行计算相对失真;
S3:在CPU进行最大编码单元块级串行决策最终SAO参数;
S4:在GPU进行像素级并行修正;
步骤S1中,像素级并行统计的具体方法为:一个线程负责一个或多个像素在预设分类模式下的统计,时间复杂度可达O(1),线程与像素的映射方法为以下三种映射方法的任意一种,其中聚簇型线程映射方法效果最佳:
(1)对齐型线程映射方法:每一个线程负责图像分量中一个像素的统计工作;
(2)跳跃型线程映射方法:1个线程块映射1个最大编码单元块,1个最大编码单元块包含64×64个像素,1个线程块包含16×16个线程;
(3)聚簇型线程映射方法:每一个线程负责的像素区域是方形聚簇的,即每个线程负责一块像素。
2.根据权利要求1所述的基于GPU的并行像素自适应偏移方法,其特征在于,所述聚簇型线程映射方法中,使用一个线程块映射一个编码单元块,每个线程块的线程数量可以调整,每个线程负责的像素区域是方形聚簇的。
3.根据权利要求1所述的基于GPU的并行像素自适应偏移方法,其特征在于,步骤S2中,最大编码单元块级并行计算相对失真的具体方法为:对于边缘模式,无论沿水平边缘、45°边缘、垂直边缘还是135°边缘方向像素比较,像素都被归为5类,其中一类无意义,对应的修正值为0;对于每个最大编码单元块,可以使用4×5个线程分别计算4种边缘分类模式下,每类像素的在各个候选修正值下的相对失真,并将最小相对失真以及对应的修正值存放在线程块的共享内存中,再分配一线程从中选出相对失真最小的边缘模式。
4.根据权利要求1所述的基于GPU的并行像素自适应偏移方法,其特征在于,步骤S2中,最大编码单元块级并行计算相对失真的具体方法为:对于边带模式,像素被分为32类;因此,每个最大编码单元块用1个线程块映射,每个线程块包含32个线程,分别计算各边带各个候选修正值下的相对失真,并将最小相对失真和取得该值下的修正值暂存于共享内存中;然后,分配29个线程分别计算29个连续四边带的相对失真,再从中选出边带模式下最优的起始边带索引和4个最优偏移值。
CN201610281623.XA 2016-04-28 2016-04-28 一种基于gpu的并行像素自适应偏移方法 Expired - Fee Related CN105959695B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610281623.XA CN105959695B (zh) 2016-04-28 2016-04-28 一种基于gpu的并行像素自适应偏移方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610281623.XA CN105959695B (zh) 2016-04-28 2016-04-28 一种基于gpu的并行像素自适应偏移方法

Publications (2)

Publication Number Publication Date
CN105959695A CN105959695A (zh) 2016-09-21
CN105959695B true CN105959695B (zh) 2019-07-09

Family

ID=56913312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610281623.XA Expired - Fee Related CN105959695B (zh) 2016-04-28 2016-04-28 一种基于gpu的并行像素自适应偏移方法

Country Status (1)

Country Link
CN (1) CN105959695B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104506867A (zh) * 2014-12-01 2015-04-08 北京大学 采样点自适应偏移参数估计方法及装置
CN105141948A (zh) * 2015-09-22 2015-12-09 天津师范大学 一种改进的hevc样点自适应补偿方法
CN105306940A (zh) * 2015-10-27 2016-02-03 北京中星微电子有限公司 一种视频编解码样值偏移补偿中边界补偿模式处理方法
CN105409221A (zh) * 2014-04-29 2016-03-16 微软技术许可有限责任公司 用于样本自适应偏移滤波的编码器侧决策

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014051408A1 (ko) * 2012-09-28 2014-04-03 삼성전자 주식회사 인터 레이어 예측 오차를 부호화하기 위한 sao 오프셋 보상 방법 및 그 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105409221A (zh) * 2014-04-29 2016-03-16 微软技术许可有限责任公司 用于样本自适应偏移滤波的编码器侧决策
CN104506867A (zh) * 2014-12-01 2015-04-08 北京大学 采样点自适应偏移参数估计方法及装置
CN105141948A (zh) * 2015-09-22 2015-12-09 天津师范大学 一种改进的hevc样点自适应补偿方法
CN105306940A (zh) * 2015-10-27 2016-02-03 北京中星微电子有限公司 一种视频编解码样值偏移补偿中边界补偿模式处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于HEVC视频编码标准的后处理技术的研究;盛希;《中国优秀硕士论文全文数据库(信息科技辑)》;20140315(第3期);I136-260
基于时域相关性的自适应采样值补偿算法;罗丽冬;《电视技术》;20150402;第39卷(第7期);1-6

Also Published As

Publication number Publication date
CN105959695A (zh) 2016-09-21

Similar Documents

Publication Publication Date Title
US10880543B2 (en) Image prediction method and device
TWI375469B (en) A method and apparatus for decoding/encoding a video signal
CN105306947B (zh) 基于机器学习的视频转码方法
CN102939750B (zh) 跨平面预测
CN101079246B (zh) 图像处理装置
US8203648B2 (en) Motion vector detecting apparatus and motion vector detecting method
CN1933600A (zh) 用于h.264/avc编码器的运动估计方法
CN101420617B (zh) 一种十字六边形运动估计搜索方法
CN104702955B (zh) 屏幕视频的预测编码的方法与系统
CN105872345A (zh) 基于特征匹配的全帧电子稳像方法
CN109688407A (zh) 编码单元的参考块选择方法、装置、电子设备及存储介质
CN109040764A (zh) 一种基于决策树的hevc屏幕内容帧内快速编码算法
CN106233334A (zh) 一种将视频块分割模式和视频编码块关联的装置和方法
CN107087171A (zh) Hevc整像素运动估计方法及装置
CN105959695B (zh) 一种基于gpu的并行像素自适应偏移方法
CN101742291A (zh) 压缩图像目标的定位与识别方法及装置
CN110392265A (zh) 帧间运动估计方法、装置、电子设备及可读存储介质
CN1925616B (zh) 一种宏块对级帧场自适应编解码方法
CN103391415A (zh) 一种录像数据丢帧处理方法及系统
CN105578194A (zh) Jpeg图像解码方法和解码器
CN106162175A (zh) 帧内预测模式选择方法及装置
CN108134938A (zh) 视频扫描方式检测、纠正方法、及视频播放方法和装置
CN112001867A (zh) 一种基于cuda的单目立体匹配及加速的方法
CN113255564B (zh) 基于关键对象拼合的实时视频识别加速器
CN107483936A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190709

CF01 Termination of patent right due to non-payment of annual fee