本发明是关于一种图像压缩算法,属于图像处理领域,且特别是有关于一种用于degamma转换数据的压缩方法及系统。
背景技术:
1、在图像显示技术领域,很多算法需要在线性域进行数据处理,如色域映射算法、子像素渲染算法等。在此类线性域算法做数据处理前,我们需要将输入的图像数据从非线性域转换至线性域,此过程称之为degamma转换。
2、degamma转换过程涉及数据的幂次方运算,为了降低计算复杂度,节省硬件开支,通常将degamma转换曲线以一维查找表的形式存储在硬件存储器中,图像处理过程中使用查表插值的方式来代替原本的曲线映射计算。
3、为了保证经过degamma模块、线性域算法模块处理后的各灰阶均不缺失,处理过程中图像数据通常需要尽可能地保留较高的精度。例如,待处理的输入图像数据通常以8bit或10bit精度表示,经过degamma模块/线性域算法模块处理后的输出数据通常为12bit或者更高的数据精度。degamma模块输出数据的精度越高,意味着查找表所需存储空间越大,后端的线性域算法模块计算过程中所需的开销也随之增加。因此亟需一种既能保留较高的计算精度、又能提高存储效率的数据压缩方法。
技术实现思路
1、本发明提供一种用于degamma转换数据的压缩方法,包括:
2、步骤一、获取待处理图像数据精度及degamma模块输出精度;
3、步骤二、根据预设的gamma参数,计算各输入灰阶对应的degamma初始输出值;
4、步骤三、基于degamma初始输出值的统计信息对degamma初始输出值进行第一次压缩编码,得到degamma一次编码输出值;
5、步骤四、评估第一次压缩编码产生的精度误差,根据预设的压缩误差阈值,对degamma初始输出值进行第二次压缩编码,得到degamma二次编码输出值;
6、步骤五、基于degamma二次编码输出值,得到degamma查找表,将查找表存储在硬件寄存器中;
7、步骤六、读取存储的查找表数据,解压后对输入图像数据进行处理。
8、步骤一中,假定待处理图像数据的精度为mbit,degamma模块输出精度为nbit,则degamma模块的各输入灰阶可表示为in=0,1,…,2m-1,其中,n>m。
9、步骤二中,degamma转换过程可近似表示为一个以gamma为幂的指数函数,gamma参数的设定取决于待处理图像所属的颜色空间,不同颜色空间的gamma参数设定不同,我们常用的srgb颜色空间的gamma参数设定为2.2,
10、根据预设的gamma参数,计算出各输入灰阶对应的degamma初始输出值:
11、
12、步骤三包括:
13、(1)假定每个degamma初始输出值deouti对应的压缩精度均为xbit,x为预先设定的初始压缩精度,应满足x<m
14、(2)将每个degamma初始输出值deouti都划分为相应的数据子块1:hblocki及数据子块2:lblocki,具体计算如下:
15、
16、
17、其中,floor表示向下取整操作,round表示四舍五入取整操作
18、(3)根据得到的数据子块hblocki、lblocki及压缩精度x,对degamma初始输出值deouti进行第一次压缩编码,得到degamma一次编码输出值:
19、deout_enc1i=hblocki×2x+lblocki;其中,i=0,1,…,2m-1
20、(4)检查所有degamma一次编码输出值中是否存在重复值:
21、若不存在重复值,直接输出deout_enc1i作为degamma一次编码输出值,其中,i=0,1,…,2m-1;
22、若存在重复值,则对各个degamma初始输出值deouti重新进行第一次压缩编码:4-1、更新每个degamma初始输出值deouti的压缩精度:
23、x=x+1
24、4-2、基于更新后的压缩精度重新计算数据子块1、数据子块2以及degamma一次编码输出值:
25、
26、
27、
28、其中,i=0,1,…,2m-1
29、4-3、再次执行步骤(4),检查更新后的deout_enc1i中是否存在重复值,直至所有degamma一次编码输出值中不存在重复值,输出当前的deout_enc1i作为degamma一次编码输出值,其中,i=0,1,…,2m-1。
30、步骤四包括:
31、基于步骤三得到的压缩精度x、数据子块1:hblocki、数据子块2:lblocki,进行如下解压计算:
32、
33、计算第一次压缩编码所产生的实际压缩误差:
34、er1i=|deout_dec1i-deouti|
35、其中,i=0,1,…,2m-1
36、若所有数据的实际压缩误差er1i均不大于预设的压缩误差阈值ε,直接输出当前的deout_enc1i作为degamma二次编码输出值deout_enc2i,i=1,2,…,2m-1
37、若存在某些数据的实际压缩误差大于压缩误差阈值ε的情况,则对各个degamma初始输出值deouti进行第二次压缩编码:
38、(1)更新每个degamma初始输出值deouti的压缩精度:
39、x=x+1
40、(2)基于更新后的压缩精度重新计算数据子块1、数据子块2以及degamma一次编码输出值
41、
42、
43、
44、其中,i=0,1,…,2m-1
45、(3)再次执行步骤四,计算更新后的degamma一次编码输出值deout_enc1i对应的实际压缩误差。直至所有数据的实际压缩误差均不大于压缩误差阈值ε,输出当前的deout_enc1i作为作为degamma二次编码输出值deout_enc2i,i=1,2,…,2m-1。
46、步骤五包括:
47、degamma查找表可表示为
48、
49、步骤六包括:
50、读取硬体所存储的查找表数据,对压缩数据deout_enc2i进行解码分析,根据相应的数据子块1:hblock2i、数据子块2:lblock2i及压缩精度x2,按下式进行解压计算:
51、
52、其中,i=1,…,2m-1
53、利用解压后的deout_dec2i数据对输入的待处理图像数据进行degamma查表插值计算及线性域处理等操作即可。
54、本发明还提供一种用于degamma转换数据的压缩系统,包括degamma初始值计算模块、第一次压缩编码模块、第二次压缩编码模块、degamma查找表生成模块;
55、degamma初始值计算模块:根据输入图像数据精度、degamma输出精度以及预设的gamma参数,计算各输入灰阶对应的degamma初始输出值;
56、第一次压缩编码模块:分析degamma初始输出值的实际分布情况,确定相应的压缩精度及数据子块拆分方式,进行第一次压缩编码,得到degamma一次编码输出值;
57、第二次压缩编码模块:评估第一次压缩编码产生的精度误差,根据预设的压缩误差阈值,对degamma初始输出值进行第二次压缩编码,得到degamma二次编码输出值;
58、degamma查找表生成模块:基于degamma二次编码输出值,经离散采样后得到最终的degamma查找表,将查找表存储在硬件寄存器中。
1.一种用于degamma转换数据的压缩方法,其特征在于,包括:
2.根据权利要求1所述的一种用于degamma转换数据的压缩方法,其特征在于,所述步骤一中,假定待处理图像数据的精度为mbit,degamma模块输出精度为nbit,则degamma模块的各输入灰阶表示为in=0,1,…,2m-1,其中,n>m。
3.根据权利要求1所述的一种用于degamma转换数据的压缩方法,其特征在于,所述步骤二中,degamma转换过程可近似表示为一个以gamma为幂的指数函数,gamma参数的设定取决于待处理图像所属的颜色空间,不同颜色空间的gamma参数设定不同,srgb颜色空间的gamma参数设定为2.2,
4.根据权利要求1所述的一种用于degamma转换数据的压缩方法,其特征在于,所述步骤三包括:
5.根据权利要求1所述的一种用于degamma转换数据的压缩方法,其特征在于,所述步骤四包括:
6.根据权利要求1所述的一种用于degamma转换数据的压缩方法,其特征在于,所述步骤五包括:
7.根据权利要求1所述的一种用于degamma转换数据的压缩方法,其特征在于,所述步骤六包括:
8.一种用于degamma转换数据的压缩系统,根据权利要求1-7所述的任意一种用于degamma转换数据的压缩方法,其特征在于,包括degamma初始值计算模块、第一次压缩编码模块、第二次压缩编码模块、degamma查找表生成模块;