Двоичное кодирование звука
Лабораторная работа №5
Тема: Дискретное (цифровое) представление текстовой, графической, звуковой информации и видеоинформации
Цель работы:научиться представлять текстовую, графическую, звуковую информации и видеоинформацию в цифровой форме.
Оборудование, приборы, аппаратура, материалы: персональный компьютер с выходом в Интернет, электронные учебники.
Теоретические сведения к лабораторной работе
Про передачу информации в общих чертах мы уже говорили, теперь давайте разберемся подробнее на распространенных примерах, которые могут помочь при решении задач. Начнем с самого простого - текста.
Пусть у нас есть какое-то устройство, которое может хранить и передавать только нули и единицы (например, компьютер). Логично составить из этих нулей и единиц длинное число. Для удобства можно перевести его в десятеричную систему исчисления. По сути, теперь у нас есть устройство, которое умеет хранить и передавать десятичные числа. Как же нам закодировать символы? Решение оказалось достаточно простым - все необходимые символы были пронумерованы. Необходимые - это английский алфавит, цифры, служебные и специализированные символы и местный алфавит в данной стране. Был принят международный стандарт ASCII, согласно которому первые 128 чисел во всех странах соответствуют одинаковым символам, а вторую половину занимают национальный алфавит и символы. Таким образом, получилось 256 символов. Если перевести десятичные числа в двоичную систему счисления, это как раз соответствует количеству различных чисел из 8 цифр (0 и 1).
После этого была введена такая величина, как байт - 8 бит. Теперь можно сказать, что любой символ занимает 1 байт памяти, а 1024 символа занимают 1024 байта или 1 килобайт (Кбайт).
Теперь можно попробовать разобраться в простенькой задачке: допустим, у вас дома подключен интернет со скоростью 10 МБит/с (обратите внимание, скорость канала передачи обычно указывается не в мегабайтах, а в мегабитах, поэтому небходимо перевести для удобство исчисления). 10 МБит/с = 10 * 1024 КБит/с = 5 * 256 Кбайт/с, таким образом, ваш канал может передать 1280 символов за одну секунду.
Допустим, вы хотите загрузить 4 страницы текста, размера 48 строчек по 96 символов в каждой, то есть 4 страницы по 48 * 96 = 9 * 512 символов. Надо заметить, что в подобных задачах почти всегда не нужно считать точное число символов. Задачи обычно составляются так, что приведенные числа делятся на некую степень двойки, которая впоследствии сократится. И, так мы хотим скачать 36 * 512 символов со скоростью 5 * 256 Кбайт/с (5 * 256 симв/с). То есть, нам потребуется 36 * 512 / 5 * 256 сек = 36 * 2 / 5 сек = 7,2 секунды.
Кодирование изображений
Создавать и хранить графические объекты в компьютере можно двумя способами – как растровое или как векторное изображение. Для каждого типа изображений используется свой способ кодирования.
Кодирование растровых изображений
Растровое изображение представляет собой совокупность точек (пикселей) разных цветов. Пиксель – минимальный участок изображения, цвет которого можно задать независимым образом.
В процессе кодирования изображения производится его пространственная дискретизация. Пространственную дискретизацию изображения можно сравнить с построением изображения из мозаики (большого количества маленьких разноцветных стекол). Изображение разбивается на отдельные маленькие фрагменты (точки), причем каждому фрагменту присваивается значение его цвета, то есть код цвета (красный, зеленый, синий и так далее).
Для черно-белого изображения информационный объем одной точки равен одному биту (либо черная, либо белая – либо 1, либо 0).
Для четырех цветного – 2 бита.
Для 8 цветов необходимо – 3 бита.
Для 16 цветов – 4 бита.
Для 256 цветов – 8 бит (1 байт).
Качество изображения зависит от количества точек (чем меньше размер точки и, соответственно, больше их количество, тем лучше качество) и количества используемых цветов (чем больше цветов, тем качественнее кодируется изображение).
Для представления цвета в виде числового кода используются две обратных друг другу цветовые модели: RGB или CMYK. Модель RGB используется в телевизорах, мониторах, проекторах, сканерах, цифровых фотоаппаратах. Основные цвета в этой модели: красный (Red), зеленый (Green), синий (Blue). Цветовая модель CMYK используется в полиграфии при формировании изображений, предназначенных для печати на бумаге.
Цветные изображения могут иметь различную глубину цвета, которая задается количеством битов, используемых для кодирования цвета точки.
Если кодировать цвет одной точки изображения тремя битами (по одному биту на каждый цвет RGB), то мы получим все восемь различных цветов.
R | G | B | Цвет |
Белый | |||
Желтый | |||
Пурпурный | |||
Красный | |||
Голубой | |||
Зеленый | |||
Синий | |||
Черный |
На практике же, для сохранения информации о цвете каждой точки цветного изображения в модели RGB обычно отводится 3 байта (то есть 24 бита) - по 1 байту (то есть по 8 бит) под значение цвета каждой составляющей. Таким образом, каждая RGB-составляющая может принимать значение в диапазоне от 0 до 255 (всего 28=256 значений), а каждая точка изображения, при такой системе кодирования может быть окрашена в один из 16 777 216 цветов. Такой набор цветов принято называть True Color (правдивые цвета), потому что человеческий глаз все равно не в состоянии различить большего разнообразия.
Для того чтобы на экране монитора формировалось изображение, информация о каждой точке (код цвета точки) должна храниться в видеопамяти компьютера. Рассчитаем необходимый объем видеопамяти для одного из графических режимов. Итак, допустим, у нас есть изображение в формате .bmp размером 640*480 пикселей - самое низкое из часто используемых разрешений. Так же у каждого пикселя нужно определить цвет. В старых или низкокачественных изображениях используется 256-цветная палитра, по одному байту на каждый пиксель. Тогда наша картинка будет занимать: 640 * 480 байт = 64*10 * 16*30 байт = 300 Кбайт. В современных же изображениях используют RGB палитру (по первым буквам слов Red, Green, Blue). Как вы, возможно, знаете, любой цвет можно задать с помощью трех основных цветов: красного, синего и желтого или так же красного, синего и зеленого. Собственно, так и работает это задание - мы храним соотношение красного, зеленого и синего в данном цвете, задавая его одним из 256 чисел (пронумерованы отдельные участки спектра каждого из основных цветов). Таким образом, на один пиксель уходит по 3 байта. Так как первые 256 чисел соответствуют всем двухзначным шестнадцатеричным числам, удобно задавать цвет в виде трех шестнадцатеричных чисел. Так, например, FF FF FF (256 256 256) - это белый, а 00 00 00 - это черный, FF FF 00 - коричневый, FF 00 FF - фиолетовый, 00 FF FF - бирюзовый (цвет морской волны). Как переводить другие шестнадцатеричные числа в десятичную систему счисления мы изучим позже, но знание о том, что получится, если сочетать основные цвета необходимо на ЕГЭ и может использоваться в заданиях на эту тему. Итак, если изображение тех же размеров сохранено в 24-разрядном (RGB) .bmp, оно будет занимать 900 Кбайт. Однако, если у вас есть фотография размером 2048 * 1536 пикс = 1024*2 * 3*512 = 3 МПикс (мегапикселя) и по 3 байта на каждый пиксель, значит, вам понадобится 9 Мбайт свободного места. Если вы решите проверить данный факт на компьютере, у вас может уйти немного больше места, так как по стандарту в начале файла есть так называемая «шапка» - общая информация об изображении - размеры, какая палитра, дата создания и т.д.
Растровые изображения очень чувствительны к масштабированию (увеличению или уменьшению). При уменьшении растрового изображения несколько соседних точек преобразуются в одну, поэтому теряется различимость мелких деталей изображения. При увеличении изображения увеличивается размер каждой точки и появляется ступенчатый эффект, который можно увидеть невооруженным глазом.
Кодирование векторных изображений
Векторное изображение представляет собой совокупность графических примитивов (точка, отрезок, эллипс…). Каждый примитив описывается математическими формулами. Кодирование зависит от прикладной среды.
Достоинством векторной графики является то, что файлы, хранящие векторные графические изображения, имеют сравнительно небольшой объем.
Важно также, что векторные графические изображения могут быть увеличены или уменьшены без потери качества.
Двоичное кодирование звука
Звук – волна с непрерывно изменяющейся амплитудой и частотой. Чем больше амплитуда, тем он громче для человека, чем больше частота, тем выше тон.
Причем каждое слагаемое, то есть каждая синусоида, может быть точно задана некоторым набором числовых параметров – амплитуды, фазы и частоты, которые можно рассматривать как код звука в некоторый момент времени.
В процессе кодирования звукового сигнала производится его временная дискретизация – непрерывная волна разбивается на отдельные маленькие временные участки и для каждого такого участка устанавливается определенная величина амплитуды.
Таким образом, непрерывная зависимость амплитуды сигнала от времени заменяется на дискретную последовательность уровней громкости.
Каждому уровню громкости присваивается его код. Чем большее количество уровней громкости будет выделено в процессе кодирования, тем большее количество информации будет нести значение каждого уровня и тем более качественным будет звучание.
Качество двоичного кодирования звука определяется глубиной кодирования и частотой дискретизации.
Частота дискретизации– количество измерений уровня сигнала в единицу времени.
Количество уровней громкости определяет глубину кодирования.
Теперь давайте попробуем передать звук. Как вы, возможно, знаете, у звука есть частота - количество однотонных мгновенных звуков, производимых за одну секунду. Частоту измеряют в Герцах, например, встречаются частоты 48 кГц, 96 кГц, наиболее качественные аудиодорожки имеют частоту 192 кГц. Диапазон частот различных звуков достаточно велик, поэтому он разградуирован на маленькие промежутки, пронумерованные по порядку. Все частоты из каждого промежутка приравниваются к одной. Обычно встречаются 8-разрядные аудио файлы, т.е. частота звука кодируется 8 битами, а значит, звук может иметь одну из 256 частот. Однако новые аудиокарты поддерживают 16-разрядный звук.
Итак, допустим, у вас 8-разрядная звуковая дорожка с частотой 48 кГц (килоГерц) - это значит, что в каждую секунду издается 48000 различных звуков и каждый звук кодируется 8 битами (то есть одной из 256 частот). Значит, если вы хотите закодировать аудиодорожку длиной 2:08 или 128 секунд вам понадобится 8 бит / звук * 48000 звук / с * 128 с = 1024 * 48000 бит = 6000 Кбайт = 5,8 Мбайт (приблизительно). А если вы захотите его передать по интернету со скоростью 1 МБит /с. вам понадобится 5,8 Мбайт / 1 МБит/с = 8 * 5,8 с = 46,4 секунды.