Skip to main content
LibreTexts - Ukrayinska

3.8.2: Дискретне косинусне перетворення

  • Page ID
    29770
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)

    Мовою лінійної алгебри формула

    \[\mathbb{Y} = \mathbb{C}\mathbb{X}\mathbb{D} \tag{3.10}\]

    являє собою перетворення матриці\(\mathbb{X}\) в матрицю коефіцієнтів\(\mathbb{Y}\). Якщо припустити, що матриці перетворення\(\mathbb{C}\) і\(\mathbb{D}\) мають зворотні\(\mathbb{C}^{−1}\) і\(\mathbb{D}^{−1}\) відповідно, вихідна матриця може бути реконструйована з коефіцієнтів шляхом зворотного перетворення:

    \[ \mathbb{X} = \mathbb{C}^{-1}\mathbb{Y}\mathbb{D}^{-1}. \tag{3.11}\]

    Ця інтерпретація\(\mathbb{Y}\) як коефіцієнтів, корисних для реконструкції\(\mathbb{X}\), особливо корисна для дискретного косинусного перетворення.

    Дискретне косинусне перетворення - це дискретне лінійне перетворення типу, розглянутого вище.

    \[\mathbb{Y} = \mathbb{C}^{T}\mathbb{X}\mathbb{C}\tag{3.12}\]

    де матриці мають розмір,\(N×N\) а дві матриці перетворення є транспозами один одного. Перетворення називається перетворенням косинуса, оскільки матриця\(\mathbb{C}\) визначається як

    \[\tag{3.13} {\mathbb{C}}_{m,n} = k_n \cos \begin{bmatrix} \dfrac{(2m + 1)n\pi}{2N} \end{bmatrix} \text{where } k_n = \begin{cases} \sqrt{1/N} & \mbox{if }n = 0 \\ \sqrt{2/N} & \mbox{if otherwise} \end{cases} \]

    де\(m, n = 0, 1, . . .(N − 1)\). Ця матриця\(\mathbb{C}\) має обернену, яка дорівнює її транспонуванню:

    \[\tag{3.14} \mathbb{C}^{-1} = \mathbb{C}.\]

    Використовуючи рівняння 3.12 з\(\mathbb{C}\) визначенням у рівнянні 3.13, ми можемо обчислити DCT\(\mathbb{Y}\) будь-якої матриці\(\mathbb{X}\), де матриця\(\mathbb{X}\) може представляти пікселі заданого зображення. У контексті DCT обернена процедура, викладена в рівнянні 3.11, називається зворотним дискретним косинусним перетворенням (IDCT):

    \[\tag{3.15} \mathbb{X} = \mathbb{C}\mathbb{Y}\mathbb{C}^T.\]

    За допомогою цього рівняння ми можемо обчислити набір базових матриць DCT, тобто: набір матриць, яким кожен з елементів\(\mathbb{Y}\) відповідає через DCT. Побудуємо набір всіх можливих зображень з одним ненульовим пікселем кожен. Ці зображення будуть представляти окремі коефіцієнти матриці\(\mathbb{Y}\). На малюнку 3.7 (a) показано набір для зображень розміром 4 × 4 пікселів. На малюнку 3.7 (b) показаний результат застосування IDCT до зображень на малюнку 3.7 (а). Набір зображень на малюнку 3.7 (b) називаються базисними, оскільки DCT будь-якого з них дасть матрицю,\(\mathbb{Y}\) яка має єдиний ненульовий коефіцієнт, і, таким чином, вони представляють базові зображення, в яких DCT «розкладає» будь-яке вхідне зображення.

    Знімок екрана 2021-05-02 о 11.58.28 AM.png
    (a) Трансформовані матриці\(\mathbb{Y}\)
    Знімок екрана 2021-05-02 о 11.58.55 AM.png
    (b) Базисні матриці\(\mathbb{X}\)

    Малюнок 3.7: (a) 4×4 піксельні зображення, що представляють коефіцієнти, що з'являються в матриці\(\mathbb{Y}\) з рівняння 3.15. І, (б) відповідні зворотні дискретні косинусні перетворення, ці ICDT можна інтерпретувати як базові зображення, які відповідають коефіцієнтам\(\mathbb{Y}\).

    Згадуючи наш огляд дискретних лінійних перетворень вище, якщо ми хочемо відновити зображення\(\mathbb{X}\) з його DCT,\(\mathbb{Y}\) ми просто візьмемо кожен елемент Y і помножимо його на відповідну матрицю з 3.7 (b). Дійсно, на малюнку 3.7 (b) вводиться дуже чудова властивість основи DCT: вона кодує просторову частоту. Стиснення може бути досягнуто ігноруванням тих просторових частот, які мають менші коефіцієнти DCT. Подумайте про зображення шахової дошки - вона має високу просторову частотну складову, і майже всі низькочастотні компоненти можуть бути видалені. І навпаки, розмиті зображення, як правило, мають менше компонентів вищої просторової частоти, і тоді високочастотні компоненти, нижні праворуч на малюнку 3.7 (b), можуть бути встановлені на нуль як «прийнятне наближення». Це принцип незворотного стиснення за JPEG.

    На малюнку 3.8 показаний код MATLAB для створення базових зображень, як показано вище для 4 × 4, 8 × 8 та 16 × 16 DCT.

    Знімок екрана 2021-05-02 о 12.35.09 PM.png
    Малюнок 3.8: Генератор базової матриці