基于jpeg-ls算法的码流拼接实现系统及方法

文档序号:7755522阅读:227来源:国知局
专利名称:基于jpeg-ls算法的码流拼接实现系统及方法
技术领域
本发明涉及一种基于 JPEG-LSCJoint Photographic ExpertGroup-Lossless and near lossless)算法的改进数据组帧技术,属于图像压缩技术领域。
背景技术
JPEG-LS是联合图像专家组制定的一种图像无损、近无损压缩的国际标准,是当今 无损、近无损压缩领域性能最优的算法。将其运用到遥感卫星图像的无损、近无损压缩取得 了良好的效果,无损压缩比高于一般性能较强的自适应算术编码算法。JPEG-LS核心算法是 采纳自HP(惠普)实验室提供的LOCO-I压缩方案,主要使用了预测、游长长度编码和预测 误差Golomb熵编码等技术。由于其结构简单,复杂性低,易于硬件实现,低倍率压缩性能优 良等特点,而十分适合于星载遥感图像压缩。码流拼接技术是JPEG-LS压缩单元的核心功能之一,其作用是将JPEG-LS多模式 压缩输出码流拼接为固定长度的比特单元,并在特定比特单元后面插入比特‘O’,为随后的 固态存储器准备好数据,具体原理图如图1所示。使用JPEG-LS算法得到的图像压缩码流 是多模式,随机长度的比特流。该输出比特流要统一打包成为以字节为单位的数据包,并完 成特殊字节检测和比特插入。JPEG-LS算法是反馈压缩算法,输出的比特流是多参数,随机 长度的。这使得码流拼接要消耗大量的存储单元,并在极端的情况下出现存储溢出的问题, 增加了设计的复杂度。

发明内容
本发明的技术解决问题是克服现有技术的不足,提供一种不存在端口阻塞传播 问题、抗突发、特性化的码流拼接方法,针对目前星载JPEG-LS压缩单元的需求,本发明适 用于JPEG-LS算法突发码流拼接。本发明的技术解决方案是基于JPEG-LS算法的码流拼接实现系统,其特征在于 包括模式判断模块、游长模式处理模块、游长长度编码模块、游长模式结束处理模块、码流 拼接模块和常规模式处理模块,其中码流拼接模块包括16比特拼接模块、第一级FIF0、8比 特拼接模块和第二级FIFO ;输入的图像样点在模式判断模块进行模式判断,满足游长条件的图像样点送入 游长模式处理模块,不满足游长条件的图像样点数据送入常规模式处理模块,游长模式处 理模块对送入的图像样点进行游长扫描条件的判断,若满足游长扫描条件,统计累加输入 的图像样点个数记为游长长度Runcnt,并将每一次统计的游长长度Rimcnt与游长索引值 2J[runindex]比较,当Runcnt≥2JIrlulindex时,将输出的比特‘1’的个数one_nUm累加1并计算 Runcnt = RUncnt-2&mindex],若不满足游长扫描条件,游长模式处理模块将满足游长扫描条 件的图像样点数据送入游长长度编码模块,游长长度编码模块将统计更新后的Runcnt编 码输出比特码流bit_rimcnt和码流长度rimcntlen到16比特拼接模块,游长模式处理模 块将不满足游长扫描条件的图象样点送入游长模式结束处理模块,游长模式结束处理模块输出压缩码流压缩码流bitcode、码流长度bitleng和比特‘0’的个数zerojum到16比 特拼接模块,常规模式处理模块对送入的不满足游长条件的图像样点处理并输出压缩码流 bitcode、码流长度bitleng和比特‘0’的个数zerojum到16比特拼接模块,16比特拼接模 块对接收到的码流进行拼接,并将拼接产生的数据以16比特为单位依次送入第一级FIFO 中,8比特拼接模块将第一级FIFO中缓存的16比特数据读出,进行拼接并将拼接产生的数 据以8比特为单位依次送入第二级FIFO中。所述的16比特拼接模块对接收到的码流分模式进行拼接,当接收到的码流为游 长长度编码模块的输出,16比特拼接模块先将上次拼接剩余的码流比特与0ne_nUm个比特 ‘ 1’拼接,然后再与bit_rimcnt的rimcntlen个有效比特位拼接,当接收到的码流为游长模 式结束处理或者为常规模式处理模块的输出,16比特拼接模块先将上次拼接剩余的码流比 特与zer0_num个比特‘0’拼接,然后再与bitcode的bitleng个有效比特位拼接。所述的8比特拼接模块将缓存在第一级FIFO中的16比特数据读出,分为高8位 和低8位,8比特拼接模块将上次判定插入数据后剩余的比特与高8比特数据拼接,并取8 比特,送入二级缓存FIFO中,若该8比特数据为“FF”,本次拼接后剩余的比特中插入比特 ‘0’ ;将高8比特数据拼接剩余的比特与低8比特数据拼接,并取8比特送入二级缓存FIFO 中,若该8比特数据为“FF”,本次拼接剩余的比特中插入比特‘0’。第一步,对输入的图像样点进行模式判断,若满足游长条件,则进入第二步,若不 满足游长条件,则进入第七步;第二步,对第一步送入的满足游长条件的图像样点进行游长扫描条件的判断,若 满足游长扫描条件,则进入第三步,若不满足游长扫描条件,则进入第六步;第三步,统计累加输入的满足游长扫描条件的图像样点个数记为游长长度 Runcnt ;第四步,将每一次统计的游长长度Rimcnt与游长索引值f 比较,当 Runcnt彡2J[runindex]时,将输出的比特‘1,的个数onejum累加1并计算Runcnt = Runcnt-2J[runindex]更新Runcnt,进入第五步,若不满足Runcnt彡2T[ranindex],则进入第三步;第五步,将统计更新后的Runcnt编码输出比特码流b i t_runcnt和码流长度 runcntlen,进入第八步;第六步,若第一步送入的满足游长条件的图像样点不满足游长扫描条件,输出压 缩码流压缩码流bitcode、码流长度bitleng和比特‘0,的个数zerojum,进入第八步;第七步,对第一步中不满足游长条件的图像样点常规处理后输出压缩码流 bitcode、码流长度bitleng和比特‘0,的个数zer0_num,进入第八步;第八步,对接收到的码流分模式进行拼接,并将拼接产生的数据以16比特为单位 依次进行缓存;第九步,提取缓存的16比特数据,以8比特为单位再次进行拼接,寻找特殊字节 “FF”,在特殊字节后字节插入比特“0”,并将拼接产生的数据以8比特为单位依次进行缓 存;第十步,将以8比特为单位进行缓存的数据输出。所述第八步具体拼接过程为,若接收到的码流是第五步得到的,将上次拼接剩余 的码流比特与one_num个比特‘1’拼接,然后再与bit_runCnt的runcntlen个有效比特位
5拼接,若接收到的码流是第六步和第七步得到的,将上次拼接剩余的码流比特与Zer0_nUm 个比特‘0’拼接,然后再与bitcode的bitleng个有效比特位拼接,将拼接产生的数据以16 比特为单位依次进行缓存;所述第九步具体拼接过程为,将提取的缓存的16比特数据,分为高8位和低8位, 将上次判定插入数据后剩余的比特与高8比特数据拼接,并取8比特,进行缓存,若该8比 特数据为“FF”,本次拼接后剩余的比特中插入比特‘0’;将高8比特数据拼接剩余的比特与 低8比特数据拼接,并取8比特,送入二级缓存FIFO中,若该8比特数据为“FF”,本次拼接 剩余的比特中插入比特‘0’。本发明的设计要点1、在样点满足游长条件时,每统计完一个样点的游长长度Runcnt,就进行逐次比 较,避免了 JPEG-LS算法中对最后统计出的Runcnt进行循环比较编码,易于采用FPGA或 ASIC实现。2、将样点压缩产生的比特码流分为多个部分输出拼接,减轻了 JPEG-LS算法中 Golomb编码的压力,有利于JPEG-LS算法中反馈处理部分的快速实现。根据不同模式下压 缩算法的特点,输出压缩码流,可以优化JPEG-LS前端压缩单元的控制。3、使用两级缓存存储两级拼接码流单元。第一级缓存存储样点压缩产生的各部分 码流的拼接。该拼接只完成各部分码流拼接为16比特位宽的数据。第二级缓存存储查找 特殊字节“FF”后插入比特‘O’后的码流拼接。使用两级缓存,将拼接和插零隔离,使原本 比较大的反馈操作分割成两个比较下的反馈操作,易于采用FPGA或ASIC实现。本发明与现有技术相比有益效果为(1)本发明使用高效的码流拼接技术,采用逐次比较编码Rimcnt,完成了游长 模式下游长长度编码,降低了处理复杂度,有效利用JPEG-LS算法的处理时隙,优化了 JPEG-LS算法实现的速度;(2)本发明的系统将连续的比特‘0’和比特‘1’记为统计长度,有效的节省了处理 数据带宽;(3)本发明的系统采用的二级缓存技术,硬件实现占用资源少,采用模块化设计, 易于采用FPGA或ASIC实现;(4)本发明采用二级缓存技术,对拼接和特殊字符检验功能隔离,将大反馈环路拆 分为两个小的反馈环路,有效提高了数据处理的效率,缓解了随机长度码流对存储单元的 需求,不用使用大容量的缓存,克服了大容量缓存溢出的问题,在未来的图像压缩中具有广 阔的应用前景;(5)本发明的方法充分利用压缩码流的特性,根据压缩码流中存在的大量的连续 的‘0’和连续的‘1,的特性,统计连续相同比特的个数,计算出10比特图像每一像素在不 同模式下产生的最大的比特数,完成比特码流拼接为字流;(6)本发明方法的反馈拼接结构非常适合于处理多参数,随机长度的数据比特拼 接打包,并可以有效的避免后续存储单元的溢出。


图1为JPEG-LS算法的原理组成框图2为本发明系统框图;图3为本发明处理流程图;图4为本发明游长逐次比较处理流程图;图5为本发明二级缓存处理框图;图6为本发明码流拼接一级缓存处理流程图。
具体实施例方式如图2所示,本发明基于JPEG-LS算法的高效码流拼接技术改进了 JPEG-LS算法 中游长长度编码算法,使用二级缓存技术实现了码流拼接。基于JPEG-LS算法的码流拼接实现系统,包括模式判断模块、游长模式处理模块、 游长长度编码模块、游长模式结束处理模块、码流拼接模块和常规模式处理模块,其中码流 拼接模块如图5所示,包括16比特拼接模块、第一级FIF0、8比特拼接模块和第二级FIFO。模式判断模块对输入的图像样点在模式判断模块进行模式判断,满足游长条件的 图像样点送入游长模式处理模块,不满足游长条件的图像样点数据送入常规模式处理模 块。游长模式处理模块对送入的图像样点进行游长扫描条件的判断,若满足游长扫 描条件,统计累加输入的图像样点个数记为游长长度Runcnt,并将每一次统计的游长长度 Runcnt与游长索引值2J[nmindex]比较,当Runcnt彡2J[ index]时,将输出的比特‘1,的个数 one_nUm累加1并计算Rimcnt = Rimcnt-2T[ranindex],若不满足游长扫描条件,游长模式处理 模块将满足游长扫描条件的图像样点数据送入游长长度编码模块。游长长度编码模块将统计更新后的Rimcnt编码输出比特码流bit_rimCnt和码流 长度rimcntlen到16比特拼接模块。游长模式处理模块将不满足游长扫描条件的图象样点送入游长模式结束处理模 块,游长模式结束处理模块输出压缩码流压缩码流bitcode、码流长度bitleng和比特‘0’ 的个数zero_nUm到16比特拼接模块。常规模式处理模块对送入的不满足游长条件的图像样点处理并输出压缩码流 bitcode、码流长度bitleng和比特‘0’的个数zerojum到16比特拼接模块。16比特拼接模块对接收到的码流进行拼接,并将拼接产生的数据以16比特为单 位依次送入第一级FIFO中。8比特拼接模块将第一级FIFO中缓存的16比特数据读出,进 行拼接并将拼接产生的数据以8比特为单位依次送入第二级FIFO中。结合附图和具体实例对本发明方法进行说明,本发明的流程如图3所示,逐次比较游长长度,游长长度编码模块是在判定输入的10比特像素样点满足游 长条件的基础上,统计像素样点的个数记为=Rimcnt,并逐次比较得到游长长度编码中比特 ‘1,的个数。如图4所示,图像像素样点输入后,判定该该样点是否满足游长模式。当该样点判 定进入游长模式时,判定该像素样点是否满足条件I Ix-Runval | ^ Near,其中Ix是像素样 点的值,Runval是游长估计重建值,Near是压缩比控制参数(以上符号的意义在JPEG-LS 算法中都有详细的说明)。当像素样点满足上式的条件,则判定该像素样点满足游长扫描条 件,统计出满足游长扫描条件的样点的个数记为RimCnt。此时Rimcnt加一,并判定是否满足式=Runcnt = 2J[ index]0如果满足上式Runcnt = 0,编码输出比特‘1,的个数加一,同时 更新游长索引值=Rimindex ;否则判定该样点是否为一行结束。如果该样点是一行结束的 样点,样点判断Runcnt是否为零,如果不为零,编码输出的比特‘1’的个数加一,否则样点 处理进入下一行。如果判定该样点不是一行结束的样点,继续输入样点,并完成上述的游长 条件判定的过程。当该样点不满足游长条件,样点进入游长终止处理模块,同时判断游长长 度Runcnt是否为零。如果Runcnt不为零,输出Runcnt的J[Runindex]位比特,并更新游 长Rimindex。样点在游长终止处理模块压缩产生的数据送到二级缓存码流拼接模块,作为 该模块的输入。如果样点不满足游长条件,样点被送入常规模式处理模块,其送出的压缩码流送 到二级缓存码流拼接模块,作为该模块的输入。二级缓存码流拼接是将游长处理中产生的游长长度Rimcnt编码输出比特,游长 终止处理模块和常规处理模块的压缩码流输出比特拼接为8比特为单位的字节数据,并判 定该8比特数据是否为“FF”。如果该8比特数据是“FF”,在该8比特码流后插入比特‘0’ 并继续拼接,否则继续拼接。如图5所示,经过压缩处理后产生的码流作为二级缓存码流拼接模块的输入。第 一级拼接(16比特拼接)输出16比特位宽的数据,缓存输入到第一级缓存FIFO中。压缩 输出石马流参数为:one_num, bit_runcnt, runcnt 1 en, bitcode, bitleng 禾口 zero_num,其各部 分的含义one_num为比特‘1’的个数,bit_runCnt为游长长度编码比特,runcntlen为游长 长度编码比特的有效长度,bitcode为golomb编码码流输出比特,bitlenggolomb编码码流 输出比特有效长度,Zer0_nUm为golomb编码输出的比特‘0’的长度。当样点为游长模式 处理时输出one_num,bit_runcnt, runcntlen压缩码流参数,当样点为常规模式处理和游 长结束处理时输出bitcode,bitleng和zero_num压缩码流参数。当接收到one_num,bit_ runcnt, runcntlen压缩码流参数后,计算剩余比特个数与比特‘1’个数onejum的和并判 定剩余比特与比特‘1’的拼接是否大于16,输出大于16时的16比特拼接码流。拼接剩余 的比特‘1’的个数是否满足拼接为16比特的条件,如果满足拼接条件,输出16比特‘1’。 同时判定游长长度编码与本次拼接后剩余比特是否满足拼接条件,满足拼接条件则输出16 比特数据,否则作为下一次拼接的剩余比特。同理,当接收到bitcode,bitleng和zer0_num 压缩码流参数后,数据的拼接与上述处理过程类似,详细的处理流程可见图6。二级拼接缓存中的第二级码流拼接(8比特拼接)完成特殊字节“FF”的检测,并 在检测到的字节后面插入比特‘0’的操作。经第一级缓存后的数据送入二级拼接模块,与 上一次拼接剩余的数据合并拼接处新的8比特,同时将拼接完成的该8比特数据输出到第 二级缓存FIFO中。当该8比特数据为“FF时”,在本次拼接完成后的剩余比特中插入比特 ‘0,。本发明未具体说明部分属于本领域公知技术和JPEG-LS算法(详见胡栋著的《静 止图像编码的基本方法与国际标准》,北京邮电大学出版社,第一版,第88-137页)中的技 术。本发明未详细说明部分属本领域技术人员公知常识。
8
权利要求
基于JPEG LS算法的码流拼接实现系统,其特征在于包括模式判断模块、游长模式处理模块、游长长度编码模块、游长模式结束处理模块、码流拼接模块和常规模式处理模块,其中码流拼接模块包括16比特拼接模块、第一级FIFO、8比特拼接模块和第二级FIFO;输入的图像样点在模式判断模块进行模式判断,满足游长条件的图像样点送入游长模式处理模块,不满足游长条件的图像样点数据送入常规模式处理模块,游长模式处理模块对送入的图像样点进行游长扫描条件的判断,若满足游长扫描条件,统计累加输入的图像样点个数记为游长长度Runcnt,并将每一次统计的游长长度Runcnt与游长索引值2J[runindex]比较,当Runcnt≥2J[runindex]时,将输出的比特‘1’的个数one_num累加1并计算Runcnt=Runcnt 2J[runindex],若不满足游长扫描条件,游长模式处理模块将满足游长扫描条件的图像样点数据送入游长长度编码模块,游长长度编码模块将统计更新后的Runcnt编码输出比特码流bit_runcnt和码流长度runcntlen到16比特拼接模块,游长模式处理模块将不满足游长扫描条件的图象样点送入游长模式结束处理模块,游长模式结束处理模块输出压缩码流压缩码流bitcode、码流长度bitleng和比特‘0’的个数zero_num到16比特拼接模块,常规模式处理模块对送入的不满足游长条件的图像样点处理并输出压缩码流bitcode、码流长度bitleng和比特‘0’的个数zero_num到16比特拼接模块,16比特拼接模块对接收到的码流进行拼接,并将拼接产生的数据以16比特为单位依次送入第一级FIFO中,8比特拼接模块将第一级FIFO中缓存的16比特数据读出,进行拼接并将拼接产生的数据以8比特为单位依次送入第二级FIFO中。
2.根据权利要求1所述的基于JPEG-LS算法的码流拼接实现系统,其特征在于所述 的16比特拼接模块对接收到的码流分模式进行拼接,当接收到的码流为游长长度编码模 块的输出,16比特拼接模块先将上次拼接剩余的码流比特与onmum个比特‘1’拼接,然 后再与bit_rimcnt的rimcntlen个有效比特位拼接,当接收到的码流为游长模式结束处理 或者为常规模式处理模块的输出,16比特拼接模块先将上次拼接剩余的码流比特与zen num个比特‘0’拼接,然后再与bitcode的bitleng个有效比特位拼接。
3.根据权利要求1所述的基于JPEG-LS算法的码流拼接实现系统,其特征在于所述 的8比特拼接模块将缓存在第一级FIFO中的16比特数据读出,分为高8位和低8位,8比 特拼接模块将上次判定插入数据后剩余的比特与高8比特数据拼接,并取8比特,送入二级 缓存FIFO中,若该8比特数据为“FF”,本次拼接后剩余的比特中插入比特‘0’ ;将高8比特 数据拼接剩余的比特与低8比特数据拼接,并取8比特送入二级缓存FIFO中,若该8比特 数据为“FF”,本次拼接剩余的比特中插入比特‘0’。
4.基于JPEG-LS算法的码流拼接实现方法,其特征在于通过以下步骤实现第一步,对输入的图像样点进行模式判断,若满足游长条件,则进入第二步,若不满足 游长条件,则进入第七步;第二步,对第一步送入的满足游长条件的图像样点进行游长扫描条件的判断,若满足 游长扫描条件,则进入第三步,若不满足游长扫描条件,则进入第六步;第三步,统计累加输入的满足游长扫描条件的图像样点个数记为游长长度Runcnt ;第四步,将每一次统计的游长长度Runcnt与游长索引值比较,当 Runcnt≥2J[runindex]时,将输出的比特‘1,的个数onejum累加1并计算Runcnt = Runcnt-2J[runindex]更新Runcnt,进入第五步,若不满足Runcnt≥2T[ranindex],则进入第三步;第五步,将统计更新后的Runcnt编码输出比特码流bit_rimCnt和码流长度 runcntlen,进入第八步;第六步,若第一步送入的满足游长条件的图像样点不满足游长扫描条件,输出压缩码 流压缩码流bitcode、码流长度bitleng和比特‘0,的个数zer0_num,进入第八步;第七步,对第一步中不满足游长条件的图像样点常规处理后输出压缩码流bitcode、码 流长度bitleng和比特‘0,的个数zer0_num,进入第八步;第八步,对接收到的码流分模式进行拼接,并将拼接产生的数据以16比特为单位依次 进行缓存;第九步,提取缓存的16比特数据,以8比特为单位再次进行拼接,寻找特殊字节“FF”, 在特殊字节后字节插入比特“0”,并将拼接产生的数据以8比特为单位依次进行缓存; 第十步,将以8比特为单位进行缓存的数据输出。
5.根据权利要求4所述的基于JPEG-LS算法的码流拼接实现方法,其特征在于所述 第八步具体拼接过程为,若接收到的码流是第五步得到的,将上次拼接剩余的码流比特与 one_num个比特‘1’拼接,然后再与bit_runCnt的runcntlen个有效比特位拼接,若接收 到的码流是第六步和第七步得到的,将上次拼接剩余的码流比特与Zer0_nUm个比特‘0’拼 接,然后再与bitcode的bitleng个有效比特位拼接,将拼接产生的数据以16比特为单位 依次进行缓存;
6.根据权利要求4所述的基于JPEG-LS算法的码流拼接实现方法,其特征在于所述 第九步具体拼接过程为,将提取的缓存的16比特数据,分为高8位和低8位,将上次判定插 入数据后剩余的比特与高8比特数据拼接,并取8比特,进行缓存,若该8比特数据为“FF”, 本次拼接后剩余的比特中插入比特‘0’ ;将高8比特数据拼接剩余的比特与低8比特数据 拼接,并取8比特,送入二级缓存FIFO中,若该8比特数据为“FF”,本次拼接剩余的比特中 插入比特‘0’。
全文摘要
基于JPEG-LS算法的码流拼接实现系统及方法,本发明充分利用JPEG-LS算法的反馈处理间隙,在当前像素处理过程中完成上一个像素压缩码流的拼接,并通过二级缓存技术,减少了存储单元的使用。本发明采用的码流拼接方法,硬件实现占用资源少,易于采用FPGA或ASIC实现。
文档编号H04N7/24GK101895760SQ20101024013
公开日2010年11月24日 申请日期2010年7月29日 优先权日2010年7月29日
发明者候舒维, 张海涛, 蒙红英 申请人:西安空间无线电技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1