首页> 中国专利> 一种JPEG2000图像解码和编码的方法

一种JPEG2000图像解码和编码的方法

摘要

本发明提供了一种JPEG2000图像编码和解码的方法,该方法包括:在Cln通道和Sig通道编码或解码每列时,根据该列的重要性系数及其被访问情况,预测并设置后续Sig、Ref、Cln通道该列的状态标识;在Cln通道和Sig通道编码或解码每个条带完毕时,根据该条带中每列的状态标识生成相应通道的条带的状态标识;除第一个位平面外,在每个通道每个条带编码或解码之前,根据相应通道相应条带的状态标识进行连续列群的跳过或执行;在Sig通道中对于需要执行的列在处理之前根据该列及其邻域系数的重要性直接跳过在该位平面完全属于Cln通道的列;在每个通道编码或解码时,根据3通道数据总数的关系进行通道的提前跳出。通过本发明提供的方法,能够提高编码或解码效率。

著录项

  • 公开/公告号CN103686193A

    专利类型发明专利

  • 公开/公告日2014-03-26

    原文格式PDF

  • 申请/专利权人 中国电影科学技术研究所;

    申请/专利号CN201310662575.5

  • 发明设计人 刘茂英;李海洲;白云翔;赵中伟;

    申请日2013-12-09

  • 分类号H04N19/645(20140101);H04N19/129(20140101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人李相雨

  • 地址 100086 北京市海淀区科学院南路44号604室

  • 入库时间 2023-12-17 02:14:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-28

    授权

    授权

  • 2014-04-23

    实质审查的生效 IPC(主分类):H04N19/645 申请日:20131209

    实质审查的生效

  • 2014-03-26

    公开

    公开

说明书

技术领域

本发明涉及图像处理领域,尤其涉及一种JPEG2000图像解码和编 码的方法。

背景技术

随着图像处理技术的发展,图像处理技术被应用于很多领域。数 字电影采用JPEG2000对数字电影图像进行压缩编码。JPEG2000的核 心算法采用位平面编码技术。

位平面编码就是将经过小波变换和量化后的小波系数划分成若干 个码块,每个码块又分成若干个位平面,每个位平面又分成若干个条 带,在一个条带内垂直方向上的点是一个编码列,一般1列由4个点 组成。位平面扫描按条带从上到下逐个条带进行扫描;在每个条带内 从左往右逐列进行,列内垂直逐点进行扫描。除第一个位平面外,每 个位平面依次在3个通道内进行编码和解码,第一个位平面只进行第 3通道即清除通道(clean up pass,Cln通道)编码和解码。这3个编码 和解码通道依次是重要性传播通道(Significance pass,Sig通道)、幅值 细化通道(magnitude Refinement pass,Ref通道)、清除通道(Cleanup  pass,Cln通道)。Sig通道仅处理那些自身不重要但其邻域至少有1 个是重要的系数。Ref通道处理该位平面之前已经成为重要的系数, 不包括在该位平面内刚刚成为重要性的系数。Cln通道处理在前两个 通道中未被处理的系数。在进行位平面编码和解码时,除第一个位平 面外只进行第3通道即Cln通道编码和解码外,其余位平面按照Sig 通道、Ref通道、Cln通道的顺序依次进行编码和解码,在每个通道中 都要对位平面的所有比特位进行扫描,根据系数自身的重要性及其邻 域的重要性选择需要在该通道中编码和解码的比特位进行编码和解 码。

通过上述描述可见,标准位平面编码和解码采用逐点扫描的方 法,对于每个比特位都要扫描三次,而每个比特位只在一个通道中进 行编码和解码,冗余过多、编码和解码效率低。

发明内容

本发明提供了一种JPEG2000图像解码和编码的方法,能够提高图 像解码和编码的效率。

一方面,本发明提供了一种JPEG2000图像解码的方法,预先设置 待解码码块的重要性数组,并初始化为不重要,在每解码出一个重要 系数后,将该系数的重要性更新为重要;采用清除通道Cln通道解码 第一位平面,第一位平面之后的位平面的解码方法包括:

读取前一个位平面生成的重要性传播通道Sig通道的条带状态标 识,根据所述Sig通道的条带状态标识进行Sig通道解码,其中,在 Sig通道解码完一列后,根据该列系数的重要性及该列系数的被访问情 况计算该列的Cln通道的状态标识,并根据该列系数的重要性计算该 列的下一位平面的对应列的Sig通道的状态标识、幅值细化通道Ref 通道的状态标识;

在Sig通道解码完一个条带后,将每个条带中Cln通道单列的状态 标识转换为对应条带的Cln通道的条带状态标识;

在Sig通道解码完毕后,读取上一个位平面生成的Ref通道的条带 状态标识,根据所述Ref通道的条带状态标识进行Ref通道解码;

在Ref通道解码完毕后,读取所述Cln通道的条带状态标识,根 据该Cln通道的条带状态标识进行Cln通道解码,其中,在Cln通道解 码完一列后,根据该列系数的重要性计算该列的下一位平面的对应列 的Sig通道的状态标识、Ref通道的状态标识和Cln通道的状态标识;

在Cln通道解码完一个条带后,根据下一位平面的每个条带中每 一列的Sig通道的状态标识生成下一个位平面的对应条带的Sig通道的 条带状态标识,根据下一位平面的每个条带中每一列的Ref通道的状 态标识生成下一个位平面的对应条带的Ref通道的条带状态标识。

进一步地,所述采用清除通道Cln通道解码第一位平面,包括:

Cln通道解码每个数据,若出现重要系数,更新该系数的重要性, 更新码块重要系数总数;

Cln通道解码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

Cln通道解码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为Sig通道该条带的状态标识,将该条带Ref通道单列的状态标识 转换为Ref通道该条带的状态标识;

Cln通道解码完毕时,设置下一位平面中Ref通道待解码数据总数 为所述重要系数总数。

进一步地,所述根据所述Sig通道的条带状态标识进行Sig通道解 码,包括:

跳过从Sig通道的条带状态标识中解析出的不需要Sig通道解码的 列;

从Sig通道的状态标识中解析出需要Sig通道解码的列,Sig通道 从重要性数组中读取该列及其邻域系数的重要性,若该列及其邻域系 数都为不重要,则跳过该列,否则执行该列的解码;

其中,Sig通道解码某列之前,设置该列在该位平面中Cln通道待 解码数据总数为该列的数据总数;

Sig通道每解码一个数据,若出现重要系数,更新相应系数的重要 性,更新码块重要系数总数;

记录在Sig通道解码的数据总数;

Sig通道解码每列时,若一个系数在上一位平面已经变为重要,则 将该位平面中Cln通道待解码数据总数减一,若一个数据属于Sig通道 处理,则将该位平面中Cln通道待解码数据总数减一,记录该列已变 为重要系数的总数;

若一列重要系数总数大于零,则将Ref通道该列的状态标识设置 为处理;

若一列重要系数总数等于该列系数总数,则将Sig通道该列的状态 标识设置为跳过;

若一列该位平面中Cln通道待解码数据总数等于零,则将Cln通 道该列的状态标识设置为跳过;

若已在Sig通道解码的数据总数大于或等于码块数据总数与Ref 通道待解码数据总数之差,则提前结束Sig通道的解码,否则继续进行 Sig通道的解码。

进一步地,所述根据所述Ref通道的条带状态标识进行Ref通道 解码,包括:

跳过从Ref通道的条带状态标识中解析出的不需要Ref通道解码 的列;

解码从Ref通道的条带状态标识中解析出的需要Ref通道解码的 列;

其中,记录在Ref通道中进行解码的数据总数;

若已在Ref通道中解码的数据总数等于Ref通道待解码数据总数, 则提前跳出Ref通道的解码,否则继续执行Ref通道的解码。

进一步地,所述根据该Cln通道的条带状态标识进行Cln通道解 码,包括:

跳过从Cln通道的条带状态标识中解析出的不需要Cln通道解码 的列;

解码从Cln通道的条带状态标识中解析出的需要Cln通道解码的 列;

其中,Cln通道每解码一个数据,若出现重要系数,更新相应系数 的重要性,更新码块重要系数总数;

记录在Cln通道解码的数据总数;

Cln通道解码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

若已在Cln通道解码的数据总数、Ref通道解码数据总数、Sig通 道解码数据总数之和大于或等于码块数据总数,则提前结束Cln通道 的解码,否则继续进行Cln通道的解码;

Cln通道解码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为该条带的Sig通道的条带状态标识,将该条带Ref通道单列的状 态标识转换为该条带的Ref通道的条带状态标识;

Cln通道解码完毕时,设置下一位平面中Ref通道待解码数据总数 为重要系数总数。

进一步地,所述条带状态标识包括:初始状态、状态切换次数、 每次状态连续的列数;

所述初始状态为被预测条带的第一列的状态标识;

所述状态切换次数为列的状态标识在处理和跳过两种状态之间的 切换次数;

所述每次状态连续的列数为同一种列的状态标识连续的列数。

另一方面,本发明提供了一种JPEG2000图像编码的方法,

预先设置待编码码块的重要性数组,并初始化为不重要,在每读 取出一个重要系数后,将该系数的重要性更新为重要;采用清除通道 Cln通道编码第一位平面,第一位平面之后的位平面的编码方法包括:

读取前一个位平面生成的重要性传播通道Sig通道的条带状态标 识,根据所述Sig通道的条带状态标识进行Sig通道编码,其中,在 Sig通道编码完一列后,根据该列系数的重要性及该列系数的被访问情 况计算该列的Cln通道的状态标识,并根据该列系数的重要性计算该 列的下一位平面的对应列的Sig通道的状态标识、幅值细化通道Ref 通道的状态标识和Cln通道的状态标识;

在Sig通道编码完一个条带后,将每个条带中Cln通道单列的状态 标识转换为对应条带的Cln通道的条带状态标识;

在Sig通道编码完毕后,读取上一个位平面生成的Ref通道的条带 状态标识,根据所述Ref通道的条带状态标识进行Ref通道编码;

在Ref通道编码完毕后,读取所述Cln通道的条带状态标识,根 据该Cln通道的条带状态标识进行Cln通道编码,其中,在Cln通道编 码完一列后,根据该列系数的重要性计算该列的下一位平面的对应列 的Sig通道的状态标识、Ref通道的状态标识和Cln通道的状态标识;

在Cln通道编码完一个条带后,根据下一位平面的每个条带中每 一列的Sig通道的状态标识生成下一个位平面的对应条带的Sig通道的 条带状态标识,根据下一位平面的每个条带中每一列的Ref通道的状 态标识生成下一个位平面的对应条带的Ref通道的条带状态标识。

进一步地,所述采用清除通道Cln通道编码第一位平面,包括:

Cln通道编码每个数据,若出现重要系数,更新该系数的重要性, 更新码块重要系数总数;

Cln通道编码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

Cln通道编码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为Sig通道该条带的状态标识,将该条带Ref通道单列的状态标识 转换为Ref通道该条带的状态标识;

Cln通道编码完毕时,设置下一位平面中Ref通道待编码数据总数 为所述重要系数总数。

进一步地,所述根据所述Sig通道的条带状态标识进行Sig通道编 码,包括:

跳过从Sig通道的条带状态标识中解析出的不需要Sig通道编码的 列;

从Sig通道的状态标识中解析出需要Sig通道编码的列,Sig通道 从重要性数组中读取该列及其邻域系数的重要性,若该列及其邻域系 数都为不重要,则跳过该列,否则执行该列的编码;

其中,Sig通道编码某列之前,设置该列在该位平面中Cln通道待 编码数据总数为该列的数据总数;

Sig通道每编码一个数据,若出现重要系数,更新相应系数的重要 性,更新码块重要系数总数;

记录在Sig通道编码的数据总数;

Sig通道编码每列时,若一个系数在上一位平面已经变为重要,则 将该位平面中Cln通道待编码数据总数减一,若一个数据属于Sig通道 处理,则将该位平面中Cln通道待编码数据总数减一,记录该列已变 为重要系数的总数;

若一列重要系数总数大于零,则将Ref通道该列的状态标识设置 为处理;

若一列重要系数总数等于该列系数总数,则将Sig通道该列的状态 标识设置为跳过;

若一列该位平面中Cln通道待编码数据总数等于零,则将Cln通 道该列的状态标识设置为跳过;

若已在Sig通道编码的数据总数大于或等于码块数据总数与Ref 通道待编码数据总数之差,则提前结束Sig通道的编码,否则继续进行 Sig通道的编码。

进一步地,所述根据所述Ref通道的条带状态标识进行Ref通道 编码,包括:

跳过从Ref通道的条带状态标识中解析出的不需要Ref通道编码 的列;

编码从Ref通道的条带状态标识中解析出的需要Ref通道编码的 列;

其中,记录在Ref通道中进行编码的数据总数;

若已在Ref通道中编码的数据总数等于Ref通道待编码数据总数, 则提前跳出Ref通道的编码,否则继续执行Ref通道的编码。

进一步地,所述根据该Cln通道的条带状态标识进行Cln通道编 码,包括:

跳过从Cln通道的条带状态标识中解析出的不需要Cln通道编码 的列;

编码从Cln通道的条带状态标识中解析出的需要Cln通道编码的 列;

其中,Cln通道每编码一个数据,若出现重要系数,更新相应系数 的重要性,更新码块重要系数总数;

记录在Cln通道编码的数据总数;

Cln通道编码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

若已在Cln通道编码的数据总数、Ref通道编码数据总数、Sig通 道编码数据总数之和大于或等于码块数据总数,则提前结束Cln通道 的编码,否则继续进行Cln通道的编码;

Cln通道编码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为该条带的Sig通道的条带状态标识,将该条带Ref通道单列的状 态标识转换为该条带的Ref通道的条带状态标识;

Cln通道编码完毕时,设置下一位平面中Ref通道待编码数据总数 为重要系数总数。

进一步地,所述条带状态标识包括:初始状态、状态切换次数、 每次状态连续的列数;

所述初始状态为被预测条带的第一列的状态标识;

所述状态切换次数为列的状态标识在处理和跳过两种状态之间的 切换次数;

所述每次状态连续的列数为同一种列的状态标识连续的列数。

本发明提供的一种JPEG2000图像解码和编码的方法,通过本发明 实施例提供的一种JPEG2000图像解码的方法,能够在Cln通道和Sig 通道内根据已经解码得到的系数的重要性预测出当前位平面或后续位 平面中3个通道中可跳过的列,在通道中解码时直接跳过这些可跳过 的列,减少了扫描次数,通过将单列状态标识转换为条带状态标识, 能够将相同状态的连续的列进行连续处理,减少了列或列群的扫描判 断次数提高了解码效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面 将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而 易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通 技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图 获得其他的附图。

图1是本发明实施例1提供的一种JPEG2000图像解码的方法流程 图;

图2是本发明实施例2提供的一种JPEG2000图像解码的方法流程 图;

图3是本发明实施例3提供的一种JPEG2000图像编码的方法流程 图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结 合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、 完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是 全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有 做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保 护的范围。

实施例1:

为了提高图像解码的效率,本发明实施例提供了一种JPEG2000 图像解码的方法,参见图1,该方法具体包括:

步骤101:预先设置待编码码块的重要性数组,并初始化为不重要, 在每解码出一个重要系数后,将该系数的重要性更新为重要;

步骤102:采用Cln通道解码第一位平面;

第一位平面之后的位平面的解码方法包括:

步骤103:读取前一个位平面生成的Sig通道的条带状态标识,根 据Sig通道的条带状态标识进行Sig通道解码,其中,在Sig通道解码 完一列后,根据该列系数的重要性及该列系数的被访问情况计算该列 的Cln通道的状态标识,并根据该列系数的重要性计算该列的下一位 平面的对应列的Sig通道的状态标识、Ref通道的状态标识和Cln通道 的状态标识;

步骤104:在Sig通道解码完每个条带后,将每个条带中Cln通道 单列的状态标识转换为对应条带的Cln通道的条带状态标识;

步骤105:在Sig通道解码完毕后,读取上一个位平面生成的Ref 通道的条带状态标识,根据该Ref通道的条带状态标识进行Ref通道 解码;

步骤106:在Ref通道解码完毕后,读取Cln通道的条带状态标识, 根据该Cln通道的条带状态标识进行Cln通道解码,其中,在Cln通道 解码完一列后,根据该列系数的重要性计算该列的下一位平面的对应 列的Sig通道的状态标识、Ref通道的状态标识和Cln通道的状态标识;

步骤107:在Cln通道解码完每个条带后,根据下一位平面的每个 条带中每一列的Sig通道的状态标识生成下一个位平面的对应条带的 Sig通道的条带状态标识,根据下一位平面的每个条带中每一列的Ref 通道的状态标识生成下一个位平面的对应条带的Ref通道的条带状态 标识。

通过本发明实施例提供的一种JPEG2000图像解码的方法,能够在 Cln通道和Sig通道内根据已经解码得到的系数的重要性预测出当前位 平面或后续位平面中3个通道中可跳过的列,在通道中解码时直接跳 过这些可跳过的列,减少了扫描次数,通过将单列状态标识转换为条 带状态标识,能够将相同状态的连续的列进行连续处理,减少了列或 列群的扫描判断次数提高了解码效率。

其中,步骤102具体包括:Cln通道解码每个数据,若出现重要系 数,更新该系数的重要性,更新码块重要系数总数;

Cln通道解码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

Cln通道解码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为Sig通道该条带的状态标识,将该条带Ref通道单列的状态标识 转换为Ref通道该条带的状态标识;

Cln通道解码完毕时,设置下一位平面中Ref通道待解码数据总数 为重要系数总数。

在步骤103中,根据Sig通道的条带状态标识进行Sig通道解码, 具体包括:

跳过从Sig通道的条带状态标识中解析出的不需要Sig通道解码的 列;

从Sig通道的状态标识中解析出需要Sig通道解码的列,Sig通道 从重要性数组中读取该列及其邻域系数的重要性,若该列及其邻域系 数都为不重要,则跳过该列,否则执行该列的解码;

其中,Sig通道解码某列之前,设置该列在该位平面中Cln通道待 解码数据总数为该列的数据总数;

Sig通道每解码一个数据,若出现重要系数,更新相应系数的重要 性,更新码块重要系数总数;

记录在Sig通道解码的数据总数;

Sig通道解码每列时,若一个系数在上一位平面已经变为重要,则 将该位平面中Cln通道待解码数据总数减一,若一个数据属于Sig通道 处理,则将该位平面中Cln通道待解码数据总数减一,记录该列已变 为重要系数的总数;

若一列重要系数总数大于零,则将Ref通道该列的状态标识设置 为处理;

若一列重要系数总数等于该列系数总数,则将Sig通道该列的状态 标识设置为跳过;

若一列该位平面中Cln通道待解码数据总数等于零,则将Cln通 道该列的状态标识设置为跳过;

若已在Sig通道解码的数据总数大于或等于码块数据总数与Ref 通道待解码数据总数之差,则提前结束Sig通道的解码,否则继续进行 Sig通道的解码。

在步骤105中,根据Ref通道的条带状态标识进行Ref通道解码, 具体包括:

跳过从Ref通道的条带状态标识中解析出的不需要Ref通道解码 的列;

解码从Ref通道的条带状态标识中解析出的需要Ref通道解码的 列;

其中,记录在Ref通道中进行解码的数据总数;

若已在Ref通道中解码的数据总数等于Ref通道待解码数据总数, 则提前跳出Ref通道的解码,否则继续执行Ref通道的解码。

在步骤106中,根据该Cln通道的条带状态标识进行Cln通道解 码,包括:

跳过从Cln通道的条带状态标识中解析出的不需要Cln通道解码 的列;

解码从Cln通道的条带状态标识中解析出的需要Cln通道解码的 列;

其中,Cln通道每解码一个数据,若出现重要系数,更新相应系数 的重要性,更新码块重要系数总数;

记录在Cln通道解码的数据总数;

Cln通道解码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

若已在Cln通道解码的数据总数、Ref通道解码数据总数、Sig通 道解码数据总数之和大于或等于码块数据总数,则提前结束Cln通道 的解码,否则继续进行Cln通道的解码;

Cln通道解码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为该条带的Sig通道的条带状态标识,将该条带Ref通道单列的状 态标识转换为该条带的Ref通道的条带状态标识;

Cln通道解码完毕时,设置下一位平面中Ref通道待编码数据总数 为重要系数总数。

其中,条带状态标识包括:初始状态、状态切换次数、每次状态 连续的列数;

初始状态为被预测条带的第一列的状态标识;

状态切换次数为列的状态标识在处理和跳过两种状态之间的切换 次数;

每次状态连续的列数为同一种列的状态标识连续的列数。

其中,对于一个条带分别有Sig通道的条带状态标识、Ref通道的 条带状态标识、Cln通道的条带状态标识三个条带状态标识。

设处理状态为处理用“1”表示,处理状态为跳过用“0”表示, 例如一个条带中每列的处理状态为: 00001011111010000000101111110001 可以得出,初始状态为“跳过”即为“0”,状态切换次数为11,连续 状态的列数分别为{4,1,1,5,1,1,7,1,1,6,3,1},得到状 态标识参见表1:

表1

0 11 4 1 1 5 1 1 7 1 1 6 3 1

当一列的系数的重要性全部为重要时,将当前位平面之后的所有 位平面的对应列在Sig通道、Cln通道中的处理状态设置为跳过。

Sig通道的单列处理状态初始化为不跳过。当某列的数据全部变为 重要时,该列的处理状态变为跳过。处理状态从不跳过变为跳过后就 一直为跳过,直到该码块解码完毕。

Ref通道的单列处理状态初始化为跳过。当某列数据至少有1个变 为重要后,该列的处理状态变为不跳过。处理状态从跳过变为不跳过 后就一直为不跳过,直到该码块解码完毕。

Cln通道的单列处理状态初始化为不跳过。当某列的数据全部在 Sig通道或Ref通道中处理时,该列的处理状态变为跳过。状态从不跳 过变为跳过后就一直为跳过,直到该码块解码完毕。

实施例2:

下面通过具体的实现过程来详细说明本发明实施例提供的一种 JPEG2000图像解码的方法。在本实施例中待解码码块为32×32的码 块,参见图2,具体步骤包括:

步骤201:参数设置及初始化。

步骤202:采用Cln通道解码第一个位平面。

后续位平面按下述步骤进行:

步骤203:每个位平面首先进行Sig通道的解码。

步骤204:每个位平面在完成Sig通道的解码后,进行Ref通道的 解码。

步骤205:每个位平面在完成Ref通道的解码后,进行Cln通道的 解码。

步骤206:每个位平面在完成Cln通道的解码后,进行下一个位 平面的解码。

其中,在步骤201中,参数设置及初始化,具体包括:

待解码码块解码开始之前,设置并初始化参数。

码块的长标记为h,码块宽度标记为w,码块的条带个数标记为 stripe_num,条带宽度标记为stripe_length。

码块系数的重要性数组标记为significance[(w+2)×(h+2)],初始化 为0。其中,0表示不重要,1表示重要。

预先设置Sig通道每列的状态标识,标记为 sig_column_state[stripe_num,w],初始化为1;预先设置Ref通道每列 的状态标识,标记为ref_column_state[stripe_num,w],初始化为0;预 先设置Cln通道每列的状态标识,标记为cln_column_state[stripe_num, w],初始化为1;其中单列状态标识中0表示该列跳过,1表示该列处 理。

预先设置Sig通道每个条带的条带状态标识,标记为sig_DMCOLS [stripe_num],其初始状态、状态切换次数、每次状态连续列数均初始 化为0。

预先设置Ref通道每个条带的条带状态标识,标记为ref_DMCOLS [stripe_num],其初始状态、状态切换次数、每次状态连续列数均初始 化为0。

预先设置Cln通道每个条带的条带状态标识,标记为 cln_DMCOLS[stripe_num],其初始状态、状态切换次数、每次状态连 续列数均初始化为0。

计算码块系数总数,标记为n,n=w×h。设属于Sig通道处理的 系数的总数为n1,初始化为0;属于Ref通道的为n2,初始化为0;Cln 通道的为n3,初始化为n。

设码块重要系数总数为sig_num,初始化为0。

在每个位平面开始之前,设Sig通道已解码的系数的数量为n11, 初始化为0;设Ref通道已解码的系数的数量为n22,初始化为0;设 Cln通道已解码的系数的数量为n33,初始化为0。

其中,在步骤202中,解码第一个位平面,具体包括:

在第一个位平面中,仅采用Cln通道进行全通道全列逐点扫描进 行解码。

在Cln通道中,每个系数解码时,若该系数变为重要,则sig_num 加1。

在Cln通道中,每列解码完毕时,计算该列所有系数的重要性之 和,即该列重要系数的个数,标记为column_significance,若column_ significance>0,则将Ref通道该列的状态标识ref_column_state[s][i]的 值置为1;若column_significance==stripe_1ength,则将Sig通道和Cln 通道该列的状态标识sig_column_state[s][i]和cln_column_state[s][i]的值 置为0。其中,s、i表示该列为第s条带中的第i列。

在Cln通道中,每个条带解码完毕时,将该条带Sig通道的单列 状态标识sig_column_state[s][]和Ref通道的单列状态标识 ref_column_state[s][],根据单列状态标识到条带状态标识的转换规则, 分别生成相应的条带状态标识。其中,Sig通道的每个条带的条带状态 标识标记为sig_DMCOLS[s],Ref通道的条带状态标识标记为 ref_DMCOLS[s],s表示该条带为第s个条带。

Cln通道解码完毕时,设置下一个位平面中Ref通道应解码数据个 数n2=sig_num。

其中,在步骤203中,每个位平面首先进行Sig通道的解码,具 体包括:

Sig通道解码开始之前,设Sig通道已解码的系数的总数为n11, 初始化为0。解码过程中,若有系数属于Sig通道解码,则n11加1;若 n11≥n-n2,则提前结束Sig通道解码,否则继续执行Sig通道的解码。

Sig通道每个条带解码之前,读取该条带Sig通道的条带状态标识 sig_DMCOLS[s],该条带状态标识中第一个比特的值为初始状态,随 后5个比特的值表示该条带中状态切换次数,随后读取每次状态所持 续的列数。依据条带的状态标识规则,对需要跳过的列群进行跳过; 对需要执行的列群,按下述步骤执行:Sig通道对需要执行的列,在解 码之前,计算该列及其邻域系数的重要性之和,标记为σcolumn_cx[s,i],其 中s、i表示为该列为第s条带第i列。若σcolumn_cx[s,i]==0,则直接跳过 该列;否则,对该列进行解码。

在Sig通道中,每个系数处理时,若该系数变为重要,则sig_num 加1。

Sig通道解码每列之前,设该列属于Cln通道解码的系数个数为 cln_count,初始化cln_count=stripe_length。该列中若有系数在之前位 平面中已经变为重要,则cln_count减1;该列中若有系数属于Sig通 道处理,则cln_count减1。

Sig通道解码每列完毕时,计算该列所有系数的重要性之和,即该 列重要系数的个数,标记为column_significance,若column_ significance>0,则将Ref通道该列的单列状态标识ref_column_state[s][i] 的值置为1;若column_significance==stripe_length,则将Sig通道和 Cln通道该列的单列状态标识sig_column_state[s][i]和 cln_column_state[s][i]的值置为0;若cln_count==0,则将 cln_column_skip[s][i]的值置为0。其中,s、i表示该列为第s条带中的 第i列。

Sig通道解码每个条带完毕时,将该条带Cln通道的单列状态标识 cln_column_state[s][],根据单列状态标识到条带状态标识的转换规则, 生成相应的条带状态标识。Cln通道的状态标识标记为 cln_DMCOLS[s]。其中s表示该条带为第s个条带。

Sig通道解码完毕时,n1=n11

其中,在步骤204中,每个位平面在完成Sig通道的解码后,进 行Ref通道的解码,具体包括:

Ref通道解码开始之前,设Ref通道已解码的系数的总数为n22, 初始化为0。

Ref通道每个条带解码之前,读取该条带Ref通道的状态标识 ref_DMCOLS[s],依据条带状态标识规则,对需要跳过的列群进行跳过; 对需要执行的列群进行解码处理。

在解码过程中,若有系数属于Ref通道处理,则n22加1;若n22≥n2, 则提前结束Ref通道,否则继续执行Ref通道的解码。

其中,在步骤205中,每个位平面在完成Ref通道的解码后,进 行Cln通道的解码,具体包括:

Cln通道解码开始之前,设Cln通道已解码的系数的总数为n33, 初始化为0。

Cln通道每个条带解码之前,读取该条带Cln通道的状态标识 cln_DMCOLS[s]。依据条带状态标识规则,对需要跳过的列群进行跳 过;对需要执行的列群,按下述步骤执行:

在Cln通道中,每个系数解码时,若该系数变为重要,则sig_num 加1。

在解码过程中,若有系数属于Cln通道解码,则n33加1;若 n33≥n-n1-n2,则提前结束Cln通道,否则继续执行Cln通道的解码。

在Cln通道中,每列解码完毕时,计算该列所有系数的重要性之 和,即该列重要系数的个数,标记为column_significance,若column_ significance>0,则将Ref通道该列的单列状态标识ref_column_state[s][i] 的值置为1;若column_significance==stripe_length,则将Sig通道和 Cln通道该列的单列状态标识sig_column_state[s][i]和 cln_column_state[s][i]的值置为0。其中,s、i表示该列为第s条带中的 第i列。

在Cln通道中,每个条带解码完毕时,将该条带Sig通道的单列 状态标识sig_column_state[s][]和Ref通道的单列状态标识 ref_column_state[s][],根据单列状态标识到条带状态标识的转换规则, 生成相应的通道的条带状态标识。其中,Sig通道的条带状态标识标记 为sig_DMCOLS[s],Ref通道的条带状态标识标记为ref_DMCOLS[s], s表示该条带为第s个条带。

Cln通道解码结束时,设置下一个位平面中Ref通道应处理数据个 数n2=sig_num。

其中,每个条带的单列状态标识到条带状态标识的转换规则如下: 设某个通道某个条带单列状态标识为column[s][],该条带该通道相应 的条带状态标识为DMCOLS[s]。下面以32乘32的码块为例说明该转 换规则。

每个条带的状态标识含3种数据。第1种数据标记为“start”,即 初始状态,其值等于该条带第1列的状态的取值,0或1,其中0表 示该列跳过,1表示该列处理,可用1个比特位表示。根据start的值, 即可推断出后续状态的值。例如,若条带中第1列的状态,即条带中 第1个连续列的状态,也就是start=0,那么第2个状态则为“1”,第3 个状态则为“0”,以此类推。第2种数据标记为“change_num”,表示 在该条带中列的状态标识在处理和跳过两种状态之间的切换次数。第3 种数据标记为“remain_column_num[change_num]”,表示同一种列的状 态标识连续的列数。

下面举例说明条带的单列状态标识到条带状态标识的转换过程: 设某个条带某个通道的单列状态标识为: 00001011111010000000101111110001。该条带第1个状态即第一列的初 始状态为0,即跳过状态,该状态持续列数为4列;第2个状态为1, 即处理,该状态持续列数为1列;第3个状态为0,即跳过状态,该状 态持续列数为1列;第4个状态为1,即不跳过状态,该状态持续列数 为5列;以此类推。依据这样的规则,生成该条带该通道的状态标识 为:start=0;change_num=12;remain_column_num[change_num]={4,1, 1,5,1,1,7,1,1,6,3,1}。

设某个通道某个条带解码之前,读取该通道该条带的条带状态标 识为{0,12,{4,1,1,5,1,1,7,1,1,6,3,1}},该通道依据该 条带标识进行列群的跳过或处理,其具体过程如下:

读取条带标识符中的start数据,start=0,说明该条带第1个状态 为跳过;读取条带标识符中的change_num数据,change_num=12,说 明该条带共有12此状态切换;读取第1个状态持续的列数,为4,第 1个状态为跳过,则连续跳过4列;第2个状态为处理,读取第2个状 态持续的列数,为1,则处理1列;第3个状态为跳过,读取相应的持 续列数,为1,则跳过1列;第4个状态为处理,读取相应的持续列数 为5,则连续处理5列;第5个状态为跳过,读取相应的持续列数为1, 则跳过1列;以此类推。

需要说明的是,本发明实施例中的JPEG2000图像解码的实现过 程,对于JPEG2000图像编码也适用,这里就不再详细叙述。

实施例3:

本发明实施例提供了一种JPEG2000图像编码的方法,参见图3, 该方法具体包括:

步骤301:预先设置待编码码块的重要性数组,并初始化为不重要, 在每读取出一个重要系数后,将该系数的重要性更新为重要;

步骤302:采用Cln通道编码第一位平面;

第一位平面之后的位平面的编码方法包括:

步骤303:读取前一个位平面生成的Sig通道的条带状态标识,根 据Sig通道的条带状态标识进行Sig通道编码,其中,在Sig通道编码 完一列后,根据该列系数的重要性及该列系数的被访问情况计算该列 的Cln通道的状态标识,并根据该列系数的重要性计算该列的下一位 平面的对应列的Sig通道的状态标识、Ref通道的状态标识和Cln通道 的状态标识;

步骤304:在Sig通道编码每个条带完毕后,将每个条带中Cln通 道单列的状态标识转换为对应条带的Cln通道的条带状态标识;

步骤305:在Sig通道编码完毕后,读取上一个位平面生成的Ref 通道的条带状态标识,根据Ref通道的条带状态标识进行Ref通道编 码;

步骤306:在Ref通道编码完毕后,读取Cln通道的条带状态标识, 根据该Cln通道的条带状态标识进行Cln通道编码,其中,在Cln通道 编码完一列后,根据该列系数的重要性计算该列的下一位平面的对应 列的Sig通道的状态标识、Ref通道的状态标识和Cln通道的状态标识;

步骤307:在Cln通道编码完每个条带后,根据下一位平面的每个 条带中每一列的Sig通道的状态标识生成下一个位平面的对应条带的 Sig通道的条带状态标识,根据下一位平面的每个条带中每一列的Ref 通道的状态标识生成下一个位平面的对应条带的Ref通道的条带状态 标识。

其中,步骤302,具体包括:

Cln通道编码每个数据,若出现重要系数,更新该系数的重要性, 更新码块重要系数总数;

Cln通道编码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

Cln通道编码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为Sig通道该条带的状态标识,将该条带Ref通道单列的状态标识 转换为Ref通道该条带的状态标识;

Cln通道编码完毕时,设置下一位平面中Ref通道待编码数据总数 为重要系数总数。

步骤303中,根据Sig通道的条带状态标识进行Sig通道编码,具 体包括:

跳过从Sig通道的条带状态标识中解析出的不需要Sig通道编码的 列;

从Sig通道的状态标识中解析出需要Sig通道编码的列,Sig通道 从重要性数组中读取该列及其邻域系数的重要性,若该列及其邻域系 数都为不重要,则跳过该列,否则执行该列的编码;

其中,Sig通道编码某列之前,设置该列在该位平面中Cln通道待 编码数据总数为该列的数据总数;

Sig通道每编码一个数据,若出现重要系数,更新相应系数的重要 性,更新码块重要系数总数;

记录在Sig通道编码的数据总数;

Sig通道编码每列时,若一个系数在上一位平面已经变为重要,则 将该位平面中Cln通道待编码数据总数减一,若一个数据属于Sig通道 处理,则将该位平面中Cln通道待编码数据总数减一,记录该列已变 为重要系数的总数;

若一列重要系数总数大于零,则将Ref通道该列的状态标识设置 为处理;

若一列重要系数总数等于该列系数总数,则将Sig通道该列的状态 标识设置为跳过;

若一列该位平面中Cln通道待编码数据总数等于零,则将Cln通 道该列的状态标识设置为跳过;

若已在Sig通道编码的数据总数大于或等于码块数据总数与Ref 通道待编码数据总数之差,则提前结束Sig通道的编码,否则继续进行 Sig通道的编码。

步骤305中,根据Ref通道的条带状态标识进行Ref通道编码, 具体包括:

跳过从Ref通道的条带状态标识中解析出的不需要Ref通道编码 的列;

编码从Ref通道的条带状态标识中解析出的需要Ref通道编码的 列;

其中,记录在Ref通道中进行编码的数据总数;

若已在Ref通道中编码的数据总数等于Ref通道待编码数据总数, 则提前跳出Ref通道的编码,否则继续执行Ref通道的编码。

步骤306中,根据该Cln通道的条带状态标识进行Cln通道编码, 具体包括:

跳过从Cln通道的条带状态标识中解析出的不需要Cln通道编码 的列;

编码从Cln通道的条带状态标识中解析出的需要Cln通道编码的 列;

其中,Cln通道每编码一个数据,若出现重要系数,更新相应系数 的重要性,更新码块重要系数总数;

记录在Cln通道编码的数据总数;

Cln通道编码每列时,记录该列已变为重要系数的总数;

若一列的重要系数总数大于零,则将Ref通道该列的状态标识设 置为处理;

若一列的重要系数总数等于该列系数总数,则将Sig通道该列的状 态标识设置为跳过;

若一列的重要系数总数等于该列系数总数,则将Cln通道该列的 状态标识设置为跳过;

若已在Cln通道编码的数据总数、Ref通道编码数据总数、Sig通 道编码数据总数之和大于或等于码块数据总数,则提前结束Cln通道 的编码,否则继续进行Cln通道的编码;

Cln通道编码每个条带完毕时,将该条带Sig通道单列的状态标识 转换为该条带的Sig通道的条带状态标识,将该条带Ref通道单列的状 态标识转换为该条带的Ref通道的条带状态标识;

Cln通道编码完毕时,设置下一位平面中Ref通道待编码数据总数 为重要系数总数。

其中,条带状态标识包括:初始状态、状态切换次数、每次状态 连续的列数;

初始状态为被预测条带的第一列的状态标识;

状态切换次数为列的状态标识在处理和跳过两种状态之间的切换 次数;

每次状态连续的列数为同一种列的状态标识连续的列数。

通过以上描述可见,本发明实施例具有以下有益效果:

1、通过本发明实施例提供的一种JPEG2000图像解码的方法,能 够在Cln通道和Sig通道内根据已经解码得到的系数的重要性预测出当 前位平面或后续位平面中3个通道中可跳过的列,在通道中解码时直 接跳过这些可跳过的列,减少了扫描次数,通过将单列状态标识转换 为条带状态标识,能够将相同状态的连续的列进行连续处理,减少了 列或列群的扫描判断次数提高了解码效率。

2、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,通过在Sig通道、Cln通道中根据每列重要系数的个数,对后续Sig 通道单列进行预判,能够将完全属于Ref通道的列预判出来,能够避 免在Sig通道中对完全属于Ref通道的列进行逐列扫描判断。

3、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,通过在Sig通道中根据需要处理列及其邻域重要性,能够完全跳过 在本位平面中完全属于Cln通道的列。

4、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,通过在Sig通道、Cln通道中根据每列重要系数的个数,对后续 Ref通道单列进行预判,能够在Ref通道中跳过那些或者完全属于Sig 通道或者完全属于Cln通道或者既属于Sig通道又属于Cln通道的列, 避免对这些没有数据属于Ref通道处理的列的逐列扫描判断。

5、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,通过在Sig通道、Cln通道中根据每列重要系数的个数或者被访问 情况,对后续Cln通道单列进行预判,能够在Cln通道中跳过那些没 有数据属于Cln通道处理的列。

6、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,通过单列状态标识到条带状态标识的转换,能够将那些连续跳过 的列或者连续执行的列动态地组合起来,对于连续的列或者列群,只 需判断一次,即可进行列或列群的连续跳过或者连续执行,极大地减 少了列或列群的扫描判断次数。

7、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,利用3个通道处理数据总数的关系,对3个通道都采用了通道提 前跳出的方法,对于那种某些通道分布稀疏的情况比如复杂图像较低 位平面中Cln通道、简单图像较高位平面中Ref通道和Sig通道能有效 减少冗余扫描提高位平面扫描速度。

8、通过本发明实施例提供的一种JPEG2000图像解码和编码的方 法,能够极大地提升位平面编码器和位平面解码器的扫描速度。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其 他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、 方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的 其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的 要素。在没有更多限制的情况下,由语句“包括一个……”限定的 要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存 在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部 分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在 计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实 施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等 各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于 说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发 明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在 本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号