图像编码方法及装置

文档序号:912771 发布日期:2021-02-26 浏览:21次 >En<

阅读说明:本技术 图像编码方法及装置 (Image coding method and device ) 是由 郭鲲 于 2020-10-28 设计创作,主要内容包括:本公开提供一种图像编码方法及装置,涉及图像处理技术领域,能够解决相关技术中使用小波变换对图像进行编码时编码速度慢的问题。具体技术方案为:本公开实施例提供的图像编码方法,包括:对图像进行三级小波变换后,将LL3子带按照预设更新方式进行更新;扫描所有子带,获取预设数值的出现频率,并根据出现频率产生哈夫曼编码表;对LL3子带和非LL3子带分别采用不同的编码方式进行编码;根据每一个子带对应的编码数据得到图像的编码码流;其中,根据三级小波变换后图片的特点,对不同子带采用不同的编码方法,从而可以达到编码速度快、码流较低的效果。(The present disclosure provides an image encoding method and apparatus, which relates to the technical field of image processing and can solve the problem of slow encoding speed when encoding an image by using wavelet transform in the related art. The specific technical scheme is as follows: the image coding method provided by the embodiment of the disclosure comprises the following steps: after the image is subjected to three-level wavelet transform, updating the LL3 sub-band according to a preset updating mode; scanning all sub-bands, acquiring the occurrence frequency of a preset numerical value, and generating a Huffman coding table according to the occurrence frequency; respectively encoding the LL3 sub-band and the non-LL 3 sub-band by adopting different encoding modes; obtaining an encoding code stream of the image according to the encoding data corresponding to each sub-band; according to the characteristics of the image after the three-level wavelet transform, different coding methods are adopted for different sub-bands, so that the effects of high coding speed and low code stream can be achieved.)

图像编码方法及装置

技术领域

本公开涉及图像处理领域,尤其涉及图像编码方法及装置。

背景技术

目前,用于小波变换的图像编码方法有:JPEG2000使用的ECBOT,嵌 入零树小波(英文:Embedded zerotree wavelet,简称为:EZW)和多级树集 合分裂算法(英文:Setpartitioning in hierarchical trees t,简称为:SPIHT)。

但是,在上述编码方式中,ECBOT使用的编码方法过慢;EZW编码速 度也比较慢;SPIHT方法要求图片的长和宽都是2n,同时图片越大编码速度 也会越慢。

发明内容

本公开实施例提供一种图像编码方法及装置,能够解决相关技术中使用 小波变换对图像进行编码时编码速度慢的问题。所述技术方案如下:

根据本公开实施例的第一方面,提供一种图像编码方法,该方法包括:

对图像进行三级小波变换后,将LL3子带按照预设更新方式进行更新;

扫描所有子带,获取预设数值的出现频率,并根据所述出现频率产生哈 夫曼编码表;

对每一个所述子带进行编码;

根据每一个所述子带对应的编码数据得到所述图像的编码码流;

其中,所述对每一个所述子带进行编码,包括:

获取待编码的子带,判断当前待编码的子带是否是LL3子带;

若是LL3子带,使用哈夫曼编码方式进行编码;

若不是LL3子带,使用行程长度编码改进算法进行编码得到中间编码数 据;

使用自适应算术编码方式对所述中间编码数据进行编码。

本公开实施例提供的图像编码方法,包括:对图像进行三级小波变换后, 将LL3子带按照预设更新方式进行更新;扫描所有子带,获取预设数值的出 现频率,并根据出现频率产生哈夫曼编码表;对每一个子带进行编码;根据 每一个子带对应的编码数据得到图像的编码码流;其中,对每一个子带进行 编码,包括:获取待编码的子带,判断当前待编码的子带是否是LL3子带; 若是LL3子带,使用哈夫曼编码方式进行编码;若不是LL3子带,使用行程 长度编码改进算法进行编码得到中间编码数据;使用自适应算术编码方式对 中间编码数据进行编码。其中,根据三级小波变换后图片的特点,对不同子 带采用不同的编码方法,从而可以达到编码速度快、码流较低的效果。

在一个实施例中,所述将LL3子带按照预设更新方式进行更新,包括:

将所述LL3子带中当前元素减去相邻的前一个元素所得的结果替换所述 当前元素。

在一个实施例中,所述若不是LL3子带,使用行程长度编码改进算法进 行编码得到中间编码数据,包括:

对所述不是LL3子带的子带中的每一个待编码元素执行如下编码方式:

判断当前待编码元素是否是零;

如果所述当前待编码元素是零,则将计数器加一;

如果所述当前待编码元素不是零,将所述计数器的值转化为二进制数字;

使用预设符号替换所述二进制数字得到替换数据;

将所述计数器清零;

根据所述替换数据和所述当前待编码元素对应的哈夫曼编码得到所述当 前待编码元素的所述中间编码数据。

在一个实施例中,所述使用预设符号替换所述二进制数字得到替换数据, 包括:

使用正号替换所述二进制数字中的1;

使用负号替换所述二进制数字中的0。

在一个实施例中,所述预设数值为非0数值。

根据本公开实施例的第二方面,提供一种图像编码装置,包括:

更新模块,用于对图像进行三级小波变换后,将LL3子带按照预设更新 方式进行更新;

编码表生成模块,用于扫描所有子带,获取预设数值的出现频率,并根 据所述出现频率产生哈夫曼编码表;

编码模块,用于对每一个所述子带进行编码;

码流生成模块,用于根据每一个所述子带对应的编码数据得到所述图像 的编码码流;

其中,所述编码模块包括:

第一判断子模块,用于获取待编码的子带,判断当前待编码的子带是否 是LL3子带;

第一编码子模块,用于若所述当前待编码的子带是LL3子带,使用哈夫 曼编码方式进行编码;

第二编码子模块,用于若所述当前待编码的子带不是LL3子带,使用行 程长度编码改进算法进行编码得到中间编码数据;

第三编码子模块,用于使用自适应算术编码方式对所述中间编码数据进 行编码。

在一个实施例中,所述更新模块包括:

更新子模块,用于将所述LL3子带中当前元素减去相邻的前一个元素所 得的结果替换所述当前元素。

在一个实施例中,所述第二编码子模块包括:

第二判断子模块,用于判断当前待编码元素是否是零;

第一处理子模块,用于如果所述当前待编码元素是零,则将计数器加一;

转换子模块,用于如果所述当前待编码元素不是零,将所述计数器的值 转化为二进制数字;

替换子模块,用于使用预设符号替换所述二进制数字得到替换数据;

第二处理子模块,用于将所述计数器清零;

获取子模块,用于根据所述替换数据和所述当前待编码元素对应的哈夫 曼编码得到所述当前待编码元素的所述中间编码数据。

在一个实施例中,所述替换子模块包括:

第一替换子单元,用于使用正号替换所述二进制数字中的1;

第二替换子单元,用于使用负号替换所述二进制数字中的0。

在一个实施例中,所述预设数值为非0数值。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性 的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公 开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种图像编码方法的流程图;

图2是本公开实施例提供的一种三级小波变换后各子带的分布示意图;

图3是本公开实施例提供的一种图像编码方法的流程图;

图4是本公开实施例提供的一种图像编码方法的流程图;

图5是本公开实施例提供的一种图像编码方法的流程图;

图6是本公开实施例提供的一种图像编码装置的结构图;

图7是本公开实施例提供的一种图像编码装置中更新模块的结构图;

图8是本公开实施例提供的一种图像编码装置中第二编码子模块的结构 图。

图9是本公开实施例提供的一种图像编码装置中替换子模块的结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的 描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的 要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所 有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一 些方面相一致的装置和方法的例子。

本公开实施例提供一种图像编码方法,如图1所示,该图像编码方法包 括以下步骤:

101、对图像进行三级小波变换后,将LL3子带按照预设更新方式进行 更新。

其中,图像进行三级小波变换后,各子带(subband)的分布如图2所示。

102、扫描所有子带,获取预设数值的出现频率,并根据出现频率产生哈 夫曼编码表。

示例的,其中,预设数值为非0数值。也即,扫描所有子带,统计除0 外所有数值的出现频率,并根据频率产生Huffman码表。

103、对每一个子带进行编码。

104、根据每一个子带对应的编码数据得到图像的编码码流。

经过统计发现:LL3子带含0的数量最少,剩余子带含0数量较多,由 于对含0较多的子带进行处理后,对编码后的编码的大小影响并不会很大, 因此,根据各子带特性设计了各自的编码算法,具体的,对每一个子带进行 编码,包括以下子步骤:

1031、获取待编码的子带,判断当前待编码的子带是否是LL3子带。

1032、若是LL3子带,使用哈夫曼编码方式进行编码。

1033、若不是LL3子带,使用行程长度编码改进算法进行编码得到中间 编码数据。

1034、使用自适应算术编码方式对中间编码数据进行编码。

在判断当前待编码的子带是LL3子带时,可直接使用哈夫曼(英文: Huffman)编码方式进行编码,而当判断当前待编码的子带不是LL3子带时, 会向使用行程长度编码(Runlength encoding,简称为:RLE)改进算法进行 编码得到中间编码数据,也可以称之为中间结果,然后对该中间结果使用自 适应算术编码方式进行编码。

其中,使用自适应算术编码方式进行编码的方式与相关技术中类似,此 处不再赘述。

值得注意的是,上述步骤1031-1034是循环执行的,也即,对当前待编 码的子带执行了步骤1031-1034后,得到当前待编码的子带对应的编码数据, 然后再对下一个待编码的子带继续执行步骤1031-1034,得到下一个待编码 的子带对应的编码数据,依次类推,直到处理完所有待编码子带。

在得到图像的编码码流过程中,可以在对每一个待编码的子带执行了编 码后,直接将编码后的数据存入图像的编码码流中,也可以在将所有待编码 的子带执行了编码后,统一将编码后的数据放入图像的编码码流中,本公开 不对其加以限制。

本公开实施例提供的图像编码方法,包括:对图像进行三级小波变换后, 将LL3子带按照预设更新方式进行更新;扫描所有子带,获取预设数值的出 现频率,并根据出现频率产生哈夫曼编码表;对每一个子带进行编码;根据 每一个子带对应的编码数据得到图像的编码码流;其中,对每一个子带进行 编码,包括:获取待编码的子带,判断当前待编码的子带是否是LL3子带; 若是LL3子带,使用哈夫曼编码方式进行编码;若不是LL3子带,使用行程 长度编码改进算法进行编码得到中间编码数据;使用自适应算术编码方式对 中间编码数据进行编码。其中,根据三级小波变换后图片的特点,对不同子 带采用不同的编码方法,从而可以达到编码速度快、码流较低的效果。

在一个实施例中,将LL3子带按照预设更新方式进行更新,包括以下子 步骤:

将LL3子带中当前元素减去相邻的前一个元素所得的结果替换当前元 素。

在对图像进行三级小波变换后,首先将LL3子带做变换,用子带中后一 个元素减去前一个元素,将处理后的结果存入原先LL3子带位置。

例如:{100,103,105},在处理后变为{100,3,2}。

通过将LL3子带中当前元素减去相邻的前一个元素所得的结果替换当前 元素,可以明显减小当前元素的数值大小,从而可以明显的降低得到的编码 数据所需的带宽。

在一个实施例中,如图3所示,上述步骤1033包括以下子步骤:

对不是LL3子带的子带中的每一个待编码元素执行如下编码方式:

10331、判断当前待编码元素是否是零。

10332、如果当前待编码元素是零,则将计数器加一。

10333、如果当前待编码元素不是零,将计数器的值转化为二进制数字。

10334、使用预设符号替换二进制数字得到替换数据。

示例的,使用预设符号替换二进制数字得到替换数据,包括:

使用正号替换二进制数字中的1;使用负号替换二进制数字中的0。

也即,用“-”代替“0”,用“+”代替“1”。

例如:计数器的值为6。转化为二进制后为“110”。用“-”代替“0”,用 “+”代替“1”后得到“++-”。

值得注意的是,上述的预设符号与二进制数字的对应关系只是一种举例, 在实际应用中,也可以采用前天的预设符号,例如:使用字符作为预设符号, 使用a替换二进制数字中的1;使用b替换二进制数字中的0等。

10335、将计数器清零。

10336、根据替换数据和当前待编码元素对应的哈夫曼编码得到当前待编 码元素的中间编码数据。

值得注意的是,上述步骤10331-10336是循环执行的,也即,对当前待 编码元素执行了步骤10331-10336后,得到当前待编码元素对应的中间编码 数据,然后再对下一个待编码元素继续执行步骤10331-10336,得到下一个 待编码元素对应的中间编码数据,依次类推,直到处理完所有待编码元素。

通过改进现有的RLE算法,先得到中间编码数据,然后对中间编码数据 采用自适应算术编码方式进行编码,可以有效的降低编码后得到的码流的大 小。

本公开实施例提供一种图像编码方法,如图4所示,该图像编码方法包 括以下步骤:

1.在对图像进行三级小波变换后,首先将LL3子带做变换,用子带中后 一个元素减去前一个元素。

例如:{100,103,105},在处理后变为{100,3,2}。将处理后的结果 存入原先LL3子带位置。

2.扫描所有子带,统计除0外所有数值的出现频率,并根据频率产生 Huffman码表。

3.获取一个未编码的子带,判断当前编码子带是否是LL3子带。

3.1如果当前是LL3子带。直接使用Huffman编码方式进行编码,然后 存入编码后的码流。

3.2如果当前不是LL3子带。使用RLE(Run length encoding)改进算法 得到中间结果。然后使用算术编码进行编码,并存储编码后码流。

4.如果所有子带都已经完成编码,就结束程序。否则转到步骤2。

本公开实施例提供一种RLE改进算法的实现方法,如图5所示,该RLE 改进算法的实现方法包括以下步骤:

1.从子带中获取一个还未编码的元素。

2.判断元素是否是零。

2.1如果元素是0,就将计数器加一。

2.2如果元素不是0,将计数器的值转化为如下形式。首先,将计数器的 值转化为二进制形式。然后,用“-”代替“0”,用“+”代替“1”。

例如:计数器的值为6。转化为二进制后为“110”。用“-”代替“0”, 用“+”代替“1”后得到“++-”。然后将计数器清零。最后,将上面run length 转化的结果和当前值的Huffman编码的结果进行记录。

3.判断是否所有的元素都处理完了。如果全部处理完了,程序结束。否 则,转到步骤1。

基于上述图1-5对应的实施例中所描述的图像编码方法,下述为本公开 装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种图像编码装置,如图6所示,该图像编码装置包 括:

更新模块11,用于对图像进行三级小波变换后,将LL3子带按照预设更 新方式进行更新;

编码表生成模块12,用于扫描所有子带,获取预设数值的出现频率,并 根据所述出现频率产生哈夫曼编码表;

编码模块13,用于对每一个所述子带进行编码;

码流生成模块14,用于根据每一个所述子带对应的编码数据得到所述图 像的编码码流;

其中,所述编码模块13包括:

第一判断子模块131,用于获取待编码的子带,判断当前待编码的子带 是否是LL3子带;

第一编码子模块132,用于若所述当前待编码的子带是LL3子带,使用 哈夫曼编码方式进行编码;

第二编码子模块133,用于若所述当前待编码的子带不是LL3子带,使 用行程长度编码改进算法进行编码得到中间编码数据;

第三编码子模块134,用于使用自适应算术编码方式对所述中间编码数 据进行编码。

在一个实施例中,如图7所示,所述更新模块11包括:

更新子模块111,用于将所述LL3子带中当前元素减去相邻的前一个元 素所得的结果替换所述当前元素。

在一个实施例中,如图8所示,所述第二编码子模块133包括:

第二判断子模块1331,用于判断当前待编码元素是否是零;

第一处理子模块1332,用于如果所述当前待编码元素是零,则将计数器 加一;

转换子模块1333,用于如果所述当前待编码元素不是零,将所述计数器 的值转化为二进制数字;

替换子模块1334,用于使用预设符号替换所述二进制数字得到替换数 据;

第二处理子模块1335,用于将所述计数器清零;

获取子模块1336,用于根据所述替换数据和所述当前待编码元素对应的 哈夫曼编码得到所述当前待编码元素的所述中间编码数据。

在一个实施例中,如图9所示,所述替换子模块1334包括:

第一替换子单元13341,用于使用正号替换所述二进制数字中的1;

第二替换子单元13342,用于使用负号替换所述二进制数字中的0。

在一个实施例中,所述预设数值为非0数值。

基于上述图1-图5对应的实施例中所描述的图像编码方法,本公开实施 例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可 以是只读存储器(英文:Read Only Memory,ROM)、随机存取存储器(英 文:Random AccessMemory,RAM)、CD-ROM、磁带、软盘和光数据存储 装置等。该存储介质上存储有计算机指令,用于执行上述图1-图5对应的实 施例中所描述的图像编码方法,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本 公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性 变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公 开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被 视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确 结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所 附的权利要求来限制。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种结合卷积神经网络的HEVC视频质量增强算法框架

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类