CN117097905B - 一种无损图像分块压缩方法、设备、存储介质 - Google Patents

一种无损图像分块压缩方法、设备、存储介质 Download PDF

Info

Publication number
CN117097905B
CN117097905B CN202311310528.4A CN202311310528A CN117097905B CN 117097905 B CN117097905 B CN 117097905B CN 202311310528 A CN202311310528 A CN 202311310528A CN 117097905 B CN117097905 B CN 117097905B
Authority
CN
China
Prior art keywords
index
image
coding
coding parameter
current
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
Application number
CN202311310528.4A
Other languages
English (en)
Other versions
CN117097905A (zh
Inventor
肖昊
许同庆
姚坦
李宁
郭剑博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei University of Technology
Original Assignee
Hefei University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hefei University of Technology filed Critical Hefei University of Technology
Priority to CN202311310528.4A priority Critical patent/CN117097905B/zh
Publication of CN117097905A publication Critical patent/CN117097905A/zh
Application granted granted Critical
Publication of CN117097905B publication Critical patent/CN117097905B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开一种无损图像分块压缩方法、设备、存储介质,是一种基于JPEG‑LS的高并行度、低复杂度的无损图像分块压缩方法,涉及图像压缩技术领域。本发明方法通过扫描获得编码参数数组和哈夫曼编码表对图像块进行压缩,打破了原JPEG‑LS像素压缩过程的严格串行性,增加了硬件实现的并行度,提高压缩速度,并保持了原JPEG‑LS低复杂度的特点,利用保存的编码参数数组和哈夫曼编码表,可实现任意图像块压缩数据的直接解压缩,提高了算法的灵活性,拓宽了应用场景。

Description

一种无损图像分块压缩方法、设备、存储介质
技术领域
本发明属于图像压缩技术领域,具体涉及一种基于JPEG-LS(Joint PhotographicExperts Group-Lossless Standard)的高并行度、低复杂度的无损图像分块压缩方法。
背景技术
图像压缩是指利用各种技术手段消除图像空间上的冗余或编码上的冗余,以达到减小图像存储占用的空间、提高图像传输速度的目的。在医学成像,卫星图像,技术图等领域,不仅需要压缩图像大小以实现快速传输和存储,同时也要确保图像的保真度,因此需要无损图像压缩技术保证在这些应用场景下图像的细节不会丢失。
现有的无损图像压缩技术路线主要有无损预测编码,变换编码,熵编码方法等。其中变换编码过程较为复杂,熵编码应用在自然图像上效果较差,无损预测编码压缩技术路线得益于其高压缩性能和低复杂度,得到了广泛采用,如目前得到普遍应用的JPEG-LS算法。JPEG-LS算法基于惠普实验室开发的LOCO-I(LOw COmplexity LOsslessCOmpressionfor Images)算法,提供了无损压缩和近无损压缩功能。由于该算法的复杂性适中,只需实现数据的减法、移位以及其他类似的、简单的处理过程且复杂性和效率之间具有良好的平衡性,易于硬件实现,因此在医学影像,人工智能,遥感探测等领域应用广泛。
但是,由于JPEG-LS的压缩像素和解压缩像素的过程具有较强的串行性,需要按像素顺序逐行逐像素进行操作,前后像素间具有较强的依赖性,带来了RAW(Read AfterWrite)写后读问题,因此该算法对图像进行压缩的过程不易于硬件设备并行处理的实现,且解压缩时也必须按像素顺序进行,不能实现随机访问图像某一部分进行解压,灵活性较差,大大限制了其应用场景。因此,需要对其进行创新,设计一种压缩并行度更高,解压缩更加灵活,且保持其低复杂度优势的图像压缩方法。
发明内容
为解决JPEG-LS无损图像压缩算法压缩图像像素的过程中串行性强,存在RAW问题,硬件实现并行度低,无法随机访问压缩数据并进行解压缩,灵活性较差的问题,本申请提供一种无损图像分块压缩方法、设备、存储介质。
本申请实施例提供一种无损图像分块压缩方法,其特征在于,包括:
步骤一、对输入的一张图像按分辨率进行自适应图像分组;
步骤二、将当前图像组进行图像分块,并对图像块进行边缘填充,并按顺序扫描当前图像组的图像块,获得对该图像组进行压缩时需要的编码参数数组K和C,以及游程长度频率数组P;
步骤三、计算当前图像组的编码参数数组K和C与上一图像组的编码参数数组K和C之间元素的平均差,判断是否需要动态更新当前图像组的编码参数数组K和C;
步骤四、按游程长度频率数组P对当前图像组游程长度进行哈夫曼编码,得到游程长度的哈夫曼编码表;
步骤五、从当前图像组中按顺序读取边缘填充后的图像块数据,并将每个图像块的首个像素原值直接写入图像块压缩数据的比特流中;
步骤六、利用当前图像组的编码参数数组K和C,以及游程长度的哈夫曼编码表对图像块进行图像压缩,得到图像块压缩数据;
步骤七、将获得的编码参数数组K和C、哈夫曼编码表、图像块压缩数据组合得到当前图像组最终的压缩数据;
步骤八、转至下一图像组,重复步骤二至步骤七,直到整幅图像所有图像组扫描、压缩完成。
本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器存储有可在所述处理器上运行的程序,其特征在于,所述程序被所述处理器执行时实现所述的无损图像分块压缩方法的步骤。
本申请实施例还提供一种计算机可读存储介质,存储有至少一个程序,其特征在于,所述至少一个程序可被至少一个处理器执行,以实现所述的无损图像分块压缩方法的步骤。
本发明有益效果:
现有方法中,JPEG-LS算法压缩和解压缩图像的过程具有严格的串行性,需要逐行逐像素进行压缩或解压缩,像素与像素之间有较强的依赖关系,带来了RAW写后读问题,不适合硬件设备高并行度部署该算法。而本发明的一种无损图像分块压缩方法,采用自适应图像分组,分组扫描图像组,计算获得编码参数数组K和C及哈夫曼编码表,并以图像组为单位动态更新编码参数数组K和C,图像组内图像块共用一组编码参数数组K和C,进行图像压缩,打破了像素压缩时原JPEG-LS算法的串行性,有利于硬件设备实现多组图像块,多像素并行压缩,提高压缩并行度和压缩速度。将编码参数数组K和C、哈夫曼编码表、图像块压缩数据组合作为最终压缩数据,使得在解压缩图像时,可以利用已知的编码参数数组K和C、哈夫曼编码表实现随机访问图像压缩数据中任一图像块的压缩数据并直接进行解压缩,及多图像块的并行解压缩,打破了像素解压缩时原JPEG-LS算法的串行性,大大提高了该方法的灵活性和可适用的应用场景,例如本方法可以应用在GPU,TPU等图像处理器中,提高访问颜色缓冲区、对图像块进行渲染和处理过程的带宽等。
本发明的一种无损图像分块压缩方法,在分组扫描图像获得编码参数数组K和C时,通过计算、量化编码参数数组K和C与初始值数组以及上一图像组的编码参数数组K和C之间的波动性,有选择地更新编码参数数组K和C,根据编码参数数组K和C的波动性进行动态更新,既符合图像本身的变化规律,又缩减了需要保存的参数量,提高了压缩率和执行效率。
本发明提供的一种无损图像分块压缩方法,是一种基于JPEG-LS的高并行度、低复杂度的无损图像分块压缩方法,通过对输入的待压缩图像进行自适应图像分组,对图像组进行图像分块、边缘填充,扫描并计算获得编码参数数组K和C及哈夫曼编码表,以图像组为单位,动态更新编码参数数组K和C;之后,再利用当前图像组对应的编码参数数组K和C对图像块进行编码压缩,达到压缩图像像素的目的;最终,将获得的编码参数数组K和C、哈夫曼编码表、图像块压缩数据组合得到最终的压缩数据,作为图像压缩结果进行输出或存储。本发明方法通过扫描图像组获得编码参数数组K和C及哈夫曼编码表对图像块进行压缩,打破了原JPEG-LS像素压缩过程的串行性,一个图像组内,图像块与图像块的扫描、压缩过程均可以并行执行,为硬件设备的高并行度实现提供了算法层面的支撑,提高了硬件实现的效率和速度;在解压缩图像时,可以利用编码参数数组K和C、哈夫曼编码表进行多图像块的并行解压,也打破了原JPEG-LS算法像素解压缩的串行性,提高了算法的灵活性,拓宽了应用场景。
附图说明
图1为实施例的一种无损图像分块压缩方法流程框图;
图2为边缘填充规则示意图;
图3为当前扫描像素的因果模板示意图;
图4(a)为示例图像;
图4(b)为示例图像RUNcnt频率分布;
图5为编码参数数组K和C的收敛与波动性示意图;
图6为扫描当前图像组获取编码参数数组K和C及游程长度频率数组P的具体流程图;
图7为对当前图像组中的图像块进行图像压缩的具体流程图。
具体实施方式
下面结合实施例和附图对本发明的技术方案作进一步详细的说明。
实施例一
一种无损图像分块压缩方法,如图1所示,包括如下步骤:
步骤S1、对输入的一张图像按分辨率进行自适应图像分组,以一组图像为单位,进行后续扫描获取编码参数数组和图像分块压缩的操作。
具体地,将一张图像平均分为Piece_Num组,图像分组数利用以下公式计算:Piece_Num=Ceil(pwidth*pheight*Channel_Num/Max_Buffer_Size)其中pwidth为图像宽度,pheight为图像高度,Channel_Num为图像的通道数,Max_Buffer_Size为最大的分组容量,是一个可配置的参数,它可以根据执行压缩任务的设备条件进行灵活修改,Ceil表示上取整。
步骤S2、将当前图像组进行图像分块,并对图像块进行边缘填充,并按顺序扫描当前图像组的图像块,获得对该图像组进行编码压缩时需要的编码参数数组K和C,以及游程长度频率数组P;
具体的,对当前图像组按给定的图像块大小BLOCK_WIDTH进行图像分块,并对图像块进行边缘填充。具体的边缘填充规则可描述为:图像块第一行像素的正上方,第一行第一个像素的左侧及左上角,第一行最后一个像素的右上角填充为第一行第一个像素;图像块第一列中,第二行至最后一行的像素的左侧填充为其所在位置正上方的像素;图像块最后一列中,第一行至最后一行的像素的右侧填充为其本身。进行边缘填充是为了使待扫描图像块的边缘可以进行后续构建因果模板的操作,其次是为了解压缩过程的可实现性。图2展示了边缘填充的规则,其中的网格表示图像像素,网格中相同字母表示相同的像素值,网格外围颜色较深的区域代表图像块边缘的填充像素。
对图像块进行边缘填充后,按顺序扫描当前图像组中的图像块,获得对该组图像进行编码压缩时需要的编码参数数组K和C,以及游程长度频率数组P。该步骤中,多个图像块可以并行执行扫描。
经过步骤S2,获得的编码参数数组K和C中的元素,即编码参数是经过该图像组中所有像素修正的,已经收敛到合理范围的编码参数,可以有效避免JPEG-LS编码参数未收敛导致按图像块压缩时产生负的压缩效果。其次,图像组内图像块共用一组编码参数数组K和C,消除了RAW问题,实现高并行度、高效的图像块压缩。
如图6,步骤S2扫描图像块的过程具体包括如下步骤:
(2.1)将边缘填充后的图像块数据读出,构建当前扫描像素x的因果模板,如图3所示。
根据因果模板,利用图示位置的像素值a、b、c、d,计算当前扫描像素x的梯度值D1、D2、D3。其中D1=d-b;D2=b-c;D3=c-a。
若梯度均为0,则进入游程模式,计算游程长度。
(2.2)若梯度不均为0,则进入普通模式,计算普通模式的上下文信息,并利用上下文信息计算编码参数数组K和C。
具体包括:
(2.2.1)根据梯度信息进行上下文环境建模。
先利用梯度阈值对计算的梯度值进行量化操作,得到(Q1 ,Q2 ,Q3)向量;
进一步,对(Q1 ,Q2 ,Q3 )向量进行合并,判断向量中第一个非0元素的正负性,如果第一个非0元素为负,则将向量中的全部元素取相反数,同时将变量SIGN 设为-1;反之将变量 SIGN 设为+1,向量中的元素不变;
之后,计算上下文环境索引Q_Index= (Q1 * 9 + Q2 ) * 9 + Q3 ,Q_Index表示上下文环境的一个索引号,一种上下文环境对应唯一一个Q_Index。
(2.2.2)进行边缘检测,利用预测器预测编码像素。
具体的,如果 c>=max(a,b),并且 a>=b,那么表明待编码像素的左侧存在垂直边界,此时编码像素预测值 Px 为 b;如果 c>=max(a,b),并且 a<b 或c<=min(a,b),并且 a>=b,那么表明待编码的像素上方存在水平边界,此时预测值Px=a;如果 c<=min(a,b),并且a<b,那么表明待编码像素的左侧存在垂直边界,此时预测值 Px=b;如果没有检测到水平或垂直边界,那么预测值 Px=a+b-c。
(2.2.3)编码像素预测值修正。
具体地,如果SIGN为+1,Px = Px + C[Q_Index];否则Px = Px - C[Q_Index]。其中C[Q_Index]为编码参数,它是编码参数数组C中索引为Q_Index的元素。在步骤S2中,第一个图像组的编码参数C[Q_Index]的初始值预设为0。
(2.2.4)预测误差计算。
具体地,Errval=x-Px,如果SIGN为-1,则将Errval取相反数。
(2.2.5)对预测误差Errval进行误差映射得到MErrval,使其处于0到2qbpp -1范围内,其中qbpp表示图像的比特深度。具体操作为,判断Errval是否大于2qbpp -1,若大于2qbpp -1,则减去2qbpp;若小于-2qbpp -1+1,则加上2qbpp
(2.2.6)计算上下文信息,包括:B[Q_Index]、A[Q_Index]、NB[Q_Index]、NA[Q_Index]。其中,A[Q_Index]表示整副图像中相同上下文环境索引Q_Index下预测误差Errval绝对值的和,B[Q_Index]仅表示当前图像块中相同上下文环境索引Q_Index下预测误差Errval的和。NA[Q_Index]表示整幅图像中相同上下文环境出现的次数,NB[Q_Index]表示当前图像块中相同上下文环境出现的次数。
(2.2.7)利用上下文信息计算编码参数数组K中包含的所有编码参数K[Q_Index],它是编码参数数组K中索引为Q_Index的元素。
具体地,在一个图像组中所有图像块扫描结束后,利用获得的A[Q_Index]、NA[Q_Index]计算编码参数K[Q_Index]。其中K[Q_Index]的值取满足以下不等式的最小非负整数:
2K[Q_Index] * NA[Q_Index]≥A[Q_Index]
为了方便说明,提供伪代码如下:
for(K[Q_Index]=0; (NA[Q_Index ]<<K[Q_Index])<A[Q_Index ]; K[Q_Index]++)
//通过循环移位,计算满足上述不等式的K[Q_Index]的值
end for
//结束循环
如果在一个图像组中,有n个图像块同时进行扫描操作,则在该n个图像块扫描完成后,对该n个图像块的A[Q_Index]、NA[Q_Index]进行合并。若当前图像组中所有图像块已经扫描完,则合并后的A[Q_Index]、NA[Q_Index]即当前图像组的上下文信息A[Q_Index]、NA[Q_Index],若当前图像组中还有剩余图像块未扫描,则合并后的A[Q_Index]、NA[Q_Index]为下n个图像块的上下文信息A[Q_Index]、NA[Q_Index]的初始值。
具体操作是,对A[Q_Index]、NA[Q_Index]进行累加,每累加一次,判断NA[Q_Index]是否大于复位阈值RESET,其中RESET在本实例中取经验值64。若大于RESET,则将A[Q_Index]、NA[Q_Index]右移一位。为了方便说明该过程,提供伪代码如下,其中,下标i表示第i个图像块的上下文信息,符号>>表示向右移位:
for (i=0;i<n;i=i+1)
//遍历n个并行的图像块
A[Q_Index]=A[Q_Index]+ Ai[Q_Index]
//对上下文信息A中相同上下文环境索引Q_Index对应的值进行累加
NA[Q_Index]=NA[Q_Index]+NAi[Q_Index]
//对上下文信息NA中相同上下文环境索引Q_Index对应的值进行累加
if (NA[Q_Index]>RESET)
//判断NA[Q_Index]是否大于复位阈值RESET
A[Q_Index]=A[Q_Index]>>1
//对上下文信息A中相同上下文环境索引Q_Index对应的值进行右移一位
NA[Q_Index]=NA[Q_Index]>>1
//对上下文信息N中相同上下文环境索引Q_Index对应的值进行右移一位
end if
//判断结束
end for
//循环结束
(2.2.8)利用上下文信息计算编码参数数组C中包含的所有编码参数C[Q_Index],它是编码参数数组C中索引为Q_Index的元素。
具体地,在一个图像组中,每扫描完一个图像块,利用上下文信息B[Q_Index]、NB[Q_Index]对编码参数C[Q_Index]更新一次,并将上下文信息B[Q_Index]、NB[Q_Index]重置为初始值,B[Q_Index]初始值为0,NB[Q_Index]初始值为1。若在一个图像组中,有n个图像块同时进行扫描操作,则在该n个图像块扫描完成后,先对上下文信息B[Q_Index]、NB[Q_Index]进行合并,再更新编码参数C[Q_Index],并将上下文信息B[Q_Index]、NB[Q_Index]重置为初始值。计算公式如下,其中,下标i表示第i个图像块的上下文信息,MIN_C为C可取的最小值,MAX_C为C可取的最大值,round表示四舍五入取整。
合并n个图像块的上下文信息B[Q_Index]、NB[Q_Index]:
//对n个图像块中相同上下文环境索引Q_Index对应的B[Q_Index]进行累加求和
//对n个图像块中相同上下文环境索引Q_Index对应的NB[Q_Index]进行累加求和
更新编码参数C[Q_Index]:
C[Q_Index]=C[Q_Index]+round(B[Q_Index]/BN[Q_Index]/8)
(2.3)若梯度值均为0,进入游程模式,计算游程长度RUNcnt。具体包括:
(2.3.1)先记录当前像素因果模板的基准像素a,然后向后逐个扫描像素直到当前像素不等于开始计算游程长度时的基准像素 a 的值或者达到了当前扫描行的结尾处。扫描的像素个数就是游程长度RUNcnt。其中游程长度RUNcnt的值不超过压缩图像块的大小。
(2.3.2)根据游程长度RUNcnt的值,对游程长度频率数组P进行更新,其中,游程长度频率数组P是游程长度RUNcnt不同的值出现的频率组成的数组,其元素为P[RUNcnt]。该步骤是为了记录游程长度RUNcnt不同的值出现的频率,用来构建当前图像组的游程长度哈夫曼编码表。如图4(a),图4(b)所示,为一幅示例图像以及其游程长度RUNcnt的频率分布。
步骤S3、计算该组图像的编码参数数组K和C与上一图像组的编码参数数组K和C之间的平均差,判断是否需要更新当前图像组的K和C。这一步是为了动态地评估编码参数的波动性,通过有选择地更新编码参数减少不必要的参数更新以提高效率和压缩率。如图5所示,为编码参数数组K和C与初始值数组差值模的平均数AveK、AveC随扫描像素数的变化曲线,可以看到Ave快速收敛,随后表现为在一定范围内波动。
对于步骤S3,具体的有:
(3.1)计算编码参数数组K和C与初始值数组之间元素差值模的平均数 Ave。初始值数组不唯一,但初始值的选择影响着编码效果。根据编码原理以及残差的分布原理,本实施例取初始值数组,/>进行计算,在该取值下,图像压缩效果更好。
定义函数如式:
其中A、B表示编码参数数组,下标n表示编码参数数组中有n个元素,上标m、l为序号,表示属于第m、l个图像组;a、b分别为对应编码参数数组A、B中的元素,下标i为元素的序号,表示第i个元素。
Ave的计算如式:
Ave = AveK + AveC
(3.2)计算当前图像组编码参数数组K和C与上一图像组获得的编码参数数组K和C之间元素差值模的平均数Ave1。
Ave1的计算如式:
Ave1 = AveK1 + AveC1
(3.3)计算Ave1与Ave的比值,若大于设定值(该设定值取值不唯一,本实施例取0.5,0.5是经过大量图片实验获得的一个经验值),即Ave1/Ave>0.5,表示该图像组的编码参数波动明显,则对该图像组的编码参数数组K和C进行保存,否则沿用上一图像组的编码参数数组K和C,无需更新保存。
步骤S4、利用步骤(2.3.2)中统计的不同游程长度出现的频率数组P,对游程长度进行哈夫曼编码,根据哈夫曼编码的基本原理,可知每个游程长度的编码结果取决于其出现的频率。将一种游程长度值视为一个“字符”。将不同字符按对应的游程长度值出现的频率进行排序,频率低的字符排在前面,频率高的字符排在后面。一个字符构成哈夫曼树中的一个“根节点”。把频率最低的两个字符组合成一个字符,成为一个新的“叶子节点”,并将其频率设置为这两个字符的频率之和。重复上述生成叶子节点的步骤,直到所有字符都被组合成一个字符,即无法生成新的叶子节点。对新的字符按照组合的过程,从根节点到叶子节点赋予二进制编码,其中左子树赋值为0,右子树赋值为1,从而得到每个根节点对应的字符的哈夫曼编码。编码得到每一种游程长度值对应的编码结果,获得哈夫曼编码表。步骤S4对于一个图像组而言,只需要进行一次,在进行图像分块压缩时只需要查找哈夫曼编码表即可对游程长度进行编码,无需重复构建哈夫曼树,使得编码效率得到提高。如表1所示为哈夫曼编码表示例。
表1 哈夫曼编码表
步骤S5、从图像组中按顺序读取步骤S2中边缘填充后的图像块数据。首先,不对图像块内第一个像素进行编码,直接保存首个像素qbbp比特原值至图像块压缩数据的比特流中,后续像素的编码结果拼接在其后。保存首个像素至编码比特流是为了保证图像解码时的可实现性,在解码时先取出首个像素值,利用首个像素值即可按图2所示规律边缘填充图像块的第一行边缘,图2中相同字母表示相同的像素值,外围颜色较深的区域代表图像块边缘的填充像素。
步骤S6、利用步骤S3获得的编码参数数组K和C及游程长度哈夫曼编码表对图像块中后续像素进行编码压缩,得到图像块压缩数据,此步骤多个图像块可以并行执行。如图7所示,具体包括:
(6.1)在图像块进行步骤S2的边缘填充过程后,便可以对图像块内的所有像素进行步骤(2.1)构建因果模板的操作,并进行梯度计算。
(6.2)若梯度不均为0,则进入普通模式,此时无需再计算普通模式的上下文信息,需要利用已获得的该图像组的编码参数数组K和C执行普通模式编码操作。具体包括:
(6.2.1)执行步骤(2.2.1)-(2.2.5)的相同操作,获得经过C[Q_Index]修正的、重新映射的当前扫描像素的待编码预测误差MErrval。
(6.2.2)利用步骤S2、步骤S3中保存的当前图像组的编码参数K[Q_Index]对当前扫描像素的待编码预测误差MErrval进行编码,实现对像素的压缩。具体的有:首先判断映射误差除去低 k 位后的数值是否小于limit–qbpp–1,其中k=K[Q_Index]。当条件成立时用一元码编码商数,商数中 1 bit 的0表示2k,n bits 的商数即表示 n*2k。当待编码数MErrval-n*2k<2k时,便使用二进制码编码余数,余数的比特位数就是 k 位,余数与商数之间使用 1bit 的 1 作为分隔符隔开。当小于 limit–qbpp–1不成立时,则表示商数的长度超过了编码可以接受的范围,这种情况通常是k取了一个过小或过大的值。为了限制商数的长度,在这种情况下,采取先补limit–qbpp– 1个 0,中间补1 bit的1的分隔位,然后使用qbpp 位,编码整个映射残差,该操作相当于不对映射残差进行编码,使余数等于映射残差。其中,limit 是一个给定常数,qbpp是图像的比特深度。该步骤获得的预测误差MErrval的编码结果就是当前像素的压缩数据。
(6.3)若梯度均为0,则进入游程模式,此时无需再计算游程长度的哈夫曼编码结果,需要利用已获得的该图像组的游程长度哈夫曼编码表执行游程长度编码操作。具体包括:
(6.3.1)执行步骤(2.3.1)相同操作。
(6.3.2)利用步骤S4中计算的哈夫曼编码表,通过查表直接获得当前游程长度的编码结果。游程长度的编码结果就是进入游程模式的像素的压缩数据。
步骤S7、将获得的编码参数数组K和C、哈夫曼编码表、图像块压缩数据组合得到当前图像组最终的压缩数据。
步骤S8、转至下一图像组,重复步骤S2至步骤S7,直到整幅图像所有图像组扫描、压缩完成。
实施例二
本实施例提供一种电子设备,包括处理器和存储器,上述存储器存储有可在上述处理器上运行的程序,上述程序被上述处理器执行时实现上述的无损图像分块压缩方法的步骤。
实施例三
本实施例提供一种计算机可读存储介质,上述计算机可读存储介质存储有至少一个程序,上述至少一个程序可被至少一个处理器执行,以实现上述的无损图像分块压缩方法的步骤。

Claims (6)

1.一种无损图像分块压缩方法,其特征在于,包括:
步骤一、对输入的一张图像按分辨率进行自适应图像分组;
步骤二、将当前图像组进行图像分块,对图像块进行边缘填充,按顺序扫描当前图像组的图像块,获得对该图像组进行压缩时需要的编码参数数组K和C,以及游程长度频率数组P;
步骤三、计算当前图像组的编码参数数组K和C与上一图像组的编码参数数组K和C之间元素的平均差,判断是否需要动态更新当前图像组的编码参数数组K和C;
步骤四、按游程长度频率数组P对当前图像组游程长度进行哈夫曼编码,得到游程长度的哈夫曼编码表;
步骤五、从当前图像组中按顺序读取边缘填充后的图像块数据,并将每个图像块的首个像素原值直接写入图像块压缩数据的比特流中;
步骤六、利用当前图像组的编码参数数组K和C,以及游程长度的哈夫曼编码表对图像块进行图像压缩,得到图像块压缩数据;
步骤七、将获得的编码参数数组K和C、哈夫曼编码表、图像块压缩数据组合得到当前图像组最终的压缩数据;
步骤八、转至下一图像组,重复步骤二至步骤七,直到整幅图像所有图像组扫描、压缩完成;
所述步骤二中,按顺序扫描当前图像组的图像块,获得对该图像组进行压缩时需要的编码参数数组K和C,以及游程长度频率数组P,包括如下步骤:
(2.1)将图像块数据读出,构建当前扫描像素的因果模板,根据因果模板计算当前扫描像素的梯度值;
(2.2)若梯度值不均为0,进入普通模式,计算普通模式的上下文信息,并利用上下文信息计算编码参数数组K和C;
(2.3) 若梯度值均为0,进入游程模式,计算游程长度,更新游程长度频率数组P;
所述利用上下文信息计算编码参数数组K包括如下步骤:
在一个图像组中所有图像块扫描结束后,利用整副图像中相同上下文环境索引下预测误差绝对值的和A[Q_Index]、整幅图像中相同上下文环境出现的次数NA[Q_Index]计算编码参数数组K中包含的所有编码参数K[Q_Index],其中Q_Index表示索引号,K[Q_Index]的值取满足以下不等式的最小非负整数:
2K[Q_Index] * NA[Q_Index]≥A[Q_Index]
如果在一个图像组中,有n个图像块同时进行扫描操作,则在该n个图像块扫描完成后,对该n个图像块的A[Q_Index]、NA[Q_Index]进行合并,即对该n个图像块中相同上下文环境索引Q_Index对应的A[Q_Index]、NA[Q_Index]分别进行累加求和;若当前图像组中所有图像块已经扫描完,则合并后的A[Q_Index]、NA[Q_Index]即当前图像组的A[Q_Index]、NA[Q_Index],若当前图像组中还有剩余图像块未扫描,则合并后的A[Q_Index]、NA[Q_Index]为下n个图像块的A[Q_Index]、NA[Q_Index]的初始值;
所述利用上下文信息计算编码参数数组C包括如下步骤:
在一个图像组中,每扫描完一个图像块,利用当前图像块中相同上下文环境索引下预测误差的和B[Q_Index]、当前图像块中相同上下文环境出现的次数NB[Q_Index]对编码参数数组C的编码参数C[Q_Index]更新一次,并将B[Q_Index]、NB[Q_Index]重置为初始值,其中Q_Index表示索引号,B[Q_Index]初始值为0,NB[Q_Index]初始值为1;
如果在一个图像组中,有n个图像块同时进行扫描操作,则在该n个图像块扫描完成后,先对B[Q_Index]、NB[Q_Index]进行合并,即对该n个图像块中相同上下文环境索引Q_Index对应的B[Q_Index]、NB[Q_Index]分别进行累加求和,再更新编码参数C[Q_Index],并将上下文信息B[Q_Index]、NB[Q_Index]重置为初始值;
所述计算游程长度包括如下步骤:
先记录当前像素因果模板的基准像素a,然后向后逐个扫描像素直到当前像素不等于开始计算游程长度时的基准像素 a 的值或者达到了当前扫描行的结尾处,扫描的像素个数就是游程长度,游程长度的值不超过压缩图像块的大小。
2.如权利要求1所述的无损图像分块压缩方法,其特征在于,步骤一包括如下步骤:
将输入的一张图像平均分为Piece_Num组,图像分组数利用以下公式计算:Piece_Num= Ceil (pwidth*pheight*Channel_Num/Max_Buffer_Size),其中,pwidth为图像宽度,pheight为图像高度,Channel_Num为图像的通道数,Max_Buffer_Size为最大的分组容量,Ceil表示上取整。
3.如权利要求1所述的无损图像分块压缩方法,其特征在于,步骤三包括如下步骤:
(3.1)计算编码参数数组K和C与初始值数组之间元素差值模的平均数Ave;
(3.2)计算编码参数数组K和C与上一图像组获得的编码参数数组K和C元素差值模的平均数Ave1;
(3.3)计算Ave1与Ave之间的比值,若大于设定值,表示该图像组的编码参数波动明显,则对该图像组的编码参数数组K和C进行保存,否则沿用上一图像组的编码参数数组K和C,无需更新保存。
4.如权利要求1所述的无损图像分块压缩方法,其特征在于,步骤四包括如下步骤:
(4.1)将一种游程长度值视为一个字符,将不同字符按对应的游程长度值出现的频率进行排序,频率低的字符排在前面,频率高的字符排在后面,一个字符构成哈夫曼树中的一个根节点,把频率最低的两个字符组合成一个字符,成为一个新的叶子节点,并将其频率设置为这两个字符的频率之和;
(4.2)重复生成上述叶子节点的步骤,直到所有字符都被组合成一个字符,即无法生成新的叶子节点;
(4.3)对新的字符按照组合的过程,从根节点到叶子节点赋予二进制编码,其中左子树赋值为0,右子树赋值为1,得到每个根节点对应的字符的哈夫曼编码;
(4.4)编码得到每一种游程长度值对应的编码结果,获得哈夫曼编码表。
5.一种电子设备,包括处理器和存储器,所述存储器存储有可在所述处理器上运行的程序,其特征在于,所述程序被所述处理器执行时实现权利要求1-4任一项所述的无损图像分块压缩方法的步骤。
6.一种计算机可读存储介质,存储有至少一个程序,其特征在于,所述至少一个程序可被至少一个处理器执行,以实现权利要求1-4任一项所述的无损图像分块压缩方法的步骤。
CN202311310528.4A 2023-10-11 2023-10-11 一种无损图像分块压缩方法、设备、存储介质 Active CN117097905B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311310528.4A CN117097905B (zh) 2023-10-11 2023-10-11 一种无损图像分块压缩方法、设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311310528.4A CN117097905B (zh) 2023-10-11 2023-10-11 一种无损图像分块压缩方法、设备、存储介质

Publications (2)

Publication Number Publication Date
CN117097905A CN117097905A (zh) 2023-11-21
CN117097905B true CN117097905B (zh) 2023-12-26

Family

ID=88770062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311310528.4A Active CN117097905B (zh) 2023-10-11 2023-10-11 一种无损图像分块压缩方法、设备、存储介质

Country Status (1)

Country Link
CN (1) CN117097905B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0738447A (ja) * 1993-06-28 1995-02-07 Nippon Telegr & Teleph Corp <Ntt> ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
US6061398A (en) * 1996-03-11 2000-05-09 Fujitsu Limited Method of and apparatus for compressing and restoring data
AU5193600A (en) * 1997-06-19 2000-11-23 Electronics For Imaging, Inc. Method and apparatus for data compression
US6654503B1 (en) * 2000-04-28 2003-11-25 Sun Microsystems, Inc. Block-based, adaptive, lossless image coder
CN101771874A (zh) * 2009-12-31 2010-07-07 华中科技大学 一种卫星图像压缩方法及其实现装置
WO2010125606A1 (en) * 2009-04-29 2010-11-04 Aspa-Japan Co., Ltd. Method for image data compression and compression system of image data
WO2019112669A1 (en) * 2017-12-08 2019-06-13 Google Llc Context derivation for coefficient coding
CN113207004A (zh) * 2021-04-30 2021-08-03 华中科技大学 基于jpeg-ls帧间扩展的遥感图像压缩算法硬件实现方法
WO2022120912A1 (zh) * 2020-12-11 2022-06-16 中国科学院深圳先进技术研究院 编码方法、解码方法、装置及计算机可读存储介质
CN114693818A (zh) * 2022-04-14 2022-07-01 北京道达天际科技有限公司 适用于数字正射影像数据的压缩方法
CN115297218A (zh) * 2022-08-04 2022-11-04 西安理工大学 基于哈夫曼编码规则和位置图压缩的可逆数据隐藏方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7693339B2 (en) * 2003-12-17 2010-04-06 Andreas Wittenstein Method and apparatus for faster-than-real-time lossless compression and decompression of images
US9326000B2 (en) * 2014-07-02 2016-04-26 Omnivision Technologies (Shanghai) Co., Ltd. Method and system for still image encoding and random access decoding
JP6727011B2 (ja) * 2016-04-14 2020-07-22 キヤノン株式会社 画像符号化装置及びその制御方法
US11245920B2 (en) * 2019-08-23 2022-02-08 Qualcomm Incorporated Escape code coding for motion vector difference in video coding

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0738447A (ja) * 1993-06-28 1995-02-07 Nippon Telegr & Teleph Corp <Ntt> ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
US6061398A (en) * 1996-03-11 2000-05-09 Fujitsu Limited Method of and apparatus for compressing and restoring data
AU5193600A (en) * 1997-06-19 2000-11-23 Electronics For Imaging, Inc. Method and apparatus for data compression
US6654503B1 (en) * 2000-04-28 2003-11-25 Sun Microsystems, Inc. Block-based, adaptive, lossless image coder
WO2010125606A1 (en) * 2009-04-29 2010-11-04 Aspa-Japan Co., Ltd. Method for image data compression and compression system of image data
CN101771874A (zh) * 2009-12-31 2010-07-07 华中科技大学 一种卫星图像压缩方法及其实现装置
WO2019112669A1 (en) * 2017-12-08 2019-06-13 Google Llc Context derivation for coefficient coding
WO2022120912A1 (zh) * 2020-12-11 2022-06-16 中国科学院深圳先进技术研究院 编码方法、解码方法、装置及计算机可读存储介质
CN113207004A (zh) * 2021-04-30 2021-08-03 华中科技大学 基于jpeg-ls帧间扩展的遥感图像压缩算法硬件实现方法
CN114693818A (zh) * 2022-04-14 2022-07-01 北京道达天际科技有限公司 适用于数字正射影像数据的压缩方法
CN115297218A (zh) * 2022-08-04 2022-11-04 西安理工大学 基于哈夫曼编码规则和位置图压缩的可逆数据隐藏方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
EE2: Summary Report on Enhanced Compression beyond VVC capability;Vadim Seregin等;《JVET》;全文 *
哈夫曼编码译码功能的简单实现;许子明;;科技风(第18期);全文 *

Also Published As

Publication number Publication date
CN117097905A (zh) 2023-11-21

Similar Documents

Publication Publication Date Title
US20240048741A1 (en) Methods and apparatuses for encoding and decoding a bytestream
CN108028942B (zh) 像素预测方法、编码方法、解码方法及其装置、存储介质
TW201826786A (zh) 用於視訊寫碼之低複雜度符號預測
US7860328B2 (en) Compression processing apparatus and compression processing method
US8600183B2 (en) Optimized method and system for entropy coding
US20140286417A1 (en) Data encoding and decoding
US20080317362A1 (en) Image encoding apparatus and image decoding apparauts, and control method thereof
US20220014767A1 (en) Bit plane encoding of data arrays
JPH07184057A (ja) 最小圧縮比のadct圧縮方法
CN109819250B (zh) 一种多核全组合方式的变换方法和系统
CN104704825A (zh) 分段图像数据的无损压缩
US10785493B2 (en) Method of compressing and decompressing image data
EP3343446A1 (en) Method and apparatus for encoding and decoding lists of pixels
US8705615B1 (en) System for generating controllable difference measurements in a video processor
US11677932B2 (en) Image processing device
CN110691242B (zh) 一种大幅面遥感图像无损压缩方法
CN117097905B (zh) 一种无损图像分块压缩方法、设备、存储介质
CN110191341B (zh) 一种深度数据的编码方法和解码方法
Mohideen et al. A systematic evaluation of coding strategies for sparse binary images
JP3833224B2 (ja) 符号化方法及び装置、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
JPH104557A (ja) 画像処理装置、及び方法、及びその方法を記憶した記憶媒体
CN106941610B (zh) 基于改进方块编码的二值roi掩模编码方法
JPH0937262A (ja) 画像処理装置及び方法
CN115022628B (zh) 基于jpeg-ls的高吞吐率无损图像压缩方法
CN112073729B (zh) 模型更新方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant