图像压缩原理
图像压缩算法及其数学原理

图像压缩算法及其数学原理在现代科技的发展下,数字图像已经成为人们生活中不可或缺的一部分。
然而,随着图像的分辨率和色彩深度的提高,图像文件的大小也越来越大,给存储和传输带来了巨大的负担。
为了解决这个问题,图像压缩算法应运而生。
图像压缩算法是一种通过减少图像文件的数据量来实现文件大小减小的技术。
它可以分为有损压缩和无损压缩两种类型。
有损压缩算法是通过牺牲一定的图像质量来实现更高的压缩比。
最常见的有损压缩算法是基于离散余弦变换(Discrete Cosine Transform,DCT)的JPEG算法。
JPEG算法将图像分成8x8的图像块,对每个图像块进行DCT变换,然后将变换系数进行量化和编码。
在量化过程中,DCT变换系数的高频部分被量化为较小的数值,从而减小了数据量。
在编码过程中,采用了熵编码算法,如哈夫曼编码,进一步减小了数据的大小。
虽然JPEG算法可以实现较高的压缩比,但由于数据的丢失,图像质量也会有所损失。
无损压缩算法是通过保持图像质量的前提下实现文件大小减小的技术。
最常见的无损压缩算法是基于预测编码的无损压缩算法,如GIF和PNG算法。
这些算法利用图像中像素之间的相关性进行编码。
在预测编码中,每个像素的值都是通过对其周围像素值进行预测得到的。
然后,将预测误差进行编码和存储。
由于预测误差通常较小,因此无损压缩算法可以实现较小的文件大小,同时保持图像质量不变。
图像压缩算法的数学原理是其实现的基础。
在有损压缩算法中,DCT变换是其中的核心数学原理。
DCT变换是一种将时域信号转换为频域信号的数学变换。
它通过将图像块中的像素值映射到一组频域系数上,从而实现对图像的压缩。
在DCT变换中,高频系数对应于图像的细节信息,而低频系数对应于图像的整体结构。
通过量化和编码高频系数,可以实现对图像细节的压缩。
在无损压缩算法中,预测编码是其中的核心数学原理。
预测编码利用了图像中像素之间的相关性。
通过对像素值进行预测,可以减小预测误差的大小。
图像压缩原理

图像压缩原理
图像压缩原理是通过减少图像数据的存储量来实现的。
具体来说,图像压缩原理涉及到以下几个方面。
1. 去除冗余信息:图像中通常存在大量冗余信息,例如连续相同颜色的像素或者相似颜色的像素。
通过将这些冗余信息进行去除或者压缩,可以达到减少图像存储量的目的。
2. 空间域压缩:在空间域压缩中,通过减少像素的数量或者减少像素的位数来减少图像文件的大小。
一种常见的空间域压缩算法是基于四色彩色的量化压缩方法,通过降低每个像素颜色的位数来减少存储空间。
3. 频域压缩:频域压缩是将图像从空间域转换为频域,利用图像在频域中的特性来进行压缩。
其中一种常见的频域压缩方法是基于离散余弦变换(DCT)的压缩方法,它将图像转换为频域信号,并利用频域信号中较小的系数来表示图像。
4. 熵编码:熵编码是一种无损压缩方法,通过对图像数据进行统计分析,利用出现频率较高的数据用较短的码字表示,从而减少图像文件的存储大小。
综上所述,图像压缩通过去除冗余信息、空间域压缩、频域压缩和熵编码等方法来减少图像数据的存储量。
这些方法可以单独应用,也可以结合使用,以达到更好的压缩效果。
图像压缩原理

1、为什么要对图像数据进行压缩?其压缩原理是什么?答:(1)数字图像如果不进行压缩,数据量是比较大的,例如一幅分辨率为1024×768的静态真彩色图像,其数据量为1024×768×24=2.25(MB)。
这无疑对图像的存储、处理、传送带来很大的困难。
事实上,在图像像素之间,无论在行方向还是列方向,都存在一定的相关性。
也就是说,在一般图像中都存在很大的相关性,即冗余度。
静态图像数据的冗余包括:空间冗余、时间冗余、结构冗余、知识冗余和视觉冗余、图像区域的相同性冗余、纹理的统计冗余等。
图像压缩编码技术就是利用图像数据固有的冗余性和相干性,将一个大的图像数据文件转换为较小的同性质的文件。
(2)其压缩原理: 空间冗余、时间冗余、结构冗余、和视觉冗余。
2、图像压缩编码的目的是什么?目前有哪些编码方法?答:(1)视频经过数字化处理后易于加密、抗干扰能力强、可再生中继等诸多优点,但是由于数字化的视频数据量十分巨大,不利于传输和存储。
若不经压缩,数字视频传输所需的高传输率和数字视频存储所需的巨大容量,将成为推广数字电视视频通信的最大障碍,这就是进行视频压缩编码的目的。
(2)目前主要是预测编码,变换编码,和统计编码三种编码方法。
3、某信号源共有7个符号,概率分别为0.2,0.18,0.1,0.15,0.07,0.05,0.25,试进行霍夫曼编码,并解释是否进行了压缩,压缩比为多少?0000 0001 000 00 111 110 100.05 0.07 0.1 0.2 0.18 0.15 0.250.05×4+0.07×4+0.1×3+0.2×2+0.18×3+0.15×3+0.25×2=2.67。
计算机图像处理中的图像压缩与图像恢复算法

计算机图像处理中的图像压缩与图像恢复算法图像压缩和图像恢复算法是计算机图像处理领域中非常重要的技术,它们可以对图像进行有效的压缩和恢复,实现图像数据在存储、传输和显示过程中的高效利用。
本文将介绍图像压缩与图像恢复算法的基本原理和常用方法。
一、图像压缩算法图像压缩算法是通过去除冗余信息和减少图像数据量来实现图像压缩的。
常见的图像压缩算法主要包括无损压缩和有损压缩两种。
1. 无损压缩算法无损压缩算法是指在图像压缩的过程中不丢失原始图像的任何信息,使得压缩后的图像与原始图像完全一致。
常用的无损压缩算法有:(1)Huffman 编码算法:通过构建霍夫曼树将出现频率较高的像素值赋予较短的编码长度,提高编码效率;(2)LZW 压缩算法:通过构建字典表来进行压缩,将图像中重复的像素值用较短的编码表示,进一步减少数据量。
2. 有损压缩算法有损压缩算法是在压缩的过程中有意丢失一定的图像信息,从而实现更高的压缩比。
常用的有损压缩算法有:(1)JPEG 压缩算法:通过离散余弦变换(DCT)将图像转化为频域表示,再利用量化和熵编码等技术对图像数据进行压缩;(2)Fractal 压缩算法:将图像分解为一系列局部细节,并利用自相似性进行压缩。
二、图像恢复算法图像恢复算法是指在图像受到损坏或失真后,通过一系列算法恢复出原始图像的过程。
常见的图像恢复算法主要包括插值算法和去噪算法。
1. 插值算法插值算法是一种用于根据已知图像信息来估计未知像素值的方法。
常见的插值算法有:(1)最近邻插值算法:根据离目标像素最近的已知像素值进行估计;(2)双线性插值算法:利用目标像素周围的已知像素值进行加权平均估计;(3)双三次插值算法:在双线性插值的基础上,通过考虑更多的邻域像素值进行估计。
2. 去噪算法去噪算法可以有效地去除图像中的噪声,恢复出原始图像的清晰度。
常见的去噪算法有:(1)中值滤波算法:利用像素周围邻域像素的中值来估计目标像素值,对于椒盐噪声和脉冲噪声有较好的去除效果;(2)小波去噪算法:利用小波变换将图像分解为不同的频率分量,通过阈值处理来剔除噪声。
图像压缩实验报告

竭诚为您提供优质文档/双击可除图像压缩实验报告篇一:实验三图像压缩实验三图像压缩一、实验目的1.理解有损压缩和无损压缩的概念;2.理解图像压缩的主要原则和目的;3.了解几种常用的图像压缩编码方式。
4.利用mATLAb程序进行图像压缩。
二、实验仪器1计算机;2mATLAb等程序;3移动式存储器(软盘、u盘等)。
4记录用的笔、纸。
三、实验原理1.图像压缩原理图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
(1).冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类:(1)无损压缩编码种类哈夫曼(huffman)编码,算术编码,行程(RLe)编码,Lempelzev编码。
(2)有损压缩编码种类预测编码,Dpcm,运动补偿;频率域方法:正交变换编码(如DcT),子带编码;空间域方法:统计分块编码;模型方法:分形编码,模型基编码;基于重要性:滤波,子采样,比特分配,向量量化;(3)混合编码。
有JbIg,h261,Jpeg,mpeg等技术标准。
图像压缩算法原理:JPEG、PNG等压缩方式

图像压缩算法原理:JPEG、PNG等压缩方式图像压缩算法旨在减小图像文件的大小,同时保持尽可能多的图像质量。
JPEG(Joint Photographic Experts Group)和PNG(Portable Network Graphics)是两种常见的图像压缩方式,它们有不同的原理和适用场景。
JPEG 压缩算法原理:离散余弦变换(DCT): JPEG 使用离散余弦变换将图像从空间域变换到频域。
DCT将图像分解为一系列频率分量,允许更多的信息被聚焦在低频分量上,这些低频分量对人眼更敏感。
量化:在DCT之后,通过量化将每个频率分量的数值映射为一个较低的精度。
高频分量被更多地量化为零,从而进一步减小数据。
哈夫曼编码:使用哈夫曼编码对量化后的数据进行熵编码。
哈夫曼编码对常见的值使用较短的编码,对不常见的值使用较长的编码,以进一步减小文件大小。
色彩空间转换: JPEG通常将RGB颜色空间转换为YCbCr颜色空间,其中Y表示亮度(灰度),Cb和Cr表示色度(颜色信息)。
这样可以将图像的亮度和色度分离,使得在色度上的降采样更容易。
PNG 压缩算法原理:无损压缩:与JPEG不同,PNG是一种无损压缩算法,它保留了原始图像的每一个像素的精确信息。
这使得PNG适用于需要完整性的图像,如图标、图形等。
差分预测: PNG使用差分预测(Delta Predictive Coding)来减小冗余。
通过预测每个像素值与其周围像素值之间的差异,PNG可以用较小的数据表示图像。
LZ77压缩: PNG使用LZ77算法进行数据压缩。
该算法通过查找并用指向先前出现的相似数据的指针替换当前数据,从而减小文件大小。
无调色板和透明度支持: PNG支持真彩色图像,并且可以存储图像的透明度信息。
这使得PNG在需要保留图像质量的同时支持透明背景。
总体而言,JPEG适用于需要较小文件大小,且可以容忍一些信息损失的场景,而PNG适用于需要无损压缩和透明度支持的场景。
图像压缩技术的工作原理

图像压缩技术的工作原理图像压缩技术是将图像文件大小减小的过程,常见的图像压缩格式有JPEG、PNG、GIF、BMP等。
图像压缩技术可以对大量数据进行分析,从而提高存储效率和传输速度,具有广泛的应用场景,如图像压缩、数字电视、视频传输、视频电话等。
本文将介绍图像压缩技术的工作原理。
图像压缩技术的种类图像压缩技术可以分为有损压缩和无损压缩两种。
有损压缩是指在压缩图像时,丢失部分图像信息。
比如,JPEG格式可以通过丢失一些细节信息来实现压缩的目的。
这种压缩方法会对图像的质量产生一定的影响,但是可以在一定程度上降低图像的文件大小。
无损压缩是指在压缩图像时,无需丢失任何图像信息。
比如,PNG格式使用整个完整的图像进行压缩,可以保证图像文件的质量和信息完整性。
虽然无损压缩不能减小文件大小的同时保持图像质量,但是保留了完整信息,可以保证图像的准确传输和还原。
图像压缩技术的工作原理图像压缩技术主要分为预处理阶段、编码阶段和解码阶段三个部分。
预处理阶段预处理阶段通常是通过对图像进行标准化、色彩空间转换和分块,从而在压缩之前对图像进行处理,以获得更好的压缩效果。
标准化是指对图像进行统一尺寸和统一角度的处理。
通过标准化可以保证图像输出一致,减少信息的冗余和噪声。
色彩空间转换是将一种颜色表示方式转换成为另一种颜色表示方式。
在转换前,需要确定转换前和转换后的像素点数量和颜色的数量是否一致。
一般情况下,将RGB色彩空间转换为YUV色彩空间类型,可以减少数据的冗余和相邻像素的相似度,从而提高图像压缩效果。
分块是在图像中将图像分为多个小块,从而可以进行对每一个小块进行处理,减少处理时间和避免内存溢出。
在分块的同时还可以进行下采样操作,降低分块的数量,减少计算复杂度,提高压缩效率。
编码阶段编码阶段是将预处理后的图像信息通过一定编码规则来进行压缩操作。
编码规则主要分为两种,一种是基于变长编码的压缩方法,另一种是基于预测的压缩方法。
基于深度学习算法的图像无损压缩技术研究

基于深度学习算法的图像无损压缩技术研究随着数字化时代的到来,影像技术越来越成为人们生活中的必需品。
然而,由于数字图像的文件大小较大,传输和存储成本也越来越高,因此图像压缩技术成为一项热门研究领域。
尤其是在无损压缩方面,一些基于深度学习算法的新技术正在被研究和应用。
本篇文章将探讨基于深度学习算法的图像无损压缩技术研究。
1. 图像压缩技术的基本原理图像压缩技术的基本原理是在尽量减少图像数据而不降低其质量的前提下,有效地减小图像文件的大小。
通常情况下,图像压缩被分为无损压缩和有损压缩两种方式。
有损压缩技术会牺牲图像的质量以减小文件大小,而无损压缩技术则不会降低图像的质量。
本篇文章着重讨论无损压缩技术。
2. 基于深度学习算法的图像无损压缩技术在过去的几十年中,人们开发了许多无损压缩算法,包括熵编码、预测编码、自适应编码等。
然而,这些传统的算法往往需要大量人工设计和优化,并且在压缩效果和压缩速度上也存在瓶颈。
近年来,随着深度学习技术的发展,研究人员开始尝试将深度学习算法应用于图像无损压缩。
基于深度学习算法的图像无损压缩技术主要分为两个阶段:训练阶段和压缩阶段。
在训练阶段,研究人员将大量图像数据输入深度学习网络,以训练模型。
在压缩阶段,输入要压缩的图像,模型将生成高质量的压缩图像。
目前,主流的深度学习算法包括自编码器、卷积神经网络等。
3. 深度学习算法在无损压缩中的优势相比传统的无损压缩算法,基于深度学习算法的图像无损压缩技术具有以下优势:(1)更好的无损压缩效果。
深度学习算法可以学习到图像的更深层次的特征表示,从而提高图像无损压缩效果。
(2)更快的压缩速度。
由于深度学习算法的高效并行计算能力,基于深度学习算法的图像无损压缩技术能够更快地压缩图像。
(3)更好的适应性。
深度学习算法可以根据不同类型的图像自适应地学习其特征表示,从而更好地适应各种场景。
4. 基于深度学习算法的图像无损压缩技术的研究方向目前,基于深度学习算法的图像无损压缩技术的研究方向包括以下几个方面:(1)改进深度学习算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本节以JPEG为例,讲解静态图像压缩的原理。
JPEG图像压缩主要分为下面四个过程,离散余弦变换、量化、编码以及组成位数据流。
下面通过一个简单的例子说明各步骤的原理。
1.离散余弦变换(1)通过离散余弦变换(DCT变换,下略),可以将能量集中在矩阵左上角的少数几个系数上。
简单地说,我们可以将DCT看作用一个8行8列的二维数组产生另一个8行8列的二维数组的函数。
也就是说,把一个数组通过某种变换,变成另一个数组。
首先将一幅图像划分成一个个8*8像素的图像块。
比如,原图的尺寸是640*480,那么将会被划分成80行60列的图像块。
如果图像只包含灰度,那么每个象素都会用一个8bit的数字表示。
因此可以将每个图像块表示成一个8行8列的二维数组,这个数组中每个元素都是0~255的8bit整数。
DCT变换就是作用在这个数组上。
再看一下彩色的情况。
如果图像是彩色的,那么每个象素都可以用24bit、相当于3个8bit的组合来表示。
因此可以用3个8行8列的数组来表示这个8*8的图像块。
DCT变换作用于每一个数组。
(2)用f表示像素值的数组,f(i,j)表示第i行第j列的值,则DCT变换之后定义一个新的数组F(u,v)表示第u行v列的值。
DCT变换通过下面公式完成:逆DCT变换公式:在上面两公式中,当u,v=0时,,其他情况下,C(u),C(v)=1。
下面举例说明。
下面矩阵表示一个8*8的图像样本的原始数组。
为了便于计算,在进行变换之前先对原始图像中的每个样本数据减去128。
然后再按照公式计算出数组中每个元素的值。
举F(0,0)的值的计算过程如下:按照这样,继续计算其他值:f(i,j)经过DCT变换之后得到了F(i,j),其中F(0,0)是直流系数,称为DC系数,其他的为交流系数,称为AC系数。
2.量化为了达到压缩的目的,我们需要对经过DCT变换的DCT系数进行量化,目的是减小非0系数的幅度以增加0值系数的数目。
在一定的主观保真的前提下,丢掉那些对视觉效果影响不大的数据。
量化是压缩过程中造成质量下降的最主要原因。
因为人眼对于亮度的感知能力高于色度,JPEG压缩时使用了两个量化表——色度量化表和亮度量化表。
对于上面的例子,我们使用亮度量化表对其进行量化,得到数组Q(i,j)。
量化的公式是:其中U(i,j)为量化表中第i行j列的值。
也就是说,要用数组F中的每一个元素除以量化表中起对应位置的值。
按照这个公式,我们对上面例子中的数组F进行量化后得到如下结果Q:我们很高兴地看到,呃……基本上都变成了0。
3.编码z形排列:对图像块进行DCT变换后,能量集中在矩阵左上角的少数几个系数上。
所以一般左上角的数值比较大,而0则主要集中在矩阵右下角。
为了增加连续的0的个数,我们采用z形排列(zigzag),以便更好地压缩数据。
这样,我们就能把一个8*8的矩阵转换成一个1*64的矢量。
我们将上面经过量化的结果Q进行z形排列,如下所示:经过z形排列之后,结果变成了:15 0 -2 -1 -1 -1 0 0 -1 0 0 ……后面全部是连续的0,这样一来,连续0的个数变多了。
DC系数编码:8*8图块经过DCT变换后得到的DC系数有两个特点,一个是数值很大,另一个是相邻两个图块之间的DC系数很相近。
因此,JPEG采用取DPCM编码对DC系数差进行编码。
公式如下:其中Delta为差值,即差值为当前图块DC系数减去上一个图块的DC系数。
AC系数的编码:经过量化的AC系数的特点是有很多连续的0。
所以可以使用非常简单和直观的RLE编码对其进行编码。
霍夫曼编码([size=-1]*注1 注2):在JPEG有损压缩中,使用霍夫曼编码来减少熵(读Shang,1声)。
压缩数据符号的时候,霍夫曼编码器对出现频率较高的符号使用较短的代码,对于出现频率较低的符号使用较长的代码,最终使得编码的平均码字最短。
4.组成数据位流JPEG编码的最后一步为把各种标记代码和编码后的图像组成数据,这样做的目的是为了便于传输、存储和译码器进行译码。
注1:JPEG标准也允许(但是并不要求)使用在数学上优于霍夫曼编码的算术编码。
然而,这个特色几乎很少被使用,因为它被专利所涵盖,且它相较于霍夫曼编码在编码和解码上会更慢。
使用算术编码一般会让档案更小约5%。
注2:Huffman编码,除“霍夫曼编码”外,还有“哈夫曼编码”等其他译法存在。
本文参考资料:《多媒体技术基础》雷运发主编中国水利水电出版社2005年4月出版本节将抛开具体的编码器与运算原理,讲一讲一些运动图像压缩的基本思想与模型。
(1)运动图像压缩的可能性信息(这里不仅仅指图像信息)可以被压缩,是因为其中包含着冗余。
若将信息(数据)中的冗余去除,即可减少其数据量。
具体到运动图像信息的压缩,则是通过去除其中包含的统计冗余、空间冗余、时间冗余等来实现的压缩。
我们经常提到的无损压缩,就是通过去除图像信息中的统计冗余来实现的。
但是这样似乎并不够,因为目前对于视频的无损压缩算法只能获得很有限的压缩率。
因此,现在多数使用的压缩技术是建立在有损压缩的基础之上的。
有损压缩的代价是解压缩信号和原始信号不完全相同。
因此,我们进行视频压缩的目的就是,在获得尽量高的压缩效率的同时使失真最小。
(2)视频编码器的模型压缩是降低数据量的过程。
而视频压缩,则是降低数字视频序列数据量的过程。
视频压缩包括编码器(encoder)和解码器(decoder)两部分,合称为编解码器(CODEC)。
编码器需要通过某个模型来描述一段视频,这种模型既要兼顾压缩率,也要顾及压缩后的视频质量,使其尽可能地接近压缩前的图像。
然而压缩率与质量通常是互相矛盾的:随着压缩率的提升,质量也随之下降。
下面的图示展示了一个典型的视频其编码模型:典型的编码模型包括三个主要部分,时域模型、频域模型、熵编码器。
相邻的帧之间具有较大的相似性,因此未压缩的视频流输入时域模型之后,时域模型通过建立预测帧来降低时域冗余。
频域模型输入的是残差图像,利用同一幅图象中相邻像素点的相似性,消除残差图像的频域冗余。
熵编码器对运动向量和变换系数进行压缩,消除存在的统计冗余,最后输出用于传输或存储的数据。
预告:简单分析过视频编码器的典型模型之后,我们将逐个讲解时域模型、频域模型、熵编码器的简单原理。
时域模型中具体是如何消除时域冗余的呢?运动估计、运动补偿、1/2插值又是什么呢?请期待下一节时域模型的讲解。
参考资料:1.《多媒体技术基础》雷运发主编中国水利水电出版社2005年4月出版2.《H.264和MPEG-4视频压缩——新一代多媒体的视频编码技术》[英]Iain E.G.Richardson 著欧阳合、韩军译国防科技大学出版社2004年11月第一版时域模型的作用是消除连续帧之间的时域冗余。
在时域模型中,当前帧减去参照帧得到残差图像,对残差图像进行编码,达到降低时域冗余的目的。
参考帧选得越准确,所得到的残差图像能量越小,越容易压缩。
一个最简单的方法便是找过去的图像作为当前帧的参照帧。
但这种方法有一个明显的不足,那就是残差图像的能量相对于我们的压缩需求来说依然过高,后续模型依然村在大量信息需要压缩。
这个问题的主要原因是物体运动。
因此要进一步降低数据量,必须对图像进行运动补偿。
基于块的运动估计和补偿:现在普遍采用的运动补偿方法是基于块(Block)的运动估计和补偿。
这种运动补偿方法首先将图像向划分成若干个块,分别对每个块进行运动补偿。
下面简要说明其过程。
首先在参照帧中搜索当前块的匹配块。
将当前块于参考帧特定搜索区域中(一般是以当前块的位置为中心的一片区域)所有块进行比较,找到相减后残差能量最小的块作为最佳匹配块。
这个过程称为运动估计。
之后,将最佳匹配块作为当前块的参照块,当前块减去参照块得到相应的残差块。
此过程被称作运动补偿。
对残差块进行编码和传输,同时运动向量(当前块和参照块之间的相对位置)也被编码和传输。
基于块的运动补偿有多种优势,如计算复杂度低、适用于长方形视频图像、适合分块变换(DCT、DWT等等,下一节会说到)。
单其同样也有缺点,如真实物体很少是长方形的、物体运动经常是非整数块、较复杂的运动和较复杂的形状不适合这种补偿方式等等。
但抛开不足,基于分块的运动补偿算法仍旧是标准时域模型的基础。
运动补偿的块:在大多重要的视频编码标准中(如MPEG-1、MPEG-2、MPEG-4等等),宏块(16*16像素大小)是运动补偿的基本运算单位。
在运动估计时,编码器在参考帧中寻找与当前宏块匹配的16*16像素区域,使匹配准则达到最小的16*16区域即为最佳匹配。
当前宏块的位置与最佳匹配宏块的相对位置为运动矢量,当前宏块减去最佳匹配宏块所得到的残差宏块将于运动矢量一同被编码和传输。
块的大小:事实证明,运动补偿的块越小,得到的残差图像的能量越小。
然而,分块越小,块越多,算法复杂度越高,矢量数目越多。
传输矢量所需的数据量很可能大于图像残差能量减小所节省的数据量,这样一来就会造成得不偿失的情况。
比较好的解决方法就是使用自适应的分块大小,对细节较少的部分采用大的分块,对细节较多的地方采用较小的分块。
像素插值:在很多情况下,利用插值后的像素位置进行预测将提高运动补偿的精度,原因在于,在插值后的像素位置上进行搜索时,有可能找到更好的匹配。
下面简要说明1/4像素插值的运动补偿过程:首先编码器在整数像素上找到一个最佳匹配,之后编码器对该位置附近进行半像素插值,之后在半像素的位置上继续搜索,寻找更好的匹配位置。
如果找到了更好的匹配位置,则在该位置附近进行1/4像素插值,之后寻找更好的匹配。
最后由当前块减去最佳匹配块得到残差块。
理论上说,插值越精细,运算复杂度越高,运动补偿效果越好,即得到的残差能量越小。
但事实上,随着插值变得精细,其对于运动补偿的改善作用也在逐渐下降。
打个比方,如果1/2像素插值能提高30%的性能,那么1/4插值很可能只能带来15%的提升,而1/8像素插值则可能仅有3%(不同的图像其提升作用不完全相同,以上数据仅为举例)。
运动补偿的精度:从运算复杂度上来说4*4分块加上1/4像素插值的运动补偿比起没有插值的16*16分块运动补偿复杂得多。
从信息量上来说,由于每块的运动矢量同样需要参与编码并传输给解码器用于重建图像,因此随着分块尺寸变小,所需要编码和传输的运动矢量数目激增。
同样,半像素、1/4像素插值搜索会造成运动矢量产生小数,运动矢量的小数部分必须和整数部分一起编码,所以会消耗更多的比特数。
因此,运动补偿精度越高,编码运动矢量消耗的比特数越多,编码残差图像消耗的比特数越少;反之,运动补偿精度越低,编码运动矢量消耗的比特数越少,编码残差图像消耗的比特数越多。
基于区域的运动补偿:除了基于宏块的运动补偿之外,还有基于区域的运动补偿等方法。