基于cpu和gpu的图像协同解码方法及装置的制造方法
【技术领域】
[0001] 本发明涉及图像处理技术领域,特别是涉及一种基于CPU和GPU的图像协同解码 方法及装置。
【背景技术】
[0002] 目前,针对远程图像采集设备采集到的图像,该图像从被采集到在远端设备上输 出展示通常经历以下过程:图像的采集、图像的压缩、图像压缩码流的传输、图像压缩码流 的解码(解压缩)、解码结果的输出显示,其中,图像的压缩过程中采用何种压缩算法直接 影响着最终的图像画面的输出显示质量,图像压缩码流的解码过程是图像的压缩过程的逆 过程。
[0003] 随着图像采集技术的迅速发展,人们对采集到的图像的质量要求也越来越高,传 统的JPEG压缩标准已经逐渐无法满足上述需求,主要表现在:传统的JPEG压缩标准中的压 缩算法采用了有损压缩,当图像中存在大面积的近似颜色区域时,采用上述压缩算法就会 出现"马赛克"现象,影响图片观感。为了解决上述问题,图像画面质量较高、压缩比较高的 静态图像压缩标准JPEG2000应运而生。
[0004] 相比于传统的JPEG压缩标准,JPEG2000可以支持有损压缩和无损压缩,在无损压 缩的情况下,JPEG2000的压缩比高于传统的JPEG ;在有损压缩,特别是压缩比较高的情况 下,使用JPEG2000压缩算法不会出现传统JPEG中的"马赛克"现象,此外,对图像压缩码流 进行解码后得到的图像的画面质量相对清晰。基于上述性能特性,JPEG2000在图像画面质 量、压缩比要求较高的领域如遥感、医学影像分析等领域,有着广泛的应用。
[0005] 在对经过JPEG2000压缩编码的图像编码码流进行解码时,通常码流需要经历以 下操作处理:JPEG2000标准中定义的头信息解析、tier-2算法处理、tier-Ι算法处理、反量 化、小波逆变化及DC电平变换。现有技术中也存在基于CPU和GPU的图像解码方法,在该 方法中CPU负责对码流进行头信息解析、tier-2算法及tier-Ι算法处理,GPU负责对CPU 的处理结果进行反量化、小波逆变化及DC电平变换处理。
[0006] 然而,由于一方面tier-Ι算法的计算量较大,会占用较多的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-Ι算法处理,得到第二处理结果;
[0012] 否则,继续控制所述电子设备的CPU对所述第一处理结果进行JPEG2000标准中定 义的tier-Ι算法处理,得到第二处理结果;
[0013] 调用所述电子设备的GPU对所述第二处理结果顺序进行反量化处理、小波逆变换 及DC电平变换,得到解码后的图像数据。
[0014] 本发明还可采用以下技术措施进一步实现。
[0015] 前述的基于CPU和GPU的图像协同解码方法,其中所述电子设备的CPU与GPU之 间的数据传递方式为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲 队列异步获取数据。
[0016] 前述的基于CPU和GPU的图像协同解码方法,其中所述调用所述电子设备的GPU 对所述第一处理结果进行JPEG2000标准中定义的tier-Ι算法处理,得到第二处理结果,包 括:
[0017] 调用所述电子设备的GPU为所述第一处理结果中的每个图像编码码块分配一个 线程束Warp,其中不同图像编码码块对应不同的线程束Warp ;
[0018] 以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标 准中定义的tier-Ι算法处理,得到第二处理结果。
[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-Ι算法处理,得到第二处 理结果;
[0030] 第三控制模块,用于在所述判断模块的判断结果为否的情况下,继续控制所述电 子设备的CPU对所述第一处理结果进行JPEG2000标准中定义的tier-Ι算法处理,得到第 二处理结果;
[0031] 第四控制模块,用于调用所述电子设备的GPU对所述第二处理结果顺序进行反量 化处理、小波逆变换及DC电平变换,得到解码后的图像数据。
[0032] 前述的基于CPU和GPU的图像协同解码方法,其中所述电子设备的CPU与GPU之 间的数据传递方式为:CPU将数据发送至预先建立的缓冲队列,GPU从所述预先建立的缓冲 队列异步获取数据。
[0033] 前述的基于CPU和GPU的图像协同解码方法,其中所述第二控制模块具体用于:
[0034] 在所述判断模块的判断结果为是的情况下,调用所述电子设备的GPU为所述第一 处理结果中的每个图像编码码块分配一个线程束Warp,其中不同图像编码码块对应不同的 线程束Warp ;
[0035] 以Warp为处理单位对所述第一处理结果中的每个图像编码码块进行JPEG2000标 准中定义的tier-Ι算法处理,得到第二处理结果。
[0036] 前述的基于CPU和GPU的图像协同解码方法,其中所述装置还包括:
[0037] 数据格式转换模块,用于利用GPU的并行能力将反量化处理结果直接排列成小波 逆变换所需的线性格式,以提高所述电子设备的GPU执行小波逆变换的效率。
[0038] 前述的基于CPU和GPU的图像协同解码方法,其中所述装置还包括:
[0039] 识别模块,用于识别图像编码空码块,以减少所述电子设备的GPU执行小波逆变 换阶段的计算量。
[0040] 前述的基于CPU和GPU的图像协同解码方法,其中所述第三控制模块调用所述电 子设备的GPU执行小波逆变换,包括:
[0041] 第三控制模块利用GPU的高速显存缓存一次小波逆变换需要的数据,以减少从低 速显存中的读写次数,优化小波逆变换的数据读取速度。
[0042] 应用上述技术方案,与现有技术相比,本发明的基于CPU和GPU的图像协同解码 方法及装置,在高分辨率图像的解码中调用GPU执行tier-Ι算法的速度与CPU接近,将 tier-Ι算法的执行操作分配到GPU,一方面在不影响解码速度的前提下减轻了 CPU的负荷, 另一方面充分利用的空闲的GPU资源,从而实现了 CPU、GPU的负载均衡,增加系统的总体吞 吐率,将最主要的计算放到GPU上实现,能通过GPU扩展插槽,更加容易地提高性能。
【附图说明】
[0043] 图1是本发明提供的一种基于CPU和GPU的图像协同解码方法的流程示意图。