\documentclass{beamer}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{multirow}
\graphicspath{ {./images/} }

\usetheme{Madrid}

\title{Алгоритмы сжатия изображений}
\author[А.~Ю.~Гущин \and Р.~И.~Стаин]{Андрей~Гущин \and Роман~Стаин}
\institute[СГУ]{Саратовский Государственный Университет}
\date{11 ноября 2022 г.}

\begin{document}

\maketitle

\begin{frame}{Представление цифровых изображений}
  \begin{figure}[H]
    \includegraphics[width=0.9\textwidth]{compare}
  \end{figure}
\end{frame}

\begin{frame}{Алгоритмы сжатия без потерь}
  Основными и самыми популярными алгоритмами сжатия без потерь являются:
  \begin{itemize}
    \item
      \textbf{RLE} --- используется в форматах PCX --- в качестве основного метода
      и в форматах BMP, TGA, TIFF в качестве одного из доступных.
    \item \textbf{LZW} --- используется в формате GIF
    \item \textbf{Deflate} --- используется в формате PNG
  \end{itemize}
\end{frame}

\begin{frame}{Run-Length Encoding (RLE)}
  \begin{itemize}
    \item \texttt{WWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW}
    \pause
    \item \texttt{9W3B24W1B14W}
  \end{itemize}
\end{frame}
\begin{frame}{Run-Length Encoding (RLE)}
  \begin{itemize}
    \item \texttt{ABCABCABCDDDFFFFFF}
    \pause
    \item \texttt{1A1B1C1A1B1C1A1B1C3D6F}
    \pause
    \item \texttt{-9ABCABCABC3D6F}
  \end{itemize}
\end{frame}
\begin{frame}{Run-Length Encoding (RLE)}
  \begin{itemize}
    \item
      \texttt{AAAAA{\dots}AAAAA}
    \pause
    \item \texttt{127A127A2A}
  \end{itemize}
\end{frame}

\begin{frame}{Lempel-Ziv-Welch (LZW) --- Кодирование}
  \begin{table}[H]
    \centering
    \scriptsize
    \begin{tabular}{|c|c|c|r|l|}
      \hline
      % Первая строка заголовка
      \multirow{2}{*}{Символ} &
      \multirow{2}{*}{Следующий} &
      \multicolumn{2}{|c|}{Вывод} &
      \multirow{2}{*}{Расширение словаря} \\ \cline{3-4}
      % Вторая строка заголовка
      && Код & \multicolumn{1}{|c|}{Биты} & \\ \hline
      % Символ & Следующий & Код & Биты             & Расширение словаря \\
      NULL     & T         &     &                  &                    \\ \hline
      T        & O         & 20  & \texttt{10100}   & 27: TO             \\ \hline
      O        & B         & 15  & \texttt{101111}  & 28: OB             \\ \hline
      B        & E         & 2   & \texttt{100010}  & 29: BE             \\ \hline
      E        & O         & 5   & \texttt{100101}  & 30: EO             \\ \hline
      O        & R         & 15  & \texttt{101111}  & 31: OR             \\ \hline
      R        & N         & 18  & \texttt{110010}  & 32: RN             \\ \hline
      N        & O         & 14  & \texttt{1001110} & 33: NO             \\ \hline
      O        & T         & 15  & \texttt{1001111} & 34: OT             \\ \hline
      T        & T         & 20  & \texttt{1010100} & 35: TT             \\ \hline
      TO       & B         & 27  & \texttt{1011011} & 36: TOB            \\ \hline
      BE       & O         & 29  & \texttt{1011101} & 37: BEO            \\ \hline
      OR       & T         & 31  & \texttt{1011111} & 38: ORT            \\ \hline
      TOB      & E         & 36  & \texttt{1100100} & 39: TOBE           \\ \hline
      EO       & R         & 30  & \texttt{1011110} & 40: EOR            \\ \hline
      RN       & O         & 32  & \texttt{1100000} & 41: RNO            \\ \hline
      OT       & \#        & 34  & \texttt{1100010} &                    \\ \hline
               &           & 0   & \texttt{000000}  &                    \\ \hline
    \end{tabular}
  \end{table}
\end{frame}
\begin{frame}{Lempel-Ziv-Welch (LZW) --- Декодирование}
  \begin{table}[H]
    \centering
    \scriptsize
    \begin{tabular}{|r|c|c|l|l|}
      \hline
      % Первая строка заголовка
      \multicolumn{2}{|c|}{Ввод} &
      \multirow{2}{*}{Вывод} &
      \multicolumn{2}{|c|}{Новая запись} \\ \cline{1-2} \cline{4-5}
      % Вторая строка заголовка
      \multicolumn{1}{|c|}{Биты} &
      Код & &
      \multicolumn{1}{|c|}{Полная} &
      \multicolumn{1}{|c|}{Частичная} \\ \hline
      % Биты          & Код & Вывод & Полная   & Частичная \\
      \texttt{10100}  & 20  & T     &          & 27: T?    \\ \hline
      \texttt{01111}  & 15  & O     & 27: TO   & 28: O?    \\ \hline
      \texttt{00010}  & 2   & B     & 28: OB   & 29: B?    \\ \hline
      \texttt{00101}  & 5   & E     & 29: BE   & 30: E?    \\ \hline
      \texttt{01111}  & 15  & O     & 30: EO   & 31: O?    \\ \hline
      \texttt{10010}  & 18  & R     & 31: OR   & 32: R?    \\ \hline
      \texttt{001110} & 14  & N     & 32: RN   & 33: N?    \\ \hline
      \texttt{001111} & 15  & O     & 33: NO   & 34: O?    \\ \hline
      \texttt{010100} & 20  & T     & 34: OT   & 35: T?    \\ \hline
      \texttt{011011} & 27  & TO    & 35: TT   & 36: TO?   \\ \hline
      \texttt{011101} & 29  & BE    & 36: TOB  & 37: BE?   \\ \hline
      \texttt{011111} & 31  & OR    & 37: BEO  & 38: OR?   \\ \hline
      \texttt{100100} & 36  & TOB   & 38: ORT  & 39: TOB?  \\ \hline
      \texttt{011110} & 30  & EO    & 39: TOBE & 40: EO?   \\ \hline
      \texttt{100000} & 32  & RN    & 40: EOR  & 41: RN?   \\ \hline
      \texttt{100010} & 34  & OT    & 41: RNO  & 42: OT?   \\ \hline
      \texttt{000000} & 0   & \#    &          &           \\ \hline
    \end{tabular}
  \end{table}
\end{frame}

\begin{frame}{Алгоритмы сжатия с потерями}
  Наиболее часто применяемые алгоритмы сжатия с потерями:
  \begin{itemize}
    \item
      Дискретное косинусное преобразование "--- кодирование, основанное на
      преобразованиях Фурье.
    \item Вейвлет сжатие "--- сжатие за счёт отбрасывания низких амплитуд.
    \item Квантование цветов "--- процесс уменьшения количества различных цветов.
    \item
      Прореживание (субдискретизация) компонентов цветности "--- усреднение или
      уменьшение части информации о цветности изображения.
    \item
      Фрактальное сжатие "--- алгоритм сжатия изображений с потерями, основанный
      на применении систем итерируемых функций к изображениям
  \end{itemize}
\end{frame}

\begin{frame}{Преобразование цветового пространства}
  \begin{figure}[H]
    \includegraphics[width=0.9\textwidth]{YCbCr}
  \end{figure}
  \begin{align*}
    Y'  &= K_R \cdot R' + (1 - K_R - K_B) \cdot G' + K_B \cdot B' \\
    C_B &= \frac{1}{2} \cdot \frac{B' - Y'}{1 - K_B} \\
    C_R &= \frac{1}{2} \cdot \frac{R' - Y'}{1 - K_R} \\
  \end{align*}
\end{frame}

\begin{frame}{Прореживание (субдискретизация) компонентов цветности}
  Есть несколько схем прореживания, которые применяются в зависимости от
  требований к качеству изображения после его восстановления. Структура
  дискретизации сигнала обозначается как соотношение между тремя частями X:a:b
  (например, 4:2:2).

  \begin{figure}[H]
    \includegraphics[width=0.9\textwidth]{subd}
  \end{figure}
\end{frame}

\begin{frame}{Дискретное косинусное преобразование}
  \begin{minipage}[t]{0.48\linewidth}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{dct64}
    \end{figure}
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.48\linewidth}
    \begin{align*}
      RES &= DCT \cdot IMG \cdot DCT^T \\
      DCT &=
        \sqrt{\frac{2}{N}} \cdot
        \cos{\frac{(2j + 1) \cdot i \cdot \pi}{2 \cdot N}} \\
      N &= 8, 0 \leq i, j \leq 7
    \end{align*}
  \end{minipage}
\end{frame}

\begin{frame}{Дискретное косинусное преобразование}
  До преобразования ДКП:
  \begin{equation*}
    \begin{pmatrix}
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\
      100 & 100 & 100 & 100 & 100 & 100 & 100 & 100
    \end{pmatrix}
  \end{equation*}
\end{frame}

\begin{frame}{Дискретное косинусное преобразование}
  После преобразования ДКП:
  \begin{equation*}
    \begin{pmatrix}
      800 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0
    \end{pmatrix}
  \end{equation*}
\end{frame}

\begin{frame}{Квантование и кодирование}
  \begin{minipage}[t]{0.48\linewidth}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{q1}
    \end{figure}
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.48\linewidth}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{q2}
    \end{figure}
  \end{minipage}
\end{frame}

\begin{frame}{Фрактальное сжатие изображений}
  \begin{figure}[H]
    \includegraphics[width=\textwidth]{fractal}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Внимание!}

  \begin{center}
    {\Huge Спасибо за внимание!} \\
    {\footnotesize Сжимайте осторожнее.}
  \end{center}
\end{frame}

\end{document}
