关注公众号FPGA开源工坊获取更多内容。
unsetunsetJPEG LS算法unsetunset
JPEG LS算法简介
JPEG-LS算法提供了无损压缩和有损压缩两种方式,并且该算法对压缩性能和实现复杂性之间做了很好的平衡,它不像JPEG2000那样有复杂的DWT操作,在JPEG-LS算法中没有DCT,FFT等计算过程,只有对数据的减法,移位以及其他简单的操作组成,十分有利于FPGA等硬件设备实现。
JPEG-LS算法通过NEAR参数来控制是有损压缩还是无损压缩,其中NEAR为0时是无损压缩,NEAR大于0时是有损压缩
JPEG-LS算法一共包括以下几个部分
-
上下文建模 -
正常编码模式 -
预测误差 -
Golomb编码
-
-
游程编码 -
码流合并
JPEG-LS算法的原理图如下所示:
JPEG-LS算法的执行流程为
-
按照从左到右,从上到下的方式依次读取图片数据,进入步骤2 -
完成对当前待编码像素的因果模板构建,进入步骤3 -
计算当前待编码像素的局部梯度值,并对编码模式进行选择。当局部梯度值的绝对值全部都小于等于NEAR值时进入步骤4游程编码模式,否则进入步骤5正常编码模式 -
对当前待编码像素进入游程编码模式,得到编码码流,并进入步骤7进行码流拼接 -
对局部梯度值进行量化、符号校正,得到上下文参数Q,之后进步骤6 -
对当前待编码像素进行正常编码,得到编码码流,并进入步骤7进行码流拼接 -
对上次编码剩下的数据和本次码流进行拼接并输出,然后进入步骤1对下一个数据进行处理直到整幅图像完成压缩