Что такое сжатие изображений?

Опубликовано: 17 Февраля, 2022

В области обработки изображений сжатие изображений является важным шагом перед тем, как мы начнем обработку больших изображений или видео. Сжатие изображений осуществляется кодировщиком и выводит сжатую форму изображения. В процессах сжатия математические преобразования играют жизненно важную роль. Блок-схему процесса сжатия изображения можно представить в виде:

В этой статье мы попытаемся объяснить обзор концепций, связанных с методами сжатия изображений. Общее представление изображения на компьютере похоже на вектор пикселей. Каждый пиксель представлен фиксированным количеством бит. Эти биты определяют интенсивность цвета (в оттенках серого для черно-белого изображения и в трех каналах RGB для цветных изображений).

Зачем нам нужно сжатие изображений?

Рассмотрим черно-белое изображение с разрешением 1000 * 1000, и каждый пиксель использует 8 бит для представления интенсивности. Таким образом, общее количество бит req = 1000 * 1000 * 8 = 8000000 бит на изображение. И подумайте, если это видео с 30 кадрами в секунду изображений вышеупомянутого типа, тогда общее количество бит для видео продолжительностью 3 секунды будет: 3 * (30 * (8, 000, 000)) = 720, 000, 000. биты

Как мы видим, просто для хранения 3-секундного видео нам нужно так много битов, что очень много. Итак, нам нужен способ иметь правильное представление, а также хранить информацию об изображении в минимальном количестве бит без потери характера изображения. Таким образом, сжатие изображений играет важную роль.

Основные этапы сжатия изображений:

  • Применение преобразования изображения
  • Квантование уровней
  • Кодирование последовательностей.

Преобразование изображения

Что такое преобразование (математически):

Это функция, которая отображает один домен (векторное пространство) в другой домен (другое векторное пространство). Предположим, T - это преобразование, f (t): X-> X '- это функция, тогда T (f (t)) называется преобразованием функции.

In a simple sense, we can say that T changes the shape(representation) of the function as it is a mapping from one vector space to another (without changing basic function f(t) i.e the relationship between the domain and co-domain).

Обычно мы выполняем преобразование функции из одного векторного пространства в другое, потому что, когда мы делаем это во вновь спроецированном векторном пространстве, мы получаем больше информации о функции.

Пример трансформации из реальной жизни:

Здесь мы можем сказать, что призма - это функция преобразования, в которой она разделяет белый свет (f (t)) на его компоненты, то есть представление белого света.
И мы видим, что можем получить больше информации о свете в его компонентном представлении, чем о белом свете. Таким образом преобразования помогают эффективно понимать функции.

Преобразования при обработке изображений

Изображение также является функцией расположения пикселей. т.е. I (x, y), где (x, y) - координаты пикселя в изображении. Таким образом, мы обычно преобразуем изображение из пространственной области в частотную.

Почему важна трансформация изображения:

  • Становится легко узнать, какие все основные компоненты, составляющие изображение, помогают в сжатом представлении.
  • Это упрощает вычисления.
    • Пример: поиск свертки во временной области до преобразования:

      Нахождение свертки в частотной области после преобразования:

    • Итак, мы видим, что стоимость вычислений снизилась, когда мы перешли в частотную область. Мы также можем видеть, что во временной области свертка была эквивалентна оператору интегрирования, но в частотной области она становится равной простому произведению членов. Таким образом, уменьшается стоимость вычислений.

Таким образом, когда мы преобразуем изображение из области в другое, выполнение операций пространственной фильтрации становится проще.

Квантование

Квантование процесса - жизненно важный этап, на котором различные уровни интенсивности группируются в определенный уровень на основе математической функции, определенной для пикселей. Как правило, новый уровень определяется путем принятия фиксированного размера фильтра «m» и деления каждого из «m» членов фильтра, округления его до ближайшего целого числа и повторного умножения на «m».

Базовая функция квантования: [значение в пикселях / м] * м

Таким образом, ближайшее из значений пикселей приближается к одному уровню, поэтому количество отдельных уровней, задействованных в изображении, становится меньше. Следовательно, мы уменьшаем избыточность в уровне интенсивности. Таким образом, квантование помогает уменьшить отдельные уровни.

Например: (m = 9)

Таким образом, мы видим в приведенном выше примере оба значения интенсивности округляются до 18, таким образом, мы уменьшаем количество различных уровней (задействованных символов) в спецификации изображения.

Кодировка символов

Этап символа включает в себя, когда отдельные символы, участвующие в изображении, кодируются способом, которым нет. Количество битов, необходимых для представления символа, оптимально в зависимости от частоты появления символа. Проще говоря, на этом этапе кодовые слова генерируются для различных присутствующих символов. Поступая таким образом, мы стремимся уменьшить количество «нет». битов, необходимых для представления уровней интенсивности и представления их в оптимальном количестве битов.

Есть много алгоритмов кодирования. Вот некоторые из популярных:

  • Кодирование переменной длины по Хаффману.
  • Кодирование длин серий.

В схеме кодирования Хаффмана мы пытаемся найти коды таким образом, чтобы ни один из кодов не являлся префиксом другого. И исходя из вероятности появления символа определяется длина кода. Чтобы найти оптимальное решение, наиболее вероятный символ имеет код наименьшей длины.

Пример:

Мы видим фактическое 8-битное представление, а также новые коды меньшей длины. Механизм генерации кодов:

Итак, мы видим, как требования к хранилищу для количества битов уменьшаются следующим образом:

Initial representation–average code length: 8 bits per intensity level.

After encoding–average code length: (0.6*1)+(0.3*2)+(0.06*3)+(0.02*4)+(0.01*5)+(0.01*5)=1.56 bits per intensity level

Thus the no of bits required to represent the pixel intensity is drastically reduced.

Таким образом, механизм квантования помогает при сжатии. Когда изображения однажды сжаты, их легко сохранить на устройстве или передать их. И в зависимости от типа используемых преобразований, типа квантования и схемы кодирования декодеры проектируются на основе обратной логики сжатия, так что исходное изображение может быть восстановлено на основе данных, полученных из сжатых изображений.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями теории CS для собеседований по SDE с помощью курса теории CS по доступной для студентов цене и будьте готовы к работе в отрасли.