Теоретические основы кодирования
Кодирование - процесс преобразования информации с помощью определенных алгоритмов в вид, удобный для передачи или хранения. С точки зрения математики это отображение некоторого множества знаков $А$ в множество слов в некотором алфавите $В$. Обратное отображение называется декодированием.
Кодирование может осуществляться с помощью таких наборов символов, как
- азбука Морзе;
- азбука Брайля;
- семафорная азбука;
- азбука жестов (язык глухонемых) и т.п.
Задача кодирования в информатике сводится к преобразованию любой информации в числовую форму. Буквы можно пронумеровать, интенсивность света, цвета, звука и других физических величин представить в виде числовых последовательностей. Особенностью хранения информации в компьютерных системах является то, что числа должны быть еще и преобразованы в двоичную систему счисления, тогда как для человека привычнее десятеричная.
Теоретические основы кодирования и передачи компьютерной информации были заложены К. Шенноном, применившим к этой проблеме достижения алгебры, комбинаторики, теории вероятностей. В частности, кодирование должно соответствовать следующим условиям:
- последующее декодирование должно быть однозначным;
- алгоритм должен предоставлять возможность создания автомата, реализующего кодирование в разумный интервал времени;
- алгоритм должен предоставлять возможность создания самонастраивающегося декодирующего автомата, позволяющего в течение ограниченного времени устранять влияние помех во входной последовательности.
Рисунок 1. Клод Шеннон. Автор24 — интернет-биржа студенческих работ
При кодировании компьютерной информации следует стремиться к компактности преобразованной информации и помехоустойчивости во время ее передачи и хранения.
Кодирование символьной информации
Алфавитно-цифровая информация, несмотря на развитие мультимедийных технологий, по-прежнему играет важную роль в компьютерных системах. Буквы, цифры, знаки препинания хранятся в памяти вычислительных устройств и передаются по сетям в виде байт. Байты для отображения символьной информации организованных в наборы.
Одним из наиболее ранних наборов символов стал ASCII (American Standard Code for Information Interchange), созданный в 1963 г. и закрепленный стандартом США. Поскольку наибольшую активность в разработке компьютерных технологий проявила именно эта страна, ASCII был ориентирован на удовлетворение потребностей англоязычных программистов и пользователей: в нем отсутствовали буквы национальных алфавитов (например, кириллицы) и некоторые другие не использующиеся в Америке символы. Емкость ASCII составляла 7 бит, т.е. с его помощью можно было закодировать 128 символов.
Рисунок 2. 7-битная кодировка ASCII. Автор24 — интернет-биржа студенческих работ
По мере интернационализации компьютерных рынков исходный набор символов был расширен. В нем появилось дополнительное пространство, где можно было хранить, например, символы для букв, отсутствующих в стандартном латинском алфавите, а также спецсимволы, как, например, знак квадратного корня. В связи с увеличением количества кодируемых символов новая версия ASCII занимала уже 8 бит.
Набор ASCII можно представить в виде таблицы с пронумерованными ячейками. Позиции с 33 по 127 занимают буквы латинского алфавита, цифры, знаки арифметических операций и препинания. Номера с 128 по 255 зарезервированы для национальных символов.
В СССР для кодирования символов применялся аналогичный набор КОИ-7 (Код Обмена Информацией 7-битный), на смену которому со временем пришел КОИ-8.
К началу 2000-х гг. стало понятно, что всё многообразие письменностей, существующих на Земле, невозможно вместить в 8-бит. Компьютерным сообществом был принят 16-битный набор символов Unicode, допускающий размещение 65536 всевозможных знаков, чего оказалось достаточно не только для алфавитов, иероглифов, и спецсимволов но и для таких специфических знаков, как эмоджи.
Кодирование мультимедийной информации
Кодирование изображений
Для компьютерной обработки изображение преобразовывается в т.н. битмап - набор пикселей, каждый из которых имеет следующие характеристики:
- положение (координаты x и y от верхнего левого угла);
- цвет;
- прозрачность (факультативно).
Цвет кодируется посредством разложения на простые составляющие: красный, зеленый и синий (RGB). Сочетая эти компоненты, интенсивность каждого из которых может принимать значения от 0 до 255, можно получать миллионы цветовых оттенков.
Битмап, описывающий изображение, занимает много компьютерной памяти. Только на кодирование одного пикселя требуется несколько байт. Поэтому при передаче изображения по сети или хранении его на жестком диске применяются уплотняющие алгоритмы, позволяющие в разы сократить объем памяти, занимаемый картинкой: jpeg, png, gif и т.п. Формат gif поддерживает к тому же многослойные изображения, что дает возможность создавать анимированные изображения.
Кодирование аудио и видео
Видео представляет собой ни что иное, как последовательность изображений, чередующихся со скоростью 24 кадра в секунду, поэтому для его кодирования применяются технологии, аналогичные тем, что используются при кодировании статических изображений. Объем памяти, занимаемый видеоинформацией, в сотни и даже тысячи раз превышает тот, что требуется для хранения изображений, поэтому для ее сжатия применяются алгоритмы семейства MPEG (Motion Picture Expert Group).
Звук при кодировании дискретизируется, т.е. с высокой частотой (несколько тысяч раз в секунду) производится измерение его интенсивности. При этом производится квантирование - запись амплитуды, приходящейся на каждое измерение. Точность измерения определяется количеством отведенных на каждую такую запись бит (т. н. битрейт). Чем их больше и чем чаще производятся измерения, тем более реалистичным будет звук при воспроизведении, но тем больше памяти займет такая запись. При обработке стереозвука описанные процессы производятся для каждого канала отдельно.
Закодированная аудиоинформация также занимает большой объем компьютерной памяти, поэтому при ее хранении и передаче также применяются уплотняющие технологии (mp3, flac и др).
Рисунок 3. Кодирование и воспроизведение аудиоинформации. Автор24 — интернет-биржа студенческих работ