首页 / 专利库 / 电脑零配件 / 中央处理器 / 基于CPU和GPU的图像协同解码方法及装置

基于CPU和GPU的图像协同解码方法及装置

阅读:573发布:2023-01-26

专利汇可以提供基于CPU和GPU的图像协同解码方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 是有关一种基于CPU和GPU的图像协同解码方法及装置。一种基于CPU和GPU的图像协同解码方法,包括:接收图像编码码流,调用CPU对图像编码码流进行头信息解析及tier‑2 算法 处理,得到第一处理结果;提取图像 分辨率 值,判断分辨率值是否高于预设的分辨率 阈值 ,如果是,调用GPU对第一处理结果进行tier‑1算法处理,得到第二处理结果;调用GPU对第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据。由此可见,一方面在不影响解码速度的前提下减轻了CPU的负荷,另一方面充分利用的空闲的GPU资源,从而实现了CPU、GPU的负载均衡,增加系统的总体吞吐率。,下面是基于CPU和GPU的图像协同解码方法及装置专利的具体信息内容。

1.一种基于CPU和GPU的图像协同解码方法,其特征在于,应用于配置有中央处理器CPU和图形处理器GPU的电子设备,所述方法包括:
接收图像编码码流,其中所述图像编码码流为经过JPEG2000编码后的图像码流;
调用所述电子设备的CPU对所述图像编码码流顺序进行头信息解析及JPEG2000标准中定义的tier-2算法处理,得到第一处理结果;
提取所述图像编码码流的图像分辨率值,判断所述分辨率值是否高于预设的分辨率阈值,如果是,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
否则,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据;
其中,GPU使用一个专的守护线程,负责显存-内存数据的传输以及与其他线程的通信,以便获知读取和写入目的缓冲是否可用;该专门的守护线程负责从CPU-GPU中间数据队列取数据,上传到显存,执行GPU解码阶段,将解码结果下传到输出缓冲数组的对应位置中,同时负责与其他环节的CPU线程通信;CPU扫描线程得到GPU守护线程的队列非空信号后,扫描一次输出缓冲队列,将索引最小的数据输出。
2.如权利要求1所述的方法,其特征在于,所述电子设备的CPU与GPU之间的数据传递方式为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲队列异步获取数据。
3.如权利要求1所述的方法,其特征在于,所述调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果,包括:
调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码分配一个线程束Warp,其中不同图像编码码块对应不同的线程束Warp;
以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
其中,每个图像编码码块间并发,每个码块对应一个线程;每32个线程束Warp使用一个执行计算。
4.如权利要求1所述的方法,其特征在于,在所述电子设备的GPU对所述第二处理结果顺序进行反量化处理之后,还包括:
利用GPU的并行能将反量化处理结果直接排列成小波逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
5.如权利要求1所述的方法,其特征在于,在所述电子设备的GPU对所述第二处理结果顺序进行反量化处理之后,还包括:
识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变换阶段的计算量。
6.如权利要求1所述的方法,其特征在于,所述电子设备的GPU执行小波逆变换的方式,包括:
利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低速显存中的读写次数,优化小波逆变换的数据读取速度。
7.一种基于CPU和GPU的图像协同解码装置,其特征在于,应用于配置有中央处理器CPU和图形处理器GPU的电子设备,所述装置包括:
码流接收模块,用于接收图像编码码流,其中所述图像编码码流为经过JPEG2000编码后的图像码流;
第一控制模块,用于调用所述电子设备的CPU对所述码流接收模块接收到的图像编码码流顺序进行头信息解析及JPEG2000标准中定义的tier-2算法处理,得到第一处理结果;
判断模块,用于提取所述图像编码码流的图像分辨率值,判断所述分辨率值是否高于预设的分辨率阈值;
第二控制模块,用于在所述判断模块的判断结果为是的情况下,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
第三控制模块,用于在所述判断模块的判断结果为否的情况下,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
第四控制模块,用于调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据;
其中,GPU使用一个专门的守护线程,负责显存-内存数据的传输以及与其他线程的通信,以便获知读取和写入目的缓冲是否可用;该专门的守护线程负责从CPU-GPU中间数据队列取数据,上传到显存,执行GPU解码阶段,将解码结果下传到输出缓冲数组的对应位置中,同时负责与其他环节的CPU线程通信;CPU扫描线程得到GPU守护线程的队列非空信号后,扫描一次输出缓冲队列,将索引最小的数据输出。
8.如权利要求7所述的装置,其特征在于,所述电子设备的CPU与GPU之间的数据传递方式为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲队列异步获取数据。
9.如权利要求7所述的装置,其特征在于,所述第二控制模块具体用于:
在所述判断模块的判断结果为是的情况下,调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码块分配一个线程束Warp,其中不同图像编码码块对应不同的线程束Warp;
以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
其中,每个图像编码码块间并发,每个码块对应一个线程;每32个线程束Warp使用一个执行计算。
10.如权利要求7所述的装置,其特征在于,所述装置还包括:
数据格式转换模块,用于利用GPU的并行能力将反量化处理结果直接排列成小波逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
11.如权利要求7所述的装置,其特征在于,所述装置还包括:
识别模块,用于识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变换阶段的计算量。
12.如权利要求7所述的装置,其特征在于,所述第三控制模块调用所述电子设备的GPU执行小波逆变换,包括:
利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低速显存中的读写次数,优化小波逆变换的数据读取速度。

说明书全文

基于CPU和GPU的图像协同解码方法及装置

技术领域

[0001] 本发明涉及图像处理技术领域,特别是涉及一种基于CPU和GPU的图像协同解码方法及装置。

背景技术

[0002] 目前,针对远程图像采集设备采集到的图像,该图像从被采集到在远端设备上输出展示通常经历以下过程:图像的采集、图像的压缩、图像压缩码流的传输、图像压缩码流的解码(解压缩)、解码结果的输出显示,其中,图像的压缩过程中采用何种压缩算法直接影响着最终的图像画面的输出显示质量,图像压缩码流的解码过程是图像的压缩过程的逆过程。
[0003] 随着图像采集技术的迅速发展,人们对采集到的图像的质量要求也越来越高,传统的JPEG压缩标准已经逐渐无法满足上述需求,主要表现在:传统的JPEG压缩标准中的压缩算法采用了有损压缩,当图像中存在大面积的近似颜色区域时,采用上述压缩算法就会出现“赛克”现象,影响图片观感。为了解决上述问题,图像画面质量较高、压缩比较高的静态图像压缩标准JPEG2000应运而生。
[0004] 相比于传统的JPEG压缩标准,JPEG2000可以支持有损压缩和无损压缩,在无损压缩的情况下,JPEG2000的压缩比高于传统的JPEG;在有损压缩,特别是压缩比较高的情况下,使用JPEG2000压缩算法不会出现传统JPEG中的“马赛克”现象,此外,对图像压缩码流进行解码后得到的图像的画面质量相对清晰。基于上述性能特性,JPEG2000在图像画面质量、压缩比要求较高的领域如遥感、医学影像分析等领域,有着广泛的应用。
[0005] 在对经过JPEG2000压缩编码的图像编码码流进行解码时,通常码流需要经历以下操作处理:JPEG2000标准中定义的头信息解析、tier-2算法处理、tier-1算法处理、反量化、小波逆变化及DC电平变换。现有技术中也存在基于CPU和GPU的图像解码方法,在该方法中CPU负责对码流进行头信息解析、tier-2算法及tier-1算法处理,GPU负责对CPU的处理结果进行反量化、小波逆变化及DC电平变换处理。
[0006] 然而,由于一方面tier-1算法的计算量较大,会占用较多的CPU资源,影响其他类型操作的执行速度;另一方面反量化、小波逆变化及DC电平变换占用的GPU资源较少,造成了GPU空闲的状况,因此,导致CPU和GPU的资源利用不合理。

发明内容

[0007] 有鉴于上述现有技术所存在的缺陷,本发明的目的在于,提供一种基于CPU和GPU的图像协同解码方法及装置,使得CPU和GPU的负载均衡,优化JPEG2000的解码速度。
[0008] 为了实现上述目的,依据本发明提出的一种基于CPU和GPU的图像协同解码方法,应用于配置有中央处理器CPU和图形处理器GPU的电子设备,所述方法包括:
[0009] 接收图像编码码流,其中所述图像编码码流为经过JPEG2000编码后的图像码流;
[0010] 调用所述电子设备的CPU对所述图像编码码流顺序进行头信息解析及JPEG2000标准中定义的tier-2算法处理,得到第一处理结果;
[0011] 提取所述图像编码码流的图像分辨率值,判断所述分辨率值是否高于预设的分辨率阈值,如果是,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
[0012] 否则,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
[0013] 调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据。
[0014] 本发明还可采用以下技术措施进一步实现。
[0015] 前述的基于CPU和GPU的图像协同解码方法,其中所述电子设备的CPU与GPU之间的数据传递方式为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲队列异步获取数据。
[0016] 前述的基于CPU和GPU的图像协同解码方法,其中所述调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果,包括:
[0017] 调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码分配一个线程束Warp,其中不同图像编码码块对应不同的线程束Warp;
[0018] 以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0019] 前述的基于CPU和GPU的图像协同解码方法,其中在所述电子设备的GPU对所述第二处理结果顺序进行反量化处理之后,还包括:
[0020] 利用GPU的并行能将反量化处理结果直接排列成小波逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
[0021] 前述的基于CPU和GPU的图像协同解码方法,其中在所述电子设备的GPU对所述第二处理结果顺序进行反量化处理之后,还包括:
[0022] 识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变换阶段的计算量。
[0023] 前述的基于CPU和GPU的图像协同解码方法,其中所述电子设备的GPU执行小波逆变换的方式,包括:
[0024] 利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低速显存中的读写次数,优化小波逆变换的数据读取速度。
[0025] 依据本发明提出的一种基于CPU和GPU的图像协同解码装置,应用于配置有中央处理器CPU和图形处理器GPU的电子设备,所述装置包括:
[0026] 码流接收模块,用于接收图像编码码流,其中所述图像编码码流为经过JPEG2000编码后的图像码流;
[0027] 第一控制模块,用于调用所述电子设备的CPU对所述码流接收模块接收到的图像编码码流顺序进行头信息解析及JPEG2000标准中定义的tier-2算法处理,得到第一处理结果;
[0028] 判断模块,用于提取所述图像编码码流的图像分辨率值,判断所述分辨率值是否高于预设的分辨率阈值;
[0029] 第二控制模块,用于在所述判断模块的判断结果为是的情况下,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
[0030] 第三控制模块,用于在所述判断模块的判断结果为否的情况下,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
[0031] 第四控制模块,用于调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据。
[0032] 前述的基于CPU和GPU的图像协同解码方法,其中所述电子设备的CPU与GPU之间的数据传递方式为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲队列异步获取数据。
[0033] 前述的基于CPU和GPU的图像协同解码方法,其中所述第二控制模块具体用于:
[0034] 在所述判断模块的判断结果为是的情况下,调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码块分配一个线程束Warp,其中不同图像编码码块对应不同的线程束Warp;
[0035] 以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0036] 前述的基于CPU和GPU的图像协同解码方法,其中所述装置还包括:
[0037] 数据格式转换模块,用于利用GPU的并行能力将反量化处理结果直接排列成小波逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
[0038] 前述的基于CPU和GPU的图像协同解码方法,其中所述装置还包括:
[0039] 识别模块,用于识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变换阶段的计算量。
[0040] 前述的基于CPU和GPU的图像协同解码方法,其中所述第三控制模块调用所述电子设备的GPU执行小波逆变换,包括:
[0041] 第三控制模块利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低速显存中的读写次数,优化小波逆变换的数据读取速度。
[0042] 应用上述技术方案,与现有技术相比,本发明的基于CPU和GPU的图像协同解码方法及装置,在高分辨率图像的解码中调用GPU执行tier-1算法的速度与CPU接近,将tier-1算法的执行操作分配到GPU,一方面在不影响解码速度的前提下减轻了CPU的负荷,另一方面充分利用的空闲的GPU资源,从而实现了CPU、GPU的负载均衡,增加系统的总体吞吐率,将最主要的计算放到GPU上实现,能通过GPU扩展插槽,更加容易地提高性能。附图说明
[0043] 图1是本发明提供的一种基于CPU和GPU的图像协同解码方法的流程示意图。
[0044] 图2是JPEG2000实时解码技术典型应用场景的示意图。
[0045] 图3是本发明提供的JPEG2000的的解码流程示意图。
[0046] 图4是本发明提供的CPU与GPU协同解码的流程示意图。
[0047] 图5是本发明提供的CPU与GPU解码并行运行时通信机制示意图。
[0048] 图6是本发明提供的多载荷数据的多通道解码方案示意图。
[0049] 图7是本发明提供的使用GPU优化tier-1解码的线程映射关系示意图。
[0050] 图8是本发明提供在执行小波逆变换之前需要对小波变换的四个成分LL、HL、LH、HH进行交织处理的示意图。
[0051] 图9是本发明提供的使用GPU优化小波逆变换解码的线程映射关系示意图。
[0052] 图10是本发明提供的GPU上传、下载、执行时间的重叠方式示意图。
[0053] 图11是本发明提供的一种基于CPU和GPU的图像协同解码装置的结构示意图。

具体实施方式

[0054] 为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的(名称)其具体实施方式、步骤、结构、特征及其功效详细说明。
[0055] 目前,针对远程图像采集设备采集到的图像,该图像从被采集到在远端设备上输出展示通常经历以下过程:图像的采集、图像的压缩、图像压缩码流的传输、图像压缩码流的解码(解压缩)、解码结果的输出显示,其中,图像的压缩过程中采用何种压缩算法直接影响着最终的图像画面的输出显示质量,图像压缩码流的解码过程是图像的压缩过程的逆过程。
[0056] 随着图像采集技术的迅速发展,人们对采集到的图像的质量要求也越来越高,传统的JPEG压缩标准已经逐渐无法满足上述需求,主要表现在:传统的JPEG压缩标准中的压缩算法采用了有损压缩,当图像中存在大面积的近似颜色区域时,采用上述压缩算法就会出现“马赛克”现象,影响图片观感。为了解决上述问题,图像画面质量较高、压缩比较高的静态图像压缩标准JPEG2000应运而生。
[0057] 相比于传统的JPEG压缩标准,JPEG2000可以支持有损压缩和无损压缩,在无损压缩的情况下,JPEG2000的压缩比高于传统的JPEG;在有损压缩,特别是压缩比较高的情况下,使用JPEG2000压缩算法不会出现传统JPEG中的“马赛克”现象,此外,对图像压缩码流进行解码后得到的图像的画面质量相对清晰。基于上述性能特性,JPEG2000在图像画面质量、压缩比要求较高的领域如遥感、医学影像分析等领域,有着广泛的应用。
[0058] 在对经过JPEG2000压缩编码的图像编码码流进行解码时,通常码流需要经历以下操作处理:JPEG2000标准中定义的头信息解析、tier-2算法处理、tier-1算法处理、反量化、小波逆变化及DC电平变换。现有技术中也存在基于CPU和GPU的图像解码方法,在该方法中CPU负责对码流进行头信息解析、tier-2算法及tier-1算法处理,GPU负责对CPU的处理结果进行反量化、小波逆变化及DC电平变换处理。
[0059] 然而,由于一方面tier-1算法的计算量较大,会占用较多的CPU资源,影响其他类型操作的执行速度;另一方面反量化、小波逆变化及DC电平变换占用的GPU资源较少,造成了GPU空闲的状况,因此,导致CPU和GPU的资源利用不合理。
[0060] 为了解决上述问题,本发明提供了一种基于CPU和GPU的图像协同解码方法及装置。
[0061] 下面首先对本发明提供的一种基于CPU和GPU的图像协同解码方法进行介绍。
[0062] 需要说明的是,本发明提供的方法适用于配置有CPU和GPU的电子设备,在实际应用中,本发明提供的方法可用于图像实时传输显示领域,例如无人机操控、遥感、扫描、传真、测绘、医学图像、军事侦察等;也可用于图像存储领域的快速回放、内容检索、增强处理等领域。
[0063] 如图1所示,本发明提供的一种基于CPU和GPU的图像协同解码方法,应用于配置有中央处理器CPU和图形处理器GPU的电子设备,所述方法可以包括:
[0064] S101,接收图像编码码流,其中所述图像编码码流为经过JPEG2000编码后的图像码流。
[0065] 为了便于理解,结合图2对本发明方法在图像处理过程中的的具体应用环节进行说明。如图2所示的“实时解码”步骤,即为本发明方法的应用环节。
[0066] S102,调用电子设备的CPU对所述图像编码码流顺序进行头信息解析及JPEG2000标准中定义的tier-2算法处理,得到第一处理结果。
[0067] 为了便于直观理解,结合图3对本发明方法的执行流程进行说明,如图3所示,CPU对JPEG2000压缩码流先进行头信息解析,得到解析结果;再对解析结果进行tier-2算法解码处理。需要说明的说,本发明前述的头信息解析与tier-2算法解码可以使用现有技术中的任意一种头信息解析与tier-2算法解码方法,本发明实施例对此不作限定。
[0068] 较佳的,在由GPU负责执行对第一处理结果的后续处理的情况下,CPU可以将第一处理结果发送至显存,以便GPU快速获取数据进行处理。
[0069] 需要说明的是,针对于配置有多核CPU的电子设备,本发明可以同时接收多路图像编码码流,并根据解码并行度和系统硬件性能为接收到的各路图像编码码流分配CPU内核,以使得CPU等硬件资源得到充分利用,避免出现过分空闲的情况,提高整体数据吞吐率;此外,本发明可以构建多通道图像并行解码框架,同时处理多路压缩图像,更符合实际应用的场景。
[0070] S103,提取所述图像编码码流的图像分辨率值,判断所述分辨率值是否高于预设的分辨率阈值。
[0071] 需要说明的是,由于在并行规模小的低分辨率图像解码中,tier-1环节的GPU解码并不快于串行的CPU算法,但是在高分辨率图像的解码中将tier-1环节的GPU解码速度与CPU接近,将解码任务分配到GPU,因此,可以根据图像的分辨率值,在不影响解码速度的前提下,决定将tier-1环节调度到CPU或者GPU上。
[0072] S104,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0073] 在所述分辨率值高于预设的分辨率阈值的情况下,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0074] 较佳的,在本发明的一个实施例中,GPU可以使用一个专的守护线程,负责显存-内存数据的传输以及与其他线程的通信,以便获知读取和写入目的缓冲的是否可用。具体情况参见图4,其中展示了压缩数据从输入到输出经过的步骤和中间结果,也展示了GPU作为从计算设备在解码系统中的位置。前述专门的守护线程负责从CPU-GPU中间数据队列取数据,上传到显存,执行GPU解码阶段,将解码结果下传到输出缓冲数组的对应位置中,同时负责与其他环节的CPU线程通信。CPU扫描线程得到GPU守护线程的队列非空信号后,扫描一次输出缓冲队列,将索引最小的数据输出。
[0075] 本发明实施例的优势在于,一方面计算使用的计算线程可以根据需要扩充,使用的GPU的个数也可以设置为两个以上,缓冲长度也可以根据内存任意调整,这样扩充同时计算能力以增加吞吐率十分简单,还可以自定义对CPU、GPU、内存等硬件的适应性的调优;另一方面实现了内部高效的乱序并发解码,而从程序外部看,输出的序列顺序与输入序列相同,输出保持原有的顺序。
[0076] 较佳的,在本发明的一个实施例中,所述电子设备的CPU与GPU之间的数据传递方式可以为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲队列异步获取数据。基于前述数据传递方式,CPU、GPU各个步骤可以完全异步执行,而且耦合很低,使得扩展通过GPU个数、CPU核心数、缓冲队列长度来提高计算能力简单易行,具体情况参见图5。
[0077] 较佳的,在本发明的一个实施例中,可以根据tire-1解码在粗粒度上并行度高(codeblock之间),在细粒度上完全串行(codeblock自身)的特征,以及GPU一个Warp线程组内部一次只能执行一种指令的特点,制订GPU线程和计算数据之间的映射关系,如图6所示;相应的,上述S104,可以包括:
[0078] 调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码块分配一个线程束Warp,其中不同图像编码码块对应不同的线程束Warp;
[0079] 以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0080] 具体的,以码块为单位进行,码块之间独立解码。码块内部,位平面和算数解码具有强迭代性和相关性,难于并行。图像越大码块总量越多。存在大量无需解码的空码块,压缩倍率越高,图像越简单,空码块越多。因此并行方式为:1、码块间并发,每个码块对应一个线程;2、Cuda中的线程以Wrap(一般个数为32)为单位进行组织和调度;3、一个Warp一次只能执行一个计算中的分支,Tier-1内部几乎充满分支,因此理想的做法是每32个线程只使用一个执行计算,节省数据传输带宽;4、将算数编码所需的部分分支判断操作转换为查表运算;5、使用共享内存存储中间结果。
[0081] S105,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0082] 在所述分辨率值不高于预设的分辨率阈值的情况下,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0083] S106,调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据。
[0084] 较佳的,在本发明的一个实施例中,在所述电子设备的GPU对所述第二处理结果顺序进行反量化处理之后,还可以包括:
[0085] 利用GPU的并行能力将反量化处理结果直接排列成小波逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
[0086] 较佳的,在本发明的一个实施例中,在所述电子设备的GPU对所述第二处理结果顺序进行反量化处理之后,还可以包括:
[0087] 识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变换阶段的计算量。
[0088] 可以理解的是,由于反量化运算实质是将用整形表示的精确数值转化为采样前的“连续”的浮点型数值,运算简单,且反量化在GPU上的实现方式为码块内像素并发,因此可以对空码块提前判断,减少小波逆变换阶段50%~70%的运算;此外,码块内并发完成后,GPU可以将数据直接排列成小波逆变换所需的线性格式,利于小波逆变换提升效率。
[0089] 较佳的,在本发明的一个实施例中,所述电子设备的GPU执行小波逆变换的方式,可以包括:
[0090] 利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低速显存中的读写次数,优化小波逆变换的数据读取速度。
[0091] 现有的小波逆变换方法是分别对整个图像做行交织、行小波逆变换、列交织、列小波逆变换。由于二维小波逆变换实质是针对两次行和列的提升算法,具有较大的数据无关性,易于并行,因此本发明将交织、小波逆变换在GPU中以小块的方式一次完成,小块存储在GPU的Block共享缓存中,避免数据重复读写,具体参见图7。此外,不同层级小波变换尺寸不同,加速比不同,对较大分辨率的图像加速比较高。
[0092] 较佳的,在从全局显存向块内共享内存拷贝期间,提前计算好位置,直接完成变换前的交织过程,省去交织处理的时间,交织过程如图8所示。
[0093] 由此可见,本发明的基于CPU和GPU的图像协同解码方法,在高分辨率图像的解码中调用GPU执行tier-1算法的速度与CPU接近,将tier-1算法的执行操作分配到GPU,一方面在不影响解码速度的前提下减轻了CPU的负荷,另一方面充分利用的空闲的GPU资源,从而实现了CPU、GPU的负载均衡,增加系统的总体吞吐率。
[0094] 较佳的,在本发明的另一个实施例中,GPU执行过程中上传、执行、下载的并行化。具体的,使用GPU的Stream特性,在执行当前图像解码时,完成将上一图像的结果传输到内存,并预先将下一帧图像的数据读取到缓存中,隐藏了数据传输的时间;
[0095] 在Cuda定义的GPU接口主要分为三类:数据上传、执行并行计算,下载数据到内存,三种操作都可以是异步的,但要正确获取结果,要在正确的时间同步。这三类必须串行执行,否则会发生逻辑错误。Cuda定义了新的结构数据流stream,可以理解为上传/执行/下载序列的容器。Cuda中同类型的操作无法并行,例如多个数据流stream之间的上传操作只能是串行的。因此本发明提出了如图9所示的基于stream的并行方式,图中横轴是操作实际的执行时间,倾斜的纵轴是触发时间,也就是调用操作接口的时间。一个反“L”型方框内是一次循环内的执行内容,可以看到采用如图9所示的异步API调用顺序,上传到显存、下载到内存以及执行运算时间被很好地重叠,实际用时由三者之和减少为三者中最长的那个,显著地减少了总体时间。
[0096] 较佳的,在本发明的另一个实施例中,针对多种载荷的多通道并行的解码方案。具体的,将压缩数据按照解码并行度或者系统硬件能力不同,分别将其传入CPU、GPU占用更多的解码通道中,这样硬件计算资源可以得到充分使用,不会出现空闲,提高整体数据吞吐率。
[0097] 解码通道是由一组解码功能模块构成,完成一幅图像的解码。整体的架构如图10所示。不同类型通道,其算法映射方式不同,硬件负载不同。不同的通道在程序实现中对应不同的压缩数据输入接口,因此可以动态决定压缩数据使用哪个解码通道,决定的依据一般是图像的分辨率,普遍来说高分辨率的图像(高于1K*1K)走通道1,低分辨的图像走通道2;CPU性能弱或者对CPU使用率有限制时使用通道1,其他使用通道2。
[0098] 一般通道1和通道2使用不同的GPU设备,以免互相影响速度。通道2的前端一般使用CPU多线程解码以对计算量较大的Tier-1阶段有足够的速度。
[0099] 这样做的优势在于提供CPU-GPU负载调节机制,充分发挥硬件性能,增加图像特点适应性,各种图像都能高效处理。用户不必关心算法的细节或者了解算法硬件的映射方式,只需要根据图像特点和计算资源的限制选择合适的通道即可获得初步的优化。
[0100] 为了进一步验证本发明方法的优越性,下面通过如下表格中的数据进行说明。
[0101] 根据JPEG2000解码主要的环节:头信息解析、tier-2、tier-1、反量化、小波逆变换(IDWT)和DC电平变换,将上述解码环节分别使用CPU、GPU实现。各个解码环节的映射关系如下表所示:
[0102]
[0103] 由表中可以看出图像解码的多个解码环节有不同的运算特点,适合并行的模块可并行的方式也不尽相同。将可并行的部分使用合适的方式映射到GPU的线程资源,充分利用GPU计算单元多、并行度高的优点,规避GPU不善于处理分支多、相关性高的运算的弱点,充分利用计算资源。在CPU计算阶段过渡到GPU时需要内存数据上传到显存,在GPU计算期间,数据一直驻留在显存,改变线程映射方式不需要额外的时间,验证了本发明方法在理论上是最优的。在实际实验中,例如在输入图像参数为16bit位深度单通道、4096*4096分辨率、6层7-5小波变换、1/32有损编码,使用Nvidia的K1显卡和Intel i7 4930K CPU,可以达到每秒处理150Mbps的压缩数据。由此可见,本发明方法充分利用当前计算机多核CPU+GPU架构的计算能力,提升了单路输入压缩图像的解码速度,也提升了多路图像并行解码的吞吐率。
[0104] 相应于上面提到的方法实施例,本发明还提供了一种基于CPU和GPU的图像协同解码装置。
[0105] 如图11所示,一种基于CPU和GPU的图像协同解码装置,应用于配置有中央处理器CPU和图形处理器GPU的电子设备,所述装置可以包括:
[0106] 码流接收模块201,用于接收图像编码码流,其中所述图像编码码流为经过JPEG2000编码后的图像码流;
[0107] 第一控制模块202,用于调用所述电子设备的CPU对所述码流接收模块201接收到的图像编码码流顺序进行头信息解析及JPEG2000标准中定义的tier-2算法处理,得到第一处理结果;
[0108] 判断模块203,用于提取所述图像编码码流的图像分辨率值,判断所述分辨率值是否高于预设的分辨率阈值;
[0109] 第二控制模块204,用于在所述判断模块203的判断结果为是的情况下,调用所述电子设备的GPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
[0110] 第三控制模块205,用于在所述判断模块203的判断结果为否的情况下,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果;
[0111] 第四控制模块206,用于调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换及DC电平变换,得到解码后的图像数据。
[0112] 由此可见,本发明的基于CPU和GPU的图像协同解码装置,在高分辨率图像的解码中调用GPU执行tier-1算法的速度与CPU接近,将tier-1算法的执行操作分配到GPU,一方面在不影响解码速度的前提下减轻了CPU的负荷,另一方面充分利用的空闲的GPU资源,从而实现了CPU、GPU的负载均衡,增加系统的总体吞吐率。
[0113] 较佳的,在本发明的一个实施例中,所述电子设备的CPU与GPU之间的数据传递方式可以为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲队列异步获取数据。
[0114] 较佳的,在本发明的一个实施例中,所述第二控制模块204,具体可以用于:
[0115] 在所述判断模块203的判断结果为是的情况下,调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码块分配一个线程束Warp,其中不同图像编码码块对应不同的线程束Warp;
[0116] 以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标准中定义的tier-1算法处理,得到第二处理结果。
[0117] 较佳的,在本发明的一个实施例中,本发明提供的基于CPU和GPU的图像协同解码装置,还可以包括:
[0118] 数据格式转换模块,用于利用GPU的并行能力将反量化处理结果直接排列成小波逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
[0119] 较佳的,在本发明的一个实施例中,本发明提供的基于CPU和GPU的图像协同解码装置,还可以包括:
[0120] 识别模块,用于识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变换阶段的计算量。
[0121] 较佳的,在本发明的一个实施例中,所述第三控制模块205调用所述电子设备的GPU执行小波逆变换,可以包括:
[0122] 第三控制模块205利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低速显存中的读写次数,优化小波逆变换的数据读取速度。
[0123] 对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0124] 为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0125] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0126] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0127] 本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
[0128] 虽然本发明已以较佳实施例揭露如上,然并非用以限定本发明实施的范围,依据本发明的权利要求书及说明内容所作的简单的等效变化与修饰,仍属于本发明技术方案的范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈