CN102158694B - 一种基于gpu的遥感图像解压缩方法 - Google Patents
一种基于gpu的遥感图像解压缩方法 Download PDFInfo
- Publication number
- CN102158694B CN102158694B CN 201010575499 CN201010575499A CN102158694B CN 102158694 B CN102158694 B CN 102158694B CN 201010575499 CN201010575499 CN 201010575499 CN 201010575499 A CN201010575499 A CN 201010575499A CN 102158694 B CN102158694 B CN 102158694B
- Authority
- CN
- China
- Prior art keywords
- gpu
- video memory
- cpu
- decoded data
- input video
- 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
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
一种基于GPU的遥感图像解压缩方法,对JPEG2000图像采用CPU和GPU的异构解压缩处理,利用CPU对图像压缩码流而利用GPU对译码后的解码数据进行解压缩处理。本发明充分发挥了CPU和GPU的效能,使得对图像解压缩处理的速度有了2~3倍的提升。
Description
技术领域
本发明涉及一种基于GPU的遥感图像解压缩方法,主要用于对使用JPEG2000标准进行压缩后的码流进行高速的解码操作,提升现有基于CPU实现的JPEG2000图像解码算法的速度,属于图像处理技术领域。
背景技术
随着国内外航天遥感技术的不断发展,遥感图像分辨率的不断提高,需要对高速卫星遥感图像解压缩方法进行研究,以适应不断提高的数据接收码速率要求。
JPEG2000是JPEG工作组于2000年正式颁布的静止图像压缩编码的国际标准,具有卓越的图像压缩性能和很高的灵活性,被认为在各个领域有着广阔的应用前景。这些特性主要是来源于小波变换、比特平面编码和算术编码技术。JPEG2000的基本模块组成包括预处理、离散小波变换、量化、自适应算术编码(tierl编码)以及码流组织(tier 2编码)五个模块,相应的JPEG2000解码算法由编码模块的逆过程组成。图像经过压缩后的码流实际上是一系列的标签记录及被标识的数据。tier2解码过程就是根据需要解出包内的信息,得到tier1解码所需要的输入,即编码通道信息。然后通过tier1解码过程通过算术解码得到每个子带系数经过量化后得到的数据。在编码阶段,需要通过量化过程在不影响图像主观质量的前提下,减小量化系数的精度,把大量幅度范围较小的系数置为零,用最少的位数来表示量化后不为零的小波系数,以便达到最大的压缩比。所以,tier1解码之后的反量化过程就是量化的逆操作,由于每个子带的量化步长可能不同,因此需要独立对每个子带分别进行反量化操作。然后,在小波逆变换模块对高频和低频小波系数逐级进行重构,得到重构后的图像数据。最后在图像后处理过程中完成色彩空间的逆变换,并且通过反向DC位移调整输出数据的动态范围为原始图像的动态范围。
以上就是JPEG2000解码的整个过程,其中包含大量数据的浮点运算和乘法运算。传统的解码方法都是使用CPU进行单线程或简单多线程的处理方式,低度并行化处理数据,在现有的硬件环境下使用传统的基于CPU的算法实现难以满足对大量遥感数据进行实时解压缩的需求。因此,提高遥感图像的解压缩速度对于高分辨率遥感卫星数据的实时接收、处理,以及简化地面站系统的整体复杂度等方面,都起着至关重要的作用。
发明内容
本发明的目的在于提供了一种基于GPU的遥感图像解压缩方法。以提升现有基于CPU的JPEG2000解压缩算法实现的速度。
本发明的技术解决方案是:
一种基于GPU的遥感图像解压缩方法,其特征在于:
步骤1:CPU对GPU进行初始化;
步骤2:CPU读取图像压缩码流;所述图像压缩码流由图像经JPEG2000压缩后产生;
步骤3:CPU对图像压缩码流先后进行tier2解码和tier1解码;产生解码数据;
步骤4:CPU根据解码数据的大小为GPU分配输入显存和输出显存;并将解码数据拷贝到输入显存;
步骤5:GPU读取输入现存中的解码数据,并调用GPU内核函数对解码数据进行解压缩处理产生图像数据并拷贝到输出显存中;所述解压缩处理包括反量化、小波逆变换和后处理;
步骤6:CPU将输出显存中的图像数据拷贝到内存中,并释放输入显存和输出显存。
所述步骤2中GPU内核函数对解码数据进行处理时需要预先设定block的数量n为解码数据中每行像素个数与block中最大处理线程数之比;所述block为GPU中的线程块单元。
所述步骤2中GPU内核函数对解码数据进行处理时以边界延拓的方式读取到共享存储器中,所述共享存储器为可以被同一block中所有线程访问的可读写存储器。
此外,采用本方法还可对多幅图像同时进行处理,CPU和GPU分别对应进行上述操作,CPU在完成对一幅图像的tier2解码和tier1解码,可按照上述步骤让GPU对该幅图像继续进行解压缩处理,同时CPU可在GPU的处理时间内对下一幅图像进行tier2解码和tier1解码,而GPU则以同样流程进行工作。GPU与GPU的交替,实现了对多幅图像的同时处理。
本发明与现有技术相比具有如下优点:
(1)本发明使用了CPU和GPU协作处理的技术来进行遥感图像解压缩,在GPU中使用CUDA对原始JPEG2000算法中的反量化、小波逆变换和图像后处理三个模块进行并行化实现,与现有技术中仅采用CPU对JPEG2000图像解压缩处理的相比,处理速度有了2~3倍的提升。
(2)本发明在利用GPU对解码数据进行处理时,可根据不同大小的图像数据自适应调节所需资源的大小,可实现对多种具有不同分辨率图像的兼容处理。并且,采用了边界延拓的方式从输入显存中读取数据,保证了采用多个block处理图像时的精度。
(3)本发明还实现了CPU和GPU的并行流水设计,有效隐藏了主机与显存之间的数据传输,充分发挥了CPU和GPU的效能,隐藏了存储器访问的延迟,进一步提高了图像解压缩的速度。
附图说明
图1为CPU+GPU异构解压缩处理图;
图2为GPU内核函数调用流程图;
图3为CPU+GPU并行流水线处理图;
图4为本发明流程图。
具体实施方式
在传统的JPEG2000算法实现基础上,采用GPU协同CPU进行处理,提供一种基于GPU的遥感图像解压缩的方法。
具体设计过程包括:GPU+CPU异构解压缩设计;基于CUDA(Compute UnifiedDevice Architecture,统一计算设备架构)的算法并行处理设计;图像解压缩程序的并行流水线处理设计。
1、GPU+CPU异构解压缩设计
考虑到JPEG2000标准中规定的编解码模块的通用性和可扩展性,在优化时保留其算法的完整性,采用JEPG2000标准中PART1的主体部分的要求,用CPU实现JPEG2000解压缩处理中的解码处理,用GPU实现对JPEG2000解压缩处理中的并行化处理,从而构成GPU+CPU协同处理的异构模式,这样的设计方案可以满足在软件层面快速对图像进行解压缩的要求。
JPEG2000的核心解压缩系统主要包含如下几个模块:tier2解码,tier1解码,反量化,小波逆变换以及图像后处理。其中,①tier2解码模块包含大量控制指令的处理操作,实现大量数据并行计算的可行性差,可以通过多线程同时寻找多个包头的信息,在CPU上完成处理。②对于tier1解码模块,虽然解码的各码块之间的操作可以并行处理,但是码块内部不存在大量的数据并行,所以也不适合使用GPU进行优化。③图像反量化对图像进行象素级操作,并且对每个子带独立操作,所以可以利用GPU进行并行计算。④小波逆变换模块存在大量的数据运算过程,并且数据之间存在很少的相关性。在小波逆变换提升算法中,每行数据的计算仅与上一行有关,且包含大量的乘法运算,非常适用GPU并行处理。而且由于小波逆变换所需时间开销占在整个JPEG2000解压缩算法时间比重最大,在优化后能够使整个解压缩实现的速度得到一倍以上的提升。⑤图像后处理模块是对单个像素点独立进行计算的,整个过程需要很少的指令干预,并且图像的每个分量具有相同的比特深度和相同的维数,数据并行度高,因此使用GPU进行优化也是可行的。
综上所述,最适于做GPU并行化改进的模块是反量化模块、小波逆变换模块和图像后处理模块,其余模块使用CPU处理,其GPU+CPU异构解压缩方案如图1所示。
2、基于CUDA的算法并行处理设计
根据上述GPU+CPU异构解压缩设计,本发明采用GPU作为并行处理平台,使用CUDA对JPEG2000解压缩算法的反量化模块、小波逆变换模块和图像后处理模块进行并行化实现。CUDA是一种将GPU作为数据并行计算设备的软硬件体系,将CPU作为主机,将GPU作为协处理器,CPU与GPU协同工作。CUDA采用了便于理解和掌握的扩展C语言进行开发,为有效利用GPU的性能提供了方便。在整个解压缩算法中,小波逆变换模块的计算最为复杂,移植过程中涉及到的问题涵盖了另外两个模块,所以下面详细介绍小波逆变换模块的移植方案。
在9/7小波逆变换的提升算法中,小波逆变换的每一级一维变换需要对每一个具体的像素点进行4步提升运算及2步规整化乘运算,每一行图像数据的计算都仅与上一行有关,且每一行图像相邻两个像素的计算没有相关性,因此可以对每一行的图像像素进行分组计算。
在具体实现中,解压缩主程序由标准C++代码完成,运行在CPU主机端;小波逆变换模块使用CUDA完成,运行在GPU协处理器上,其表现形式为可以在GPU上并行执行的内核函数。
整个程序由CPU主机端的串行处理和一系列在GPU上并行执行的内核函数共同组成。其中,CPU串行代码完成内核函数启动前的数据准备和设备初始化工作,并且启动内核函数进行工作。
如图2所示,GPU以网格(grid)的形式组织,每个网格又分为若干个线程块(block),而每个线程块又由若干个线程(thread)组成。GPU中的内核函数以block为单位进行执行。因为耗时最长的小波逆变换的计算可以分组进行,故将输入编码数据以固定长度分组(每组长度可定义为k),放在一个block中,并调用每个block中的线程进行处理,每个block拥有一块高速的共享存储器用于存储中间结果,同一个block中的线程可共享同一个共享存储器中的数据,在grid中所有线程都可以访问同一块相对速度较慢的全局存储器。
在GPU的存储器分配过程中,为了提高速度,在GPU内核函数中分利用共享存储器,同时在CPU主机端使用页锁定内存,保证数据始终存在于物理内存中,并能通过DMA加速与GPU端的通信。
此外GPU内核函数对在对一个像素进行处理的过程中,会用到其相邻的像素。在对读入block中的边界像素(首尾像素)进行处理时,由于首尾像素不存在相邻像素,因此,会产生较大的处理误差。为解决此问题,GPU内核函数以边界延拓的方式将输入显存中的解码数据读取到共享存储器中,以保证首尾像素处理结果的精确度。
如图4所示,为本发明流程图,CPU主机端与GPU协处理器端主要执行步骤如下:
1)CPU读取由图像经JPEG2000压缩后产生的图像压缩码流;
2)CPU对图像压缩码流进行tier2解码和tier1解码;
3)CPU为GPU分配输入显存和输出显存,并将解码数据拷贝到输入显存中;
4)GPU从输入显存将解码数据读取到GPU的共享存储器;
5)对解码数据进行反量化、小波逆变换和后处理;
6)并将处理后获得的图像数据拷贝到输出显存中;
7)CPU从输出显存中获得图像数据并存储到内存中,同时GPU释放输入和输出显存。
3、图像解压缩的并行流水线处理
存储器带宽是计算机性能得瓶颈之一,通常GPU处理器的计算能力要远远超过内存访问的带宽。在GPU程序运行时,只有当访问显存结束,数据被准备好之后,运算指令才会被执行。所以,如果显存需要与主机端频繁交换数据,就会产生较多的延时,从而成为影响程序性能的瓶颈。本发明采用了流水线并行执行的处理的方式,如图3所示,具体实施步骤如下:
1)在GPU代码对第i幅图像进行反量化、小波逆变换和后处理的计算时,CPU代码对第i+1幅图像进行tier2和tier1模块的处理;
2)在GPU对第i+1幅图像进行计算时,CPU可以并行处理第i+2幅图像,并且完成第i幅图像的码流输出。
图3中的数据交换即是指CPU将解码数据拷贝到输入显存以及将图像数据从输出显存拷贝到内存中的处理步骤。
该设计实现了GPU与CPU的并行执行,一个流的传输与另一个流的执行同时进行从而隐藏了主机与显存之间数据传输的时间,大大提高了CPU和GPU的计算效率。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (5)
1.一种基于GPU的遥感图像解压缩方法,其特征在于包括以下步骤:
步骤1:CPU对GPU进行初始化;
步骤2:CPU读取图像压缩码流;所述图像压缩码流由图像经JPEG2000压缩后产生;
步骤3:CPU对图像压缩码流先后进行tier2解码和tier1解码;产生解码数据;
步骤4:CPU根据解码数据的大小为GPU分配输入显存和输出显存;并将解码数据拷贝到输入显存;
步骤5:GPU读取输入显存中的解码数据,并调用GPU内核函数对解码数据进行解压缩处理产生图像数据并拷贝到输出显存中;所述解压缩处理包括反量化、小波逆变换和后处理;
步骤6:CPU将输出显存中的图像数据拷贝到内存中,并释放输入显存和输出显存。
2.根据权利要求1所述的一种基于GPU的遥感图像解压缩方法,其特征在于:所述步骤5中GPU内核函数对解码数据进行处理时需要预先设定block的数量n为解码数据中每行像素个数与block中最大处理线程数之比;所述block为GPU中的线程块单元。
3.根据权利要求1或2所述的一种基于GPU的遥感图像解压缩方法,其特征在于:所述步骤5中GPU内核函数对解码数据进行处理时以边界延拓的方式读取到共享存储器中,所述共享存储器为可以被同一block中所有线程访问的可读写存储器。
4.根据权利要求1或2所述的一种基于GPU的遥感图像解压缩方法,其特征在于:可对多个图像压缩码流进行处理,在CPU对GPU进行初始化后的具体步骤为:
步骤41:CPU顺序读取每个图像压缩码流;
步骤42:CPU对每个图像压缩码流先后进行tier2解码和tier1解码;产生解码数据;
步骤43:CPU根据解码数据的大小为GPU分配输入显存和输出显存;并将解码数据拷贝到输入显存;转入步骤44的同时返回步骤41;
步骤44:GPU读取输入显存中的解码数据,并调用GPU内核函数对解码数据进行解压缩处理产生图像数据并拷贝到输出显存中;所述解压缩处理包括反量化、小波逆变换和后处理;
步骤45:CPU将输出显存中的图像数据拷贝到内存中,并释放输入显存和输出显存。
5.根据权利要求3所述的一种基于GPU的遥感图像解压缩方法,其特征在于:可对多个图像压缩码流进行处理,在CPU对GPU进行初始化后的具体步骤为:
步骤41:CPU顺序读取每个图像压缩码流;
步骤42:CPU对每个图像压缩码流先后进行tier2解码和tier1解码;产生解码数据;
步骤43:CPU根据解码数据的大小为GPU分配输入显存和输出显存;并将解码数据拷贝到输入显存;转入步骤44的同时返回步骤41;
步骤44:GPU读取输入显存中的解码数据,并调用GPU内核函数对解码数据进行解压缩处理产生图像数据并拷贝到输出显存中;所述解压缩处理包括反量化、小波逆变换和后处理;
步骤45:CPU将输出显存中的图像数据拷贝到内存中,并释放输入显存和输出显存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010575499 CN102158694B (zh) | 2010-12-01 | 2010-12-01 | 一种基于gpu的遥感图像解压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010575499 CN102158694B (zh) | 2010-12-01 | 2010-12-01 | 一种基于gpu的遥感图像解压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102158694A CN102158694A (zh) | 2011-08-17 |
CN102158694B true CN102158694B (zh) | 2012-12-26 |
Family
ID=44439840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010575499 Active CN102158694B (zh) | 2010-12-01 | 2010-12-01 | 一种基于gpu的遥感图像解压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102158694B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408691A (zh) * | 2014-11-17 | 2015-03-11 | 南昌大学 | 一种基于gpu并行选择式掩模平滑方法 |
CN105120293B (zh) * | 2015-08-26 | 2018-07-06 | 中国航空工业集团公司洛阳电光设备研究所 | 基于cpu和gpu的图像协同解码方法及装置 |
CN105843590B (zh) * | 2016-04-08 | 2019-01-11 | 深圳航天科技创新研究院 | 一种运行于cuda平台的并行指令集预译码方法及系统 |
CN106791922B (zh) * | 2016-12-20 | 2019-11-19 | 杭州当虹科技股份有限公司 | 一种针对gpu硬件视频的解码容错方法 |
CN107046647B (zh) * | 2017-05-14 | 2018-01-26 | 华中科技大学 | 一种多谱段遥感图像实时解压缩器的控制方法 |
CN107333136A (zh) * | 2017-06-26 | 2017-11-07 | 西安万像电子科技有限公司 | 图像编码方法和装置 |
CN107483952A (zh) * | 2017-08-29 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种jpeg图像解压缩的方法、装置与系统 |
CN108809944B (zh) * | 2018-05-15 | 2021-03-19 | 北京维艾思气象信息科技有限公司 | 一种交通气象平台数据传输方法及传输系统 |
CN110324632A (zh) * | 2019-05-29 | 2019-10-11 | 西安空间无线电技术研究所 | 一种基于OpenMP多核并行机制的数据处理与验证方法 |
CN112100169B (zh) * | 2020-08-05 | 2021-09-21 | 中科驭数(北京)科技有限公司 | 数据库交互数据编码方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101123723A (zh) * | 2006-08-11 | 2008-02-13 | 北京大学 | 基于图形处理器的数字视频解码方法 |
CN101626504A (zh) * | 2008-07-09 | 2010-01-13 | 上海飞来飞去多媒体创意有限公司 | 一种高速jpeg解码的方法 |
CN101754013A (zh) * | 2008-11-28 | 2010-06-23 | 汤姆森许可贸易公司 | 由图形处理单元支持的视频解码方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4691062B2 (ja) * | 2007-03-30 | 2011-06-01 | 株式会社東芝 | 情報処理装置 |
-
2010
- 2010-12-01 CN CN 201010575499 patent/CN102158694B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101123723A (zh) * | 2006-08-11 | 2008-02-13 | 北京大学 | 基于图形处理器的数字视频解码方法 |
CN101626504A (zh) * | 2008-07-09 | 2010-01-13 | 上海飞来飞去多媒体创意有限公司 | 一种高速jpeg解码的方法 |
CN101754013A (zh) * | 2008-11-28 | 2010-06-23 | 汤姆森许可贸易公司 | 由图形处理单元支持的视频解码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102158694A (zh) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102158694B (zh) | 一种基于gpu的遥感图像解压缩方法 | |
Song et al. | A GPU-accelerated wavelet decompression system with SPIHT and Reed-Solomon decoding for satellite images | |
CN105120293B (zh) | 基于cpu和gpu的图像协同解码方法及装置 | |
KR101710001B1 (ko) | 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법 | |
CN101123723A (zh) | 基于图形处理器的数字视频解码方法 | |
CN106296616B (zh) | 一种红外图像细节增强方法和一种红外图像细节增强装置 | |
CN103905831B (zh) | 基于图形处理器的条带波变换图像压缩方法 | |
CN102724499A (zh) | 基于fpga的变压缩比图像压缩系统及方法 | |
CN103414901A (zh) | 一种快速jpeg2000图像压缩系统 | |
CN114970810B (zh) | 适用于稀疏神经网络计算阵列的数据处理方法和加速器 | |
Zhang et al. | An efficient accelerator based on lightweight deformable 3D-CNN for video super-resolution | |
CN101426134A (zh) | 用于视频编解码的硬件装置及方法 | |
CN102572436B (zh) | 一种基于cuda实现的帧内压缩方法 | |
Sharma et al. | Parallel discrete wavelet transform using the open computing language: A performance and portability study | |
CN102970545A (zh) | 一种基于二维离散小波变换算法的静态图像压缩方法 | |
CN107483964A (zh) | 一种利用gpu实现jpeg2000解压缩算法中逆小波变换的加速方法 | |
US10771089B2 (en) | Method of input data compression, associated computer program product, computer system and extraction method | |
CN107170017A (zh) | 基于cpu/gpu协同处理的遥感数据快速入库方法 | |
De Souza et al. | OpenCL parallelization of the HEVC de-quantization and inverse transform for heterogeneous platforms | |
Datla et al. | Parallelizing motion JPEG 2000 with CUDA | |
Błażewicz et al. | Two-dimensional discrete wavelet transform on large images for hybrid computing architectures: GPU and CELL | |
CN102333222A (zh) | 二维离散小波变换电路及应用该电路的图像压缩方法 | |
CN104185030A (zh) | 基于gpu的jpeg2000图像解压缩实现方法 | |
CN202750182U (zh) | 基于fpga的变压缩比图像压缩系统 | |
CN111915492B (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 |