Файл: Методы кодирования данных (Понятие кода и кодирования данных).pdf

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

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

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

Добавлен: 27.04.2023

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

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

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

Этот “узор” возникает при наложении наклонного растра печати на полосы изображения.

Из-за таких “сюрпризов” JPEG не рекомендуется активно использовать в полиграфии, задавая высокие показатели коэффициента сжатия.

Однако при хранение изображений, предназначенных для просмотра человеком на дисплее, он на данный момент незаменим.

Широкое применение JPEG сдерживается, пожалуй, лишь тем, что он оперирует 24-битными изображениями.

Поэтому для просмотра изображений с приемлемым качеством на обычном мониторе в 256-цветной палитре, требуется применение специальных алгоритмов и, следовательно, определенное время.

В приложениях, ориентированных на взыскательного пользователя, таких, например, как современные игры класса ААА, подобные задержки неприемлемы.

Кроме того, если имеющиеся у вас изображения, допустим, в 8-битном формате GIF перевести в 24-битный JPEG, а потом обратно в GIF для просмотра, то потеря качества произойдет дважды при обоих преобразованиях.

Тем не менее выигрыш в размерах архивов зачастую настолько велик (в 3-20 раз!), а потери качества настолько малы, что хранение изображений в JPEG оказывается очень эффективным. JPEG-сжатие реализовано в форматах JPG и TIFF.

Стоит также уделить внимание модификациям этого алгоритма. Хотя JPEG и является стандартом ISO, формат файла не был строго зафиксирован.

Пользуясь этим, производители используют свои, несовместимые между собой форматы, и, следовательно, могут вносить изменения в алгоритм.

Так, внутренние таблицы алгоритма, рекомендованные ISO, заменяются ими на свои собственные.

Кроме того, легкая неразбериха присутствует при задании уровня потерь.

К примеру, при проведении тестов выясняется, что "отличное" качество, "100%" и "0 баллов", на выходе дают кардинально различающиеся картинки.

При этом, кстати, "100%" качества означает сжатия с потерей информации.

BMP

По решению разработчиков формат Bmp-файла не привязан к конкретной аппаратной платформе. Этот файл состоит из четырех частей: заголовка, информационного заголовка, таблицы цветов (палитры) и данных изображения. Если в файле хранится изображение с глубиной цвета 24 бита (16 млн. цветов), то таблица цветов может отсутствовать, однако в нашем, 256-цветном случае она есть.

Заголовок файла начинается с сигнатуры «BM», а затем идет длина файла, выраженная в байтах. Следующие 4 байта зарезервированы для дальнейших расширений формата, а заканчивается этот заголовок смещением от начала файла до записанных в нем данных изображения. При 256 цветах это смещение составляет 1078.


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

Ширина и высота изображения задаются в точках растра и пояснений, пожалуй, не требуют.

Количество плоскостей могло применяться в файлах, имеющих небольшую глубину цвета. При числе цветов 256 и больше оно всегда равно 1, поэтому сейчас это поле уже можно считать устаревшим, но для совместимости оно сохраняется.

Глубина цвета является важнейшей характеристикой способа представления цвета в файле и измеряется в битах на точку.

Компрессия. В Bmp-файлах обычно не используется, но поле в заголовке для нее предусмотрено. Обычно она равна 0, и это означает, что изображение не сжато.

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

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

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

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

За информационным заголовком следует таблица цветов, представляющая собой массив из 256 (по числу цветов) 4-байтовых полей. Каждое из полей соответствует своему цвету в палитре, а три байта из четырех -- компонентам синей, зеленой и красной составляющих для этого цвета. Последний, самый старший байт каждого поля зарезервирован и равен 0.


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

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

Раздел 4 Кодирование звука

Основой кодирования звука с использованием персональных компьютеров является процесс преобразования колебаний воздуха в колебания электрического тока и следующая за ним дискретизация аналогового электросигнала. Кодирование и воспроизведение звуковой информации производится при помощи специализированных программ (редактор звукозаписи). Качество воспроизведения закодированного звука зависит от частоты дискретизации и её разрешения (глубины кодирования звука — количество уровней)

Кодирование в формате Mp3

Формат MP3 разработан группой института Фраунгофера под руководством Карлхайнца Бранденбурга и университета Эрланген-Нюрнберг в сотрудничестве с AT&T Bell Labs и Thomson Основой разработки этого формата послужил экспериментальный кодек ASPEC (Adaptive Spectral Perceptual Entropy Coding). Первым кодировщиком в формат MP3 стала программа L3Enc, выпущенная в 1994 году. Год спустя появился первый программный MP3-плеер — Winplay3.

В процессе разработки алгоритма тесты проводились на вполне конкретных популярных композициях. Основной стала песня Сюзанны Веги «Tom’s Diner». Из чего появилась шутливое выражение, что «MP3 был создан только ради комфортного прослушивания одной из любимых песен Бранденбурга», а Сюзанну стали называть «мамой MP3».

Почти полный стандарт появился в открытом доступе 6 декабря 1991 года.

23 апреля 2017 года истекли последние патенты на формат и были прекращены сборы лицензионных отчислений с производителей программного обеспечения и встраиваемых решений. О прекращении лицензирования формата сообщил Институт Фраунгофера на своём официальном сайте. И, хотя формат mp3 всё ещё весьма популярен среди пользователей, большинство радиостанций и телеканалов перешли на использование более современных кодеков, обеспечивающих лучшее сжатие при меньшей потере качества звукозаписи.


Структура Mp3 файла

MP3-файл состоит из нескольких фрагментов (называемых фреймами) MP3, которые, в свою очередь, состоят из заголовка и блока данных. Эта последовательность фрагментов называется элементарным потоком. Фрагменты же не являются независимыми элементами («резервуар байт»), и поэтому не могут быть извлечены произвольно. Блок данных MP3-файла содержит сжатую аудиоинформацию в виде частот и амплитуд. Сам заголовок MP3 состоит из маркера, который служит для нахождения верного MP3-фрагмента. За ним следует бит, показывающий, что используется стандарт MPEG, и два бита, показывающие использование layer 3; другими словами, это определяет MPEG-1 Audio Layer 3 или MP3. Последующие значения могут варьироваться в зависимости от типа MP3-файла. Стандарт ISO/IEC 11172-3 определяет диапазон значений для каждой секции заголовка, вместе с общей его спецификацией. Большинство MP3-файлов в настоящий момент содержат ID3-метаданные, которые предшествуют или следуют за MP3-фрагментом.

FLAC

FLAC (англ. Free Lossless Audio Codec) — популярный свободный кодек, предназначенный для сжатия аудиоданных без потерь.

В отличие от аудиокодеков, обеспечивающих сжатие с потерями (MP3, AAC, WMA, Ogg Vorbis, Opus), FLAC, как и любой другой lossless-кодек, не удаляет никакой информации из аудиопотока и подходит как для прослушивания музыки на высококачественной звуковоспроизводящей аппаратуре, так и для архивирования аудио.

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

Аудиопоток

Основными частями потока являются:

  • Строка из четырёх байтов «fLaC»
  • Блок метаданных STREAMINFO
  • Другие необязательные блоки метаданных
  • Аудиофреймы

Первые четыре байта идентифицируют поток FLAC. Следующие за ними метаданные содержат информацию о потоке, затем идут сжатые аудиоданные.

Метаданные

По состоянию на 10.03.2010 в libflac-1.2.1 определены следующие типы блоков: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. Блоки метаданных могут быть любого размера, не представляет большого труда добавление новых блоков. Неизвестные блоки метаданных декодер пропускает.

Блок STREAMINFO — является строго обязательным. В нём содержатся данные, позволяющие декодеру настроить буфера, частоту дискретизации, количество каналов, количество бит на семпл и количество семплов. Также в блок записывается подпись MD5 несжатых аудиоданных. Это полезно для проверки всего потока после его передачи.


Другие блоки предназначены для резервирования места, хранения таблиц точек поиска, тегов, список разметки аудиодисков, а также данных для конкретных приложений. Опции для добавления блоков PADDING или точек поиска приведены ниже. FLAC не нуждается в точках поиска, однако они позволяют значительно увеличить скорость доступа, а также могут быть использованы для расстановки меток в аудиоредакторах.

Аудиоданные

За метаданными следуют сжатые аудиоданные. Метаданные и аудиоданные не чередуются. Как и большинство кодеков, FLAC делит входной поток на блоки и кодирует их независимо друг от друга. Блок упаковывается во фрейм и добавляется к потоку. Базовый кодер использует блоки постоянного размера для всего потока, однако формат предусматривает наличие блоков разной длины в потоке.

Разбиение на блоки

Размер блока — крайне важный параметр для кодирования. Если он слишком мал, то в потоке будет чересчур много заголовков фреймов, что уменьшит уровень сжатия. Если же размер большой, то кодер не сможет подобрать эффективную модель сжатия. Понимание процесса моделирования поможет вам увеличить уровень сжатия для некоторых типов входных данных. Обычно при использовании линейного прогнозирования на аудиоданных с частотой дискретизации 44,1 кГц оптимальный размер блока лежит в диапазоне 2-6 тыс. семплов.

Межканальная декорреляция

Если на вход поступают стереоаудиоданные, они могут пройти через стадию межканальной декорреляции. Правый и левый канал преобразуются к среднему и разностному по формулам: средний = (левый + правый)/2, разностный = левый — правый. В отличие от joint stereo, используемом в lossy-кодерах, в lossless-кодировании этот процесс не приводит к потерям. Для данных с аудиодисков это обычно приводит к значительному увеличению уровня сжатия.

Моделирование

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