При печати на бумаге используется несколько иная цветовая модель: если монитор испускает свет, то оттенок получается в результате сложения цветов, а краски поглощают свет – цвета вычитаются. Поэтому в качестве основных используют голубую, сиреневую и желтую краски. Кроме того, из-за неидеальности красителей к ним обычно добавляют четвертую краску – черную. Для хранения информации о каждой краске чаще всего используют 1 байт.
Растровые изображения очень хорошо передают реальные образы. Они замечательно подходят для фотографий, картин и в случаях, когда требуется максимальная "естественность". Такие изображения легко выводить на монитор или принтер, поскольку эти устройства тоже основаны на растровом принципе. Однако есть у них и ряд недостатков. Растровое изображение высокого качества (с высоким разрешением и большой глубиной цвета) может занимать десятки, и даже сотни мегабайт памяти. Для их обработки нужны мощные компьютеры, но и они нередко "задумываются" на десятки минут. Любое изменение размеров неизбежно приводит к ухудшению качества: при увеличении пикселы не могут появиться "из ничего", при уменьшении – часть пикселов будет просто выброшена.
Есть другой способ представления изображений – объектная (векторная) графика. В этом случае в памяти хранится не сам рисунок, а правила его построения, т. е., например, не все пикселы круга, а команда "построить круг радиусом 30 с центром в точке с координатами (50, 135) и закрасить его красным цветом". Быстродействия современных компьютеров вполне достаточно, чтобы перерисовка происходила почти мгновенно.
На первый взгляд, все становится гораздо более сложным. Зачем же это нужно? Во-первых, и это самое главное, векторное изображение можно как угодно масштабировать, выводить на устройства, имеющие любое разрешение, – и всегда будет получаться результат с наивысшим для данного устройства качеством, ведь картинка каждый раз "рисуется" заново, используя столько пикселов, сколько возможно.
Во-вторых, в векторном изображении все части (так называемые "примитивы") могут быть изменены независимо друг от друга: любой из них можно увеличить, повернуть, деформировать, перекрасить, даже стереть, но остальных объектов это никоим образом не коснется.
В-третьих, даже очень сложные векторные рисунки, содержащие тысячи объектов, редко занимают более нескольких сотен килобайт, т. е. в десятки, сотни, а то и тысячи раз меньше аналогичного растрового.
Но почему, если все так хорошо, векторная графика не вытеснила растровую? Сам принцип ее формирования предполагает использование объектов с исключительно ровными четкими границами, а это сразу выдает их искусственность, поэтому область применения векторной графики довольно ограничена – это чертежи, схемы, стилизованные рисунки, эмблемы и другие подобные изображения.
1.5 Кодирование звука
Если преобразовать звук в электрический сигнал, например с помощью микрофона, можно увидеть плавно изменяющееся с течением времени напряжение. Для компьютерной обработки такой аналоговый сигнал нужно каким-то образом преобразовать в последовательность двоичных чисел. Если измерять напряжение через равные промежутки времени и записывать полученные значения в память компьютера, то этот процесс называется дискретизацией (оцифровкой), а устройство, выполняющее его, – аналого-цифровым преобразователем (АЦП).
Чтобы воспроизвести закодированный таким образом звук, нужно выполнить обратное преобразование, для чего служит цифро-аналоговый преобразователь (ЦАП), а затем сгладить получившийся ступенчатый сигнал.
Чем выше частота дискретизации (количество отсчетов за секунду) и больше разрядов отводится для каждого отсчета, тем точнее будет представлен звук. Размер звукового файла увеличивается, поэтому в зависимости от характера звука, требований, предъявляемых к его качеству и объему занимаемой памяти, выбирают некоторые компромиссные значения. Например, при записи на компакт-диски используются 16-битные отсчеты при частоте дискретизации 44 032 Гц. При работе только с речевыми сигналами достаточно 8-битных отсчетов при частоте 8 кГц.
Описанный способ кодирования звуковой информации универсален, он позволяет представить любой звук, преобразовывать его самыми разными способами. Бывают случаи, когда выгодней действовать по-иному. Человек издавна использует довольно компактный способ представления музыки – нотную запись. Чтобы перевести символьную информацию в понятную компьютеру форму, достаточно иметь таблицу соответствий символов этого языка их двоичным кодам.
В 1983 г. ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов, – MIDI.
Конечно, такая система кодирования позволяет записать далеко не всякий звук, она годится только для инструментальной музыки. Но есть у нее и неоспоримые преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI–редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии. Коме того, качество звучания зависит от возможностей синтезатора или звуковой платы компьютера, с помощью которых производится запись.
Заметим, что существуют и другие компьютерные форматы записи музыки, основанные на подобном же принципе.
1.5.5 Цифровое кодирование
При цифровом кодировании дискретной информации применяют потенциальные и импульсные коды.
В потенциальных кодах для представления логических единиц и нулей используется только значение потенциала, а его перепады, формирующие законченные импульсы, во внимание не принимаются. Импульсные коды позволяют представить двоичные данные либо импульсами определенной полярности, либо частью импульса – перепадом потенциала определенного направления.
При использовании прямоугольных импульсов для передачи дискретной информации необходимо выбрать такой способ кодирования, который одновременно достигал бы нескольких целей:
- имел при одной и той же битовой скорости наименьшую ширину спектра результирующего сигнала;
- обеспечивал синхронизацию между передатчиком и приемником;
- обладал способностью распознавать ошибки;
- обладал низкой стоимостью реализации.
Более узкий спектр сигналов позволяет на одной и той же линии добиваться более высокой скорости передачи данных. Кроме того, часто к спектру сигнала предъявляется требование отсутствия постоянной составляющей, т. е. наличия постоянного тока между передатчиком и приемником.
Синхронизация передатчика и приемника нужна для того, чтобы приемник точно знал, в какой момент времени необходимо считывать новую информацию с линии связи, поэтому в сетях применяются самосинхронизирующиеся коды, сигналы которых несут для передатчика указание о том, в какой момент времени нужно осуществлять распознавание очередного бита или нескольких бит, если код ориентирован более чем на два состояния сигнала. Любой резкий перепад сигнала, так называемый фронт, может служить хорошим указанием для синхронизации приемника с передатчиком.
Требования, предъявляемые к методам кодирования, являются взаимно противоречивыми, поэтому каждый из рассматриваемых ниже популярных методов цифрового кодирования обладает своими преимуществами и своими недостатками по сравнению с другими.
1.5.5.1 Метод биполярного кодирования с альтернативной
инверсией (AMI)
В этом методе используются три уровня потенциала: отрицательный, нулевой и положительный. Для кодирования логического нуля используется нулевой потенциал, а логическая единица кодируется либо положительным потенциалом, либо отрицательным, при этом потенциал каждой новой единицы противоположен потенциалу предыдущей. В AMI используются три уровня сигнала на линии. Дополнительный уровень требует увеличения мощности передатчика примерно на 3 дБ для обеспечения той же достоверности приема бит на линии, что является общим недостатком кодов с несколькими состояниями сигнала по сравнению с кодами, которые различают только два состояния.
1.5.5.2 Потенциальный код с инверсией при единице
Существует код, похожий на AMI, но только с двумя уровнями сигнала. При передаче нуля он передает потенциал, установленный в предыдущем такте, а при передаче единицы потенциал инвертируется на противоположный. Это называется потенциальным кодом с инверсией при единице. Для улучшения потенциальных кодов используют два метода. Первый метод основан на добавлении в исходный код избыточных бит, содержащих логические единицы; второй – на предварительном "перемешивании" исходной информации таким образом, чтобы установить примерно одинаковую вероятность появления единиц и нулей на линии. Устройство, или блоки, выполняющие "перемешивание", называются скремблерами (scramble – свалка, беспорядочная сборка).
1.5.5.3 Биполярный импульсный код
Кроме потенциальных в сетях используются и импульсные коды когда, данные представлены полным импульсом или его частью – фронтом. Наиболее простым случаем такого подхода является биполярный импульсный код, в котором единица представлена импульсом одной полярности, а ноль – другой. Он обладает отличными самосинхронизирующими свойствами, но постоянная составляющая может присутствовать. Кроме того, спектр у него шире, чем у потенциальных кодов. Из-за слишком широкого спектра биполярный импульсный код используется редко.
1.5.5 Манчестерский код
В локальных сетях до недавнего времени самым распространенным методом кодирования был так называемый манчестерский код. Он применяется в технологиях Ethernet и TokenRing. Здесь для кодирования единиц и нулей используется перепад потенциала, т. е. фронт импульса. Информация кодируется перепадами потенциала, происходящими в середине каждого такта.