Одним из самых важных изобретений в сфере IT абсолютно точно можно считать такой формат сжатия, как JPEG, который на сегодняшний день является стандартом в Интернете. Благодаря нему мы имеем возможность сжимать картинки, практически без визуальных потерь, в десятки, сотни и даже тысячи раз.
Если не JPEG, то наш Интернет, возможно, выглядел бы совсем иначе, и мы явно не могли бы с такой скоростью и комфортом проводить свободное время в Интернете, лайкать Инстаграмы подружек, читать новости, листать ленту ВКонтакте, да вообще все, к чему мы привыкли в нашей будничной жизни. И это все не так просто, как кажется на первый взгляд. Поэтому давайте разберемся, как же работают процессы в сжатии картинок.
Первый этап работы алгоритма заключается в том же переводе изображения в цветовое пространство YUV. Принцип его работы ничем не отличается от такового в сжатии видео. Об этом процессе подробнее мы поговорим в одном из следующих материалов.
После того, как алгоритм разбил изображение на три составляющих, начинается процесс ресемплинга для всех цветовых масок. В ходе его работы, каждые четыре рядом стоящие пикселя объединяются в один. Благодаря этому, изображение проходит первый этап фактического сжатия, тем самым теряя десятку, другую килобайт.
Далее вся картинка разделяется на блоки 8х8 пикселей.
Это необходимо для работы следующего алгоритма, по которому компьютер должен понять, какое количество деталей находится в каждом блоке, чтобы в случае если их там мало, закодировать эту часть меньшим количеством бит.
Например, если это не особо детализированная часть изображения, обладающая преимущественно близкими оттенками цвета. Вместо того, чтобы кодировать цвет каждого блока отдельно, например неба, вся такая зона изображения заливается одним цветом.
Называется весь этот процесс Дискретным Косинусным Преобразованием, который в свою очередь является разновидностью преобразования Фурье, применяемым в том числе при сжатии музыки.
В процессе его работы блоки 8х8 пикселей, раскладываются на 64 периодических перехода. Выглядят они вот так:
На этом этапе все частички из матрицы периодического перехода накладываются друг на друга с разным коэффициентом, при том некоторые из них, наименее важные, отсекаются, делая объем файла еще меньше в несколько раз.
Приближаясь к последнему этапу в работе алгоритма сжатия, вступает процесс квантования и сканирования матрицы зиг-загом. После выполнения последнего, начинается, говоря простым языком, округление коэффициентов из нашей матрицы пространственных волн. Ведь среди них есть те, у которых значение равно, либо немногим больше отличается от нуля. Посему их можно сократить, удалив часть ненужной, на взгляд алгоритма, информации.
Затем идет процесс энтропийного кодирования. В конце его работы множество нулей, оставшихся после выполнения предыдущего этапа, заменяются числом, обозначающим их количество. Затем каждый из сгенерированных коэффициентов кодируется кодом Хаффмана, то есть наибольшие и наименьшие значения кодируются соответственным количеством бит.
Ну и в конце, результаты работы каждого из этапов алгоритма суммируются, приводя тем самым к общему уменьшению размера файла, зависящим от степени сжатия. Все, что осталось после кодирования, склеивается в один документ с расширением JPEG.
Сам по себе формат JPEG довольно старый, на сегодняшний день изобретено множество более совершенных алгоритмов сжатия, например WebP, который превосходит JPEG, относительно сохранения качества изображений практически на 30%. Тем не менее JPEG явно еще не собирается отправляться на заслуженный покой.
Спасибо за внимание!
я уже 4 статьи прочитал у вас на сайте.так что скоро я стану умным и буду знать всё