第三章 图像编码原理与技术

3.1.1图像的空间域统计特性

  1. 图像的空间域统计特性的概念
  2. 图像的相关函数
  3. 图像的直方图

 1、图像的空间域统计特性

  • 图像的统计特性是指图像信号(亮度、色度)本身,或对它们进行某种方式的处理之后的输出值的随机统计特性。
  • 如同一行相邻像素之间,相邻行对应的像素之间,视频帧间对应的位置往往具有很强的相关性;
  • 对图像信息进行压缩编码就是要去除图像信号的这种固有的统计特性。

图像可以看作是一个随机场 ,也具有相应的随机特性。

在空域中,数字图像表现为空间上分布的点阵,它的统计特性是用来反应任意两个像素之间的相关性。在统计平均的意义上来计算它们间的相似程度,主要用体现像素取值的概率分布函数和标志着像素间关系的相关函数进行表示。

2、图像的相关函数

 相邻像素之间的相关特性,随着两个像素之间的距离增大而减小

3、图像的直方图

直方图-----反应了像素的概率分布,因此直方图也称为像素的概率分布函数。

灰度直方图(Histogram)是灰度级的函数。

任给一幅图像直方图是唯一的,但是直方图并不能唯一来决定图像。

3.1.2 图像的频率域统计特性

1、图像的频域统计特性

在频率域上,图像表现为不同频率分量系数的分布。

2、电视信号的功率谱统计

电视信号的功率谱能量主要集中在低频部分,随着频率的增加,它的能量越来越小。

3、图像差值信号的统计特性

帧内相邻像素差值信号定义:

        同一行的差值:\Delta f_{H}(i,j) = f(i,j) - f(i,j-1)

        同一列的差值:\Delta f_{V}(i,j) = f(i,j) - f(i-1,j)

 帧间差值定义:

        设f_{k}(i,j)表示第k帧的某个像素,f_{k-1}(i,j)表示第k-1帧,且和f_{k}(i,j)处于同一几何位置的像素点。则:d_{t}(i,j)=f_{k}(i,j)-f_{k-1}(i,j)

帧间差值信号统计特性为电视信号的帧间压缩编码提供重要依据。

图像相邻像素差值和帧间的差值为0时,概率分布是最大的。

3.2.1 预测编码的基本原理

 1、预测编码的分类

  1. 增量调制编码(Delta modulation)或DM编码法
  2. 差分脉冲编码调制编码(Differential Pulse Code Modulation)或DPCM编码法

2、预测编码的原理 

预测编码(Predictive Coding)

就是根据“过去”的时刻的像素值,运用一种模型,预测当前的像素值,预测编码通常不直接对信号编码,而是对预测误差(预测值跟已经发生值的差值)进行编码。当预测比较准确,误差较小时,即可达到编码压缩的目的。

原理

对图象的一个像素的离散幅度的真实值,利用其相邻像素的相关性,预测它的下一个像素的可能值,再求两者差,对这种具有预测性质的差值,量化,编码,就可以达到压缩的目的。

3、预测编码的流程图

 4、预测编码的误差

收端解码时的预测过程与发端相同,所用预测器也相同,收端输出的信号是发端的近似值,两者的误差是

 最终得到的误差\Delta _{n}^{'}-\Delta _{n}也就是量化器的输出和预测误差的差值,因此两者的误差关键就在于量化器。

注意:

  1. 多点预测:对于图像而言是个二维矩阵,对当前像素x,它的预测值用它周围的点进行预测,可以用x1,x2,x3对其进行预测。
  2. 每行最开始的几个像素无法预测,这些像素需要用其他方式编码,这是采用预测编码所需要的额外操作
  3. 预测系数随着不同的图象而不同,但对每幅图象都计算预测系数太麻烦,也不现实,可参考前人得到的数据选择使用。在静止图象压缩的国际标准(JPEG)中,对这种方法的前置点形式以及预测系数有一推荐值可供参考。

 3.2.2 无损预测编码

1、编码思想

认为相邻像素的信息有冗余。当前像素值可以用以前的像素值来获得(去掉像素冗余)

 2、编码流程

用当前像素值fn,通过预测器得到一个预测值f^n,对当前值和预测值求差,对差编码,作为压缩数据流中的下一个元素。

由于差比原数据要小,因而编码要小,可用变长编码。大多数情况下,fn的预测是通过m个以前像素的线性组合来生成的。

3、一维线性预测器

在一维线性(行预测)预测编码中,预测器为:

 round为取最近整数,ai为预测系数(可为1/m),y是行变量。

前m个像素不能用此法编码,可用哈夫曼编码,m个像素之后的就可以进行预测编码了。

4、无损预测编码、解码流程

 

 3.2.3 有损预测编码

 有损压缩编码通过牺牲图像的准确率来加大压缩率。

 有损压缩方法的压缩比:

  • 在图像压缩比大于30:1时,仍然能够重构图像
  • 在图像压缩比为10:1到20:1时,重构图像与原图几乎没有差别
  • 无损压缩的压缩比很少有能超过3:1的

 有损、无损压缩方法的根本差别在于有没有量化模块。

1、量化器的基本思想 

 减少数据量的最简单的办法是将图像量化成较少的灰度级,通过减少图像的灰度级来实现图像的压缩。这种量化是不可逆的,因而解码时图像有损失。

量化前的灰度级从0到255,一共256个灰度级,量化时0-S1间的灰度级我都量化为t1。这样把256个灰度级量化为4个灰度级,数据量大大减少,图像信息必定有损失。

2、有损预测的基本思想

 对无损预测压缩的误差进行量化,通过消除视觉心理冗余,达到对图像进一步压缩的目的。

在无损预测编码的基础上引入量化这一步骤,就得到了有损预测编码:

fn'是接收端的恢复图像

3、有损预测编码流程

 4、有损预测解码流程

3.3.1正交变换编码的基本原理

  1. 变换编码的基本原理、正交变换编码的基本原理
  2. 正交变换编码的性质

正交变换的关键技术:

通过消除信源序列中的相关性来达到数据压缩的目的。

预测编码:在空间域进行的编码

变换编码:在变换域进行 的编码

1、变换编码的基本原理

 变换编码中最主要的一类方法是正交变换编码法(或称函数变换编码法):

 图像的编码、解码流程

 2、正交变换编码的性质

  1. 具有熵保持性质
  2. 具有能量保持性质(不管是在空间域还是变换域,它的能量是相等的)
  3. 能量重新分配与集中
  4. 去相关特性(经过变换之后,像素之间的相关性变小)
  • 综上,由于正交变换的结果,相关图像的空间域可能变为能量保持、集中且为不相关的变换域。
  • 如果用变换系数来代替空间样值编码传送时,只需对变换系数中能量比较集中的部分加以编码,这样就能使数字图像传输或存贮时所需的码率得到压缩。 

3.3.2 离散傅里叶变换DFT

  1.  DFT的优势
  2. 一维DFT
  3. 二维DFT
  4. 二维DFT的性质
  5. DFT在图像处理中的应用

        在图像信号的正交变换中,主要有离散傅里叶变换(DFT)、离散余弦变换(DCT)、离散Walsh变换(DWT) 、离散哈达玛变换(DHT)等。

图像信号正交变换的优点:

        图像数据量大,如果直接在空间域处理,则计算量大,且随着图像样点数目增加而计算量急剧增加,难以实时处理。采用图像信号正交变换,将输入图像信号从空间域转换到频率域,可以把空间域中卷积或相关运算简化为频率域相乘处理,大大减少计算量,提高处理速度,可改变难以实时处理局面。

1、DFT的优势 

 2、一维DFT

         通常傅里叶变换为复数形式,即:F(u)=R(u)+jI(u)式子中R(u)和I(u)分别为F(u)的实部和虚部。

        通常傅里叶变换也可为指数形式,即:F\left ( u \right )=|F(u)|e^{j\Phi (u)},|F(u)|是F(u)的模,其中:

通常称\left | F(u) \right |为f(x)的频谱或傅里叶幅度谱\varphi \left ( u \right )为f(x)的相位谱

3、二维DFT

 1、二维DFT的定义

  •  二维傅里叶变换的复数形式,即:F(u,v)=R(u,v)+jI(u,v)
  • 二维傅里叶变换的傅里叶频谱,即:
  • 二维傅里叶变换的相位谱,即:

4、二维DFT的性质 

  • 可分离性
  • 平移性质
  • 旋转不变性
  • 线性
  • 共轭对称性
  • 缩放性
  • 卷积定理

 1、可分离性

 对于正变换可以分解为下面两个式子:

         在上式中,每个式子都为一个一维离散傅立叶变换,所以二维离散傅立叶变换F(u,v)可由f(x,y)先按行进行一维离散傅立叶变换,再按列进行一维离散傅立叶变换得到。

 2、平移性质

 3、旋转不变性

         表明如果视域中离散函数旋转\Theta _{0}角度,则在变换域中该离散傅里叶变换函数也将旋转同样的角度。

 DFT频谱分析:

         傅里叶变换后的图像,中间部分亮,为低频部分——频谱能量集中部分,越靠外边频率越高。

5、DFT在图像处理中的应用

  •  DFT在图像滤波中的应用

 DFT变换后的图像,中间为低频部分,越靠外频率越高,因此,可选择所需的高频或低频滤波。

  •  DFT在图像压缩中的应用

         变换系数刚好表现的是各个频率点上的幅值。在小波变换没有提出时,用来进行压缩编码。考虑到高频反映细节、低频反映景物概貌的特性。往往认为可将高频系数置为0,骗过人眼。允许误差的情况下舍弃掉一些高频系数。

  • DFT在卷积中的应用

时域的卷积转化为频域,作为频谱的相乘 

3.3.3 离散余弦变换DCT

  1. 一维离散余弦变换DCT
  2. 二维离散余弦变换DCT
  3. DCT的频谱图分析
  4. 正交变换的系数

         Fourier变换的一个最大的问题是:它的参数都是复数,在数据的描述上相当于实数的两倍(一个复数表示为实部加上j乘虚部,所以数据量相当于实数的两倍)。为此,我们希望有一种能够达到相同功能但数据量又不大的变换。因此,产生了DCT变换。

1、一维离散余弦变换

 正变换和反变换的定义式中都没有出现复数。

2、二维离散余弦变换

 3、DCT的频谱图分析

 4、正交变换的性质

3.3.4 静止图像压缩标准JPEG 

  1. JPEG标准简介
  2. 关键技术介绍
    1. 无损压缩编码
    2. 基于DCT的顺序编码模式

1、JPEG标准简介

          JPEG(Joint Photographic Experts Group)联合图像专家组简称,从事静态图像压缩标准制定的委员会。现在也用JPEG表示静态图像压缩标准。

 有多种操作模式可供设计和使用时选择:

无损压缩编码模式:该模式保证准确恢复数字图像的所有样本数据,与原数字图像相比不会产生任何失真。

基于DCT的顺序编码模式:它以DCT变换为基础,按照从左到右、从上到下的顺序对原图像数据进行压缩编码。图像还原时,也是按照上述顺序进行。

基于DCT的渐进编码模式:以DCT变换为基础,但使用多次扫描的方法对图像数据进行编码,以由粗到细逐步累加方式进行。解码时,在屏幕上可以先看到图像的大致面貌,然后逐步细化直到全部还原出来为止。

基于DCT的分层编码模式:以多种分辨率进行图像编码,先从低分辨率开始,逐步提高分辨率直到与原图像分辨率相同为止。解码时,重建图像的过程也是如此。

JPEG标准的压缩流程

 2、关键技术介绍

      (1)无损压缩编码

                JPEG选择差分脉冲调制(DPCM)作为无损压缩编码的方法

预测器采用3-邻域预测法,用三个相邻采样点(A、B和C)对当前编码采样点X进行预测

预测方法有多种,在无损编码的模式下,提供了7种预测器供用户选择:

         (2)基于DCT的顺序编码模式

  1. 数据单元
  2. 8*8的DCT变换
  3. 量化
  4. DC系数和AC系数扫描
  5. 熵编码

 一、数据单元

        在编码前,输入图像的每个分量(如果图像是彩色图像,并且是在RGB空间存储的,那么它的分量就是R分量、G分量、B分量)被分割成相互不重叠的8×8的子块,块内的64个数据组成一个数据单元(DU),如果图像的行数或列数不是8的倍数,则复制底行和最右边一列至所需的倍数。

        虽然JPEG可以压缩通常的RGB分量,但在亮度/色度空间(YUV空间)的压缩效果更好。

        RGB与YUV之间的转换并不包含在编解码器中,而是应用程序在编码之前和解码之后根据需要完成。

 二、8*8的DCT

 JPEG采用8*8大小的子图像块进行二维的离散余弦变换:

 对于8*8的f(x,y)经过DCT变换之后,我们就可以得到DCT域的系数,用F(u,v)来进行表示。

经过DCT变换以后能量会发生转移,一般集中在左上角的少数几个低频系数上。

 当f(x,y)为8bit像素,它的取值范围为0~255,由此可以求出DC系数F(0,0)的取值范围为0~2040。

在进行变换之前,要将数字图像采样数据从无符号整数转换到带正负号的整数,即把范围为[0,2^{8}-1]的整数映射为[ -2^{8-1},2^{8-1}-1]范围内的整数(也就是吧0~255的范围,映射为-128~127这个范围)。变换的方法是将输入数据减去2^{8-1}

三、量化

 量化过程:

 反量化过程:

         我们把彩色图像变换到YUV空间之后,它有Y亮度分量,以及U、V色度分量,不同分量所对应的量化表是不相同的。有亮度量化步长表,色度量化步长表。

量化以后,DCT系数矩阵变得稀疏,位于矩阵右下角的高频分量系数大部分被量化为0。

量化目的就是让F(u,v)变得更加稀疏,能量更加集中。

四、DC系数和AC系数扫描

        考虑到DCT变换后,直流DC系数反映了8×8子块内64个像素均值的度量,包含了整个图像总能量的重要部分,因此将DC系数和其余63个交流AC系数分别编码。

对DC系数进行编码:                                      对AC系数进行编码:

 五、熵编码

         JPEG建议的嫡编码方法有两种:哈夫曼编码和自适应二进制算术编码,前者使用哈夫曼码表,后者使用算术码的条件码表。

        编码时,DC系数与AC系数分别使用不同的哈夫曼编码表,亮度与色度也需要不同的哈夫曼编码表,所以一共需要4个编码表。

(1)直流DC系数编码

        采用“前缀码(SSSS)+尾码”的形式:前缀码指明尾码的有效位数(设为B位),用标准的哈夫曼编码;尾码则直接采用B位自然二进制码。

        对于8bit精度的JPEG基本系统,前缀码SSSS的取值范围为0~11,SSSS的码表共有12项。

 根据Diff的幅度范围由表查出其前缀码字和尾码的位数后,可以按以下规则直接写出尾码码字:

 (2)AC系数编码

经过量化以及Z形扫描后,AC系数中会出现较多的0,所以采取对0系数的游程长度编码。

        先将所有AC系数表示为00...0x,00...0X,...,00...0X形式,其中X为非0值。若干个0和一个非0值组成一个基本编码单位。

        基本编码单位中一连串的0可以用其游程即0的个数表示,后面跟类似于DC系数编码中的前缀码+尾码,构成一个“零游程/类别/非0值”的结构。

AC系数编码中的几个码表

 Eg:

 3.3.5 JPEG编解码实例

1、编码

 2、解码

 解码器对收到的DCT系数进行反量化,得到:

执行逆DCT过程,并对每一元素加上128,得到重构块:

 3、编码分析

 

 3.3.6 JPEG编码扩充系统

  1.  基于DCT的渐进编码模式
  2.  基于DCT的分层编码模式
  3. JPEG的编码总结

(1)基于DCT的渐进编码模式 

        这种模式采用的压缩编码算法与基于DCT的顺序编码模式相同,但每个图像分量的编码要经过多次扫描才能完成,每次扫描均传输一部分DCT量化系数

  • 第一次扫描只进行粗糙的压缩,以很快的速度传送出粗糙的图像,接收方据此可重建一幅质量较低但尚可识别的图像。
  • 在随后几次的扫描中再对图像作较细致的压缩处理,这时只传送增加的一些信息,接收方收到后把可重建图像的质量逐步提高。
  • 这样逐步渐进,直到全部图像信息处理完毕为止。

渐进编码的操作方式 :

  1. 频谱选择法:指每一次扫描DCT系数时,只对64个DCT系数中的某些频段的系数进行压缩编码和传送。随后进行的扫描中,再对余下的其他频段进行编码和传送,直到全部系数都处理完毕为止。
  2. 连续逼近法:指沿着DCT系数的高位到低位的方向逐渐累进编码。

 (2)基于DCT的分层编码模式 

分层编码的操作模式是把一幅原始图像的空间分辨率分成多个低分辨图像进行“锥形”编码的方法。

分层编码的处理过程:

  1. 把原始图像的分辨率分层降低。
  2. 对已降低分辨率的图像采用无失真预测编码、基于DCT的顺序编码或基于DCT的渐进编码中任何一种方式进行压缩编码。
  3. 对低分辨率图像进行解码,重建图像。
  4.  使用插值、滤波的方法使重建图像的分辨率,提高至下一层图像分辨率的大小。
  5. 把升高分辨率的图像作为原始图像的预测值,将它与原始图像的差值采用三种方式(无失真预测编码、基于DCT的顺序编码或基于DCT的渐进编码)中的任何一种进行编码。
  6. 重复上述步骤(3)、(4)、(5)直到图像达到原图像的分辨率为止。

(3)JPEG的编码总结

JPEG标准规定,JPEG算法结构由三个主要部分组成:

  1. 独立的无损压缩编码:采用线性预测编码和哈夫曼编码(或算术编码),可保证重建图像与原始图像完全一致(均方误差为零)。
  2. 基本系统:提供最简单的图像编码/解码能力,实现图像信息的有损压缩,对图像主观评价能达到损伤难以察觉的程度。采用8×8 DCT变换线性量化和哈夫曼编码等技术,只有顺序操作模式。
  3. 扩充系统:在基本系统的基础上再扩充了一组功能,例如嫡编码采用二进制算术编码,并使用渐进构图操作模式,渐进无损编码模式等。它是基本系统的扩展或增强,因此也必须包含基本系统。

JPEG标准中设定一个质量控制因子Q,在量化时,用该因子和量化表中的量化步长相乘以后作为实际的量化步长。通过使用Q因子改变量化步长实现了对编码质量或编码比特率的控制,以适应用户或信道的要求。

3.4.1 跳白块编码(WBS)

  1. 二值图像编码介绍
  2. 跳白块编码(WBS编码)
    1. 一维WBS编码
    2. 二维WBS编码
    3. 自适应WBS编码

(1)二值图像编码介绍

         二值图像只有两个亮度值,所以采集时每像素用一个比特表示,用“0”代表黑,“1”代表白,或者反之,这通常称为直接编码。直接编码时,代表一帧图像的码元数对应于该图像的像素数(即这个图像有多少个像素,那么它的码元数就有多少)。

        传输二值图像最常用、最典型的通信方式是传真。

常用编码方式:

  • 游程长度编码(RLC编码)
  • 跳白块编码(WBS编码)
  • 方块编码

(2)跳白块编码 (WBS)

跳过白色块(WBS)编码的基本思想:

在实际中,大多数二值图像都是白色背景占大部分,黑像素只占图像像素很少一部分。因此,若能跳过白色区域,只对黑色像素编码,就能减少传输的数码率

1、一维WBS编码

        一维WBS编码是把每一扫描行分成若干段,每段包含N个像素。若该段N个像素全是白色,那么只用1比特的码字1来表示;若不全是白色,即使只包含一个黑色像素,也都用(N+1)比特的码字来表示。这(N+1)bit的码字中,第一个比特用0代表,其余的N比特采用直接编码,即白色用1,黑色用0代表。

 2、二维WBS编码

        二维WBS编码是把要传送的图像分成若干块,每块含有M×N个像素。全白像素的块用一比特的码字1表示,而非全白块用(MN+1)bit的码字表示,其中第一比特为0,其余的MN个比特采用直接编码。

3、自适应WBS编码

         根据图像的局部结构或统计特性,改变像素块的大小(像素块不是固定的是可改变的有大有小),进一步提高压缩效果,这就是所谓的自适应WBS编码。自适应的WBS编码可以使得表示图像的bit数下降很多,但是为了自适应增加了设备的复杂性。

3.4.2方块编码

  1. 方块编码(BTC)原理
  2. BTC编码步骤
  3. 例子
  4. 判决阈值的选择

(1)BTC编码原理 

         方块编码(BTC,Block Truncation Coding)是把图像划分成大小相等的子像块,在每个子像块里找出两个代表性的亮度来近似地代表该块内各像素的亮度,形成一个只包含两个亮度值的比特图。

(2)BTC编码步骤

  1. 首先将图像划分为nxn(n通常取4)的非重叠方块;
  2. 然后确定判决阈值(可以是均值\overline{x}和方差\sigma)以及两个代表性的亮度值a、b和比特图B;
  3. 接着将\overline{x}\sigma和B发送到接收端;
  4. 接收端根据B及a、b恢复图像。

 a、b如何选择?

设方块内所有像素亮度的平均值\overline{x},方差为\sigma ^{2},则:

m表示像素的总数

 

         根据BTC的原理,两个亮度分量a、b应该能近似代表该块内各像素的亮度。如果要求编码前后的平均值和方差不变,那么由此原则确定一组a、b。

        

 (3)Eg:

 方块编码方式是非信息保持的编码,肯定会有信息损失的。但是保持了该方块中的平均亮度和对比度这两个重要的统计特征是不变的。编码前和编码后,它的均值和方差是没有变化的。

 (4)判决阈值的选择

 若要保持编码前后图像更多的信息不丢失,必须选取合适的判决阈值。

 BTC基本编码方法中选择的是均值及方差不变为判决准则。

 实际上,还可以有其他的选择方法。例如使编码前后的三阶矩保持不变

 这样,通过三阶矩保持不变求得q,虽然增加了计算量,但编码前后保持的信息更多了。

 3.4.3位平面编码

 编码原理:位平面是基于将灰度值图像分解成一系列二值图,然后对每一幅二值图在用二元压缩方法进行压缩的技术。

对相关信源比哈夫曼方法更有效。

主要有两个步骤:位平面分解位平面编码

1、位平面分解 

(1)二值分解

         对一幅用多个比特表示其灰度值的图像来说,其中每个比特可看作表示了一个二值的平面,也称位平面(bit-plane)。

        一幅灰度级用8bit表示的图像有8个位平面,一般用位平面0代表最低位平面,位平面7代表最高位平面。

 位平面分解缺点:

像素点的微小变化有可能对位平面的复杂度产生较明显的影响。 

 (2)灰度码(格雷码)分解

 一幅图像的高阶比特面携带大量的可见相关细节,低阶面分布着一些细小的细节。

灰度码位平面比对应的二值位平面的复杂性小。

2、位平面编码 

  • 位平面编码:即对分解后位平面图的编码
  • 主要有常数块编码和1-D游程编码方法:为了消除像素间冗余
  • 1-D游程(一维游程)和2-D游程是传真机中使用的两种二值图像压缩标准(G3和G4)中所用技术的基础。

(1)常数块编码(constant area coding,CAC)

         用专门的码字表达全是0或1的连通区域。

        将图像分成全黑、全白或混合的m×n尺寸块。出现频率最高的类赋予1 bit码字0;其它两类分别赋予2 bit码字10和11。但要注意混合块的码只是作为前缀,仍要附上mxn比特表示的模式。

        原来需用M×N比特表示的常数块中的像素(每个用1bit)现在只用1bit或2 bit来表示,这样就能够达到压缩的目的。

(2)1-D游程编码(run length coding,RLC)

        也称形成编码,对二值图有效

        基本原理:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”,行程编码因此而得名),只在各行或者各列符号发生变化时,一次记录该符号重复的个数,从而实现数据的压缩。

·        对于大片相同灰度区域的图像压缩效果显著,对于灰度变化很多且都不相邻的图像不适用。

猜你喜欢

转载自blog.csdn.net/m0_46303430/article/details/125935888
今日推荐