Файл: Создание программного обеспечения для сжатия изображений.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 263

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Этапы кодирования

Процесс сжатия по схеме JPEG2000 включает ряд этапов:

1. Преобразование изображения в оптимальное цветовое пространство.

На данном этапе кодирования с помощью соответствующих соотношений цветовая модель RGB преобразуется в YUV:

При декомпрессии применяется соответствующее обратное преобразование:

2. Дискретное вейвлет преобразование.

Дискретное wavelet преобразование (DWT) также может быть двух видов - для случая сжатия с потерями и для сжатия без потерь.

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

y( 2*n + 1 ) = x( 2*n + 1 ) - (int)( x( 2*n ) + x( 2*n + 2 ) ) / 2

y( 2*n ) = x( 2*n ) + (int)( y( 2*n - 1 ) + y( 2*n + 1 ) + 2 ) / 4

и обратное

x( 2*n ) = y( 2*n ) - (int)( y( 2*n - 1 ) + y( 2*n + 1 ) + 2 ) / 4

x( 2*n + 1 ) = y( 2*n + 1 ) + (int)( x( 2*n ) + x( 2*n + 2 ) ) / 2.

3. Квантование коэффициентов.

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

4. Этап Вторичного Сжатия

.Как и в JPEG, в новом формате последним этапом алгоритма сжатия является кодирование без потерь. Но, в отличие от предыдущего формата, в JPEG2000 используется алгоритм арифметического сжатия.

1.4 Сравнительная характеристика алгоритмов сжатия

В данном разделе были описаны методы сжатия изображений с потерей данных и без потерь. Перечень приведенных алгоритмов далеко не полон, но, дает представление об основных тенденциях развития алгоритмов архивации статических растровых изображений. Во-первых, это ориентация на фотореалистичные изображения с 16 миллионами цветов (24 бита). Во-вторых, использование сжатия с потерями, возможность за счет потерь регулировать качество изображений. В-третьих - использование избыточности изображений в двух измерениях. В-четвертых - появление существенно несимметричных алгоритмов. И, наконец, что для нас важнее всего - увеличивающаяся степень сжатия изображений.


Сейчас не редкость создание базы данных, хранящей изображения, активное использование изображений в программах. Критичность их размеров дает себя знать довольно быстро, поэтому резонно применить один или несколько алгоритмов сжатия. Возможно, идеальным решением будет воспользоваться парой-тройкой новых универсальных алгоритмов, а может быть, стоит разработать специальный. Для электронных фотографий из досье, отпечатков пальцев, рентгеновских снимков созданы специальные алгоритмы, обеспечивающие сжатие до 1000 раз. Если планируется создание большой много гигабайтной базы данных, содержащей однородную информацию, то уменьшение ее хотя бы в 10 раз — это уже серьезно.

При выборе алгоритмов важно понимать их положительные и отрицательные стороны. Если выбран алгоритм с потерей данных, то стоит понять его природу и условия, при которых изображения будут портиться. Использование новых оптимальных алгоритмов позволит сохранить качество изображений, десятки и сотни мегабайт дискового пространства, уменьшит трафик в сети. Методы сжатия развиваются очень быстро. Ежегодно появляются новые алгоритмы и десятки модификаций известных.

С выходом iOS 11 и MacOS High Sierra миллионы пользователей продукции яблочного гиганта получили возможность использовать новый формат хранения изображений HEIF. Он пришел на смену старому доброму JPEG, хотя многие и не знают, что это произошло. По расчетам Apple пользователи должны получить значительную экономию места на диске (до 50%) за счет большей эффективности сжатия при лучшем качестве картинки.

Последнюю четверть века формат JPEG является отраслевым стандартом для хранения изображений с потерями сжатия. Разработанный в 1992 году формат за прошедшее время стал поддерживаться большинством производителей оборудования и программного обеспечения для захвата и обработки изображений. Однако, по мере того как цифровые камеры и экраны дисплеев движутся к ультра-высоким разрешениям 5K, необходимость в более эффективных алгоритмах сжатия и поддержке альтернативных функций заставила компанию Apple найти современную замену устаревшему стандарту JPEG.

Им стал High Efficiency Image Format, или сокращенно HEIF. Файлы этого формата в операционных системах Apple получили расширение .heic, хотя другими производителями чаще используется .heif.

Несколько фактов о HEIF:

В 2013 году формат HEIF был предложен Moving Picture Experts Group (MPEG), он был определен в рамках стандарта MPEG-H Part 12 (ISO/IEC 23008-12). В течение полутора лет продолжалось его техническая разработка, которая была завершена к 2015 году.


Сам HEIF является контейнерным форматом, состоящим из метаданных Exif с дополнительными разделами для XMP и MPEG-7

В дополнение к метаданным контейнер HEIF содержит одно или несколько изображений или последовательность изображений, закодированных с использованием высокоэффективного стандарта сжатия HEVC — High Efficiency Video Coding, который более известен как стандарт H.265. За счет этого пользователи получат экономию памяти как локально, так и в облаке. Если несколько изображений упакованы в контейнер HEIF, размер файла будет значительно меньше, чем хранение нескольких JPEG, представляющих одно и то же изображение или набор изображений. Несколько изображений и видео могут быть одновременно упакованы в контейнере HEIF.

В отличие от JPEG, HEIF может содержать несколько изображений, используемых для разных случаев. Например, основное полноразмерное изображение может быть представлено первичным, вспомогательным и эскизным изображениями.

Вспомогательные изображения могут иметь альфа канал.

Имеется встроенная поддержка оверлеев.

Контейнер HEIF может содержать эквивалентные изображения, например альтернативу более низкому разрешению. В качестве примера можно привести браузер, загружающий картинку с низким разрешением на медленном канале связи или обнаружение дисплея < 4K. В стандарте HTML 5.2 предусмотрена поддержка подобных случаев.

Поддержка одновременного хранения данных, сжатых с потерями и без (lossy and lossless). Фотографы оценят сохранение необработанных и сжатых фотографий в одном контейнере.

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

HEIF также поддерживает прозрачность и цвет изображения до 16 бит, по сравнению с 8-битной глубиной цвета в JPEG. На практике это означает, что HEIF может захватить весь расширенный цветовой диапазон, предоставляемый 10-битным цветовым выходом цифровых камер, исключая нежелательные артефакты.

Теперь, когда вы немного больше узнали о HEIF, давайте поговорим о стандарте кодирования HEVC или H.265.

В двух словах, стандарт HEVC поддерживает эффективное сжатие для полноразмерных изображений наряду с предсказанием последовательностей (predictive sequencing) и дополнениями для поддержки других медиа-потоков, таких, как синхронизированный текст и аудио.


Формат предоставляет потрясающие возможности — это не только потенциальная замена анимированного GIF, но и усовершенствование живых фотографий Apple, что открывает двери для других функций, таких как встроенное редактирование и полный контроль воспроизведения.

Кроме того, HEVC поддерживает прямоугольную обрезку и вращение на 90 градусов без необходимости повторного кодирования изображения или последовательности изображений. Это дает возможность написания эффективного кода обработки изображений на мобильных устройствах, что приведет к значительной экономии заряда батареи. На самом деле, устройства Apple с чипом A9 и выше выиграют от аппаратного ускорения для кодирования и декодирования файлов HEIF.

2 ВЫБОР И ОБОСНОВАНИЕ ВЫБРАННОГО МЕТОДА

2.1 Обоснование выбора метода сжатия изображения

В данном курсовом проекте реализуется сжатие изображений на основе дискретного косинусного преобразования, (дискретное косинусное преобразование используется в широко распространенном стандарте сжатия изображений - JPEG). Рассмотрим сравнительную характеристику выше рассмотренных алгоритмов сжатия изображений (таблица 2.1).


Таблица 2.1

Алгоритм

Коэфф-ты сжатия

На что ориентирован

Потери

Групповое кодирование (RLE)

1/32 1/2 2/1 

3,4 битные 

Нет

LZW 

1/100 1/4 7/5 

1-8 битные 

Нет

Хаффмана 

1/8 2/3 1/1 

1-битные 

Нет

JBIG 

1.5 раза 

1-битные 

Нет

Lossless JPEG 

2 раза 

24-битн. 

Нет

Рекурс. сжатие (Wavelet)

2-20 раз 

серые 

Да

JPEG 

2-200 раз 

24-битн. 

Да

Фрактальный 

2-2000 раз 

24-битн. 

Да

При сохранении изображений, содержащих фотографии (изображения с 16 миллионами цветов (24 бита)), ни один формат не приведет к созданию файла меньшего размера, чем JPEG. 

Это метод сжатия с потерей данных, который, жертвует качеством изображения для сохранения пространства на диске. Однако можно управлять тем, сколько данных потеряется во время операции сохранения. JPEG лучше всего использовать при сжатии изображений с непрерывным тоном (изображения, в которых цветовой контраст между ближайшими пикселями невелик). Любое изображение, которое включает постепенные цветовые переходы, как на фотографии, пригодно для JPEG-сжатия. JPEG - не самый лучший выбор для сохранения снимков экрана, векторных рисунков и других высококонтрастных изображений. Эти изображения лучше обрабатывать в формате TIFF с LZW-сжатием. Из таблицы видно, что большой коэффициент сжатия достигается при использование фрактального метода сжатия изображений, а остальные методы либо не дают достаточный коэффициент сжатия, либо ориентированы на меньшее количество бит. Сравним алгоритм архивации графики JPEG с фрактальной компрессией. 

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

Различия начинаются, если мы рассмотрим время, необходимое алгоритмам для архивации/разархивации. Так, фрактальный алгоритм сжимает в сотни и даже в тысячи раз дольше, чем JPEG. Распаковка изображения, наоборот, произойдет в 5-10 раз быстрее. Поэтому, если изображение будет сжато только один раз, а передано по сети и распаковано множество раз, то выгодней использовать фрактальный алгоритм.