量化 (信號處理)

<image>

<image>

量化在數位訊號處理領域是指將信號的連續取值（或者大量可能的離散取值）近似為有限多個（或較少的）離散值的過程。量化主要應用於從連續信號到數位訊號的轉換中。連續信號經過採樣成為離散信號，離散信號經過量化即成為數位訊號。注意離散信號並不需要經過採樣的過程。信號的採樣和量化通常都是由ADC實現的。

例如CD音訊信號就是按照44100Hz的頻率採樣，按16位元量化為有著65536（=$2^{16}$）個可能取值的數位訊號。

量化就是將模擬聲音的波形轉換為數字，表示採樣值的二進位位數決定了量化的精度。量化的過程是先將整個幅度劃分成有限個小幅度（量化階距）的集合，把落入某個階距內的樣值歸為一類，並賦予相同的量化值。

## 數學描述

最簡單最易懂的量化是標量（有別於多維矢量）量化，開始標量量化之前先要給出輸入數據。

通常，一個標量量化操作可以給出下面的描述

$$Q(x) = g(\lfloor f(x) \rfloor)$$

其中

- $x$是實數。
- $\lfloor x \rfloor$是下取整函數，生成整數$i = \lfloor f(x) \rfloor$
- $f(x)$和$g(i)$是任意的實值函數。

整數$i$是表示的數值，它通常被存儲或者傳輸，然後在後來需要解釋的時候使用$g(i)$進行最終的解釋重建。整數$i$有時也稱作量化指數。

在電腦或者其它應用，一個已知的量化方法均勻量化。在均勻量化方法裡共有兩個變量，叫mid-rise和mid-tread。

如果$x$是一個－1到1之間的數，一個mid-rise uniform量化操作，可以用"M"bit來表示量化的精度。

$Q(x) = \frac{\left\lfloor 2^{M-1}x \right\rfloor+0.5}{2^{M-1}}$.

在這個例子中$f(x)$和$g(i)$運算符都是乘以比例因子（其中一個是另外一個的逆），並且在g（i）中帶有一個偏移量以使得每個量化表示都位於輸入區域的中間位置。$2^{-(M-1)}$經常稱為量化步長。按照這個量化定律，假定在整個量化步長上量化噪聲大致是均勻分布的，並且假定量化的輸入信號$x$在整個-1到1的區間大致均勻分布，量化的信噪比（SNR）可以用下面的公式計算。

$\frac{S}{N_q} \approx 20 \log_{10}(2^M) = 6.0206 M \ \operatorname{dB}$.

根據這個等式，人們常說SNR大約是每位6 dB。

在mid-tread一致量化中，偏移0.5將加在下取整函數內部而不是外部。

有時候，mid-rise量化使用時不加偏移0.5。這將信號與噪聲比減小了大約6.02 dB，但是當步距小的時候為了簡化這是可接受的。

在數字電話系統中，兩個流行的量化機制是'A-law'（在歐洲占據主導地位）和'μ-law'（在北美和日本占據主導地位）。這些機制將離散的模擬數值映射到8位尺度，在小值的時候近似線性隨著幅度增長按照對數增加。由於人耳對於音量的感知近似對數曲線，這就使用一定的位數在可聽見的聲音強度範圍提供了更高的信噪比。

## 忽略熵約束：Lloyd–Max量化

在上面的陳述中，若令 $\lambda$ 等於 0，從而忽略掉比特率約束，或等價地假設要用定長碼（FLC）而非用變長碼（或其他熵編碼法，如算術編碼在率失真上就比定長碼好）來表示量化數據，這個最優化問題就簡化為了只需最小化失真 $D$ 的問題了。

$M$ 級量化器產生的索引可以用 $R = \lceil \log_2 M \rceil$ 比特/符號的定長碼。例如當 $M=$256 階時，定長碼的比特率 $R$ 為 8 比特/符號。由於這個原因，這樣的量化器有時稱作8比特量化器。不過使用定長碼消除了壓縮改進，但可以通過更好的熵編碼來改善。

假設 $M$ 階定長碼，率失真最小化問題可以簡化為失真最小化問題。

簡化的問題可以陳述為：給定一個機率密度函數為 $f(x)$ 的信源 $X$，並約束量化器必須僅使用 $M$ 個分類區域，求得決策邊界 $\{b_k\}_{k=1}^{M-1}$ 與重建層級 $\{y_k\}_{k=1}^M$ 來最小化得到的失真

$D=E[(x-Q(x))^2] = \int_{-\infty}^{\infty} (x-Q(x))^2f(x)dx = \sum_{k=1}^{M} \int_{b_{k-1}}^{b_k} (x-y_k)^2 f(x)dx =\sum_{k=1}^{M} d_k$.

對上述問題求最優解得到的量化器有時叫做MMSQE（最小均方量化誤差）解，而得到的機率密度函數最優化的（非均勻）量化器叫做Lloyd–Max量化器，是用獨立發現迭代方法從 ${\partial D / \partial b_k} = 0$ 和 ${\partial D/ \partial y_k} = 0$ 求解兩組聯立方程的兩個人來命名的，如下：

${\partial D \over\partial b_k} = 0 \Rightarrow b_k = {y_k + y_{k+1} \over 2}$,

會將閾值置於每對重建值的中點，而

$${\partial D \over\partial y_k} = 0 \Rightarrow y_k = { \int_{b_{k-1}}^{b_k} x f(x) dx \over \int_{b_{k-1}}^{b_k} f(x)dx } = \frac1{p_k} \int_{b_{k-1}}^{b_k} x f(x) dx$$

會讓重建值位於其相關分類區間的質心（條件期望值）。

Lloyd演算法，最初於1957提出，並可以直接推廣到用於向量數據。這個推廣會得到Linde–Buzo–Gray演算法或K-平均分類器最優化方法。此外，此方法還可以進一步推廣到對向量數據包含一個熵約束。

## 量化與數據壓縮

量化在有損數據壓縮中起著相當重要的作用。很多情況下，量化可以被當作將有損數據壓縮同無損數據壓縮相區別的標誌之一。量化的目的通常是為了減少數據量。一些壓縮演算法，例如MP3和Vorbis，以有選擇地丟棄部分數據作為壓縮的一種方法，這種手段可以被認為是量化的過程也可以被看作是一種有損壓縮的形式。

JPEG是一種利用了量化的圖像有損壓縮。JPEG的編碼過程對原始的圖像數據作離散餘弦變換，然後對變換結果進行量化並作熵編碼。通過量化可以降低變換值的精度，從而減少圖像的數據量。當然，精度的損失意味著圖像質量的下降。然而圖像的質量可以通過量化位數的選擇加以控制。例如，JPEG在每像素3比特的精度下得到的圖像質量還讓人可以接受的，相對於PCM抽樣得到的每個像素24比特的原始圖像來說，數據量大大下降了。

現代壓縮技術通常以量化輸出的資訊熵，而不是輸出值集合的大小度量資訊量的多少。

## 自然界中的量子化

從最基本的意義上來說，所有的物理量都是量子化的，這是量子力學的結論。為了數學上的明晰性，在宏觀的尺度上可以將量子的性質忽略，因此信號可以表示為連續的形式。

在實際應用中，這種內在的量子或量化的性質並不需要考慮。首先，量子效應會被信號的噪聲淹沒，因為任何觀察對象在實際系統中總會伴隨有其他物理現象。其次，測量儀器不可能絕對精確，被測的信號必然會被測量噪聲污染。

## 量化誤差

量化誤差是指在量化過程引起的誤差，表現為量化結果和被量化模擬量之間存在差值。這種差值在輸出端體現為引入了量化噪聲。

## 相關條目

- 模-數轉換器，數-模轉換器
- 量化誤差, 量化噪聲
- 離散信號，數位訊號
- 抖動
- 資訊理論
- 率失真
- 矢量量化

## 外部連結

- Paper on mathematical theory and analysis of quantization
- Quantization threads in Comp.DSP