跳转至

Lossy Compression Algorithms

约 1995 个字 26 张图片 预计阅读时间 10 分钟

Distortion Measures

用于衡量近似结果与原始数据之间的接近程度。通常人们会想到数值上的差异,但在处理图像数据时,简单的数值差异可能无法反映预期的效果。因此,需要采用感知失真度量,即从人类感知的角度来衡量失真程度,以更准确地评估图像质量或差异。

均方误差(MSE, Mean Square Error)

  • 定义:MSE 是原始信号与近似信号之间像素差异的平均值,用于衡量整体失真程度。
  • 公式: [ \sigma^2 = \frac{1}{N} \sum_{n=1}^{N} (x_n - y_n)^2 ] 其中:
    • \(x_n\):原始信号的第 \(n\) 个像素值。
    • \(y_n\):近似信号的第 \(n\) 个像素值。
    • \(N\):总像素数。
  • 含义:MSE 越小,表示失真越小,图像质量越高。

信噪比(SNR, Signal-to-Noise Ratio)

  • 定义:SNR 是信号与噪声的比值,用于衡量信号相对于噪声的强度。
  • 公式: [ \text{SNR} = 10 \log_{10} \frac{\sigma_x2}{\sigma_d2} ] 其中:
    • \(\sigma_x^2\):原始信号的方差(表示信号的强度)。
    • \(\sigma_d^2\):误差的方差(表示噪声的强度)。
  • 含义:SNR 越大,表示信号相对于噪声的强度越高,失真越小。

峰值信噪比(PSNR, Peak Signal-to-Noise Ratio)

  • 定义:PSNR 是信号峰值与噪声的比值,用于衡量失真相对于信号峰值的大小。
  • 公式: [ \text{PSNR} = 10 \log_{10} \frac{x_{\text{peak}}2}{\sigma_d2} ] 其中:
    • \(x_{\text{peak}}\):信号的最大可能值(例如,对于 8 位图像,\(x_{\text{peak}} = 255\))。
    • \(\sigma_d^2\):误差的方差(表示噪声的强度)。
  • 含义:PSNR 越大,表示失真相对于信号峰值越小,图像质量越高。

The Rate-Distortion Theory

有损压缩始终涉及速率与失真之间的权衡:

  • 速率:表示每个源符号所需的平均比特数;
  • R(D):即速率-失真函数。

  • R(D) 定义了在失真不超过 D 的情况下,源数据能够被编码的最低速率;

  • 当 D=0 时,即无失真情况下,R(D) 等于源数据的熵;
  • R(D) 描述了编码算法性能的基本限制;
  • 可用于评估不同算法的性能表现。

alt text

  1. 当 D=0 时,源数据的熵等于 R(D)
  2. D=0 表示无失真压缩,此时 R(D) 等于源数据的熵。这是因为在无失真情况下,压缩的最低速率由源数据的信息量(即熵)决定。

  3. R(D)=0,表示没有编码

  4. 当 R(D)=0 时,意味着没有对源数据进行编码。这种情况通常发生在失真非常大(即允许的失真无限大)时,不需要传输任何信息。

  5. 对于给定源,找到率失真函数的闭式解析描述非常困难

  6. 率失真函数 R(D) 描述了在失真上限为 D 时,源数据可以被编码的最低速率。然而,对于大多数实际源数据,很难找到一个闭式(即数学上精确的)解析表达式来描述 R(D)。这通常需要复杂的数学分析和近似方法。

Quantization

  1. 量化的核心地位
  2. 量化是任何有损压缩方案的核心组成部分。
  3. 如果没有量化,几乎不会丢失信息,因为量化是减少数据精度的主要手段。

  4. 量化的作用

  5. 通过量化,减少数据中不同值的数量,从而降低数据量。
  6. 量化是 有损压缩 中“损失”的主要来源,因为它通过舍弃部分信息来实现压缩。

每个量化器都有其独特的输入范围划分和输出值集合。根据输入和输出的维度,量化器可以分为以下两类:

  1. 标量量化器(Scalar Quantizer)
  2. 对单个输入值进行量化。
  3. 根据量化间隔的均匀性,可分为:

    • 均匀量化(Uniform Quantizer):量化间隔相等,适用于输入值分布均匀的情况。
    • 非均匀量化(Nonuniform Quantizer):量化间隔不等,适用于输入值分布不均匀的情况。
  4. 矢量量化器(Vector Quantizer)

  5. 对一组输入值(即矢量)进行联合量化。
  6. 通过将多个输入值作为一个整体处理,能够更好地捕捉数据之间的相关性,从而提高压缩效率。

均匀标量量化器的定义

  1. 输入域的划分
  2. 将输入域划分为 等间距 的区间。
  3. 决策边界(Decision Boundaries):每个区间的端点,用于决定输入值属于哪个区间。

  4. 输出值

  5. 每个区间的 中点 作为该区间的输出值。

  6. 步长(Step Size)

  7. 每个区间的长度,即步长,决定了量化的精度。

均匀标量量化器的两种类型

  1. Midrise 量化器
  2. 具有 偶数个 输出级别。
  3. 其中一个区间围绕 零 值(即零值位于一个区间的中间)。
  4. 零值 不是 输出值之一。

  5. Midtread 量化器

  6. 具有 奇数个 输出级别。
  7. 零值 是其中一个输出值。

alt text

alt text


成功的均匀量化器的目标

  • 在给定输入源和期望输出值数量的情况下,最小化失真。
  • 失真通常通过量化误差(即输入值与输出值之间的差异)来衡量。

Transform Coding


  1. 矢量编码比标量编码更高效
  2. 将输入数据中的连续样本分组为矢量进行编码,可以更有效地利用数据之间的相关性,从而提高压缩效率。

  3. 矢量 X 的定义

  4. 设 X = {x₁, x₂, ..., xₖ} 为样本矢量,其中相邻样本之间通常存在一定的相关性。

  1. 线性变换 T 的定义
  2. 设 Y 是输入矢量 X 经过线性变换 T 后的结果,即 Y = T(X)。
  3. 变换后的 Y 的分量之间的相关性大大降低。

  4. 编码效率的提升

  5. 由于 Y 的分量之间相关性减少,Y 可以比 X 更高效地编码。

  6. 变换本身不压缩数据

  7. 变换 T 本身并不会压缩数据,压缩是通过对 Y 的分量进行处理和量化实现的。

  1. DCT 的广泛应用
  2. DCT 是一种广泛使用的线性变换,能够有效去除输入信号的相关性。

  3. DCT 的作用

  4. DCT 将输入信号转换为频域表示,使得信号的能量集中在少数低频分量中,从而为后续的量化与编码提供更高效的基础。

alt text

DCT | Discrete Cosine Transform

长度为 8 的一维 DCT 变换公式如下:

alt text

alt text

alt text

alt text

变换后只跟第一个坐标轴有关系,减少了分量之间的相关性。

alt text

alt text

例子:

alt text

就是坐标轴上的投影。

同时,DCT 变换是线性的。

alt text

原始信号就是基信号加权结果。

alt text

alt text

2D DCT

alt text

在JPEG中,使用的是8x8的DCT变换。

alt text

alt text

二维的DCT变换,就是对每一行进行一维的DCT变换,然后对每一列进行一维的DCT变换。

alt text

alt text

alt text

DFT | Discrete Fourier Transform

离散余弦变换(DCT)是仅保留离散傅里叶变换(DFT)实部运算的变换形式。

alt text

DCT通过构造对称信号消除DFT虚部的关键技术在于:对原始8点采样信号进行镜像对称复制,构造16点扩展序列。如图8.10所示,DCT运算本质上等效于对对称扩展信号实施DFT后保留实部运算。

alt text

Wavelet-Based Coding

DFT和DCT在频域上有高分辨率,但是在时域上分辨率缺失。而小波变换在时域和频域上都有高分辨率。

alt text

对于\(\{x_{n,i}\}=\{10,13,25,26,29,21,7,15\}\),进行小波变换后得到

alt text

对二维图像进行小波变换,就是对每一行进行小波变换,然后对每一列进行小波变换。

alt text

alt text

人眼对于低频部分的敏感度更高,所以可以通过小波变换,将高频部分进行压缩(就是对左上角的部分进行压缩)。