System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及jpeg2000解码过程中的熵解码中的t1解码,特别是涉及一种基于opencl的jpeg2000中t1并行解码方法和装置。
技术介绍
1、图像压缩标准jpeg2000是一种压缩效率极高的编解码方法,由于其压缩比高且失真率低,在医疗图像、卫星图像以及数字影院等领域都有广泛的应用,但是其编解码过程繁琐复杂,这阻碍了其在市场上大规模推广和使用。其主要的编码过程为:预处理、小波变换、量化、熵编码,解码过程则依次为熵解码、反量化、小波反变换、后处理,其中最为复杂的是熵编码和解码过程,其中熵编解码又分为t1编解码、t2编解码,t1占比最重。当前技术背景下,jpeg2000大多是采用cpu来完成编解码运算的,市场上仅有英伟达公司采用了cuda开发了自家的nvjpeg库,在显卡gpu上用于jpeg2000快速编解码,且并未开源。
2、openjpeg是一个用c语言编写的开源jpeg2000编解码库,其源码可以任意修改、使用及用于商业用途,也是目前使用较为广泛的jpeg2000编解码库,但是目前只能用于cpu串行解码,无法进行并行解码。
3、有鉴于此,如何克服现有技术所存在的缺陷,解决上述技术问题,是本
待解决的难题。
技术实现思路
1、针对现有技术中的缺陷或改进需求,为了解决现有jpeg2000编解码库只能用于cpu串行解码,无法进行并行解码的问题。本专利技术提出了一种基于opencl的jpeg2000中t1并行解码方法和装置,本专利技术以openjpe
2、本专利技术采用如下技术方案:
3、第一方面,本专利技术提供了一种基于opencl的jpeg2000中t1并行解码方法,包括:
4、建立八个opencl文件,分别与八种类型的t1解码相关的代码块相对应;
5、依次将对应的代码块拷贝至对应的opencl文件中,将openjpeg定义的数据类型转换为opencl支持的数据类型,并对opencl文件中的代码块进行优化;
6、创建主解码程序,所述主解码程序包含kernel函数,用于根据opencl文件中优化的代码块实现t1并行解码的过程。
7、在一个可选的实施方式中,所述八种类型的t1解码相关的代码块具体包括:预定义类型的代码块、结构体定义类型的代码块、数组或者常量类型的代码块、t1整体解码相关类型的代码块、mqc上下文解码器类型的代码块、重要性传播解码类型的代码块、幅值细化解码类型的代码块以及标志清除解码类型的代码块。
8、在一个可选的实施方式中,所述建立八个opencl文件,分别与八种类型的t1解码相关的代码块相对应具体包括:
9、建立八个.cl文件,分别命名为:a1.cl、a2.cl、a3.cl、a4.cl、a5.cl、a6.cl、a7.cl以及a8.cl;其中,a1.cl与预定义类型的代码块相对应;a2.cl与结构体定义类型的代码块相对应;a3.cl与数组或者常量类型的代码块相对应;a4.cl与t1整体解码相关类型的代码块相对应;a5.cl与mqc上下文解码器类型的代码块相对应;a6.cl与重要性传播解码类型的代码块相对应;a7.cl与幅值细化解码类型的代码块相对应;a8.cl标志清除解码类型的代码块相对应。
10、在一个可选的实施方式中,所述将openjpeg定义的数据类型转换为opencl支持的数据类型具体包括:
11、对八个opencl文件内的文本内容进行全文字符串检索,若检索到opj_char则替换为char;若检索到opj_char*则替换为char*;若检索到opj_float32则替换为float;若检索到opj_floa32*则替换为float32*;若检索到opj_float64则替换为double;若检索到opj_floa64*则替换为float64*;若检索到opj_byte则替换为unsigned char;若检索到opj_byte*则替换为unsigned char*;若检索到opj_int32则替换为int;若检索到opj_int32*则替换为int*;若检索到opj_uint32则替换为uint;若检索到opj_uint32*则替换为uint*;若检索到opj_flag_t则替换为uint;若检索到opj_flag_t*则替换为uint*;若检索到opj_bool则替换为bool;若检索到opj_bool*则替换为bool*。
12、在一个可选的实施方式中,所述对opencl文件中的代码块进行优化具体包括:
13、对opj_mqc_state结构体进行优化,将其中指向opj_mqc_state结构体的指针修改为两个uint型成员;
14、对opj_mqc结构体进行优化,将其中指向opj_mqc_state的指针数组ctxs优化修改为一个uint型的数组,长度和原始相同;将其中指向opj_mqc_states的指针的二级指针curctx修改为一个uint型的数据;将其中char型指针lut_ctx_ctxno_zc_orient修改为一个uint型数据;
15、对结构体数组mqc_states进行优化,将结构体中的指针修改为uint数字后,其值只用为索引即可;
16、对mqc上下文解码器类型的代码块进行修改和优化。
17、在一个可选的实施方式中,所述对mqc上下文解码器类型的代码块进行修改和优化具体包括:
18、检索文档中的所有字符串,若出现了*curctx->则替换为mqc_state[curctx];若出现了opj_mqc_state_t**curctx则替换为uint curctx;
19、对函数opj_mqc_resetstates进行修改,将mqc的ctxs均初始化为0;
20、对opj_mqc_setstate进行修改,对mqc的ctxs的第ctxno赋值为mbs+prob*2。
21、在一个可选的实施方式中,所述主解码程序包含kernel函数,用于根据opencl文件中优化的代码块实现t1并行解码的过程具体包括:
22、所述kernel函数接收解码块的global参数,并根据解码块的global参数进行各项初始化;
23、初始化passno为0,passtype执行循环;
24、设需要进行的t1解码块为n个,配置kernel函数运算的global size为(n),localsize为(1,1),执行编译好的代码进行并行解码。
25、在一个可选的实施方式中,所述kernel函数接本文档来自技高网...
【技术保护点】
1.一种基于opencl的jpeg2000中t1并行解码方法,其特征在于,包括:
2.根据权利要求1所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述八种类型的t1解码相关的代码块包括:预定义类型的代码块、结构体定义类型的代码块、数组或者常量类型的代码块、t1整体解码相关类型的代码块、mqc上下文解码器类型的代码块、重要性传播解码类型的代码块、幅值细化解码类型的代码块以及标志清除解码类型的代码块。
3.根据权利要求2所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述建立八个opencl文件,分别与八种类型的t1解码相关的代码块相对应包括:
4.根据权利要求1所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述将openjpeg定义的数据类型转换为opencl支持的数据类型包括:
5.根据权利要求1所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述对opencl文件中的代码块进行优化包括:
6.根据权利要求5所述的基于op
7.根据权利要求1至6中任一项所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述主解码程序包含kernel函数,用于根据opencl文件中优化的代码块实现t1并行解码的过程包括:
8.根据权利要求7所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述kernel函数接收解码块的global参数,并根据解码块的global参数进行各项初始化包括:
9.根据权利要求8所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述passtype执行循环包括:
10.一种基于opencl的jpeg2000中t1并行解码装置,其特征在于:
...【技术特征摘要】
1.一种基于opencl的jpeg2000中t1并行解码方法,其特征在于,包括:
2.根据权利要求1所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述八种类型的t1解码相关的代码块包括:预定义类型的代码块、结构体定义类型的代码块、数组或者常量类型的代码块、t1整体解码相关类型的代码块、mqc上下文解码器类型的代码块、重要性传播解码类型的代码块、幅值细化解码类型的代码块以及标志清除解码类型的代码块。
3.根据权利要求2所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述建立八个opencl文件,分别与八种类型的t1解码相关的代码块相对应包括:
4.根据权利要求1所述的基于opencl的jpeg2000中t1并行解码方法,其特征在于,所述将openjpeg定义的数据类型转换为opencl支持的数据类型包括:
5.根据权利要求1所述的基于opencl的jpeg2000中t1并行...
【专利技术属性】
技术研发人员:谌竟成,董礼,冯雨,汤汉兵,
申请(专利权)人:芯动微电子科技武汉有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。