首页> 中国专利> 基于颜色分类与聚类的图像压缩和解压缩方法

基于颜色分类与聚类的图像压缩和解压缩方法

摘要

本发明公开了一种基于颜色分类与聚类的图像压缩和解压缩方法,其中所述压缩方法包括:获取原始图像,并为所述原始图像建立标志矩阵;对所述原始图像进行颜色分类;判断所述颜色分类的种类数是否多于预设的颜色种类数,若是,对所述颜色分类中多出的颜色种类进行聚类;根据所述颜色分类的类别,拆分所述原始图像的像素数据和标志数据;采用无损压缩算法对所述标志数据进行压缩,采用有损算法对所述像素数据进行压缩;将各压缩数据按照预设顺序写入文件,得到压缩图像。本发明对图像的颜色信息进行分类和聚类,并将无损压缩算法和有损压缩算法相结合,实现了高质、高速和高压缩比的图像压缩方法。

著录项

  • 公开/公告号CN103458242A

    专利类型发明专利

  • 公开/公告日2013-12-18

    原文格式PDF

  • 申请/专利权人 北京京北方信息技术有限公司;

    申请/专利号CN201310274880.7

  • 发明设计人 张修宝;高昊江;

    申请日2013-07-02

  • 分类号H04N7/26;

  • 代理机构北京品源专利代理有限公司;

  • 代理人马晓亚

  • 地址 100089 北京市海淀区西三环北路25号青政大厦701室

  • 入库时间 2024-02-19 22:27:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-12-28

    授权

    授权

  • 2015-01-07

    著录事项变更 IPC(主分类):H04N7/26 变更前: 变更后: 申请日:20130702

    著录事项变更

  • 2014-01-15

    实质审查的生效 IPC(主分类):H04N7/26 申请日:20130702

    实质审查的生效

  • 2013-12-18

    公开

    公开

说明书

技术领域

本发明涉及图像压缩技术领域,具体涉及一种基于颜色分类和聚类的图像 压缩和解压缩方法。

背景技术

图像压缩是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也 称图像编码。图像数据之所以能被压缩,就是因为数据中存在着冗余。图像数 据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列 中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引 起的频谱冗余。数据压缩的目的就是通过去除这些数据冗余来减少表示数据所 需的比特数。

现在主流的图像压缩方法主要包括JPEG(Joint Photographic Experts  Group,联合图像专家小组)法和JPEG2000法。JPEG是由国际标准组织和国际 电话电报咨询委员会为静态图像所建立的第一个国际数字图像压缩标准,也是 至今一直在使用的、应用最广的图像压缩标准。JPEG法用有损压缩方式去除冗 余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句 话说,就是可以用最少的磁盘空间得到较好的图像品质,其压缩比可以达到其 他传统压缩算法无法比拟的程度。JPEG2000是基于小波变换的图像压缩标准, 其重要特征在于能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据, 不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000还支持所谓的 “感兴趣区域”特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选 择指定的部分先解压缩。JPEG2000和JPEG相比优势明显,且向下兼容,因此 被认为是未来取代JPEG的下一代图像压缩标准。

但是,由于一般情况下图像信号是高度非平稳的,很难用高斯过程来描述, 并且图像中存在一些突变结构,而JPEG算法对图像进行分块处理,在高压缩比 时就会产生严重的马赛克失真,即方块效应。JPEG2000算法复杂,针对大尺寸 的图像时,压缩速度慢,在中、低度压缩比下,JPEG2000的优势不明显,另外, JPEG2000存在模糊失真,主要是由于在编码过程中高频分量会产生一定程度的 衰减所导致的。JPEG和JPEG2000压缩算法适用于多种图像,包括灰度图像和彩 色图像,具有通用性,因而其代价是算法复杂和牺牲一定的速度。当采用高压 缩比对大量的图像进行压缩时,上述两种算法各自存在压缩质量差和速度慢的 不足。

发明内容

本发明的目的在于提出一种基于颜色分类与聚类的图像压缩和解压缩方 法,解决对大量图像进行压缩时,压缩质量差和压缩速度慢的问题。

本发明公开了一种基于颜色分类与聚类的图像压缩方法,包括:

S1、获取原始图像,并为所述原始图像建立标志矩阵;

S2、对所述原始图像进行颜色分类;

S3、判断所述颜色分类的种类数是否多于预设的颜色种类数,若是,执行 步骤S4,否则直接执行步骤S5;

S4、对所述颜色分类中多出的颜色种类进行聚类;

S5、根据所述颜色分类的类别,拆分所述原始图像的像素数据和标志数据;

S6、采用无损压缩算法对所述标志数据进行压缩,采用有损算法对所述像 素数据进行压缩;

S7、将各压缩数据按照预设顺序写入文件,得到压缩图像。

进一步地,所述标志矩阵与所述原始图像的像素矩阵大小相同,且所述标 志矩阵的初值设为0。

进一步地,所述对原始图像进行颜色分类包括:

S21、将所述标志矩阵的第一个元素设为1,获取所述原始图像第一个像素 的像素数据;

S22、以所述第一个像素的像素数据为基准,依次计算所述原始图像剩余像 素的保真度值,若所述保真度值大于设定阈值,将所述标志矩阵中相应位置的 元素设为1;

S23、将所述标志矩阵中第一个0元素设为k,并获取所述原始图像中相应 位置像素点的像素数据作为基准,依次计算所有0元素对应像素点的保真度值, 若所述保真度值大于设定阈值,将所述标志矩阵中相应位置的元素设为k;

S24、重复步骤S23,直至所述标志矩阵中不再包含0元素,其中k是大于 1小于等于p的正整数,p为所述颜色分类的种类数;

S25、计算所述标志矩阵中每种颜色分类的元素数量,按照所述元素数量由 多到少的顺序对所述k值进行升序排列和重置,使得元素数量最多的颜色分类 的k值为1,元素数量最少的颜色分类的k值为p。

进一步地,所述对所述颜色分类中多出的颜色种类进行聚类包括:

S41、以所述标志矩阵中k值大于预设颜色种类数的元素为中心,统计其邻 域内k值小于等于预设颜色种类数的各类颜色的数量,将数量最多的颜色种类 的k值作为所述标志矩阵中k值大于预设颜色种类数的元素值;

S42、对所述标志矩阵中k值大于预设颜色种类数的元素重复步骤S1,直至 所述标志矩阵中不再包含k值大于预设颜色种类数的元素;

S43、计算所述标志矩阵中每种颜色分类的元素数量,按照所述元素数量由 多到少的顺序对所述k值进行升序排列和重置,使得元素数量最多的颜色分类 的k值为1,使得元素数量最少的颜色分类的k值为预设的颜色种类数。

进一步地,所述邻域是不小于5X5的矩阵,且所述邻域内必须包含k值小 于预设颜色种类数的元素。

进一步地,所述根据所述颜色分类的类别,拆分所述原始图像的像素数据 和标志数据的方法是二叉树法,包括:

S51、按照先行后列的顺序,提取所述标志矩阵中k值为1的元素所对应的 所述原始图像的像素组成一维像素数组A1,所述原始图像的其余像素组成一维 像素数组A11

S52、按照先行后列的顺序,提取所述标志矩阵中k值非1的元素组成一维 标志数组f11,将所述标志矩阵中k值非1的元素置为0,并将所述标志矩阵按 照先行后列的顺序排列成一维标志数组f1,其中所述一维标志数组f1的值为0 或1;

S53、依次提取所述一维标志数组f11中k值为2的元素所对应的所述一维 像素数组A11的像素组成一维像素数组A2,所述一维像素数组A11的其余像素组 成一维像素数组A22

S54、依次提取所述一维标志数组f11中k值非2的元素组成一维标志数组 f22,将所述一维标志数组f11中k值非2的元素置为0,将k值为2的元素置为1, 组成一维标志数组f2,其中所述一维标志数组f2的值为0或1;

S55、重复步骤S53和S54,直至所有颜色分类的像素数据和标志数据分别 完成拆分,其中各标志数组的值为0或1。

进一步地,所述采用有损算法对所述像素数据进行压缩包括:

S61、将所述像素数据中所有像素的所有分量分别进行直流电平位移;

S62、当所述原始图像为彩色图像时,将所述像素数据中所有像素由RGB色 彩空间转换到YUV色彩空间;

S63、对像素数据中每个数组分别按照各个分量进行一维小波变换;

S64、对变换后的各分量分别进行编码处理。

进一步地,所述当所述扫描图像为彩色图像时,将所述像素数据中所有像 素由RGB色彩空间转换到YUV色彩空间之后还包括:对所述像素数据中各像素 的Y、U和V分量分别进行重采样,重采样比例为4:1或4:2。

进一步地,所述将所述像素数据中所有像素的所有分量分别进行直流电平 位移具体为:将所述像素数据中所有像素的各分量分别减去预设值,其中所述 预设值优选为128。

进一步地,所述对变换后的各分量分别进行编码处理采用的是差分脉冲编 码方式。

本发明还公开了一种图像解压缩方法,包括:

S1、获取压缩图像;

S2、对压缩后的标志数组和图像数据进行编码解压;

S3、根据解压后的标志数据,合并解压后的图像数据;

S4、将所述解压后的图像数据写入文件,得到解压的图像。

进一步地,所述对压缩后的图像数据进行编码解压包括:

S21、对所述压缩后的图像数据的每一类数组的数据进行差分脉冲反编码;

S22、将差分脉冲反编码后的数据分别补零,并进行一维小波逆变换;

S23、当所述压缩图像为彩色图像时,将所述像素数据中所有像素由YUV色 彩空间转换到RGB色彩空间;

S24、将所有像素分别进行直流电平位移,得到新的分量。

进一步地,所述当所述压缩图像为彩色图像时,将所述像素数据中所有像 素由YUV色彩空间转换到RGB色彩空间之前还包括;对变换后的每一类数组中 的分量分别按照1:4或1:2的比例进行还原,使其数据量增加到之前的4倍或2 倍。

本发明对图像的颜色信息进行分类并聚类,使颜色种类满足设定值,因此 每一类像素具有极强的相似性,因而可以在减少图像信息损失的同时,实现高 压缩比。本发明还对颜色数据和标志数据进行了拆分,降低数据维数,减少计 算量,实现压缩速度的提高,达到快速压缩的目的。另外,本发明充分发挥无 损压缩算法和有损压缩算法的优势并将其有机结合,达到最大效能,从而实现 高质、高速和高压缩比。

附图说明

图1是本发明第一实施例的图像压缩方法流程图。

图2是本发明第二实施例对彩色图像进行压缩的方法流程图。

图3是本发明第二和第四实施例的像素数据和标志数据的按类拆分示意图。

图4是本发明第三实施例对彩色图像进行解压缩的方法流程图。

图5是本发明第三和第五实施例对像素数据多次合并的示意图。

图6是本发明第二和第三实施例的压缩解压缩方法整体示意图。

图7是本发明第四实施例对灰度图像进行压缩的方法流程图。

图8是本发明第五实施例对灰度图像进行解压缩的方法流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此 处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需 要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部。

第一实施例

图1是本发明第一实施例的方法流程图。如图1所示,本发明实施例基于 颜色分类与聚类的图像压缩方法包括:

步骤11、获取原始图像,并为所述原始图像建立标志矩阵。

所述获取原始图像,对于彩色图像来说,就是获取每个像素点的R、G、B 值;对于灰度图像来说,就是获取其灰度值。

步骤12、对所述原始图像进行颜色分类,将颜色相近的像素点归为一个颜 色种类。

步骤13、判断所述颜色分类的种类数是否多于预设的颜色种类数,若是, 执行步骤14,否则直接执行步骤15。

所述预设的颜色种类数,彩色图像一般设置为8至10中的任一整数值,灰 度图像一般设置为3或4。

步骤14、对所述颜色分类中多出的颜色种类进行聚类。

如果所述颜色分类的种类数比预设的颜色种类数多,就要通过聚类算法对 多出的颜色种类进行合并,以保证所述颜色分类的种类数不多余预设的颜色种 类数。

步骤15、根据所述颜色分类的类别,拆分所述原始图像的像素数据和标志 数据,通过拆分使得所述像素数据和标志数据都由二维矩阵变为多个长度不一 的一维数组。

步骤16、采用无损压缩算法对所述标志数据进行压缩,采用有损算法对所 述像素数据进行压缩。

步骤17、将各压缩数据按照预设顺序写入文件,得到压缩图像。

将原图像的长度、宽度、色彩位数、压缩后的标志数组的长度及数据、每 类像素数组的原始长度、压缩后的各个像素分量数据依次写入文件,得到压缩 图像。

本实施例对图像的颜色信息进行分类并聚类,使颜色种类满足设定值,在 减少图像信息损失的同时,实现高压缩比。本实施例还对颜色数据和标志数据 进行了拆分,降低数据维数,减少计算量,实现压缩速度的提高,达到快速压 缩的目的。另外,本发明充分发挥无损压缩算法和有损压缩算法的优势并将其 有机结合,达到最大效能,从而实现高质、高速和高压缩比。

实施例二

图2是本发明第二实施例对彩色图像进行压缩的方法流程图。如图2所示, 本实施例对彩色图像进行压缩的方法包括:

步骤21、获取原始图像,并为所述原始图像建立标志矩阵。

所述原始图像为彩色图像,此时获取的是每个像素点的R、G、B值,同时 还得到了所述原始图像的尺寸、颜色位数等信息。

所述标志矩阵与所述原始图像的像素矩阵大小相同,且所述标志矩阵的初 值设为0。

步骤22、对所述原始图像进行颜色分类,将颜色相近的像素点归为一个颜 色种类,所述颜色分类具体包括以下子步骤:

步骤221、将所述标志矩阵的第一个元素设为1,获取所述原始图像第一个 像素的像素数据,即R、G、B值。

步骤222、以所述第一个像素的像素数据为基准,依次计算所述原始图像剩 余像素的保真度值,若所述保真度值大于设定阈值,将所述标志矩阵中相应位 置的元素设为1。

保真度通常用于评价压缩后的图像相对于原图像的失真程度,其表达式为:

GF(x,y)=1-Σi=1n(xi-yi)2Σi=1nxi2---(1)

对于彩色图像I1中的像素点(r1,g1,b1)和I2中的像素点(r2,g2,b2),其保 真度计算公式为

GF(I1,I2)=1-(r1-r2)2+(g1-g2)2+(b1-b2)2r12+g12+b12---(2)

在本实施例中,保真度值作为颜色分类的标准,具体地说,以所述第一个 像素的像素数据即R、G、B值为基准,依次计算所述原始图像剩余像素的保真 度值,此时的设定阈值为0.9,当其保真度值大于0.9时则可以认为用于计算保 真度的像素与所述第一像素属于同一类颜色,并将所述标志矩阵中相应位置的 元素设为1,表明其为与第一像素相同的第一类颜色。

步骤223、将所述标志矩阵中第一个0元素设为k,并获取所述原始图像中 相应位置像素点的像素数据作为基准,依次计算所有0元素对应像素点的保真 度值,若所述保真度值大于设定阈值,将所述标志矩阵中相应位置的元素设为k。

具体地说,经过步骤S2的筛选,所有与所述原始图像颜色同类的点都被筛 选出来,其在所述标志矩阵的相应的元素都被设置为1,表明其属于第一类颜色。 继续对所述标志矩阵中剩余的0元素进行颜色分类,即将所述标志矩阵中第一 个0元素设为k,用来表示第k类颜色,并以第一个0元素对应的像素作为基准, 依次计算所有0元素对应像素点的保真度值,若所述保真度值大于设定阈值0.9, 则认为用于计算保真度的像素也属于第k类颜色,则将所述标志矩阵中相应位 置的元素设为k。

步骤224、重复步骤113,直至所述标志矩阵中不再包含0元素,其中k是 大于1小于等于p的正整数,p为所述颜色分类的种类数,此时,所述原始图 像的所有像素点都被分到p类颜色中。

步骤225、计算所述标志矩阵中每种颜色分类的元素数量,按照所述元素数 量由多到少的顺序对所述k值进行升序排列和重置,使得元素数量最多的颜色 分类的k值为1,元素数量最少的颜色分类的k值为p。也就是说,对所述p类 颜色进行元素数量统计和大小排序,使得排序为1的第一类颜色的像素数最多, 使得排序最末的第p类颜色的像素数最少。

步骤23、判断所述颜色分类的种类数是否多于预设的颜色种类数,在本实 施例中,预设的彩色图像的颜色种类数为8。但是所述原始图像的颜色分类的种 类数p大于8,所以需要通过聚类算法对多出的颜色种类进行合并,图2中所述 步骤23未示出。

步骤24、对所述颜色分类中多出的颜色种类进行聚类。具体步骤包括:

步骤241、以所述标志矩阵中k值大于8的元素为中心,统计其邻域内k值 小于等于8的各类颜色的数量,将数量最多的颜色种类的k值作为所述标志矩 阵中k值大于8的中心元素的元素值,其中,所述邻域是不小于5X5的矩阵, 且所述邻域内必须包含k值小于预设颜色种类数的元素。

以所述标志矩阵中k值为10的一个元素为例,统计其5X5领域内k值小于 等于8的各类颜色的数量,发现所述领域内有九个元素的k值为8,其他k值的 元素数量都小于九,那么就将所述k值为10的元素设为8。如果所述5X5领域 内的k值都大于8,那么可以将所述领域扩展到7X7或9X9等范围,以保证所述 邻域内必须包含k值小于8的元素,使得聚类能够实现。

需要特别说明的是,对所述原始图像中位于边界的像素进行聚类时,只统 计所述原始图像边界范围内的像素点。

步骤242、对所述标志矩阵中k值大于8的元素重复步骤241,直至所述标 志矩阵中不再包含k值大于8的元素,完成聚类。

步骤243、计算所述标志矩阵中每种颜色分类的元素数量,按照所述元素数 量由多到少的顺序对所述k值进行升序排列和重置,使得元素数量最多的颜色 分类的k值为1,使得元素数量最少的颜色分类的k值为预设的颜色种类数。也 就是说,聚类完成后,需要对最终得到的8类颜色进行元素数量统计和大小排 序,使得排序为1的第一类颜色的像素数最多,使得排序最末的第8类颜色的 像素数最少。

步骤25、根据所述颜色分类的类别,拆分所述原始图像的像素数据和标志 数据,通过拆分使得所述像素数据和标志数据都由二维矩阵变为多个长度不一 的一维数组。具体地说,如图3所示,拆分所述原始图像的像素数据和标志数 据包括:

步骤251、按照先行后列的顺序,提取所述标志矩阵中k值为1的元素所对 应的所述原始图像的像素组成一维像素数组A1,所述原始图像的其余像素组成 一维像素数组A11,其中所述一维像素数组A1就是第一类颜色的像素数据。

步骤252、按照先行后列的顺序,提取所述标志矩阵中k值非1的元素组成 一维标志数组f11,将所述标志矩阵中k值非1的元素置为0,并将所述标志矩阵 按照先行后列的顺序排列成一维标志数组f1,其中所述一维标志数组f1的值为0 或1,就是第一类颜色的标志数据。

步骤253、依次提取所述一维标志数组f11中k值为2的元素所对应的所述 一维像素数组A11的像素组成一维像素数组A2,所述一维像素数组A11的其余像 素组成一维像素数组A22,其中所述一维像素数组A2就是第二类颜色的像素数 据。

步骤254、依次提取所述一维标志数组f11中k值非2的元素组成一维标志 数组f22,将所述一维标志数组f11中k值非2的元素置为0,将k值为2的元素 置为1,组成一维标志数组f2,其中所述一维标志数组f2的值为0或1,就是第 二类颜色的标志数据。

步骤255、重复步骤253和254,直至所有颜色分类的像素数据和标志数据 分别完成拆分,其中各标志数组的值为0或1。

步骤26、采用无损压缩算法对所述标志数据进行压缩,采用有损算法对所 述像素数据进行压缩,这一步由两个并行的子步骤完成,包括:

步骤26A、采用无损压缩算法对所述标志数据进行压缩。

无损压缩算法是指重构压缩数据(还原,解压缩),而重构数据与原来数据完 全相同。该方法用于那些要求重构信号与原始信号完全一致的场合,如文本数 据、程序和特殊应用场合的图像数据(如指纹图像、医学图像等)的压缩。这类算 法压缩率较低,一般为1/2~1/5。典型的无损压缩算法有:Shanno-Fan编码、 Huffman(哈夫曼)编码、算术编码、游程编码、LZW编码等。

在本实施例中,优选算数编码方法对所述标志数据进行压缩。算术编码属 于无失真的非分组信源编码,它将一条信源符合序列映射成一条码序列。编码 时,输入的信源符号序列连续地进入编码器,通过编码器的运算得到连续的输 出。它将一条信源消息序列映射到[0,1)区间中的一个子区间(这种映射是一一 对应的关系,以保证唯一译码),然后取这个子区间内的一点作为码字。通过选 择合适的码长,可以使得当信源序列长度足够大时,每个信源符号的平均码长 接近信源的熵。

算术编码先获得信源消息的概率分布表,然后通过计算累积概率得到每一 个符号对应的码区间。在确定了码区间之后,编码过程可以实时进行。算法接 收一个符号,查表得到该符号的上界和下界,可以用区间内的一个小数来表示 该符号。如果信号没有结束,则取下一个符号,把符号序列映射到相应的码区 间上的一点。如此反复计算,直到结束。

在本发明实施例中,将所述标志数据f1、f2...fp-1(其中p为颜色种类数)顺 序连接后作为输入进行算术编码压缩,得到压缩后的标志数组zip_flag。

步骤26B、采用有损算法对所述像素数据进行压缩,包括:

步骤261、将所述像素数据中所有像素的所有分量分别进行直流电平位移。

所谓直流电平位移,是指对图像中的每个像素都减去一个值2p-1,这里p为 图像的精度,即图像中绝对值最大的像素值所需的比特数。这样可以将无符号 的像素值转换为有符号的值,使得像素值的动态范围关于0对称,也就使离散 小波变换后系数的动态范围不会过大,有利于编码。在解码器端,只需要在反 变换后加上一个2p-1就可以了。

在本实施例中,对所述一维像素数据A1、A2、……、Ap(其中p为颜色种 类数)每一类像素数组中所有r,g和b分量分别进行直流电平位移。由于彩色 图像的RGB值的范围为[0,255],因而依据直流电平位移的方法,减去最大值 的一半,即分别减去128,得到新的分量r',g'和b'。

步骤262、将所述像素数据中所有像素由RGB色彩空间转换到YUV色彩空间。

所述一维像素数据A1、A2、……、Ap(其中p为颜色种类数)中的r',g' 和b'分量分别由RGB色彩空间转换到YUV色彩空间,得到分量y,u和v。

在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(点耦合器件) 摄像机,它把摄得的彩色图像信号,经分色、分别放大校正得到RGB,再经过矩 阵变换电路得到亮度信号Y和两个色差信号R-Y、B-Y,最后发送端将亮度和色 差三个信号分别进行编码,用同一信道发送出去。这就是我们常用的YUV色彩 空间。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。 如果只有Y信号分量而没有U、V分量,那么这样表示的图就是黑白灰度图。

YUV是编译true-color颜色空间(color space)的种类,“Y”表示明亮度 (Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma)。 YUV最大的优点在于只需占用极少的带宽。

YUV与RGB可以实现相互转换:

由RGB到YUV的转换公式为

YUV=0.2990.5870.114-0.14713-0.288860.4360.615-0.51498-0.10001RGB---(3)

由YUV到RGB的转换公式为

RGB=101.139831-0.39465-0.5806012.032110YUV---(4)

步骤263、对所述像素数据中各像素的y,u和v分量分别进行重采样,重 采样比例为4:1或4:2,得到y'、u'和v',使其数据量减少为原来的1/4或 1/2。

大多数YUV格式平均使用的每像素位数都少于24位元。主要的采样 (subsample)格式有4:2:0、4:2:2、4:1:1和4:4:4。YUV的表示法称为A:B:C 表示法:

4:4:4表示完全取样。

4:2:2表示2:1的水平取样,没有垂直下采样。

4:2:0表示2:1的水平取样,2:1的垂直下采样。

4:1:1表示4:1的水平取样,没有垂直下采样。

YUV444是最逼真的格式,一格不删(24bits),即每4个Y,配有4个U, 还有4个V;YUV422则是在UV格式上减半,即每4个Y,配2个U,2个V;YUV411 则是在UV上减至1/4之格式,即每4个Y,配1个U,再配1个V。

将图像由RGB色彩空间转换为YUV色彩空间,并对U、V分量进行取样,可 减少图像的数据量,从而实现压缩。重采样可以通过每四个点求平均值的方法 实现,或者对所有值进行曲线拟合,再进行采样求值实现。一般使用求均值的 方式实现,快速简单。

重采样可以有效抑制扫描图像的背景噪声,使解压的图像对比度更高,视 觉上感觉更加清晰。

步骤264、对像素数据中每个数组分别按照各个分量进行一维小波变换。

将每一类数组中重采样后的y'、u'和v'分量分别进行一维小波变换(DWT), 默认变换级数为6。当分量的数据长度小于26时,采用其允许的最大变换级数 进行变换。

小波转换(wavelet transform)是指用有限长或快速衰减的、称为母小波 (mother wavelet)的振荡波形来表示信号。传统的信号理论,是建立在傅里叶 分析基础上的。而傅里叶变换作为一种全局性的变换,其有一定的局限性,它 只能在频域里具有局部分析的能力,不能较好的解决突变信号与非平稳信号的 问题。小波变换(DWT)是傅里叶变换的发展。它很好的解决了时-频局部化问 题,通过平移和缩放等运算,可实现对信号进行不同尺度的细化分析,解决了 傅里叶变换不能解决的许多困难问题。

步骤265、对变换后的各分量分别进行编码处理。采用DPCM的方法对变 换后的各分量分别进行编码处理,即除第一个数据外,新数组中的数据皆为变 换后数组中对应位置的数据与前一个数据的差值。

DPCM(Differential Pulse Code Modulation)差分脉冲编码调制,简称差值 编码。它是利用样本与样本之间存在的信息冗余度来进行编码的一种数据压缩 技术。差分脉冲编码调制的思想是,根据过去的样本去估算下一个样本信号的 幅度大小,这个值称为预测值,然后对实际信号值与预测值之差进行量化编码, 从而就减少了表示每个样本信号的位数。它与脉冲编码调制(PCM)不同的是, PCM是直接对采样信号进行量化编码,而DPCM是对实际信号值与预测值之差 进行量化编码,存储或者传送的是差值而不是幅度绝对值,这就降低了传送或 存储的数据量。此外,它还能适应大范围变化的输入信号。

设存在数组X=[x0,x1,x2,...,xp],则其经DPCM编码后为

X'=[x0,x1-x0,x2-x1,...,xp-xp-1]。

设存在DPCM编码的结果数组Y'=[y0,y1,y2,...,yp],则其经DPCM解码后 为

Y=[y0,y1+y0,y2+y1+y0,...,yp+yp-1+...+y0]。

步骤27、将各压缩数据按照预设顺序写入文件,得到压缩图像。

具体地说,就是将原图像的长度、宽度、色彩位数、压缩后的标志数组zip_flag 的长度及数据、每类像素数组的原始长度、变换后的长度、DWT变换的级数及 DPCM编码后y',u'和v'的低频分量数据依次写入文件,得到压缩图像。

实施例三

对应地,本实施例提供一种方法对通过实施例二生成的压缩文件进行解压, 如图4所示,本实施例所述的对彩色图像解压缩方法包括:

步骤31、获取压缩图像。

从压缩图像中依次读入原图像的长度、宽度、色彩位数、各标志数组的长 度、压缩后的标志数组zip_flag的长度及数据、每类数组的原始长度、变换后 的长度、DWT变换的级数及y,u和v的低频分量数据。

步骤32、对压缩后的标志数组和图像数据进行编码解压,包括两个子步骤:

步骤32A、将压缩后的标志数组zip_flag作为输入进行算术编码解压,并 根据读取的各标志数组的长度得到f1、f2...fp-1(其中p为颜色种类数)。

步骤32B、对压缩后的图像数据进行编码解压,包括:

步骤321、将每一类数组中的y、u和v分量分别进行DPCM反编码处理。

步骤322、将DPCM反编码后的每一类数组的y、u和v分量分别补零(补零 后的长度为每类数组原始长度的1/4或1/2),然后进行一维DWT逆变换。DWT 变换的级数由读入的相应级数决定,为默认值6或者允许的最大变换级数。

步骤323、对变换后的每一类数组中y、u和v分量分别按照1:4或1:2的 比例进行还原,得到y',u'和v',使其数据量增加到之前的4倍或2倍。

步骤324、将A1、A2...Ap(其中p为颜色种类数)中的分量y'、u'和v'分别 由YUV色彩空间转换到RGB色彩空间,得到分量r,g和b。

步骤325、对A1、A2...Ap(其中p为颜色种类数)中的r,g和b分量分别 进行直流电平位移,即分别增加128,得到新的分量r',g'和b'。

步骤33、根据解压后的标志数据,合并解压后的图像数据。

具体地说,按照fp-1的标志,将Ap'和Ap-1'合并为A(p-2)(p-2)',完成第一次合并; 按照fp-2的标志,将A(p-2)(p-2)'和Ap-2'进行合并,从而获得A(p-3)(p-3)',完成第二次 合并;依此类推,根据标志数组,将像素数组进行合并,从而得到最终的二维 图像,实现压缩文件的解压,如图5所示。

步骤34、将所述解压后的图像数据写入文件,得到解压的图像。

图6是本发明第二和第三实施例的压缩解压缩方法整体示意图。

本发明第二实施例和第三实施例针对彩色图像进行压缩和解压缩,在对像 素数据进行有损压缩的过程中,将像素由RGB色彩空间转换到YUV色彩空间, 并对YUV重新采样,进一步减少了图像的数据量,提高了压缩比。

实施例四

图7是本发明第四实施例对灰度图像进行压缩的方法流程图。如图7所示, 本实施例对灰度图像进行压缩的方法包括:

步骤41、获取原始图像,并为所述原始图像建立标志矩阵。

所述原始图像为灰度图像,此时获取的是每个像素点的灰度值,同时还得 到了所述原始图像的尺寸、灰度位数等信息。

所述标志矩阵与所述原始图像的像素矩阵大小相同,且所述标志矩阵的初 值设为0。

步骤42、对所述原始图像进行颜色分类,将灰度相近的像素点归为一个颜 色种类,所述颜色分类具体包括以下步骤:

步骤421、将所述标志矩阵的第一个元素设为1,获取所述原始图像第一个 像素的像素数据,即灰度值。

步骤422、以所述第一个像素的像素数据为基准,依次计算所述原始图像剩 余像素的保真度值,若所述保真度值大于设定阈值,将所述标志矩阵中相应位 置的元素设为1。

在本实施例中,保真度值的定义与第二实施例一致,只是计算过程中只将 灰度值带入公式(1)进行计算。

步骤423、将所述标志矩阵中第一个0元素设为k,并获取所述原始图像中 相应位置像素点的像素数据作为基准,依次计算所有0元素对应像素点的保真 度值,若所述保真度值大于设定阈值,将所述标志矩阵中相应位置的元素设为k。

步骤424、重复步骤423,直至所述标志矩阵中不再包含0元素,其中k是 大于1小于等于p的正整数,p为所述颜色分类的种类数,此时,所述原始图像 的所有像素点都被分到p类颜色中。

步骤425、计算所述标志矩阵中每种颜色分类的元素数量,按照所述元素数 量由多到少的顺序对所述k值进行升序排列和重置,使得元素数量最多的颜色 分类的k值为1,元素数量最少的颜色分类的k值为p。也就是说,对所述p类 颜色进行元素数量统计和大小排序,使得排序为1的第一类颜色的像素数最多, 使得排序最末的第p类颜色的像素数最少。

步骤43、判断所述颜色分类的种类数是否多于预设的颜色种类数,在本实 施例中,预设的灰度图像的颜色种类数为4。但是所述原始图像的颜色分类的种 类数p大于4,所以需要通过聚类算法对多出的颜色种类进行合并,图7中所述 步骤43未示出。

步骤44、对所述颜色分类中大于预设颜色种类值的颜色分类进行聚类。

步骤45、根据所述颜色分类的类别,拆分所述原始图像的像素数据和标志 数据,通过拆分使得所述像素数据和标志数据都由二维矩阵变为多个长度不一 的一维数组,如图3所示。

上述步骤44和步骤45基本原理和方法都与本发明第一实施例对彩色图像 进行压缩的方法相同,这里不再赘述。

步骤46、采用无损压缩算法对所述标志数据进行压缩,采用有损算法对所 述像素数据进行压缩,这一步由两个并行的子步骤完成,包括:

步骤46A、采用无损压缩算法对所述标志数据进行压缩。

将所述标志数据f1、f2...fp-1(其中p为颜色种类数)顺序连接后作为输入进 行算术编码压缩,得到压缩后的标志数组zip_flag。

步骤46B、采用有损算法对所述像素数据进行压缩,包括:

步骤461、将所述像素数据中所有像素的所有分量分别进行直流电平位移。

对所述一维像素数据A1、A2、……、Ap(其中p为颜色种类数)每一类像 素数组中所有灰度分量分别进行直流电平位移。由于灰度值的范围为[0,255], 因而依据直流电平位移的方法,减去最大值的一半,即分别减去128,得到新的 灰度值。

步骤462、对像素数据中每个数组分别按照各个分量进行一维小波变换。

对新的灰度值进行一维小波变换(DWT),默认变换级数为8。当分量的数据 长度小于28时,采用其允许的最大变换级数进行变换。

步骤463、对变换后的各分量分别进行编码处理。采用DPCM的方法对变 换后的各分量分别进行编码处理,即除第一个数据外,新数组中的数据皆为变 换后数组中对应位置的数据与前一个数据的差值。

步骤47、将各压缩数据按照预设顺序写入文件,得到压缩图像。

具体地说,就是将原图像的长度、宽度、色彩位数、压缩后的标志数组zip_flag 的长度及数据、每类像素数组的原始长度、变换后的长度、DWT变换的级数及 DPCM编码后的低频分量数据依次写入文件,得到压缩图像。

实施例五

对应地,本实施例提供一种方法对通过实施例四生成的压缩文件进行解压, 如图8所示,本实施例所述的对灰度图像解压缩方法包括:

步骤51、获取压缩图像。

从压缩图像中依次读入原图像的长度、宽度、色彩位数、各标志数组的长 度、压缩后的标志数组zip_flag的长度及数据、每类数组的原始长度、变换后的 长度、DWT变换的级数及DPCM变换后的低频分量数据。

步骤52、对压缩后的标志数组和图像数据进行编码解压,包括两个子步骤:

步骤52A、将压缩后的标志数组zip_flag作为输入进行算术编码解压,并根 据读取的各标志数组的长度得到f1,f2,...,fp-1(其中p为灰度种类数)。

步骤52B、对压缩后的图像数据进行编码解压,包括:

步骤521、将每一类数组中的数据进行DPCM反编码。

步骤522、将DPCM反编码后的数据分别补零后(补零后的长度为每类数 组的原始长度)进行一维DWT逆变换。DWT变换的级数由读入的相应级数决 定,为默认值8或者允许的最大变换级数。

步骤523、对A1,A2,...,Ap(其中p为灰度种类数)中的逆变换结果分别 进行直流电平位移,即分别增加128,得到复原的灰度值。

步骤53、根据解压后的标志数据,合并解压后的图像数据。

具体地说,按照fp-1的标志,将Ap'和Ap-1'合并为A(p-2)(p-2)',完成第一次合并; 按照fp-2的标志,将A(p-2)(p-2)'和Ap-2'进行合并,从而获得A(p-3)(p-3)',完成第二次 合并;依此类推,根据标志数组,将像素数组进行合并,从而得到最终的二维 图像,实现压缩文件的解压,如图5所示。

步骤54、将所述解压后的图像数据写入文件,得到解压的图像。

本发明第四实施例和第五实施例针对灰度图像进行压缩和解压缩,在对像 素数据进行有损压缩的过程中,所述像素数据不需要由RGB色彩空间转换到YUV 色彩空间,减少了压缩流程,进一步提高了图像压缩速度。

显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用 通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计 算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来 实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别 制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电 路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员 会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进 行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽 然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以 上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例, 而本发明的范围由所附的权利要求范围决定。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号