精华内容
下载资源
问答
  • matlab图像压缩编码.rar

    2019-12-02 11:09:06
    Matlab实现常用图像压缩编码。包含DM编码、变换编码(FFT和DCT)、算术编码、行程编码、Huffman编码、线性预测编码和一个近似的JPEG编码过程
  • 基于MATLAB的图像压缩程序(包含各种压缩编码与解码方法),算法包含详细代码,是图像编码技术的总结。
  • 图像处理 有损压缩-变换编码

    千次阅读 2020-06-12 11:41:06
    转换通常本身是无损的(完全可逆的),但可用于实现更好的(更针对性的)量化,从而导致原始输入的质量降低(无损压缩)。 压缩变换编码目的 将数据(图像/视频)转换成易于压缩的形式。 如何进行 像素 A B ...

    变换编码概念

    变换编码或称转换编码,对诸如音频信号或摄影图像之类的“自然”数据经过一数学转换后映射至另一值域后再进行编码处理。常用于音频信号编码和图像/视频信号编码。变换编码经常与量化一起使用,进行有损数据压缩。因为转换通常本身是无损的(完全可逆的),但可用于实现更好的(更有针对性的)量化,从而导致原始输入的质量降低(无损压缩)。

    在视频和音频信号数字化后,变换编码就更常用了。从最常见的JPEG静止图像压缩标准到MPEG等运动图像压缩标准,都使用了变换编码。

    常用的变换

    常使用的数学转换傅里叶变换、离散余弦变换、小波变换等。

    最常用的变换是离散余弦变换(DCT),其次还有小波变换、Hadamard变换等等。离散余弦变换在性能上接近K-L变换(Karhunen-Loève变换),能够很好的实现能量集中,广泛的应用于几乎所有的视频压缩标准中。

    另外,也可以说从模拟信号抽样得到数字信号的过程也是一种变换编码。

    压缩变换编码目的

    将数据(图像/视频)转换成易于压缩的形式。

    压缩变换示例

    2*2像素

    AB
    CD

    原格式

    像素点存储位数 (Bits)
    A8
    B8
    C8
    D8
    Total32

    变换过程

    变换逆变换
    X0 = AA = X0
    X1 = B -AB = X1 + X0
    X2 = C - AC = X2 + X0
    X3 = D - AD = X3 + X0

    变换后

    像素点存储位数 (Bits)
    A = X08
    B = X1 + X04
    C = X2 + X04
    D = X3 + X04
    Total20

    特征

    • 一种有损压缩技术
    • 通常用于转换“自然”数据,例如音频信号或摄影图像。
    • 从数据中删除REDUNDANCY
    • 降低数据的带宽
    • 用较少的数据形成图像
    • JPEG是变换编码的实例
    展开全文
  • 问题1: 实现行程编码压缩, 计算原图和压缩以后的尺寸,计算压缩率并比较分析; 问题2: 实现哈夫曼压缩, 计算原图和压缩以后的尺寸,计算压缩率并比较分析.
  • 用MATLAB做的基于霍夫曼编码的图像压缩,里面个文件时专门的霍夫曼编码函数,自己写的。
  • 图像压缩编码概述

    千次阅读 2017-04-10 14:25:17
    1.图像压缩编码的必要性 现在是信息爆炸时代,图像数据量特别大,故此在传输或者存储时都需要对数据进行有效的压缩。图像压缩就是对图像数据按照一定的规则进行变换和组合,用少的数据量表示影像。 2.图像压缩编码...

    1.图像压缩编码的必要性

    现在是信息爆炸时代,图像数据量特别大,故此在传输或者存储时都需要对数据进行有效的压缩。图像压缩就是对图像数据按照一定的规则进行变换和组合,用少的数据量表示影像。

    2.图像压缩编码的可行性

    大多数图像内相邻像素之间有较大的相关性,这称为空间冗余。序列图像前后帧内相邻之间有较大的相关性,这称为时间冗余。而压缩就是为了消除这些冗余。

    图像的规则性可以用图像的自相关系数来衡量,图像越规则,自相关系数越大,图像的空间冗余就越大。

    而在压缩过程中可以除去这些人眼不敏感的信息,从而实现数据压缩。

    3.图像压缩编码的分类

    图像压缩编码技术从不同的角度出发,有不同的分类方法。根据压缩过程有无信息损失,可分为有损编码和无损编码。根据压缩原理进行划分,可以分为预测编码、变换编码、统计编码等。

    a.有损编码

    有损编码又称为不可逆编码,是指对图像进行有损压缩,致使解码重新构造的图像与原始图像存在一定的失真,即丢失了了部分信息。由于允许一定的失真,这类方法能够达到较高的压缩比。有损压缩多用于数字电视、静止图像通信等领域

    b.无损编码

    无损压缩又称可逆编码,是指解压后的还原图像与原始图像完全相同,没有任何信息的损失。这类方法能够获得较高的图像质量,但所能达到的压缩比不高,常用于工业检测、医学图像、存档图像等领域的图像压缩中

    c.预测编码

    预测编码是利用图像信号在局部空间和时间范围内的高度相关性,以已经传出的近邻像素值作为参考,预测当前像素值,然后量化、编码预测误差。预测编码广泛应用于运动图像、视频编码如数字电视、视频电话中。

    d.变换编码

    变换编码是将空域中描述的图像数据经过某种正交变换(如离散傅里叶变换DFT、离散余弦变换DCT、离散小波变换DWT等)转换到另一个变换域(频率域)中进行描述,变换后的结果是一批变换系数,然后对这些变换系数进行编码处理,从而达到压缩图像数据的目的。

    e.统计编码

    统计编码也称为熵编码,它是一类根据信息熵原理进行的信息保持型变字长编码。编码时对出现概率高的事件(被编码的符号)用短码表示,对出现概率低的事件用长码表示。在目前图像编码国际标准中,常见的熵编码方法有哈夫曼(Huffman)编码和算术编码。

    4.图像压缩的评价指标

    压缩比和失真性是衡量图像压缩的重要指标

    压缩比:图像压缩前后的信息量之比

    失真性:主要针对有损编码而言,是指图像经有损压缩,然后将其解码后的图像与原图像之间的误差。有损压缩会使原始图像数据不能完全恢复,信息受到一定的损失,但压缩比较高,复原后的图像存在一定的失真。

    5.对如下图像进行编码

    原始图像



    压缩编码1

    clear
    I=imread('pears.png');
    imshow(I)
    IGRAY=rgb2gray(I);
    [m n]=size(IGRAY);
    c=I(1,1);RLEcode(1,1:3)=[1 1 c];
    t=2;
    for k=1:m
        for j=1:n
            if(not(and(k==1,j==1)))
                if(not(I(k,j)==c))
                    RLEcode(t,1:3)=[k j I(k,j)];
                    c=I(k,j);
                    t=t+1;
                end
            end
        end
    end

    效果图片


    压缩编码2

    clear
    I=imread('pears.png');
    imshow(I)
    IBM=im2bw(I);
    [m n]=size(IBM);
    c=I(1,1);RLEcode(1,1:3)=[1 1 c];
    t=2;
    for k=1:m
        for j=1:n
            if(not(and(k==1,j==1)))
                if(not(IBM(k,j)==c))
                    RLEcode(t,1:3)=[k j IBM(k,j)];
                    c=IBM(k,j);
                    t=t+1;
                end
            end
        end
    end

    效果图片


    从对比可见,压缩编码2效果更好,更可以达到压缩效果。

    展开全文
  • 哈夫曼编码实现图像压缩,是自己整理的讲稿,希望对大家有用
  • 问题1: 实现行程编码压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析; 问题2: 实现哈夫曼压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析; 问题3: 实现...

    要求:

    无损编码/压缩算法:

    • 问题1: 实现行程编码压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析;
    • 问题2: 实现哈夫曼压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析;
    • 问题3: 实现一维无损预测压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析.

    1、问题及说明

    (1)实现行程编码压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析。

    基本思路是把数据看成一个线性序列,而这些数据序列组织方式分成两种情况:一种是连续的重复数据块,另一种是连续的不重复数据块。对于连续的重复数据块采用的压缩策略是用一个字节表示数据块重复的次数,然后在这个数据字节后面存储对应的数据字节本身;对于连续不重复的数据序列,表示方法和连续的重复数据块序列的表示方法一样,只不过前面的数据重数属性字节的内容为1。

    (2)实现哈夫曼压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析

    基本思路是给定有权重的一系列数据(带权重),从中挑选最小权重的两个数据,组成一棵树,得到的父节点再插入到数据系列当中。

    (3)实现一维无损预测压缩, 肉眼观察压缩效果,并计算原图和压缩以后的尺寸,计算压缩率并比较分析。

    基本思想是通过对每个像素中新增信息进行提取和编码,以此来消除像素间的冗余,这里新增信息是指像素当前实际值和预测值的差。也就是说,如果已知图像一个像素离散幅度的真实值,利用其相邻像素的相关性,预测它的可能数值,再求两者的差。利用这种具有预测性质的差值,再量化、编码传输,其效果更佳,这种方法称为DPCM法。

    2、效果展示

    (1)行程编码压缩

    (2)哈夫曼压缩

    (3)一维无损预测压缩

    3、实验结果分析

    1)RLE压缩方案是一种极其成熟的压缩方案,特点是无损失压缩,既节省了磁盘空间又不损失任何图像数据。RLE有一个缺点,如果内容像ABCABCABC的话使用这种算法文件会增大,就是1A1B1C1A1B1C1A1B1C了,更长,就达不到压缩的效果了。

    上面两张图片,由于其内容序列的优劣,它们的压缩比就不同。

    2)因为要用额外的位保存和传输Huffman树而消耗掉一些存储位,所以为了编解码的方便,本已经减少的数据量又增加了一些。

    如果文件比较大的话,这一点的数据根本不算什么,所占比例很小。但是,如果压缩的文件本来就很小的话,那么这就不少了。一般来说,经典的Huffman算法的压缩比不是很高,这是无损压缩的“通病”。

    4.完整代码

    (1)RLE

    clear
    I1=imread('lena.tiff');
     
    %转换为二值图像
    J=rgb2gray(I1);
    I2=J(:);
    I2length=length(I2);
    figure,imshow(J);
     
    for i=1:1:I2length
        if I2(i)>=127
            I2(i)=255;
        else I2(i)=0;
        end
    end
     
    I3=reshape(I2,512,512);         %重建二维数组图像
    figure,imshow(I3);
     
    %对原图像进行行程编码
    X=I3(:);                        %令X为新建的二值图像的一维数据组
    x=1:1:length(X);                %显示行程编码之前的图像数据
    figure,plot(x,X(x));
    j=1;
    I4(1)=1;
     
    %行程编码程序段
    for z=1:1:(length(X)-1)
        if X(z)==X(z+1)
            I4(j)=I4(j)+1;
        else data(j)=X(z);          %data(j)代表相应的像素数据
            j=j+1;
            I4(j)=1;
        end
    end
     
    data(j)=X(length(X));           %最后一个像素数据赋值给data
    I4length=length(I4);            %计算行程编码后的所占字节数
    y=1:1:I4length;                 %显示编码后数据信息
    figure,plot(y,I4(y));
    CR=I4length/I2length;           %比较压缩前后的大小
    disp(['原图 Bit:                  ',num2str(I2length),' bit']);
    disp(['压缩图像 Bit:               ',num2str(I4length),' bit']);
    disp(['压缩率:                     ',num2str(CR)]);

    (2)哈夫曼压缩

    clear;
    clear all;
    A=imread('baboon.tiff');
    I=rgb2gray(A);
     
    [M,N] = size(I);
    I1 = I(:);
    P = zeros(1,256);
    %获取各符号的概率;
    for i = 0:255
        P(i+1) = length(find(I1 == i))/(M*N);
    end
     
    k = 0:255;
    dict = huffmandict(k,P); %生成字典
    enco = huffmanenco(I1,dict); %编码
    deco = huffmandeco(enco,dict); %解码
    Ide = col2im(deco,[M,N],[M,N],'distinct'); %把向量重新转换成图像块;
     
    decolength=length(deco); 
    encolength=length(enco); 
     
    subplot(1,2,1);imshow(I);title('原图');
    subplot(1,2,2);imshow(uint8(Ide));title('压缩');
     
    OB=encolength;
    sumcode=decolength;
    CR=sumcode/OB;
    disp(['原图 Bit:                  ',num2str(OB),' bit']);
    disp(['压缩图像 Bit:               ',num2str(sumcode),' bit']);
    disp(['压缩率:                     ',num2str(CR)]);

    (3)一维无损预测压缩

    I=imread('baboon.tiff'); 
     
    I=rgb2gray(I);
    x=double(I);
    y=LPCencode(x);   
    xx=LPCdecode(y);
     
    figure(1);
    subplot(121);
    imshow(I);
    subplot(122);
    imshow(mat2gray(y));
     
    e=double(x)-double(xx);
    [m, n]=size(e);
    erms=sqrt(sum(e(:).^2)/(m*n))    
     
    figure(2);
    subplot(121);
    [h, f]=hist(x(:));    
    bar(f, h, 'k');
     
    subplot(122);
    [h, f]=hist(y(:));    
    bar(f, h,'k');

     

     

    展开全文
  • 基于哈夫曼编码的文本文件压缩与解压缩,使用c语言,实际只是编码解码,不应该称为解压缩,因为编码后文件会更大
  • 草稿版代码 内容超详细 可压缩任何文件类型 亲测可用 100%还原
  • 数字图像霍夫曼编码压缩编码MATLAB实现
  • 基于Matlab的图像压缩编码

    热门讨论 2010-03-23 15:56:44
    JPEG采取多种编码方式,包含行程编码(Run Length Coding)和哈夫曼(Huffman)编码很高的压缩比。在编码前,先对数据进行分块,离散余弦变换(DCT)及量化,保留能量大的低频信号,丢弃高频信号以达到压缩。解码...
  • 利用霍夫曼编码对图像压缩、解压缩
  • java编写的huffman编码对文本文件进行压缩和解压,完整的测试文件、java文件和测试结果文件,还附有详细的算法设计说明。良心资源,值得拥有!
  • 数据结构课程设计用哈夫曼编码实现文件压缩: 一、实验题目: 用哈夫曼编码实现文件压缩 二、实验目的: 1、了解文件的概念。 2、掌握线性链表的插入、删除等算法。 3、掌握Huffman树的概念及构造方法。 4、掌握...
  • 语音压缩编码语音压缩语音压缩编码语音压缩语音压缩编码语音压缩
  • Zip解压-可设置压缩文件编码方式

    热门讨论 2015-09-19 22:32:24
    jdk自带的ZipEntry类解压zip文件,中文文件会出现乱码,jar包是根据Apache的解压缩包进行改造的,也适合于Android使用
  • 视频压缩编码和音频压缩编码的基本原理

    万次阅读 多人点赞 2014-06-03 00:01:20
    本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。

    本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。

    1.视频编码基本原理

    (1)  视频信号的冗余信息

    以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:

    13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s

    如此大的数据量如果直接进行存储或传输将会遇到很大困难,因此必须采用压缩技术以减少码率。数字化后的视频信号能进行压缩主要依据两个基本条件:

    l  数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。

    l  视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。

    数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。一般的数字视频压缩编码方法都是混合编码,即将变换编码,运动估计和运动补偿,以及熵编码三种方式相结合来进行压缩编码。通常使用变换编码来消去除图像的帧内冗余,用运动估计和运动补偿来去除图像的帧间冗余,用熵编码来进一步提高压缩的效率。下文简单介绍这三种压缩编码方法。

    (2)  压缩编码的方法

    (a)  变换编码

    变换编码的作用是将空间域描述的图像信号变换到频率域,然后对变换后的系数进行编码处理。一般来说,图像在空间上具有较强的相关性,变换到频率域可以实现去相关和能量集中。常用的正交变换有离散傅里叶变换,离散余弦变换等等。数字视频压缩过程中应用广泛的是离散余弦变换。

    离散余弦变换简称为DCT变换。它可以将L*L的图像块从空间域变换为频率域。所以,在基于DCT的图像压缩编码过程中,首先需要将图像分成互不重叠的图像块。假设一帧图像的大小为1280*720,首先将其以网格状的形式分成160*90个尺寸为8*8的彼此没有重叠的图像块,接下来才能对每个图像块进行DCT变换。

    经过分块以后,每个8*8点的图像块被送入DCT编码器,将8*8的图像块从空间域变换为频率域。下图给出一个实际8*8的图像块例子,图中的数字代表了每个像素的亮度值。从图上可以看出,在这个图像块中各个像素亮度值比较均匀,特别是相邻像素亮度值变化不是很大,说明图像信号具有很强的相关性。


    一个实际8*8图像块

    下图是上图中图像块经过DCT变换后的结果。从图中可以看出经过DCT变换后,左上角的低频系数集中了大量能量,而右下角的高频系数上的能量很小。


    图像块经过DCT变换后的系数

    信号经过DCT变换后需要进行量化。由于人的眼睛对图像的低频特性比如物体的总体亮度之类的信息很敏感,而对图像中的高频细节信息不敏感,因此在传送过程中可以少传或不传送高频信息,只传送低频部分。量化过程通过对低频区的系数进行细量化,高频区的系数进行粗量化,去除了人眼不敏感的高频信息,从而降低信息传送量。因此,量化是一个有损压缩的过程,而且是视频压缩编码中质量损伤的主要原因。

    量化的过程可以用下面的公式表示:

         

    其中FQ(u,v)表示经过量化后的DCT系数;F(u,v)表示量化前的DCT系数;Q(u,v)表示量化加权矩阵;q表示量化步长;round表示归整,即将输出的值取为与之最接近的整数值。

    合理选择量化系数,对变换后的图像块进行量化后的结果如图所示。


    量化后的DCT系数

    DCT系数经过量化之后大部分经变为0,而只有很少一部分系数为非零值,此时只需将这些非0值进行压缩编码即可。

    (b)  熵编码

    熵编码是因编码后的平均码长接近信源熵值而得名。熵编码多用可变字长编码(VLC,Variable Length Coding)实现。其基本原理是对信源中出现概率大的符号赋予短码,对于出现概率小的符号赋予长码,从而在统计上获得较短的平均码长。可变字长编码通常有霍夫曼编码、算术编码、游程编码等。其中游程编码是一种十分简单的压缩方法,它的压缩效率不高,但编码、解码速度快,仍被得到广泛的应用,特别在变换编码之后使用游程编码,有很好的效果。

    首先要在量化器输出直流系数后对紧跟其后的交流系数进行Z型扫描(如图箭头线所示)。Z型扫描将二维的量化系数转换为一维的序列,并在此基础上进行游程编码。最后再对游程编码后的数据进行另一种变长编码,例如霍夫曼编码。通过这种变长编码,进一步提高编码的效率。

    (c)  运动估计和运动补偿

    运动估计(Motion Estimation)和运动补偿(Motion Compensation)是消除图像序列时间方向相关性的有效手段。上文介绍的DCT变换、量化、熵编码的方法是在一帧图像的基础上进行,通过这些方法可以消除图像内部各像素间在空间上的相关性。实际上图像信号除了空间上的相关性之外,还有时间上的相关性。例如对于像新闻联播这种背景静止,画面主体运动较小的数字视频,每一幅画面之间的区别很小,画面之间的相关性很大。对于这种情况我们没有必要对每一帧图像单独进行编码,而是可以只对相邻视频帧中变化的部分进行编码,从而进一步减小数据量,这方面的工作是由运动估计和运动补偿来实现的。

    运动估计技术一般将当前的输入图像分割成若干彼此不相重叠的小图像子块,例如一帧图像的大小为1280*720,首先将其以网格状的形式分成40*45个尺寸为16*16的彼此没有重叠的图像块,然后在前一图像或者后一个图像某个搜索窗口的范围内为每一个图像块寻找一个与之最为相似的图像块。这个搜寻的过程叫做运动估计。通过计算最相似的图像块与该图像块之间的位置信息,可以得到一个运动矢量。这样在编码过程中就可以将当前图像中的块与参考图像运动矢量所指向的最相似的图像块相减,得到一个残差图像块,由于残差图像块中的每个像素值很小,所以在压缩编码中可以获得更高的压缩比。这个相减过程叫运动补偿。

    由于编码过程中需要使用参考图像来进行运动估计和运动补偿,因此参考图像的选择显得很重要。一般情况下编码器的将输入的每一帧图像根据其参考图像的不同分成3种不同的类型:I(Intra)帧、B(Bidirection prediction)帧、P(Prediction)帧。如图所示。

    典型的I,B,P帧结构顺序

    如图所示,I帧只使用本帧内的数据进行编码,在编码过程中它不需要进行运动估计和运动补偿。显然,由于I帧没有消除时间方向的相关性,所以压缩比相对不高。P帧在编码过程中使用一个前面的I帧或P帧作为参考图像进行运动补偿,实际上是对当前图像与参考图像的差值进行编码。B帧的编码方式与P帧相似,惟一不同的地方是在编码过程中它要使用一个前面的I帧或P帧和一个后面的I帧或P帧进行预测。由此可见,每一个P帧的编码需要利用一帧图像作为参考图像,而B帧则需要两帧图像作为参考。相比之下,B帧比P帧拥有更高的压缩比。

    (d)  混合编码

    上面介绍了视频压缩编码过程中的几个重要的方法。在实际应用中这几个方法不是分离的,通常将它们结合起来使用以达到最好的压缩效果。下图给出了混合编码(即变换编码+ 运动估计和运动补偿+ 熵编码)的模型。该模型普遍应用于MPEG1,MPEG2,H.264等标准中。

    混合编码模型

    从图中我们可以看到,当前输入的图像首先要经过分块,分块得到的图像块要与经过运动补偿的预测图像相减得到差值图像X,然后对该差值图像块进行DCT变换和量化,量化输出的数据有两个不同的去处:一个是送给熵编码器进行编码,编码后的码流输出到一个缓存器中保存,等待传送出去。另一个应用是进行反量化和反变化后的到信号X’,该信号将与运动补偿输出的图像块相加得到新的预测图像信号,并将新的预测图像块送至帧存储器。


    2.音频编码基本原理

    (1)  音频信号的冗余信息

    数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为44.1KHz,每样值按16bit量化,则其码率为:

    2*44.1kHz*16bit=1.411Mbit/s

    如此大的带宽将给信号的传输和处理都带来许多困难,因此必须采取音频压缩技术对音频数据进行处理,才能有效地传输音频数据。

    数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助。

    冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为20Hz~20KHz,除此之外的其它频率人耳无法察觉,都可视为冗余信号。此外,根据人耳听觉的生理和心理声学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号将被强音信号所掩蔽而听不见,这样弱音信号就可以视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应和时域掩蔽效应,现分别介绍如下:

    (a)  频谱掩蔽效应

    一个频率的声音能量小于某个阈值之后,人耳就会听不到,这个阈值称为最小可闻阈。当有另外能量较大的声音出现的时候,该声音频率附近的阈值会提高很多,即所谓的掩蔽效应。如图所示:


    频率掩蔽效应

    由图中我们可以看出人耳对2KHz~5KHz的声音最敏感,而对频率太低或太高的声音信号都很迟钝,当有一个频率为0.2KHz、强度为60dB的声音出现时,其附近的阈值提高了很多。由图中我们可以看出在0.1KHz以下、1KHz以上的部分,由于离0.2KHz强信号较远,不受0.2KHz强信号影响,阈值不受影响;而在0.1KHz~1KHz范围,由于0.2KHz强音的出现,阈值有较大的提升,人耳在此范围所能感觉到的最小声音强度大幅提升。如果0.1KHz~1KHz范围内的声音信号的强度在被提升的阈值曲线之下,由于它被0.2KHz强音信号所掩蔽,那么此时我们人耳只能听到0.2KHz的强音信号而根本听不见其它弱信号,这些与0.2KHz强音信号同时存在的弱音信号就可视为冗余信号而不必传送。

    (b)  时域掩蔽效应

    当强音信号和弱音信号同时出现时,还存在时域掩蔽效应。即两者发生时间很接近的时候,也会发生掩蔽效应。时域掩蔽过程曲线如图所示,分为前掩蔽、同时掩蔽和后掩蔽三部分。

    时域掩蔽效应

    由图我们可以看出,时域掩蔽效应可以分成三种:前掩蔽,同时掩蔽,后掩蔽。前掩蔽是指人耳在听到强信号之前的短暂时间内,已经存在的弱信号会被掩蔽而听不到。同时掩蔽是指当强信号与弱信号同时存在时,弱信号会被强信号所掩蔽而听不到。后掩蔽是指当强信号消失后,需经过较长的一段时间才能重新听见弱信号,称为后掩蔽。这些被掩蔽的弱信号即可视为冗余信号。

    (2)  压缩编码方法

    当前数字音频编码领域存在着不同的编码方案和实现方式, 但基本的编码思路大同小异, 如图所示。

    数字音频编码系统模型

    对每一个音频声道中的音频采样信号,首先都要将它们映射到频域中,这种时域到频域的映射可通过子带滤波器实现。每个声道中的音频采样块首先要根据心理声学模型来计算掩蔽门限值, 然后由计算出的掩蔽门限值决定从公共比特池中分配给该声道的不同频率域中多少比特数,接着进行量化以及编码工作,最后将控制参数及辅助数据加入数据之中,产生编码后的数据流。

     


    展开全文
  • Huffman编码对英文文本的压缩和解压缩
  • 利用优先级队列+DFS优化的哈夫曼编码译码器,可进行中文压缩,最高压缩率可达到1:3
  • 图像压缩编码原理

    千次阅读 2018-01-10 17:23:12
    为什么要进行图像压缩编码? 1) 在数字分量编码中,按照4:2:2格式对电视信号进行取样、量化、编码后,数据率达27MW/S。 2) 在数字高清晰度电视格式中,取样、量化、编码后的数据率会更大。 3) 电视信号...
  • python版本为2.7.9,大家注意别下错了,里面一个txt文件是进行压缩的,可以更改文件中的变量path1来对其他文件进行压缩与解压,代码中详细注释,实现过程虽然简单,但是包含自己很多一些独特的想法,自己的知识...
  • 根绝哈夫曼编码写的数据压缩解压软件
  • JPEG压缩编码算法原理

    万次阅读 2017-11-16 15:33:12
    本文介绍JPEG压缩技术的原理,对于DCT变换、Zig-Zag扫描和Huffman编码,给出一个较为清晰的框架。 1. JPEG压缩的编解码互逆过程: 编码 解码 2. 具体过程
  • [实验]无失真信源压缩编码

    千次阅读 2018-03-19 20:09:04
    实验一 无失真信源压缩编码此文系后续整理,懒得copy,对应的方法可以根据需要可以直接下载代码,附件:...
  • 视频压缩编码基本原理

    千次阅读 2018-09-26 16:26:31
    视觉冗余:人眼的一些特性,例如亮度分辨阈值、视觉阈值、对亮度和色度的敏感度不同,是的编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的这一特性,以一定客观失真换取数据压缩。这种压...
  • 数据压缩编码方法

    万次阅读 2016-12-18 12:57:55
    经典的数据压缩算法 三大类:预测编码、变换编码、统计编码 常用的解除相关性的措施是预测和变换,其实质都是进行序列的映射。 一般,预测编码有可能完全解除序列的相关性,但须确知序列的概率特性;变换编码一般...
  • 基于JPRG的彩色图像分块,量化,zigzag,编码压缩matlab代码,适合初学者学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 284,877
精华内容 113,950
关键字:

压缩编码有哪些