Файл: Методы кодирования данных (Кодирование аудиоданных в формате WAV).pdf
Добавлен: 24.04.2023
Просмотров: 178
Скачиваний: 2
Таблица 1 – основные теги в файле TIFF.
|
Код |
HEX |
Название |
Описание |
|
|
254 |
0x00FE |
NewSubfileType |
Тип данных, хранящихся в этом файле. Эта метка является заменой метке SubfileType, и является очень полезным, когда в одном TIFF файле хранится несколько изображений. |
|
|
255 |
0x00FF |
SubfileType |
Тип данных, хранящихся в этом файле (старый). |
|
|
256 |
0x0100 |
ImageWidth |
Количество столбцов в изображении. |
|
|
257 |
0x0101 |
ImageLength |
Количество строк в изображении. |
|
|
258 |
0x0102 |
BitsPerSample |
Количество бит в компоненте. Эта метка предполагает различное число битов в каждом компоненте (хотя в большинстве случаев оно одинаковое). Например, для RGB может быть 8 для всех компонентов — красного, зелёного и голубого, или 8,8,8 для каждого из компонентов. |
|
|
259 |
0x0103 |
Compression |
Используемый вид компрессии. |
|
|
262 |
0x0106 |
PhotometricInterpretation |
Используемая цветовая модель. |
|
|
263 |
0x0107 |
Threshholding |
Вид преобразования серого в чёрное и белое для черно-белых изображений. |
|
|
264 |
0x0108 |
CellWidth |
Количество колонок в матрице преобразования из серого в чёрное и белое. |
|
|
265 |
0x0109 |
CellHeight |
Количество строк в матрице преобразования из серого в чёрное и белое. |
|
|
266 |
0x010A |
FillOrder |
Логический порядок битов в байте. |
|
|
270 |
0x010E |
ImageDescription |
Описание изображения. |
|
|
271 |
0x010F |
Make |
Производитель изображения. |
|
|
272 |
0x0110 |
Model |
Модель или серийный номер. |
|
|
273 |
0x0111 |
StripOffsets |
Смещение для каждой полосы изображения в байтах. |
|
|
274 |
0x0112 |
Orientation |
Ориентация изображения. |
|
|
277 |
0x0115 |
SamplesPerPixel |
Количество компонентов на пиксель. |
|
|
278 |
0x0116 |
RowsPerStrip |
Количество строк на полосу. |
|
|
279 |
0x0117 |
StripByteCounts |
Количество байт на полосу после компрессии. |
|
|
280 |
0x0118 |
MinSampleValue |
Минимальное значение, используемое компонентом. |
|
|
281 |
0x0119 |
MaxSampleValue |
Максимальное значение, используемое компонентом. |
|
|
282 |
0x011A |
XResolution |
Количество пикселей в ResolutionUnit строки. |
|
|
283 |
0x011B |
YResolution |
Количество пикселей в ResolutionUnit столбца. |
|
|
284 |
0x011C |
PlanarConfiguration |
Метод хранения компонентов каждого пикселя. |
|
|
288 |
0x0120 |
FreeOffsets |
Смещение в байтах к строке неиспользуемых байтов. |
|
|
289 |
0x0121 |
FreeByteCounts |
Количество байтов в строке неиспользуемых байтов. |
|
|
290 |
0x0122 |
GrayResponseUnit |
Разрешение данных, хранящихся в GrayResponseCurve. |
|
|
291 |
0x0123 |
GrayResponseCurve |
Величина плотности серого. |
|
|
296 |
0x0128 |
ResolutionUnit |
Разрешение данных, хранящихся в XResolution, YResolution. |
|
|
305 |
0x0131 |
Software |
Имя и версия программного продукта. |
|
|
306 |
0x0132 |
DateTime |
Дата и время создания изображения. |
|
|
315 |
0x013B |
HostComputer |
Компьютер и операционная система, использованные при создании изображения. |
|
|
316 |
0x013C |
Artist |
Имя создателя изображения. |
|
|
320 |
0x0140 |
ColorMap |
Цветовая таблица для изображений, использующих палитру цветов. |
|
|
338 |
0x0152 |
ExtraSamples |
Описание дополнительных компонентов. |
|
|
33432 |
0x8298 |
Copyright |
Имя владельца прав на хранимое изображение. |
|
Таким образом, в целом графическая информация кодируется при помощи различных методологий, а главной информацией в файле можно считать координаты участков определенного цвета.
Кроме того, сам по себе цвет часто кодируется при помощи шестнадцатиричного кода[8]. Каждому цвету соответствует шестиразрядный код в шестнадацтиричной системе счисления. Он делится на три секции по два разряда: #RRGGBB, где RR – доля красного цвета, GG – доля зеленого цвета, BB – доля голубого цвета. В качестве примера можно рассмотреть часть таблицы веб-цветов (безопасных цветов). Она приведена на рисунке 4.
Рисунок 3 – часть таблицы безопасных цветов.
Кодирование аудиоданных в формате WAV
Для представления звука в цифровых форматах, в каждый единичный интервал времени производится измерение амплитуды сигнала. В силу того, что сам по себе звук имеет волновую природу, для точного представления его в цифровом виде, необходимо также непрерывно измерять амплитуду колебаний. В действительности, количество измерений в секунду, называемое частотой дискретизации, варьируется от 10000 до 96000. Наиболее часто применяется частоты 44100 и 48000 Гц. В качестве амплитудной градации (разрешения) применяют 28, 216 и 224 бита. Само собой, при оцифровке аудиосигнала возникают искажения и отклонения, которые напрямую зависят от частоты дискретизации и разрешения. Высокочастотные искажения могут подавляться при помощи специальных фильтров, которые размещаются на выходе цифро-аналогового преобразователя[9].
Звук в цифровом формате занимает достаточно большой объём памяти. Для примера возьмём аудиофайл, длительность которого составляет 60 секунд, частота дискретизации равна 44100 Герц, а разрешение – 16 бит. Такой файл занимает чуть более 10 мегабайт дискового пространства.
Звуковые файлы плохо сжимаются в архивы стандартными средствами, но существуют различные форматы, которые позволяют сократить объём используемого пространства памяти, однако в связи с этим возникают потери качества, поэтому для профессиональной работы со звуком не применяются форматы со сжатием.
Рассмотрим кодирование звука в формате WAV. Для данного формата характерно 2 строго отделенных друг от друга области: это заголовок файла, содержащий техническую информацию, и аудиоданные, представляющие звук.
Заголовок файла содержит информацию о:
- размере аудиофайла;
- каналах;
- частоте дискретизации;
- глубине звучания.
Эти термины уже были озвучены ранее, и их определение было дано, поэтому перейдем к структуре файла WAV, а именно - к заголовку. Его структура описана в таблице 2.
Таблица 2 – структура файла WAV.
|
0-3 |
chunkId |
Содержит символы «RIFF» в ASCII кодировке 0x52494646. Является началом RIFF-цепочки. |
|
4-7 |
chunkSize |
Это оставшийся размер цепочки, начиная с этой позиции. Иначе говоря, это размер файла минус 8, то есть, исключены поля chunkId и chunkSize. |
|
8-11 |
format |
Содержит символы «WAVE» 0x57415645 |
|
12-15 |
subchunk1Id |
Содержит символы "fmt " 0x666d7420 |
|
16-19 |
subchunk1Size |
16 для формата PCM. Это оставшийся размер подцепочки, начиная с этой позиции. |
|
20-21 |
audioFormat |
Аудио формат, список допустипых форматов. Для PCM= 1 (то есть, Линейное квантование). Значения, отличающиеся от 1, обозначают некоторый формат сжатия. |
|
22-23 |
numChannels |
Количество каналов. Моно = 1, Стерео = 2 и т.д. |
|
24-27 |
sampleRate |
Частота дискретизации. 8000 Гц, 44100 Гц и т.д. |
|
28-31 |
byteRate |
Количество байт, переданных за секунду воспроизведения. |
|
32-33 |
blockAlign |
Количество байт для одного сэмпла, включая все каналы. |
|
34-35 |
bitsPerSample |
Количество бит в сэмпле. Так называемая «глубина» или точность звучания. 8 бит, 16 бит и т.д. |
|
36-39 |
subchunk2Id |
Содержит символы «data» 0x64617461 |
|
40-43 |
subchunk2Size |
Количество байт в области данных. |
|
44- |
data |
Непосредственно WAV-данные. |
Методы кодирования символьных данных. Кодировка Unicode и ASCII
Unicode – одна из наиболее популярных кроссплатформенных мультиязычных кодировок, которая используется для описания различных текстовых символов. В Unicode есть большое количество символов и национальных литералов.
В Unicode для кодирования символов предоставляется 31 бит (4 байта за вычетом одного бита). Количество возможных комбинаций дает запредельное число: 231 = 2 147 483 684 (т.е. более двух миллиардов). Поэтому Unicode описывает алфавиты всех известных языков, даже «мертвых» и выдуманных, включает многие математические и иные специальные символы. Однако информационная емкость 31-битового Unicode все равно остается слишком большой. Поэтому чаще используется сокращенная 16-битовая версия (216 = 65 536 значений), где кодируются все современные алфавиты. Данная кодировка частично совпадает с ASCII (одинаковые коды имеют первые 128 символов).
Рассмотрим методику наложения символов в Unicode для получения специальных литералов. Это происходит с использованием различных методологий. На рисунке 4 представлен пример получения некоторых символов путем совмещения в формате NFD – рекурсивного сложения.
Рисунок 4 – сложение символов Unicode в методологии NFD.
Методология NFKD позволяет получить совмещенные символы в форме совместной декомпозиции. Пример использования данной методологии приведен на рисунке 5.
Рисунок 5 – сложение символов с использованием NFKD.
Также существуют и другие методологии для сложения символов в данной кодировке.
Далее следует рассмотреть кодировку символов в машинном представлении – UTF-8, одной из базовых составляющих Unicode.
Схема кодирования состоит из трёх последовательных процедур. В первую очередь определяется количество байт для представления символа, при этом номер символа берется из Unicode-таблицы. Пример представлен на рисунке 6.
Рисунок 6 – соответствие диапазона номеров символов количеству байт в Unicode.
Далее производится установка старших битов:
- 0, если требуется 1 байт;
- 110, если требуется 2 байта;
- 1110, если требуется 3 байта;
- 11110, если требуется 4 байта.
Рисунок 7 – шаблон кодирования символов.
Затем производится установка необходимых значений в младших байтах, которые непосредственно определяют символ. Примеры кодирования приведены на рисунке 8.
Рисунок 8 – примеры кодирования символов.
Чтобы указать на то, что файл содержит символы в кодировке Unicode, в заголовке файла выставляются преамбулы – маркеры последовательности. Они показаны на рисунке 9.
Рисунок 9 – маркеры последовательности в Unicode.
ASCII (American standard code for information interchange) — одна из наиболее распространенных и самая поддерживаемая из существующих на данный момент кодировка для представления распространенных символов, разработанная в Соединенных Штатах Америки в 1963 году[4]. В данной таблице кодировки приводятся однобайтные коды для следующих групп символов:
- арабские цифры;
- латинский алфавит (верхний и нижний регистры);
- знаки пунктуации;
- управляющие знаки;
- дополнительные буквы национальных алфавитов.
В ASCII коды цифр начинаются с 0011 в двоичной системе, а заканчиваются самим значением представляемого числа в данной системе счисления. К примеру, 0101 – двоичный код числа 5, а 01110101 – код символа «5» в таблице ASCII. Таким образом, каждое число в двоичной системе счисления можно превратить в строку ASCII путем добавления к каждому из них префикса 0011.
Кодирование видеоданных. Формат AVI
Формат AVI – RIFF-видеоформат, разработанный компанией Microsoft в 1992 году. Файлы с расширением AVI могут содержать видео- и аудиоданные, сжатые с использованием разных комбинаций кодеков, что позволяет синхронно воспроизводить видео со звуком. Файл AVI может содержать различные виды компрессированных данных (например, DivX-видео + WMA-аудио или Indeo-видео + PCM-аудио), в зависимости от того, какой кодек используется для кодирования/декодирования. Как и DVD, файлы AVI поддерживают многопоточное аудио-видео.
Файл начинается с заголовка, который приведен на рисунке 10.
Рисунок 10 – заголовок файла AVI.
В заголовке указывается различная информация: частота кадров, потоки, флаги, общее количество кадров, ширина и высота видео, размер буфера и другие параметры.
Сам по себе файл AVI состоит из файлов формата RIFF. Они основаны на понятии «чанк», т.е. блок, содержащий три поля: заголовок, указателя размера чанка и самих графических данных. Формат чанка приведен на рисунке 11.
Рисунок 11 – формат чанка RIFF.
Также AVI содержит аудиоданные, которые кодируются в зависимости от своего формата.
Заключение
Числа, тексты и графика образовали некоторый относительно замкнутый набор, которого было достаточно для многих решаемых на компьютере задачи. Постоянный рост быстродействия вычислительной техники создал широкие технические возможности для обработки звуковой информации, а также для быстро сменяющихся изображений.
Для преставления информации в компьютерной технике используются различные методы кодирования данных. Это связано с тем, что данные разбиваются на множество категорий и групп, и для каждой из них необходимо разработать способ хранения и представления.
В данной работе были рассмотрены некоторые форматы данных: текстовая информация, аудиоданные и графическая информация. Для этих данных была подробно разобрана методика их представления в компьютере.