CN103260034B - 一种OpenCL J2K压缩方法 - Google Patents
一种OpenCL J2K压缩方法 Download PDFInfo
- Publication number
- CN103260034B CN103260034B CN201310176403.7A CN201310176403A CN103260034B CN 103260034 B CN103260034 B CN 103260034B CN 201310176403 A CN201310176403 A CN 201310176403A CN 103260034 B CN103260034 B CN 103260034B
- Authority
- CN
- China
- Prior art keywords
- thread block
- result
- threads
- synchronous
- image
- 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
- 230000006835 compression Effects 0.000 title claims abstract description 43
- 238000007906 compression Methods 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000009466 transformation Effects 0.000 claims abstract description 53
- 230000001360 synchronised effect Effects 0.000 claims description 36
- 238000013139 quantization Methods 0.000 claims description 9
- 238000011002 quantification Methods 0.000 abstract 2
- 238000000844 transformation Methods 0.000 abstract 2
- 238000013519 translation Methods 0.000 abstract 2
- 230000014616 translation Effects 0.000 abstract 2
- 230000007423 decrease Effects 0.000 abstract 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本发明公开一种OpenCL J2K压缩方法,包括,上传待压缩图像到GPU;对图像进行5级小波行变换;对图像进行5级小波列变换;对5级小波列变换后的图象进行量化处理;对量化处理的结果进行Tier1压缩,压缩结果存在GPU内存中;下载步骤5压缩结果到CPU内存中,在CPU上实现Tier2压缩、存储JP2文件到硬盘。本发明连续进行5级小波行变换和列变换,减少了OpenCL内核的切换次数;在GPU上进行Tier1压缩,降低了CPU的负荷。
Description
技术领域
本发明涉及一种OpenCL J2K压缩方法,属于计算机图像压缩处理技术领域。
背景技术
JPEG 2000是一个基于小波的图像压缩标准。JPEG 2000的目的不仅是改善JPEG的压缩性能,它也增添(或改善)了很多例如可扩展性和可修改性的功能。JP2压缩包括四个步骤:小波变换,量化,Tier1压缩和Tier2压缩。
JPEG 2000的压缩比更高,而且不会产生原先的基于离散余弦变换的JPEG标准产生的塊狀模糊瑕疵。缺点是压缩速度比较慢。JP2压缩包括四个步骤:小波变换,量化,Tier1压缩和Tier2压缩;切换次数较多,压缩效率低。传统的GPU加速的JP2压缩算法主要是在将小波变换移植到GPU上,其他的处理仍然在CPU上进行,加重了CPU的负荷。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种OpenCL J2K压缩方法。
技术方案:一种OpenCL J2K压缩方法,包括 CPU程序和四个 GPU内核程序。四个GPU内核程序分别是:
1.小波行变换内核程序K1,用于对图像的一行进行小波变换。
2.小波列变换内核程序K2,用于对图像的一列进行小波变换。
3.量化处理内核程序K3,用于在GPU上进行量化处理。
4.Tier1压缩内核程序K4,用于在GPU上进行Tier1压缩。
本方法的主要特点为:
1.连续进行5级小波行变换和列变换,减少了OpenCL内核的切换次数。
2.在GPU上进行Tier1压缩,降低了CPU的负荷。
具体包括如下步骤:
步骤1:上传待压缩图像到GPU;
步骤2:5级小波变换,循环5次,n = 5;
步骤3:对待压缩图像进行小波行变换;
步骤4:n = n -1,如果n > 0,转步骤3;
步骤5:对小波行变换所得结果图像进行5级小波列变换;
步骤6:对5级小波列变换后的图像进行量化处理;
步骤7:对量化处理的结果进行Tier1压缩,压缩结果存在GPU内存中;
步骤8:下载步骤7的压缩结果到CPU;
步骤9:在CPU上实现Tier2压缩、存储JP2文件到硬盘。
所述小波行变换内核程序K1的主要步骤为(每个线程块处理一行图像):
步骤301:线程块读取该线程块对应的图像行,存储在共享内存;
步骤302:线程块内所有线程同步;
步骤303:9-7小波变换第一步,结果存储在共享内存;
步骤304:线程块内所有线程同步;
步骤305:9-7小波变换第二步,结果存储在共享内存;
步骤306:线程块内所有线程同步;
步骤307:9-7小波变换第三步,结果存储在共享内存;
步骤308:线程块内所有线程同步;
步骤309:9-7小波变换第四步,结果存储在共享内存;
步骤310:线程块内所有线程同步;
步骤311:9-7小波变换第五步,结果存储在共享内存;
步骤312:线程块内所有线程同步;
步骤313:9-7小波变换第六步,结果存储目标图像。
小波列变换内核程序K2的主要步骤为(每个线程块处理一列图像):
步骤501:线程块读取该线程块对应的图像列,存储在共享内存;
步骤502:线程块内所有线程同步;
步骤503:9-7小波变换第一步,结果存储在共享内存;
步骤504:线程块内所有线程同步;
步骤505:9-7小波变换第二步,结果存储在共享内存;
步骤506:线程块内所有线程同步;
步骤507:9-7小波变换第三步,结果存储在共享内存;
步骤508:线程块内所有线程同步;
步骤509:9-7小波变换第四步,结果存储在共享内存;
步骤510:线程块内所有线程同步;
步骤511:9-7小波变换第五步,结果存储在共享内存;
步骤512:线程块内所有线程同步;
步骤513:9-7小波变换第六步,结果存储目标图像。
Tier1压缩内核程序K4主要步骤为(每个线程处理一个码块):
步骤701:寻找一个线程所处理码块中的所有像素点的最大值,计算该最大值所在的位平面m;
步骤702:清除编码(Cleanup coding);
步骤703:符号编码(Sign coding);
步骤704:幅度细化编码(Refinement coding);
步骤705:清除编码(Cleanup coding);
步骤706:m = m - 1,如果 m >= 0,转步骤703。
本发明采用上述技术方案,具有以下有益效果:大幅度提高了JP2 图像压缩的速度,能在30毫秒能实现100像素16位图像的压缩,可以在微机上实现高清晰图像的实时压缩,可广泛地用于医疗图像图像处理和航空测量等领域。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
OpenCL J2K压缩方法,包括如下步骤:
对图像进行5级小波行变换。
对图像进行5级小波列变换。
对变换后的图象进行量化处理。
对处理的结果进行Tier1压缩,压缩结果存在GPU内存中。
下载上一步结果到CPU,在CPU上实现Tier2压缩、存储JP2文件到硬盘。
其中,
所述小波行变换的主要步骤为(每个线程块处理一行图像):
步骤301:线程块读取该线程块对应的图像行,存储在共享内存;
步骤302:线程块内所有线程同步;
步骤303:9-7小波变换第一步,结果存储在共享内存;
步骤304:线程块内所有线程同步;
步骤305:9-7小波变换第二步,结果存储在共享内存;
步骤306:线程块内所有线程同步;
步骤307:9-7小波变换第三步,结果存储在共享内存;
步骤308:线程块内所有线程同步;
步骤309:9-7小波变换第四步,结果存储在共享内存;
步骤310:线程块内所有线程同步;
步骤311:9-7小波变换第五步,结果存储在共享内存;
步骤312:线程块内所有线程同步;
步骤313:9-7小波变换第六步,结果存储目标图像。
小波列变换的主要步骤为(每个线程块处理一列图像):
步骤501:线程块读取该线程块对应的图像列,存储在共享内存;
步骤502:线程块内所有线程同步;
步骤503:9-7小波变换第一步,结果存储在共享内存;
步骤504:线程块内所有线程同步;
步骤505:9-7小波变换第二步,结果存储在共享内存;
步骤506:线程块内所有线程同步;
步骤507:9-7小波变换第三步,结果存储在共享内存;
步骤508:线程块内所有线程同步;
步骤509:9-7小波变换第四步,结果存储在共享内存;
步骤510:线程块内所有线程同步;
步骤511:9-7小波变换第五步,结果存储在共享内存;
步骤512:线程块内所有线程同步;
步骤513:9-7小波变换第六步,结果存储目标图像。
Tier1压缩的主要步骤为(每个线程处理一个码块):
步骤701:寻找该线程所处理码块中的最大值,计算该最大值所在的位平面n;
步骤702:清除编码(Cleanup coding);
步骤703:符号编码(Sign coding);
步骤704:幅度细化编码(Refinement coding);
步骤705:清除编码(Cleanup coding);
步骤706:n = n-1,如果 n >= 0,转步骤703。
Claims (2)
1.一种OpenCL J2K压缩方法,其特征在于,包括如下步骤:
步骤1,上传待压缩图像到GPU;
步骤2,对图像进行5级小波行变换;
步骤3,对小波行变换所得结果图像进行5级小波列变换;
步骤4,对5级小波列变换后的图象进行量化处理;
步骤5,对量化处理的结果进行Tier1压缩,压缩结果存在GPU内存中;
步骤6,下载步骤5压缩结果到CPU内存中,在CPU上实现Tier2压缩、存储JP2文件到硬盘;
所述小波行变换的主要步骤为,其中每个线程块处理一行图像,
步骤301:通过线程块读取该线程块对应的图像行,存储在共享内存;
步骤302:线程块内所有线程同步;
步骤303:9-7小波变换第一步,结果存储在共享内存;
步骤304:线程块内所有线程同步;
步骤305:9-7小波变换第二步,结果存储在共享内存;
步骤306:线程块内所有线程同步;
步骤307:9-7小波变换第三步,结果存储在共享内存;
步骤308:线程块内所有线程同步;
步骤309:9-7小波变换第四步,结果存储在共享内存;
步骤310:线程块内所有线程同步;
步骤311:9-7小波变换第五步,结果存储在共享内存;
步骤312:线程块内所有线程同步;
步骤313:9-7小波变换第六步,结果存储目标图像;
小波列变换的主要步骤为,其中每个线程块处理一列图像,
步骤501:通过线程块读取该线程块对应的图像列,存储在共享内存;
步骤502:线程块内所有线程同步;
步骤503:9-7小波变换第一步,结果存储在共享内存;
步骤504:线程块内所有线程同步;
步骤505:9-7小波变换第二步,结果存储在共享内存;
步骤506:线程块内所有线程同步;
步骤507:9-7小波变换第三步,结果存储在共享内存;
步骤508:线程块内所有线程同步;
步骤509:9-7小波变换第四步,结果存储在共享内存;
步骤510:线程块内所有线程同步;
步骤511:9-7小波变换第五步,结果存储在共享内存;
步骤512:线程块内所有线程同步;
步骤513:9-7小波变换第六步,结果存储目标图像。
2.如权利要求1所述的OpenCL J2K压缩方法,其特征在于,Tier1压缩的主要步骤为,其中每个线程处理一个码块
步骤701:寻找一个线程所处理码块中的最大值,计算该最大值所在的位平面n;
步骤702:清除编码;
步骤703:符号编码;
步骤704:幅度细化编码;
步骤705:清除编码;
步骤706:n=n-1,如果n>=0,转步骤703。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310176403.7A CN103260034B (zh) | 2013-05-14 | 2013-05-14 | 一种OpenCL J2K压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310176403.7A CN103260034B (zh) | 2013-05-14 | 2013-05-14 | 一种OpenCL J2K压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103260034A CN103260034A (zh) | 2013-08-21 |
CN103260034B true CN103260034B (zh) | 2016-12-07 |
Family
ID=48963694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310176403.7A Active CN103260034B (zh) | 2013-05-14 | 2013-05-14 | 一种OpenCL J2K压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103260034B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389571B (zh) * | 2023-12-11 | 2024-04-12 | 芯动微电子科技(武汉)有限公司 | 一种基于opencl的jpeg2000中t1并行解码方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908035A (zh) * | 2010-07-30 | 2010-12-08 | 北京华傲精创科技开发有限公司 | 视频编解码方法、gpu及其与cpu的交互方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130032482A (ko) * | 2011-09-23 | 2013-04-02 | 엘지전자 주식회사 | 이동 단말기 및 근거리 통신을 위한 이동 단말기의 인코딩 수행 방법 |
-
2013
- 2013-05-14 CN CN201310176403.7A patent/CN103260034B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908035A (zh) * | 2010-07-30 | 2010-12-08 | 北京华傲精创科技开发有限公司 | 视频编解码方法、gpu及其与cpu的交互方法及系统 |
Non-Patent Citations (1)
Title |
---|
计算机软件及计算机应用;卢睿;《中国优秀硕士学位论文全文数据库 信息科技辑》;20111215;第二、四章 * |
Also Published As
Publication number | Publication date |
---|---|
CN103260034A (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140108481A1 (en) | Universal fpga/asic matrix-vector multiplication architecture | |
CN109889846B (zh) | 一种Demura表数据的压缩与解压方法、装置及编解码系统 | |
CN102158694B (zh) | 一种基于gpu的遥感图像解压缩方法 | |
Zhou et al. | UDC 2020 challenge on image restoration of under-display camera: Methods and results | |
WO2022095797A1 (zh) | 图像的压缩方法、装置、智能终端及计算机可读存储介质 | |
CN101415117B (zh) | 基于gpgpu的高真实感图像的传输方法 | |
Kumar et al. | Near lossless image compression using parallel fractal texture identification | |
Kekre et al. | ImageCompression Using Real Fourier Transform, Its Wavelet Transform And Hybrid Wavelet With DCT | |
CN103260034B (zh) | 一种OpenCL J2K压缩方法 | |
Zhang et al. | Deep network-based image coding for simultaneous compression and retrieval | |
WO2021120713A8 (zh) | 一种数据处理方法、解码电路及处理器 | |
US20170097981A1 (en) | Apparatus and method for data compression | |
US9819969B2 (en) | Generalization of methods and systems for image compression while encoding at least one extra bit | |
CN104185030A (zh) | 基于gpu的jpeg2000图像解压缩实现方法 | |
CN101064844A (zh) | 一种使用旋转压缩码书对图像进行匹配压缩的方法 | |
CN102547281A (zh) | 基于dsp的jpeg图像压缩并行控制方法 | |
CN108712655A (zh) | 一种用于相似图像集合并的群体图像编码方法 | |
Koc et al. | Application of pseudo-distance to lossless coding of color-mapped images | |
CN107172425B (zh) | 缩略图生成方法、装置及终端设备 | |
CN1250009C (zh) | 高速逆离散余弦变换方法和装置 | |
Hong et al. | Design, implementation and evaluation of a task-parallel JPEG decoder for the libjpeg-turbo library | |
CN102932001A (zh) | 运动捕获数据压缩、解压缩方法 | |
CN101964912A (zh) | 一种在mpeg2中游程编码快速计算游程长度的方法 | |
US9384410B2 (en) | Method and system for image compression while encoding at least one extra bit | |
Borusyak et al. | Compression algorithm for indexed images with the use of context-based modeling |
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 |