精华内容
下载资源
问答
  • 1.视频编码基本原理 (1) 视频信号的冗余信息 以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为...

    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

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

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

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

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

    (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)  压缩编码方法

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

    数字音频编码系统模型

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

    展开全文
  • 信息技术计算机互联网技术的飞速发展改变了人们的生活方式,以视频为核心的多媒体信息已经成为人们获取信息的主要来源,随着视频存储与传输的广泛应用,高效视频编码技术研究已经成为多媒体技术的研究热点。...
  • 2、 什么是信源编码,他与数据压缩有何关系? 信源编码是一种以提高通信有效性为目的而对信源符号进行的变换,或者说为了减少或消除信源冗余度而进行的信源符号变换。 信源编码的作用有二 : 一是实现模拟信号...
  • 在分析点扩展函数测量矩阵关系的基础上,提出了基于随机点扩展函数的编码孔径设计方式,并通过中继透镜空间光调制器实现编码孔径的可编程控制。结合折反射成像特点,基于全向全变分算法实现全向图像稀疏重构,...
  • 应用游程长度编码(RLE)算法来压缩数据。 描述 对于我们学校ETNA的项目,我们必须做一个有关运行长度编码的项目。 入门 依存关系 需要PHP。 正在安装 git clone或下载gitlab中的存储库。 执行程序 运行程序 ...
  • 压缩感知

    千次阅读 2018-10-07 21:26:43
    摘 要:随着信息技术的发展,人们对信息的巨量需求以及硬件的发展缓慢造成了信号采样,传输存储的巨大压力。如何解决在现有的硬件基础上传输大量的信息成为...压缩感知理论主要包括信号的稀疏表示,编码测量信号...

    压缩感知理论及其算法研究报告

    摘 要:随着信息技术的发展,人们对信息的巨量需求以及硬件的发展缓慢造成了信号采样,传输和存储的巨大压力。如何解决在现有的硬件基础上传输大量的信息成为热点研究的内容。近年来压缩感知的出现为缓解这些压力提供了解决的办法。本文综述了压缩感知的理论框架及关键的技术问题,并着重介绍了压缩感知稀疏重构中的主流贪婪算法,通过算法实验分析了各种算法的重构性能。
    关键词:压缩感知 贪婪算法 稀疏重构
    1.引言
    传统的信号采样定律-那奎斯特采样定律定理:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍[1]。这样对于系统处理信息的硬件需求提出了很高的要求,同时在实际应用当中为了节约存储空间和降低传输成本,需要对采集的数据进行压缩处理,这样会造成大量采集的数据浪费。因而压缩感知技术应运而生,打破了传统的信号采样定理,从不同的角度解决了信号采样的问题。使得在保证信息不损失的情况下,用远低于奈奎斯特采样定理要求的速率采样信号。压缩感知理论指出只要信号是可压缩的或在某个变换域是稀疏的,那么就可以用一个与变换基不相关的观测矩阵将变换所得高维信号投影到一个低维空间上,然后通过求解一个优化问题就可以从这些少量的投影中以高概率重构出原信号[2]。在该理论框架下,采样速率不决定于信号的带宽,而决定于信息在信号中的结构和内容。压缩感知理论使得采样和计算的成本大大降低。
    当前主流的压缩感知重构算法主要包括三类:凸优化方法,贪婪算法和基于贝叶斯框架提出的算法[3]。本文主要以压缩感知重构算法为主线,介绍了主流的贪婪追踪类算法包括正交匹配追踪(OMP)算法,正则化正交匹配追踪(ROMP)算法,分段正交匹配追踪(STOMP)算法,稀疏度自适应匹配追踪(SAMP)算法,并且对这些算法的优缺点进行了比较通过仿真实验分析了各种算法的重构性能。
    2.压缩感知基本理论
    压缩感知理论主要包括信号的稀疏表示,编码测量和信号重构算法三个方面。信号的稀疏表示是压缩感知的先验条件,信号的稀疏表示是将信号投影到正交变换基时,绝大多数的变换稀疏的绝对值很小,所得到的变换向量是稀疏的或者是近似稀疏的。任意的N维信号都可以通过某个稀疏矩阵线性表示。例如x为N维的信号,Ψ是x对应的稀疏矩阵,则x可以表示为:x = ∑_(i=1)^N▒〖θ_i ψ_i 〗其中,Ψ是N列ψ_i组成的矩阵,θ_i是x在ψ_i下的投影系数,θ是投影系数向量,θ=Ψ^Tx。稀疏矩阵一般根据信号本身特点灵活选取,常见的是离散余弦变换基,快速傅里叶变换基,离散小波变换基。在编码测量中首先选定一个平稳的,与稀疏基Ψ不相关的M × N 维的观测矩阵Ф,对θ进行观测得到观测集合Y = Фx = ФΨθ。令A=ФΨ为M × N 的矩阵,称为感知矩阵。Y可以看作是稀疏信号θ关于测量矩阵A的测量值,上式整体可以表示为图(1)。
    在这里插入图片描述

    在压缩感知的整个过程中,测量矩阵的设计是一个关键步骤。测量矩阵性质的好坏,关系到能否达到压缩的目的,同时又直接关系到信号能否被精确重构。设计一个合适的观测矩阵应该既能达到压缩采样的目的,同时又可以保证信号可以无失真的重构。有限等距性质[4]在理论上较好的解决了这个问题,只要感知矩阵A能够满足RIP条件,那么信号可以由少量的测量值经过重构算法精确的恢复出来,也就是说,理论上我们可以设计一个测量矩阵使得感知矩阵A满足RIP规则,这样既可以达到压缩采样的目的,又能保证信号无失真的恢复出来。RIP规则的数学表达描述为:设A=ФΨ为M × N 的矩阵,假设一个常数δ_k,使得对于任意向量s和所有的矩阵A_k,满足以下关系4
    (1-δ_k)〖||s||〗_2≤〖||A_k s||〗_2≤(1+δ_k)〖||s||〗2 (2-1)
    其中A_k是A子矩阵,大小为M×K,有限等距常数为δ_k∈(0,1)。
    如果A满足约束等距原则,保证了信号恢复的唯一性。实际上要直接验证矩阵是否满足RIP条件是一件很困难的事情。在实际应用中,我们可以用RIP准则的一种等价情况,即非相干性来指导测量矩阵的设计。非相干性指测量矩阵中的行向量不能被稀疏矩阵线性表出同理稀疏矩阵中的列向量也不能被测量矩阵中的任意行向量线性表出。相干性的度量由相干度[5]如图(2-2)所示,关系数旳取值范围为U∈(1,√N)
    U(Ф,Ψ)=√Nmax{|Ф_k,Ψ_J|} (2-2)
    Donoho等人在文献[6]中指出服从高斯分布的随机矩阵可以高概率满足不相关性,对于一个大小为M×N的随机高斯矩阵Ф,Ф中每个值满足均值为0,方差为1/M的高斯分布,即Ф
    (i,j) ~ N(0,1/M)。可以证明当M>cKlog(N/K)时,A = ФΨ在很大概率下能满足RIP条件。而且随机高斯矩阵与大多数固定正交基构成的矩阵不相关,因此随机高斯测量矩阵满足理论上的最优性。目前大多数情况下都采用随机高斯矩阵作为压缩感知的测量矩阵,本文实验所用到的观测矩阵也是随机高斯矩阵。当选取好观测矩阵,压缩感知问题转化为求解(2-1)式的最优l_0范数问题
    min〖||θ||〗_0 s.t. Aθ = Y (2-3)
    如果得到x的稀疏表示θ,可以进一步由变换基Ψ通过下式(2-2)重构原始信号
    x = Ψθ (2-4)
    由于矩阵A的维度为M × N(M << N),所以方程(1)有无穷多解,通过贪婪算法可以逐步逼近最优解,直到求出原始信号。最早提出的是匹配追踪算法(MP),MP算法的基本思想是在每一次迭代过程中。从感知矩阵中选择与信号最匹配的原子来进行稀疏逼近求出余量,在稀疏度已知的情况下继续迭代选出与余量最匹配的原子。最匹配是指当前余量与原子的内积最大。经过数次迭代,该信号便可由这些原子线性表示,但是当前的余量仅与当前的原子正交而不是与已选定的所有的原子正交使,得每次迭代的结果可能是次最优的往往需要迭代多次。下面介绍四种主流的贪婪类重构算法并分析它们的优缺点进行比较。
    3.正交匹配追踪类算法
    3.1正交匹配追踪(OMP)算法
    OMP算法作为MP算法的延申,仍然沿用了MP算法中原子选择的标准,不同的是OMP算法利用Gram-Schmidt正交化对已选定的原子进行正交化处理,再将信号在这些正交原子构成的张量空间投影,得到信号在选定原子上的分量和余量,然后用相同的方法迭代分解余量。通过每次对所选原子的正交化处理保证了迭代的最优性,从而减少了迭代的次数[7]。
    OMP的具体步骤如下:
    (1)令初始余量r_0 = Y,稀疏度为K,索引值集合J为空集,支撑集合Λ为空集;
    (2)计算相关系数u(余量与原子的内积),并将u中最大值对应的索引值存入J;
    (3)更新支撑集合 ,将更新索引对应的原子存入Λ;
    (4)利用最小二乘法得到重建信号,同时对余量进行跟新;
    (5)若迭代次数小于K,r = r_new,n = n+1,转到第二步继续迭代;否则,停止迭代。
    为了说明OMP算法的重建性能,利用MATLAB R2016a作为平台,分两次实验验证。第一次实验,假定信号是稀疏的并且稀疏度为10,定常信号256 × 1的列向量中随机选取10个随机数随机排列到定长信号中。观测矩阵为128×256高斯随机矩阵。初始信号和恢复信号之间的误差用二者相减的二范数表示。实验结果如图(2)所示,实验误差为o(10e-15 )
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    第二次实验,测试对象为256×256lena图像。观测矩阵采用随机高斯矩阵,M和N表示观测矩阵的行数和列数,M/N表示压缩比0.5,实验结果如图(3),PSRN值为26.5536。

    在这里插入图片描述
    在这里插入图片描述

    OMP算法虽然保证了每次迭代的最优性,减少了迭代的次数。但是,它每次迭代中仅选取一个原子来跟新原子的集合,这样必然会付出巨大的重建时间代价。OMP算法首次把最小二乘法引入压缩感知重建中,用正交化的思想来计算重建信号使得结果更加准确,这是压缩感知重建算法取得重大研究进展的一个标志[8]。
    3.2正则化正交匹配追踪(ROMP)算法
    ROMP算法首先根据相关原则进行原子的一次筛选,通过求余量r与测量矩阵Ф中各个原子之间的内积的绝对值,来计算相关系数u,并按照此方法筛选出的K个原子的索引值存到候选集J中以便进行原子的二次筛选。
    ROMP算法采用正则化过程进行原子的二次筛选,将J中索引值对应的原子的相关系数分成若干,要求分组的原子在各自所在子集内的原子同误差向量的内积的最大值与最小值的比值在两倍以内[6]。数学表达式为(3-1)
    |u(i)| ≤ 2|u(j)|, i,j ∈J (3-1)
    然后选择能量最大的一组相关系数对应的原子索引值存入J_0中,该正则化过程可以使得ROMP算法最多经过K次迭代便可得到一个原子数|Λ|小于2K的支撑集Ф_Λ用于重建信号,对于没有选入支撑集的原子,正则化过程则能保证它们的能量一定远小于被选原子的能量,是一种简单有效的原子筛选方法。
    ROMP的步骤:
    (1)初始化余量r_0 = Y,估计信号稀疏度为K,迭代次数n = 1,索引值Λ为空集,J为空集;
    (2)计算相关系数u,并从u中寻找K个最大值对应的索引值存入J中;
    (3)对J中索引值对应原子的相关系数进行正则化,并将正则化的结果存入J_0;
    (4)更新支撑集Ф_Λ,其中Λ=Λ∪J_0;
    (5)利用最小二乘法得到重建信号,同时对余量进行跟新;
    (6)若|Λ| 2K,则停止迭代,否则令r =r_new,n = n+1,转到步骤(2)继续迭代。
    为了说明ROMP算法的重建性能,分两次实验实现算法重构,利用MATLAB R2016a作为平台。实验1假定信号是稀疏的并且稀疏度为10,定常信号256 × 1的列向量中随机选取10个随机数随机排列到定长信号中。观测矩阵为高斯随机矩阵。初始信号和恢复信号之间的误差用二者相减的二范数表示。实验结果如图(4)误差为o(10 )

    实验2假定信号是四个余弦函数式表示
    x=0.3cos(2π50t)+0.6cos(2π100t)+0.1cos(2π200t)+0.9cos(2π400t)
    我们运用快速傅里叶变换对一维信号 x 进行变换,稀疏度为7,测量矩阵为64×256高斯矩阵实验结果如图(5),误差为o(10 )。

    ROMP算法在OMP算法的基础上加入了正则化方法,以实现一次迭代选择多个原子的目的,从而提高重建速度,减少了算法的复杂度。但其代价是需要预估计信号的稀疏度,并且需要较多的采样数据
    3.3分段正交匹配追踪(STOMP)算法
    STOMP 算法采用分阶段的思想首先根据相关原则来筛选原子,利用阈值的方法从原子集合中选择和迭代余量匹配的原子,与OMP 算法不同的是,它并不是每次固定选择一个匹配原子,而是给定标准为大于门限值t_s δ_t的原子。δ_t为规范噪音水平, δ_t=〖||r_t ||〗2/√M。r_t是上一次跟新的余量值[9]。利用此标准可以一次找到多个原子,减少了匹配的次数,提高了追踪的效率; 然后更新支撑集和原子,并用最小二乘法求得近似解,同时完成对余量的更新。
    STOMP算法步骤:
    (1)初始化余量r_0 = Y,迭代次数默认为10,门限参数t_s默认为2.5。计数器t=1;
    (2)计算感知矩阵各列原子与余量的内积,选择大于门限值t_s δ_t的感知矩阵对应的原子列向量存入集合J_0 ;
    (3)跟新支撑集Λ_t = Λ
    (t-1) ∪ J_0,在支撑集上利用最小二乘法求出跟新余量;
    (4)若t值小于迭代次数s,返回(2)继续执行,否则退出循环。
    为了说明STOM算法的重建性能,利用MATLAB R2016a作为平台。假定信号是稀疏的并且稀疏度为10,定常信号256 × 1的列向量中随机选取10个随机数随机排列到定长信号中。观测矩阵为高斯随机矩阵。初始信号和恢复信号之间的误差用二者相减的二范数表示。实验结果如图(6)所示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    STOMP 算法将 OMP 算法进行了一定程度的简化,提高了计算速度,但是由于其在每次迭代的过程中寻找的都不是信号的最佳表示,致使重构的精度降低,导致在实际中其重构的信号的精度远不如OMP 算法重构的信号的精度。门限参数和默认迭代次数的设置很大程度决定了算法的精度,使得算法的灵活度差。
    3.4稀疏度自适应匹配追踪(SAMP)算法
    以上算法均建立在稀疏度已知的情况下才能有效,但在实际情况中,信号的稀疏度信息往往事先是不可得的,SAMP相比较其他算法最吸引的就是可以不需要知道稀疏度的先验信息 ,这使得SAMP重建算法在实际应用中更加广泛[10]。
    SAMP算法中采用转换阶段(stage) 的方式逐步增加该原子数,将同一个迭代过程分成多个阶段,设置一个可变步长(size)代替所选原子数目,相邻两个阶段所对应的支撑集的大小之差即为当前步长,随着步长的增加和支撑集的不断增大,实现了在未知稀疏度的前提下步长逐步逼近稀疏度K进而实现精确重建出原始信号的目的[11]。SAMP算法引入了回溯的思想,每次迭代都重新评估原子的有效性。
    SAMP算法步骤:
    (1)初始化余量r_0= Y,支撑集F_0为空集,候选集S_0为空集,初始步长为s,步长增量初始倍数j=1;
    (2)选择感知矩阵内的原子和余量内积最大的s个列向量,将对应的原子列向量放入候选集s_k中;
    (3)合并支撑集F_k和候选集s_k得到跟新后的支撑集C_k;
    (4)以C_k的原子为基准,由最小二乘法得到重建信号并选择最大的s个元素所对应的原子,组成新的的支撑集F;
    (5)由初始余量,支撑集F,利用最小二乘法计算更新余量r;
    (6)如果满足迭代停止条件〖||r||〗_2 ≤ε(固定阈值)则退出循环,如果满足〖||r_k ||〗2 〖||r(k-1) ||〗_2则跟新步长倍数j = j + 1,跟新的步长为s = j × s转入步骤二继续迭代,否则更新支撑集,更新余量,转入步骤二继续迭代。
    为了说明SAMP算法的重建性能,利用MATLAB R2016a作为平台,分2次实验验证。第一次实验,假定信号是稀疏的并且稀疏度为10,定常信号256 × 1的列向量中随机选取10个随机数随机排列到定长信号中。固定阈值为0.1,观测矩阵为128×256高斯随机矩阵。初始信号和恢复信号之间的误差用二者相减的二范数表示。实验结果如(7)所示,误差为o(10 )。

    第二次实验,测试对象为256×256lena图像。观测矩阵采用随机高斯矩阵,M和N表示观测矩阵的行数和列数,M/N表示压缩比,实验的压缩比为0.5,阈值为100,验的PSRN值为24.3。实验结果如图(8)
    在这里插入图片描述
    在这里插入图片描述

    SAMP算法通过提供了严格的误差界限(固定阈值)且不需已知信号的稀疏度 K 就可以重构信号,固定阈值的选取同测量矩阵有着很大的联系。初始步长的选取目前任然是一个问题,SAMP算法的初始步长只需要小于稀疏度K,为了避免过度检测,如果不知道稀疏度,选择初始步长为1可以确保足够的精度。但是初始步长越小,算法运行的时间也就越大,这就造成了过度检测与运行时间的矛盾。经验表明,对于指数衰减的信号初始步长选的较小比较好,对于二进制稀疏信号选择步长较大比较好。如果算法能随着算法逐渐接近真实的稀疏度K值而逐渐缩小这样会提高算法的精度。另外,有学者提出了稀疏度自适应子空间追踪算法,该算法能较为精确完成信号重构,不需要设定步长,能够估计稀疏度大小,但是输入参数对算法影响较大。也有学者提出变步长的自适应步长的稀疏度估计的方法[12],根据每次迭代得到的残差值,通过函数Ln=[L_(n-1)log⁡(γ)/log⁡((γ+0.9ε)) /2.1],其中γ=1-|(|r_2 |)|/||y_2 ||,来确定步长的大小,当步长远离稀疏度K时步长较大,当接近K时稀疏度较小。
    3.5基于小波变换的分块压缩感知
    根据压缩感知理论,图像重构时如果图像尺寸太大,为了维持一定的精度,测量矩阵所需要的观测值随之增加,造成了观测矩阵对于有限的存储空间显得十分巨大,而硬件难于满足需求。Lu Gan [13]提出了分块压缩感知12,该方法指出: 可以将原始图像分成一些大小相等的图像块,采用相同的观测矩阵单独对每个图像块进行观测,大大简化了计算复杂度,这种方法能解决大尺度图像实时传输的问题。分块图像的观测矩阵远远小于未分块的图像,降低了对硬件的需求,利用PC端将采集的样本重构恢复,并实现图像融合。
    本实验利用MATLAB R2016a作为平台,对每一个子块采用小波变换,保留每块的低频小波稀疏,对高频小波稀疏进行采样得到测量向量。13重构时利用正交匹配追踪(OMP) 算法对高频系数进行恢复,再进行小波反变换重构图像。
    实验步骤:
    选取大小为256 × 256的二维图像,将图像分为16块大小为64 × 64的图像;
    采用小波变换对图像进行稀疏化表示,利用50 × 64的观测矩阵进行观测得到观测向量;
    采用OMP算法对观测向量进行重构恢复;
    对重构的恢复矩阵进行小波反变换,得到重构图像。
    实验结果如图(9)所示
    在这里插入图片描述
    在这里插入图片描述

    为了比较几种算法的恢复精度,在固定的稀疏度12下对上述算法进行实验,实验信号为定常信号256 × 1的列向量,观测随着观测矩阵行数M的数目变化对一维信号恢复正确率的变化,实验中对每次M的取值实验100次,计算恢复率,信号之间的误差达到10 即视为正确,M的取值为从稀疏度K每次增加十个直到观测矩阵列数256。实验结果如下图所示(10)所示

    图(10)为四种算法随着测量值M取值的不同,恢复值百分数变化
    图中可以看出ROMP算法到达较高的精确度所需要的观测矩阵行数较其余的算法高,压缩量较低。SAMP算法在稀疏度未知的情况下,由较小的测量值得到恢复精确度较高。
    4.总结
    压缩感知利用信号稀疏的特性将原来基于奈奎斯特采样定理的信号采样过程转化为基于优化计算恢复信号的观测过程。有效缓解了高速采样实现的压力,减少了处理、存储和传输的成本,使得用低成本的传感器将模拟信息转化为数字信息成为可能,同时压缩感知使得信号的恢复率理论上比传统压缩算法更加精准。
    研究还存在如下问题:
    (1)对于一个稳定的优化算法,是否存在最优的观测矩阵使得观测值在达到一定的精度范围而观测数目控制在较少的范围。
    (2)如何设计有效的软硬件来应用压缩感知理论解决大量的实际问题,这方面的研究还不成熟。
    (3)含噪信号或采样过程中引入噪声时的信号重构问题也是难点所在。
    5.参考文献
    [1] 石光明, 刘丹华, 高大化等. 压缩感知理论及其研究进展[D]. 2009.
    [2] 李卓凡, 闫敬文. 压缩感知及应用[J]. 微计算机应用, 2010, 31(03): 12–16.
    [3] 李珅, 马彩文, 李艳等. 压缩感知重构算法综述[J]. 红外与激光工程, 2013, 42(S1): 225–232.
    [4] 吴赟, 丛琳. 压缩感知测量矩阵的研究[D]. 西安电子科技大学, 2012.
    [5] DONOHO D L. Compressed sensing[J]. IEEE Transactions on Information Theory, 2006, 52(4): 1289–1306.
    [6] NEEDELL D, VERSHYNIN R. Signal Recovery From Incomplete and Inaccurate Measurements Via Regularized Orthogonal Matching Pursuit[J]. Ieee Journal of Selected Topics in Signal Processing, 2010, 4(2): 310–316.
    [7] 杨真真, 杨震, 孙林慧. 信号压缩重构的正交匹配追踪类算法综述[J]. 信号处理, 2013, 29(04): 486–496.
    [8] TROPP J A, GILBERT A C. Signal Recovery From Random Measurements Via Orthogonal Matching Pursuit[J]. IEEE Transactions on Information Theory, 2007, 53(12): 4655–4666.
    [9] 汪浩然, 夏克文, 牛文佳. 分段正交匹配追踪(StOMP)算法改进研究[J]. 计算机工程与应用, 2017, 53(16): 55–61.
    [10] DO T T, GAN L, NGUYEN N等. Sparsity adaptive matching pursuit algorithm for practical compressed sensing[C]//2008 42nd Asilomar Conference on Signals, Systems and Computers. 2008: 581–587.
    [11] 杜秀丽, 胡兴, 顾斌斌等. 基于变步长的正则回溯SAMP压缩感知重构算法[J]. 计算机应用研究, 2018, 35(04): 1084–1087.
    [12] FU Y, LIU S, REN C. Adaptive Step-Size Matching Pursuit Algorithm for Practical Sparse Reconstruction[J]. Circuits Systems and Signal Processing, 2017, 36(6): 2275–2291.
    [13] 曹玉强, 柏森, 曹明武. 图像自适应分块的压缩感知采样算法[J]. 中国图象图形学报, 2016, 21(04): 416–424.

    展开全文
  • 原始的数字图像需要大量的存储空间, 而直接对其进行压缩编码效 果并不理想。小波变换是一种新的数学工具, 用其进行图像变换, 不会增加数据 量。实验证明, 经过小波变换处理过的图像, 数据更有规律, 再进行压缩编码...
  • 香农编码是根据香农第一定理直接得出的,指出了平均码长与信息之间的关系,同时也指出了可以通过编码使平均码长达到极限值。香农第一定理是将原始信源符号转化为新的码符号,使码符号尽量服从等概率分布,从而每个...

    一、Shannon-Fano编码

    香农编码

    是采用信源符号的累计概率分布函数来分配字码的。香农编码是根据香农第一定理直接得出的,指出了平均码长与信息之间的关系,同时也指出了可以通过编码使平均码长达到极限值。香农第一定理是将原始信源符号转化为新的码符号,使码符号尽量服从等概率分布,从而每个码字符号所携带的信息量达到最大,进而可以用尽量少的码符号传输信源信息。

    香农费诺编码的具体方法:

    (1)、将信源符号按照其概率大小,从大到小排列
    (2)、将这一组信源符号分成概率之和尽可能接近或者相等的一组(即两组分别的概率和之间的差尽可能小)
    (3)、将上面一组的编号成0,下面一组的编码成1
    (4)、然后继续将分组重复2,3步骤,直到不能再进行分组为止
    (5)、然后从左到右读出编码。

    二、哈夫曼编码

    哈夫曼编码

    又称霍夫曼编码,是可变字长编码的一种,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,又是称之为最佳编码。

    哈夫曼编码的具体方法:

    (1)、把信源信号按其出现的概率的大小顺序排列起来
    (2)、把最末端两个具有最小概率的元素的概率加起来
    (3)、再把概率值和同其余概率由大到小排队,然后再把两个最小概率加起来,再重新进行排序
    (4)、重复步骤(2)直到最后只剩下两个概率为止。到这里差不多就构造出了哈夫曼树
    (5)、然后再根据哈夫曼树的结构,输出不同概率对应的不同编码。

    编码实现思路

    对图像灰度值进行的哈夫曼编码和香农费诺编码的主要思路是一致的,先获取每一个灰度值对应的概率,然后在去掉中间为零的值,再对去零后的概率进行哈夫曼编码和香农费诺编码。在将整个过程中获取的每个字符的概率,编码以及码长,用来求取平均码长,编码信息熵,以及编码效率。

    1、各个灰度值的统计以及概率的求取

    各个灰度通过imhist()来获取图像的灰度直方图,同时该函数返回的值包括了每一个灰度值的数量,将其返回的值保存到一个矩阵中,然后用sum()求取该矩阵所有值的和,再用这个矩阵的每一个数除以求取的和,就获取到了每一个灰度值的概率,就可以对这些值进行哈夫曼编码。

    2、去零

    为了减少编码的存储,将获取概率为零的数值去除。主要是通过find(),查找存储概率的不为零的值概率值。

    3、计算平均码长、编码信息熵、编码效率
    平均码长:每个编码的字长乘以其对应的概率再进行求和。
    

    在这里插入图片描述

    编码信息熵:每个字符的概率乘以概率的对数再进行求和取相反数。
    

    在这里插入图片描述

    编码效率:用求得的平均码长和编码信息熵根据下面的公式求取。
    

    在这里插入图片描述

    具体的编码方法后面再写
    在这里插入图片描述

    展开全文
  • 本节介绍图像压缩编码的基本原理,图像数据压缩和解压缩电路的基本结构。它们是看影碟机电路图的基础知识。  一、图像压缩的基本途径  图像的数据量极大,必须对其数据总量大大压缩,才能够存储在直径12cm的光盘...

    转自:http://blog.csdn.net/wishfly/article/details/52066859

    本节介绍图像压缩编码的基本原理,图像数据压缩和解压缩电路的基本结构。它们是看影碟机电路图的基础知识。

      一、图像压缩的基本途径

      图像的数据量极大,必须对其数据总量大大压缩,才能够存储在直径12cm的光盘上。在实用技术上,可通过以下途径来压缩图像数据的总量。

      1、采用亮度(Y)、色度(C)取样方式

      实用彩色电视技术没有传输、处理红、蓝、绿三基色信号,而传输、处理亮度信号Y和色度信号C。这种处理方法有利于实现彩色电视和黑白电视的兼容,也利于限制彩色电视信号的频带宽度。在数字图像处理技术中,仍然采用传输、处理亮度信号Y和色度信号C的方法。由于人眼晴对亮度信息敏感,对彩色信息不够敏感,因而对Y信号以较高清晰度传送,对C信号以较低清晰度传送。实际作法是这样的:对每个亮度Y像素都进行传送;而将色度C分解为U、V两个色差信号(或写为Cb、Cr、B-Y、R-Y),分别进行传送;对亮度Y实行逐点取样,而对色度C则取样较少。即对应于4个亮度取样点,仅对色度信号取样1个点,即对U、V像素的取样较低,各取1个取样点,这种取样格式称为YUV411格式。

      采用YUV411取样格式后,它的数据总量将比三基色取样量格式时减少一半。若采用三种基色取样方式时,各基色应与亮度信号取样方式一样,即对每个红、绿、蓝色采取逐点取样的方法。采用Y、C传输方式时,取样次数减少一半,传输数码也减少一半。人眼睛对色度的敏感程度较低,利用人眼睛这一生理视觉特性,人们在主观感觉上并没有感到图像清晰度下降。显然,这是压缩图像数据码率的一个得力措施。

      2、将整幅图像分割为小区域进行分割处理

      对图像进行数据处理时,对每帧图像进行分割处理。首先图像横向切成若干条,每一条称为一片,将每一片再纵向切成若干块,称宏块,宏块是图像压缩的基本单位。每个宏块的彩色图像可用1个亮度信号Y和两个色差信号Cb、Cr(即U、V)来表示,或者说,每个宏块分为三层,一层亮度Y,两层色度(各为Cb、Cr),统称为一个宏块。

      由于人眼睛对亮度、色度的主观敏感程度不同,通常把亮度宏块再平均分成4块,每一小块称为像块或区块,详见示意图2.2.1。每个区块可以进一步分割,称为像素或像点,像素是构成图像的最小单位。对于数字图像来说,每一个像素作为一个取样点,有一个对应的取样数值。可以看出,图像分割越细,像素数越多,取样点越多,图像清晰度越高;反之,像素数越少,图像清晰度越低。实际上,对图像压缩处理,就是对图像区块的数据、像素的数据进行压缩处理。

      彩电制式不同,分割图像的具体数据将有所变化。例如PAL制,大多数为625行扫描标准,那么每帧图像被切为18片,每片再切成22个宏块,即每帧图像分成396个宏块;而525行的NTSC制,每帧图像被切为15片,每片再切成22个宏块,即每帧图像分成330个宏块。对亮度信号来说,每个宏块又分为4个区块,每个区块含有8×8=64个像素,则每个宏块含有256个像素。但对两个色差信号来说,宏块像素数等于区块像素数,即像素数是8×8=64个,是亮度像素的1/4。尽管两色差信号的像素较少,清晰度低,但不影响人眼睛的主观感觉。在进行数字图像处理时,按照图中各个8×8方块( 共64块) 编成次序,再按照编号顺序依次处理。也就是说,以8×8像素的方块作基本操作单元,依次处理每个像素(即取样点)的取样数值。

      3、采用帧间和帧内数据压缩技术。

      实用电视每秒钟传送25-30帧画面,使画面变化具有连续感,电视活动图像是由各帧画面差别很小的一系列画面组成的。各帧画面的微小变化主要表现于画面主体部分,画面的背景差别很小。图像是由亮度、色度信息来描述的,在各相邻帧图像内,若分别比较同一相对位置的亮度、色度信号,通常其差别较小。经大量统计发现,在各个像素当中仅有10%以下的像素点的亮度差值变化超过去时2%,而色度差值变化在0.1%以下。在各帧图像中具有大量重复内容,这些重复内容的数据属于多余(冗余)信息,于是,可以通过减少时域冗余信息的方法,即运作帧间数据压缩技术,来减少图像传输的数码率。

      经分析发现,在同一帧画面内也存在相当多的冗余信息。对图像主体部分和眼睛最敏感的部分,应当准确、详细地处理,需要对每个像素点进行精细传输;但对于图像非主体部分和眼睛不敏感的部分,则可以进行粗略地处理,即进行信息数据的压缩处理。于是,可以根据一帧图像内容的具体分布情况,对不同位置可采用不同的数据量来传送,减少传送图像的数据量,使图像数据得到压缩。这种压缩数据的方法,是在同一帧图像的不同空间部位进行数据压缩,称为空间域冗余压缩。例如,有一幅人像画面,其面部和头部的线条清晰度可以不相同,尤其是眼睛、嘴唇部位表情丰富,线条比较精细复杂,是观众最注意的部位,应当用高清晰度传送;而头顶部位和面颊侧面,轮廓变化较少,灰度层次变化较小,观众不太注意这些部位。显然,图像的主要部位,灰度层次变化较大的部位,人眼睛敏感的部位,应当以较大数据量进行精细传送;而那些图像的次要部位,灰度层次变化较小的部位,人眼睛不注意的部位,则可用较少数据量进行粗略传送,甚至于仅仅传送它们的平均亮度信息。

      以下具体讨论数字图像的数据压缩原理。先讨论静止图像的数据压缩技术,即帧内数据压缩技术;然后讨论活动图像的数据压缩技术,即帧间数据压缩技术。

      二、帧内数据压缩技术

      首先对整幅图像进行分割处理,经分割取得最小操作单元。下面按8×8=64个像素组成的区块来计论。每一个像素值都可以按一定规律取样,例如可对亮度各个像素的亮度值取样,若每个像素按8bit量化,则每个区块的总数据量为8bit×64(像素点),即512bit。可见,对全画面各像素量化处理后数据量十分庞大,需要进行数据压缩。通常,经过离散余弦变换,Z字型扫描,可变长度编码等处理过程,可将数据总量进行大量压缩。

      1、离散余弦变换(DCT)编码

      (1) 功能简述

      离散余弦变换简称为DCT(是英Discrete Cosine Transform的缩写词),是一种数字处理方法,经常用于数据处理。DCT是多种数字变换方法的一种,它是把空间域图像变换到频率域进行分析的方法。由于DCT的变换核构成的基向量与图像内容无关,而且变换核是可以分离的,既二维DCT可以用两次一维DCT来完成,使得数学运算难度大大简化,再配以已经发现的其它快速算法,使得DCT编码得到了广泛的应用。将DCT应用于图像数据压缩,可以减少代表图像亮度(或色度)层次数码信息,达到数据压缩的目的。利用DCT不仅可将图像编码,还可以在编码变换过程发现图像细节的位置,以便删去或略去对视觉不敏感的部分,而更加突出视觉的敏感部分,通过选择主要数据来传输、重视图像。

      利用DCT压缩图像数据,主要是根据图像信号在频率域的统计特性。在空间域看来,图像内容千差万别;但在频率域上,经过对大量图像的统计分析发现,图像经过DCT变换后,其频率系数的主要成分集中于比较小的范围,且主要位于低频部分。利用DCT变换揭示出这种规律后,可以再采取一些措施把频谱中能量较小的部分舍弃,尽量保留传输频谱中主要的频率分量,就能够达到图像数据压缩目的。

      (2)规律和特点

      ①时间域信号的频谱

      对于一个随时间变化的波形来说,它是随时间变化的周期信号,它是以一定幅度值为波形的直流平均值,其波形可看成是基波与无数次谐波叠加而成。其基波振幅最大,然后各次谐波振幅逐渐减小。各次谐波叠加次数越高,则合成波形越接近于理想矩形波。此分析方法就是应用日益广泛的频谱分析方法。其中各次正弦波谐波的振幅值经常称为频谱系数,将频谱系数排列起来,可以组成一个系数列。上述事实说明,周期性矩形波可以由时间域 (反映幅度-时间关系)来描述,也可以由频率域(幅度-频率关系)来描述。两者有互相对应的关系。实际上,各种时间域信号都可以由频率域的规律来描述,两种描述方法存在内在的联系,可以互相转换。

      ②空间域信号的频谱系数

      对于各种空间域分布的信号,也可以进行类似的频率变换,即将空间域信号转变为频率域信号。DCT就是其中一种频率分析方法。可参阅图2.2.2来说明DCT变换过程。

      由图像内取出一个区块,分成8×8个像素的64格阵列,即由图(a)转变为图(b)。经过对逐个像素的亮度(或讨论色度)数值取样,并将像素的亮度数值列成矩阵形表格,见图(C)。然后利用离散余弦变换(DCT)可将各空间取样值转变为频率域的数值,这里称为DCT系数。

      对于上述64点阵列来说,可得到64个DCT系数,转换为图(d)矩形阵列表格。它已经将64个点的图像采样值组成的阵列,变为一个直流平均值和63个不同频率余弦波幅值组成的64个点阵列,并称为DCT系数阵列。经过上述变换后,已将空间坐标的数据转换为频率坐标的数据,即DCT频率系数。原有8×8区块的各个像素的数值取样量化后,转变为频率域图像信号的频谱系数,即可用64个频率系数来表述,称它们为64个“正交基信号”,每个基信号对应于64个独立二维空间频率中的一个。这些空间频率是由输入信号的“频谱”组成。所得64个变换系数当中,第一项代表直流分量,即64个空间图像采样值的平均值,其余63个系数代表各基信号的幅度。

      观察图2.3.2(d)数据可发现规律,矩阵左上角的数值较大,而右下角的数值较小,且趋近于零值。于是,可以按照Z字形扫描顺序,将各基信号的DCT系数列成一个表格。Z字形扫描的具体轨迹,如图2.3.2(e)所示。按照此规律将DCT系数排列成数据系列,成为DCT系数编码顺序。经过上述处理后,已将二维数据量转换为一维数据量,该数列第一项是该区块的平均亮度值,后面各项系数的分布和大小可以反映亮度起伏变化的剧烈程度。若系数较大,说明亮度起伏较大,该区域图像轮廓较细致;若数值较小,则说明该区内亮度变化较平缓;若数值为零,表示数列中高频分量数值为零,亮度电平无变化。在实际数据处理过程中,排在后面的系数值基本上都有是零值,或者趋于零值。由63个系数集合及变化情况,可反映出该区块内图像细节情况,即图像清晰度状况。

      图(d)矩阵数值非常具有实用价值。左上角数值较大,它们代表了图像信息的直流成分和低频分量,它是图像信息的主体部分,也是区块内信息的主要部分;而右下角数值较小,它们代表了图像信息的高频分量,其幅值原本就比较小,它主要反映图像的细节部分。人眼睛对图像的亮度信息有较高的相对灵敏度,对图像的彩色信息不够敏感;还有,人眼睛对图像信息的低频分量具有较高的视觉灵敏度。经Z字形字扫描后所形成的数据系列,恰好与人眼睛对图像信息的敏感程度形成良好的对应关系。根据视觉生理的上述规律,可对图像数据进行压缩。

      2、DCT系数的再量化处理

      经过上述DCT处理的频率数据可以进行再处理,进一步压缩数据量。人眼睛对各种频率的敏感程度不同,并可取得统计性灵敏度数值。由此可对每种频率分量设定不同的折算值,将前述经转换得到的DCT系数再次进行折算,以便进一步突出视觉效果影响大的成分,而消弱或忽略视觉效果影响小的成分。这种处理方法称为量化处理,简称Q处理。对于64点阵列的64个系数来说,对应了64种不同频率,可使用64个不同的折算值。通常称这64个折算值为量化表,每个折算值称为量化步长,或称量化值。在64点阵列中,左上角的数据量化值较小,右下角的数据量化值较大。对DCT系数的再量化处理,可利用量化器电路来实现。该电路可将区块的64个系数分别除以量化表中对应位置量化步长,再进行四舍五入取整后,即可得到经过再量化处理的64个数据值。

      经过量化处理后,量化值大的系数值所得商值较小,也就是数据压缩比较大,原图像相应部分的忽略内容较多;量化值小的系数所得商数值较大,也就是数据压缩比较小,原图像相应部分不予忽略或极小忽略。于是,经过量化处理后的DCT系数矩阵,可出现许多零值。一般左上角位置的数据的商数是非0,在右下角位置的数据的商数很小,经四舍五入取整值后可简写为0。在系数矩阵上出现了许多0值,则大大减少了数据量。一方面保留了图像信息的主体部分,另一方面大大压缩了像数据。

      3.可变长度编码(VLC)

      经量化处理的系数矩阵出现了许多0值,若进行Z字形扫描时,后面的系数将也出现连续0的状况。此时,数据传输总量已经明显减少,但码位并未减少,仍为64个系数位。为了进一步压缩数据总量,可采用可变长度编码,并简称VLC(Variable Length Coding)。

      通常,采用两种方法进行可变长度编码。第一种,是根据数据出现的频率,分配以不同长度的码字来代替,对于频繁出现的数据,分配以较短的码字,那些不经常出现的数据,则赋予较长的码字,这样处理后可减少传输的总码率。第二种方法,虽然Z字形扫描使系数列尾部出现多个0个值,但不需要逐位地传输0值,仅需传送表0的“个数”码,待重放时再按规定恢复为0位,以便填满矩阵的64位。例如00000,则可表示为50,在解码时恢复为00000。

      总之,对于静止画面来说,采用离散余弦变换,Z字形扫描、量化处理和可变长度编码等方法,可使图像数据量大大压缩。在数据解码时,先经过可变长度解码,恢复为数据的固定长度;再对系数进行反量化,恢复为原来的DCT频率系数;再经过反向离散余弦变换,恢复为图像的空间坐标数值,即原来图像的数据。

      三、帧间数据压缩技术

      对于活动图像来说,相邻帧的图像具有强烈的相关性。在保存和记录动态图像时,不需要将每一帧图像的全部信息都记录和保存下来,可以将前面第一帧图像全部数据都记录下来,把它看成是静态图像,可用静态图像数据压缩方法来处理。而后面诸帧图像,可以仅记录与前面帧图像有差异的信息。于是,在重放时,利用前面帧图像的数据和后面帧的差异数据,即可恢复出后面帧的图像。这种处理方法省去许多数据。

      1、三种画面

      按照MPEG-1标准,传送的活动画面可分为3种类型。第1种,是场景更换后的第1帧画面,它是一种独立的画面,这种画面采用较高清晰度的逐点取样法进行传送,此画面称为I画面(内码帧,或称帧内编码帧)。该画面信息是由自身画面决定,不必参考其它画面。该画面的数据代表了活动图像的主体内容和背景内容,它是电视画面的基础。第2种,是与I画面相隔一定时间、活动图像主体位置在同一背景上已发生明显变化的画面,此画面称P画面(预测帧,或称前向预测编码帧)。该画面用前面的I画面作为参考画面,该画面不传送背景等重复性信息,仅传送主体变化的差值,这就省略了一部分细节信息,而在重放时依靠帧存储器将I画面的主要部分和P画面的差值进行运算,即可得出新画面的完整内容,它是既有背景又有现时运动主体状态的实际画面。第3种,其情况与P画面相似,用来传送在I、P画面之间的画面,称B画面(双向预测帧,或称双向预测内插编码帧)。该画面仅反映在I、P画面之间的运动主体变化情况,并用位移矢量(或称运动矢量等)表示画面主体移动情况。其信息量更小些。因为在重放它时,既可参考I画面内容,也要参考P画面内容,所以称为双向预测帧。

      将一串连续相关的画面分为I、P、B型后,传输信息量明显减少。在P、B画面当中,几乎不传送反映实物的象素,仅传送其主体移动的差值,其具体的处理方法是采用了区块对比的方法,在两个变化的画面当中,将区块或宏块作为处理单元,将一个画面的宏、区块与参与 画面中邻近范围内的宏、区块进行数值运算对比,寻找与该块最相近、误差最小的区块,找到近似的该区块后,记录该区块在两个画面中的位移值,即为位移矢量以及反映两画面的差值量。若位移矢量坐标变化为0,说明该块没有移动,例如相同的背景景物;若位移矢量值有变化,而区块差值为0,则说明景物有移动,而形状没有变化,例如飞行中的球类和奔驰的车辆等。可见,位移矢量和区块差值可在重放时依靠参考画面得出新画面的完整场景,而传送时却省略了背景和主体内容,只传送代表位移矢量和差值的少量数据,使图像得到大量压缩。

      2、三种画面的连接

      通常,更换场景后的第一帧就是I帧,I帧应当全帧传送。从压缩的程度来看,I画面的压缩量最少;P画面次之,它是以I画面为基础;B画面压缩最多。为了加大压缩比,通常在I帧后面相隔2帧(最多3帧)设置1个P帧,在I、P帧之间都是B帧,在两个P帧之间也是设置2~3帧B帧。B帧传送它与I帧或P帧之间的差值信息,或者P帧与后面P帧或I帧之间的差值信息,或者它与前后I、P帧或P、P帧平均值之间的差值信息。当主体内容变化愈大时,两个I画面之间的帧数值越小;当主体内容变化小时,I面画的间隔可以适当大一些。或者说,B帧、P帧所占比例越大,图像压缩比越高。一般两个I画面相隔13~15帧,相隔帧数不宜再多。

      下面以15帧为例,说明VCD图像帧的排列顺序。I、P、B三种画面的典型设置方式,对NTSC制共约需半秒时间。节目输入顺序是按实际出现顺序排列的,即I、B、B、P、B、B、P、B、B……I、B、B、P……;但为了解码时便于从I、P画面插补得到B画面,在编码录制节目时,将顺序改变了,即按照I、P、B、B……顺序,即改为按原来0、3、1、2、*、5、9、7、8…的画面顺序。解码时先解出0帧、3帧,再由其插补预测计算得出1帧、2帧等等。为此,须在解码器内设置动态存储器,将I、P帧先解码并存储,再计算出各个B帧。不过最后输出时,还是应当按照实际播放顺序重组读出,按正确顺序输出。

      VCD采用的帧间压缩技术标准,对图像编码顺序和各帧间隔是有具体规定的。采用帧压缩技术后,各帧之间的信息冗余量大大减少,图像码率进一步压缩,压缩比可达3-20余倍。

      四、图像压缩编码过程和解压缩过程

      1、编码过程

      这里谈谈VCD所采用MPEG-1标准的编码过程。因为相邻帧画面相同或基本相同,将这种画面群的第1幅画面作为I画面,将它送入编码器。编码器首先将它割裂为许多片、宏块、区块等,将各区块分割为8×8=64点阵列,再进行Z字形描述和DCT变换,将64个亮度(或色度)取样数值变换为64个DCT系数,再对64个系数值分别进行相应的量化,经量化处理后再进行VLC处理,即得到了代表一个区块数据的最短的数码,至此,完成了该画面群第1帧的第1列图像中第1宏块的编码。依次类推,可得到第1帧画面的全部压缩数据编码。原为二维空间的一帧图像信息已经转变为一维空间的串行数据,这些数据被全部存储起来,成为继续进行数据处理的基础。至此,I画面数据处理完毕。

      完成第1帧图像压缩编码后,接着输入第2帧图像。编码器按照相同的方法步骤对第2帧进行压缩编码,得到第2帧数据。此时,编码器不再将第2帧数据进行完整的存储和传送,而是将它与第1帧数据进行比较运算。若运算中发现,两帧间数据差别很小时,说明两帧图像差别不大,仅将其差值存入存储器,而舍掉其大部分重复数据。按照此方法再进行第3、第4帧编码,并进行比较运算,直到找到某一帧,差别较大且超过规定值时,再将此帧数据中与第1帧的差别(包括位移矢量和差值)部分存储起来,并将此帧数据排在第1帧(I帧)后面传送出去,该帧就是P画面。当传送I、P画面后,再传送3、4帧的差别数据,这些画面都是B画面。它们之间的差别不大,是处于I、P之间的画面。按照此程序和方法,可再选出许多组P和B画面。通常,每隔13~15帧后,再设置一个I画面,作为后续画面的参考基准。如遇到较新的场景,将出现一幅不相同的新画面,这幅新出现的画面也作为I画面。

      图2.2.3是MPEG-1图像压缩编码器方框图。代表亮度Y和色度分量CB、CR的二进制数码化信号,首先进入帧改组器(或称帧重排电路),将画面分割为片、宏块、区块。区块经过比较

      运算电路再进入DCT电路、量化器、VLC电路,取得已压缩数据。再将数据送到多路混合器和传输缓冲器。传输缓冲器用于暂存压缩数据,并按照控制指令的先后按时序输出数据。该缓冲器通过调整器(又称为量化自适应器)与量化器相连接。调整器可用来检测缓冲器的缓冲区的数据暂存程度,并根据暂存数据量自动调整量化步长。在编码器内设置有反馈通路,它主要包括反量化器(Q-1)、离散余弦逆变换(IDCT)、相加器以及IPB画面帧存储器等。反馈回路用于预测图像产生,进行画面分类处理(计算、区分并处理IPB画面),主要用于帧间数据压缩编码处理。还有,运动预测和补偿电路可用于运动补偿。

      2、图像解压缩电路方框图

      图像解压缩电路简称为解压电路、解码电路。VCD视盘机内,经过数字信号解调电路(CD-DSP)处理后,输出压缩编码视频数据流,需要经过视频解压缩电路进行数据解压缩,恢复为未压缩的视频信号。解码过程是编码的逆过程,图2.2.4是MPEG-1视频解压缩电路方框图,其电路结构比编码器稍简单一些。

    图2.2.4 MPEG-1视频解压缩电路方框图

      来自CD-DSP电路的压缩编码信号送到输入缓冲器,然后进入去混合电路,将图像的编码模式标志,运动向量(位移矢量)和图像数据分离开,分别送往帧存储器和解压缩主通道电路。

      主通道要处理I、P、B帧数据,这些数据已经按照图像编码系列的规定,以数据封包头标指出,这些数据分别暂存在缓冲存储器的存储区内,根据数据量大小暂存在容量不同的存储器区中。在微处理器控制下,先将I画面数据按序取出,送到VLC(可变长度码解调器),按照ROM存放的可变长度码对照表,逐一将编码时压缩的码位恢复为压缩前的DCT量化值,再将各区块分为64个数据的量化值逐位乘以反量化参数,这些参数位于ROM中存放的64位视觉心理模式量化表的相对位置,重新恢复为DCT频率系数,完成反量化过程。

      经过反量化的数据,再送入IDCT(离散余弦逆变换)电路。这是另一次逆变换,也是通过查表法,将反量化值所代表的各频率余弦分量的幅值进行逆变换,重新恢复为DCT变换前的图像(Y、CB、CR)取样数据,从而取得代表图像压缩前的区块信息。4个区块的信息组成一个宏区块,若干个宏区块组成片,再由若干片组成完整画面的总数据,这就是I帧画面。这些繁重的相加工作都需要在加法器中进行。

      恢复出来的I帧画面数据存入帧存储器。I画面与后续输入的P画面数据相加,可恢复出P画面,P画面也存入帧存储器。然后根据运动矢量和运动后图像差值(即B画面数据),与I、P画面存储数据在加法器中相加,并受编码模式信号的控制,以便决定I、P图像的成分多少,从而恢复出不同前后的B帧画面。经以上处理所得I、P、B各种画面数据都需要存入缓冲存储器,还要根据编码模式的指示及输出制式的帧频要求,按照I、B、B、P、B、B、P、B、B…B、I、B、B、P、B…的正常顺序进行重新编排,按照一定的速度从帧重排电路输出。输出的解压缩数据送到D/A转换器,转变为R、G、B三基色模拟信号。

      通常,在解压缩电路还要辅设视频编码器和调制器。视频编码器可将三基色信号编码为NTSC/PAL制彩色电视信号,并加入同步、消隐、色同步和彩色副载波信号等,以视频模拟全电视信号形式输出。这种输出形式的信号需要输送到电视接收机的AV输入端口。但是,有些老式电视机没有设置AV输入端口,为了适应这种现象,输出的视频全电视信号需要再一次进行高频调制,利用调制器以某个特定频道的RF调幅形式输出电视信号。此时,VCD机需要设置RF输出端口,其输出信号可直接送到电视机的天线输入端口。

    展开全文
  • JPEG编码压缩率调整

    千次阅读 2021-01-08 01:06:05
    u32Qfactor:量化表因子范围为[1, 99],u32Qfactor 越大,量化表中的量化系数越小,得到的图像质量会更好,同时,编码压缩率更低。同理 u32Qfactor 越小,量化表中的量化系数越大,得到的图像质量会更差,同时,编码...
  • [实验]无失真信源压缩编码

    千次阅读 2018-03-19 20:09:04
    实验一 无失真信源压缩编码此文系后续整理,懒得copy,对应的方法可以根据需要可以直接下载代码,附件:...
  • 本文采用哈夫曼编码的方式进行文件(文本文件)压缩和解压缩,首先介绍项目的整体思路:哈夫曼编码压缩文件实际就是统计出文件中各个字符出现的频率,然后为每个字符生成对应的编码,然后将每个字符用哈夫曼编码的...
  • 图像压缩编码概述

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

    万次阅读 2016-07-29 17:16:45
    本节介绍图像压缩编码的基本原理,图像数据压缩和解压缩电路的基本结构。它们是看影碟机电路图的基础知识。  一、图像压缩的基本途径  图像的数据量极大,必须对其数据总量大大压缩,才能够存储在直径12cm的...
  • H.264&H.265视频压缩编码参考码率表,可用与编码压缩H.264H.265视频是参考压缩编码的参考码率质量高低对应目标压缩视频文件大小的测算
  • 哈夫曼编码实现文本压缩和解压(C++)

    万次阅读 多人点赞 2018-11-08 10:05:16
     在哈弗曼树中,若用‘0’表示左子树,‘1’表示右子树,那么每当从根遍历到一个叶子节点时都会形成一个01串,即该叶子节点的编码,由于各个叶子节点已经是树的最末梢了,因此他们之间的编码不会有包含关系,这样就...
  • 无损压缩——Huffman编码

    千次阅读 2019-05-10 11:07:07
    最近项目中涉及到人脸关键点中神经网络的压缩,采用了性能较好的哈夫曼编码进行。 源码地址:https://github.com/believeszw/HuffmanCompress 1 引言  哈夫曼(Huffman)编码算法是基于二叉树构建编码压缩结构的...
  • 基于哈夫曼编码对文件进行压缩和解压缩(详细讲解) 本文对应c++代码实现链接 一、背景 利用特定的算法来压缩数据的工具,压缩后生成的文件称为压缩包。如果想使用其中的数据,就得用压缩软件对数据进行解压。利用...
  • 利用哈夫曼树进行编码压缩

    千次阅读 多人点赞 2019-06-14 14:00:17
    题目:利用哈夫曼编码进行编码压缩 算法输入:字符串 算法内容:利用哈夫曼树对出现频率高的字符用更短编码的方式达到压缩字符串长度的目的。 算法输出:压缩后的一串二进制位 算法步骤 1.统计每个字符出现的...
  • 哈夫曼编码--压缩与解压

    千次阅读 多人点赞 2016-12-20 01:27:43
    使用哈夫曼编码的方法对文件进行压缩和解压缩。该编码方式根据不同字符出现的概率来进行构建最佳二叉树,所有的字符都位于叶子节点,规定从根节点开始,往左走为0,往右走为1,通过这种方式,可以对所有的字符进行...
  • 文件压缩与解压缩(哈夫曼编码

    千次阅读 2017-09-07 15:41:51
    本文采用哈夫曼编码的方式进行文件(文本文件)压缩和解压缩,首先介绍项目的整体思路:哈夫曼编码压缩文件实际就是统计出文件中各个字符出现的频率,然后为每个字符生成对应的编码,然后将每个字符用哈夫曼编码的...
  • WAV格式中常见的压缩编码

    千次阅读 2016-07-29 10:07:20
    WAV格式中常见的压缩编码(compression code)WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用...
  • Huffman编码是一种无失真的编码方式,是可变字长编码(VLC)的一种。 Huffman编码基于信源的概率统计模型,它的基本思路是: 出现概率大的信源符号编长码,出现概率小的信源符号编短码,从而使平均码长最小。 在程序...
  • 最近学习韩顺平老师主讲的“图解java 数据结构与算法”的哈夫曼编码这一章节时,在编码实现上遇到了些许问题,本文主要记述一下问题及自己的解决方案,如有更优解还请指点
  • 其中「编码」这个概念其实又包含两个方面:编码和解码。「视频编码」作为动词指的是将动态的图像信息转化为二进制数据的过程;其逆过程称为「视频解码」。「视频编码」作为名词则通常指的是某种特定的编码方式。同样...
  • Matlab-数字图像编码实验-无损编码/压缩算法实验 问题 实现哈夫曼压缩, 计算原图和压缩以后的尺寸,计算压缩率并比较分析 结果???? Matlab代码???? clear; clear all; A=imread('01.jpg'); I=rgb2gray(A);...
  • 图像压缩编码

    2017-04-10 14:19:41
    1.图像压缩编码  图像压缩就是对图像数据按照一定的规则进行变换组合,用尽可能少的数据量来表示影像。 ①必要性  图像的数据量非常大,为了有效地传输存储图像,有必要压缩图像的数据量,而且现代通讯技术...
  • Linux下,一般的普通USB摄像头V4L2视频采集有两种方式:V4L2_PIX_FMT_MJPEGV4L2_PIX_FMT_YUYV。 V4L2_PIX_FMT_MJPEG采集方式得到的是经过MJPEG压缩的图片,图片格式是jpeg/jpg,后缀为.jpg或.jpeg。直接将采集到...
  • 视频压缩编码的基本原理

    千次阅读 2017-02-02 22:32:59
    陆陆续续学习H264有一段时间了,曾经以为自己可以在这方面大有作为,但是越是学习越... 首先推荐三本书,《新一代视频压缩编码标准H.264(毕厚杰)》,《h264mpeg-4视频压缩:新一代多媒体的视频编码技术》,《H264标

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,360
精华内容 40,944
关键字:

压缩和编码的关系