RGB – это аббревиатура от Red, Green и Blue (красный, зеленый и красный). Цветовая модель RGB чаще всего используется для показа изображений на экране монитора или с помощью широкоформатных проекторов.
3.3.2. Сжатие графических данных
Для электронных изданий, зачастую распространяемых по сетям, объем занимаемый файлом представляет собой очень важную характеристику. Понятно поэтому стремление использовать векторные форматы или же специальные растровые форматы с внутренним сжатием информации для представления графических файлов. Кратко остановимся на методах и средствах сжатия изображений.
Существует 2 группы методов сжатия изображений: без потерь и с потерями. В первом случае при распаковке сжатого графического файла полностью восстанавливается вся исходная информация, в том числе, цветовой оттенок каждого отдельного пиксела. Во втором же – часть информации теряется, т. е. изображение становится несколько менее качественным, некоторые мелкие его детали утрачиваются. Во многих случаях это вполне допустимо, так как человеческий глаз различает, в лучшем случае, лишь несколько тысяч оттенков цвета. Кроме того, он не реагирует на мелкие детали изображения (разрешение глаза близко к одной угловой минуте, откуда при нормальном расстоянии до изображения в 25—30 см можно подсчитать величину линейного разрешения глаза, которая близка к 90—100 мкм).
Большинство методов сжатия без потерь основано на варианте группового кодирования RLE (Run-Length Encoding). Идея такого метода заключается в том, что последовательности повторяющихся значений заменяются на пару чисел, первое из которых дает количество повторяющихся значений, а второе – само это значение. В описаниях многоцветных изображений очень часто соседние пикселы характеризуются одними и теми же тоновыми и цветовыми характеристиками, что и обеспечивает эффективность такого сжатия [29].
Схема сжатия без потерь Лемпела-Зива-Велча (LZW) в последние годы используется все шире и шире. Она позволяет работать с данными любого типа, обеспечивая достаточно быстрое сжатие и распаковку данных. Этот алгоритм называют алгоритмом подстановок или алгоритмом сжатия словарного типа. На основе входного потока данных алгоритм формирует словарь данных (его также называют переводной таблицей или таблицей строк). Образцы новых данных сравниваются с записями словаря. Если они там не представлены, то создается новая кодовая фраза. Если строка повторно встречается во входном потоке, то в выходной поток записывается ссылка на соответствующую строку словаря, которая имеет меньшую величину, чем исходный фрагмент данных. Так реализуется сжатие информации.
Декодирование LZW-данных производится в обратном порядке. Декомпрессор читает код из потока данных и, если этого кода еще нет в словаре, добавляет его туда. Затем этот код переводится в строку, которую он представляет, и заносится в выходной поток несжатых данных. Ряд графических форматов, в том числе и один из базовых – TIFF – используют в современных своих версиях встроенное LZW-сжатие. В частности, этот формат использован для представления рисунков в данной книге. Достоинством этого метода для графических файлов является хорошее сжатие данных для любой глубины представления цвета, начиная со штриховых и кончая полноцветными изображениями. В частности, такое сжатие успешно используется в формате GIF с индексированными цветами (глубина цвета 8 бит). Оба эти формата будут описаны в данном разделе.
В других случаях используется сжатие с регулируемой величиной потерь и переменным коэффициентом сжатия. Чем больше величина потерь, тем больше и коэффициент сжатия. Программа сжатия обычно делит все изображение на блоки размером 8 ? 8 пикселов каждый: Уменьшение сжимаемого фрагмента позволяет уменьшить пропорционально квадрату его линейных размеров время обработки, т. е. деление на фрагменты эффективно увеличивает скорость преобразования. Далее к значениям пикселов применяется формула, называемая дискретным косинусным преобразованием. Оно преобразует матрицу пикселов в матрицу значений амплитуд пространственного спектра изображения.
Значения элементов полученной матрицы характеризуют различные составляющие спектра: левый верхний угол результирующей матрицы соответствует самым низким частотам пространственного спектра, а правый нижний – самым высоким. Коэффициент качества преобразования, введенный предварительно пользователем, используется при получении значений элементов матрицы квантования. Чем ниже коэффициент качества, тем большие будут значения у элементов последней матрицы. Далее каждый элемент матрицы амплитуд делится на соответствующий элемент матрицы квантования. Полученные в итоговой матрице значения округляются до ближайшего целого числа. В результате таких операций в правой нижней части итоговой матрицы будет тем больше нулевых элементов, чем ниже заданный пользователем коэффициент качества. Затем программа сжатия кодирует элементы последней матрицы, начиная от левого верхнего по строке до правого нижнего одним из методов кодирования без потерь, причем чем больше нулей в последней матрице, тем меньше окажется информационный объем сжатого файла. Величина коэффициента сжатия для этого метода изменяется в пределах от 10 до 100 в зависимости от заданного значения коэффициента качества.
Декодирование сжатого описанным методом файла изображения начинается с шага обратного преобразования без потерь в результате чего восстанавливается заключительная матрица, в которой содержится ряд нулевых элементов в правой нижней части. Затем значения элементов этой матрицы домножаются на элементы матрицы квантования, хранимой в самом сжатом файле. В результате получим восстановленную матрицу амплитуд пространственного спектра, значения которой отличаются от элементов исходной (они округлялись до целого значения в процессе сжатия с потерями), что и определяет отличия восстановленного изображения от исходного. Далее применяется обратное косинусное преобразование, в результате чего получим восстановленную матрицу значений пикселов, размер которой по-прежнему 8 ? 8. В результате потери высокочастотных составляющих восстановленное изображение будет выглядеть более блеклым и размытым по сравнению с исходным.
3.3.3. Описание наиболее распространенных графических форматов
Далее остановимся на основных форматах графических файлов. Самым универсальным из них является TIFF (Tag Image File Format). Спецификация этого формата была представлена фирмой Aldus Corporation в 1986 г. А в 1996 г. была выпущена современная его версия 6.0. Формат предназначался для хранения оцифрованных изображений больших размеров и высокого разрешения. В 1999 г. фирма Aldus вошла в состав фирмы Adobe, известной среди дизайнеров, издателей и полиграфистов всего мира своими программными пакетами для профессиональной работы с растровой и векторной графикой. Формат TIFF подходит как для профессиональной работы художников с графикой, так и для факсимильной связи и передачи изображений большого размера. Формат обладает универсальностью и высокой гибкостью и хранит графические данные в структурированном виде, что позволяет графическим приложениям осуществлять быстрый поиск и загрузку нужных фрагментов изображения.
В нем может использоваться как 24– и 32-битное цветовое представление (True Color), так и представление с индексированными цветами. Он часто применяется как промежуточный при преобразовании из одного графического формата в другой. Однако размер графических файлов, представленных в этом формате, велик, что долгое время препятствовало его использованию в электронных публикациях. Этот недостаток компенсируется, начиная с 5-ой версии формата, применением эффективного встроенного LZWсжатия, о котором было сказано выше. В 6-ой версии формата TIFF стандартное представление данных в RGB-цветовом пространстве дополнено возможностью представления в пространстве CMYK, которое широко используется при выводе графических данных на бумагу или иной носитель для тиражирования оттисков. Кроме того, в этой же версии предусмотрена возможность хранения описания фрагментов изображения в формате JPEG, о котором мы поговорим позднее.
CMYK – это аббревиатура от Cyan, Magenta, Yellow и Black (голубой, пурпурный, желтый и черный). Именно эти цвета составляют основу модели CMYK, которая предназначается для печати цветоделенных материалов и чаше всего используется для отображения на бумаге цветных изображений в полиграфии.
Общая структура графического файла в формате TIFF показана на рис. 3.4. Как следует из представленных на рисунке данных, в TIFF-файле принципиально может храниться несколько изображений, для каждого из которых предусмотрен свой собственный директорий (или каталог) и своя структура для хранения данных изображения. Следует отметить гибкость этого формата, выражающуюся в том, что директории и данные могут располагаться друг относительно друга 3-мя различными способами:
1. Как показано на рис. 3.4, т. е. вначале – все директории, а затем все данные изображений.
2. Попарно: директорий и данные 1-го изображения, затем – то же самое для 2-го и так далее.
3. Вначале все данные изображений, а уже затем – директории этих изображений.
Рис. 3.4. Общая структура TIFF-файлов
Используя устаревший термин "директорий" автор следует стандартному описанию формата TIFF, предложенному фирмой Aldus в середине 90-х годов.
Гибкость формата проявляется и в структуре директория для каждого изображения, а также в размещении графических данных, служащих для описания изображений. Эта структура подробнее представлена на рис. 3.5. Заголовок файла содержит информацию, необходимую для идентификации типа файла. Это собственно идентификатор, номер версии и смещение первого директория (IFD0) относительно заголовка файла. В директории изображения (Image File Directory, IFD) содержится несколько структур данных, изначально названных тэгами. В первом из них хранится информации об общем количестве элементов описания изображения – тэгов, а затем размещается каждый такой тэг. В самом конце каждого IFD помещена ссылка на следующий IFD в виде величины его смещения от начала TIFF-файла. Структуры данных, называемые здесь тэгами уже совсем не те тэги, с которыми мы сталкивались в предыдущей главе. Здесь тэг представляет собой элемент данных, служащий для описания изображения. В современных версиях формата TIFF их чаще называют полями. В каждом таком тэге или поле могут содержаться данные изображения или же ссылка на то место в памяти, где они помещены. Все изложенное иллюстрируется рис. 3.5.
Каждый тэг или поле представляет собой стандартную 12-байтовую структуру, где в первых 4 байтах хранится идентификатор тэга (поля) и тип элементов данных. Следующие 4 байта содержат количество элементов данных в этом поле и лишь последние 4 байта отведены для хранения собственно данных этого поля или же смещения того места, где хранятся эти графические данные.
Универсальность формата TIFF проявляется также в том, что данные изображения могут быть организованы как в виде полос, так и в виде фрагментов. Понятие полоса для растрового изображения соответствует одной строке или последовательно расположенным нескольким строкам растра. Протяженность полосы измеряется количеством строк растра, которые в нее входят. Таким образом, полоса представляет собой одномерную структуру данных. Каждая полоса задается в некотором тэге (или поле) с помощью смещения относительно начала файла. Это позволяет программам отображения легко находить в файле нужные данные и отображать их независимо от других данных изображения.
Рис. 3.5. Структура размещения данных в TIFF-формате
Фрагмент представляет собой двумерную структуру данных, в нем задается как горизонтальная протяженность (количество пикселов вдоль строки развертки), так и вертикальный размер, т. е. число строк развертки, которые присутствуют (хотя бы частично) внутри фрагмента. Фрагмент – структура прямоугольная. Это позволяет выводить на экран части изображений в том случае, если разрешение компьютера не позволяет вывести изображение целиком. Индивидуальная адресация фрагментов (в виде величины смещения) позволяет программам легко и быстро находить нужный фрагмент изображения и отображать его на экране.
Нелишним будет также упомянуть, что формат TIFF обладает широкими возможностями развития. Действительно, для того чтобы использовать новый тип данных достаточно определить его в соответствующих тэгах или полях и предусмотреть возможность правильного распознавания этого типа данных в программах просмотра файлов формата TIFF. Именно так были определены сжатые с помощью алгоритма Лемпела-Зива-Велча графические данные в версии 5.0 и с помощью алгоритма JPEG-сжатия – в формате 6.0.
Формат GIF (Graphic Interchange Format) создан компьютерной информационной службой CompuServe. Он является одним из наиболее употребительных растровых форматов в электронных, в особенности, в сетевых издания. Формат изначально был создан для упрощения обмена данными в локальных компьютерных сетях, при возможности отображения этих данных. Основных достоинств у формата 3:
? пригодность для различных платформ, т. е. формат GIF является платформно-независимым;
? возможность хранения нескольких изображений в одном файле и их представление в форме анимационного GIF-файла;
? малый размер файлов благодаря использованию мощного алгоритма сжатия без потерь.
Изображение записывается в этом формате с использованием RGB-цветовой модели и данных встроенной в файл палитры индексированных цветов. К сожалению, серьезным ограничением для этого формата является малая глубина цвета, не превышающая 8 бит на пиксел. Важное достоинство этого формата состоит в том, что он позволяет хранить в одном файле несколько изображений. Современная версия GIF89a решила проблему обработки таких изображений, размещенных в одном файле, с помощью дополнительно включенного в файл блока управления графикой. Этот блок позволяет программе просмотра организовать взаимодействие каждого последующего изображения с текущим, что и обеспечило создание широко распространенных анимационных GIF-файлов. Структура анимационного GIF-файла и взаимодействие хранимых в нем различных изображений подробнее рассмотрено в разд. 3.5.1. Там же мы остановимся на структурной организации файлов этого типа. Графические данные в формате GIF могут храниться как последовательно, строка за строкой, так и с различными вариантами чередования строк. В последнем случае рисунок первоначально может создаваться, например, на основе 1/8 части от общего описания, а в дальнейшем к нему добавляются все новые строки, и изображение постепенно "прорисовывается" все четче и четче.
Растровый формат с глубиной представления цвета до 48 бит и с использованием той же самой RGB-модели создан специальной группой разработчиков и получил название PNG (Portable Network Graphic – переносимый сетевой формат), что произносят как "пинг". Формат PNG изначально планировался как замена формату GIF, но с улучшенными возможностями представления цвета. Он, как и GIF, поддерживает чередование строк и ускоренную начальную загрузку файла. В нем используется еще более эффективный алгоритм сжатия информации. Кроме того, в формате поддерживается режим полупрозрачных корректирующих слоев, аналогичный используемым в векторном AI (Illustrator) и растровом PSD (Photoshop) форматах графических пакетов фирмы Adobe. Единственное ограничение формата PNG по сравнению с GIF состоит в его непригодности для хранения в одном файле нескольких изображений и, вследствие этого, отсутствии анимационных возможностей.
Рассмотренные выше графические форматы содержали внутреннюю компрессию без потерь информации. Еще один формат, который относят к числу наиболее употребительных, характеризуется регулируемой величиной сжатия в зависимости от допустимой потери качества изображения. Этот формат разработан объединенной группой экспертов в области фотографии JPEG (Joint Photographic Experts Group) и назван аббревиатурой JPEG (расширение файлов, созданных в этом формате – JPG) . Этот формат также растровый с глубиной цвета, равной 24 битам. Преимущественно используется цветовая модель HSL (Hue-Saturation-Lightness или ОттенокНасыщенность-Яркость). Алгоритм сжатия, используемый в таких файлах, носит названия "алгоритм сжатия JPEG". Он был описан ранее в этом же разделе в качестве примера технологии сжатия с потерями в графических файлах. Различные его варианты использованы также при организации сжатия видеоданных (см. разд. 3.5).
Графические программы, которые позволяют хранить данные в этом формате, обычно выводят специальную линейку, на которой устанавливается значения параметра качества, изменяющегося в пределах от 0 до 10 (см. рис. 3.6). Одновременно с непрерывным изменением коэффициента качества на линейке появляется дискретный параметр качества в форме целого числа в поле ввода Качество, а рядом в раскрывающемся списке расположена соответствующая характеристика этого параметра. При значении от 0 до 4 качество "Низкое", от 5 до 7 – "Среднее", 8 и 9 – "Высокое" и от 10 до 12 – "Максимально". На рисунке значение коэффициента качества равно 6 и качество "Среднее". При сохранении изображения можно установить переключатель Разновидность формата в положение Progressive, при котором величина чередования строк устанавливается в пределах от 3 до 5, что обеспечивает быструю начальную загрузку изображения низкого качества в сетевых структурах.
Рис. 3.6. Диалоговое окно для установки параметров файла в формате JPEG
Используемый в формате JPEG подход "сжатие с потерями" частично идентифицирует и удаляет ту информацию, которая несущественна для восприятия изображения. Лишь при сжатии изображения с резко выраженными контурами линии начинают "дрожать". При высоких значениях коэффициента качества изображения этот эффект не проявляется. Возможно, в дальнейшем появится вариант формата с избирательной установкой коэффициента качества для различных фрагментов изображения, что позволит достигнуть высокого качества при очень высоких коэффициентах сжатия.
В заключение этого раздела следует отметить последовательность графических форматов в порядке убывания их популярности (или частоты применения) для электронных изданий и документов: GIF, JPEG, PNG, TIFF.
3.4. Форматы представления аудиофайлов
В этом разделе речь пойдет о цифровых форматах файлов, предназначенных для хранения звука. Иначе говоря, – о хранении оцифрованного звука. Напряжение, передаваемое по телефонным каналам и несущее звук, представляет собой аналоговый сигнал достаточно сложной формы. Чтобы преобразовать такой сигнал в цифровую форму необходимо выполнить последовательно две операции: дискретизацию и квантование. Дискретизация состоит в периодическом измерении значений напряжения (на рис. 3.7 дискретизация сигнала производится в моменты времени t1,.., t4,..), а квантование – в преобразовании аналоговых значений в дискретный цифровой код. На рисунке показан пример 3-разрядного квантования аналогового сигнала, при котором имеется 2
= 8 уровней квантования. Соответственно на качество оцифрованного звукового сигнала оказывают влияние 2 фактора: частота дискретизации и разрядность цифрового кода, получаемого при квантовании. При увеличении частоты дискретизации и разрядности кода качество оцифрованного звука улучшается, но пропорционально возрастает объем информации, которая должна хранится в файле. Таким образом необходимо найти компромиссное решение между качеством и размерами файла.
Рис. 3.7. Дискретизация и квантование аналогового звукового сигнала
Частоту дискретизации определить достаточно просто. В соответствии с теоремой Котельникова частота дискретизации должна быть вдвое больше максимальной частоты спектра звукового сигнала. Принятая в настоящее время частота дискретизации для аудио-CD составляет 44100 Гц, т. е. максимальная воспроизводимая частота звукового спектра составляет 20050 Гц, что превышает диапазон звуков, воспринимаемых ухом человека. Это обеспечивает идеальное звучание таких устройств. Частота дискретизации в телефонных сетях составляет 8000 Гц, что более чем в 2 раза превышает полосу пропускания телефонного канала, равную 3000 Гц.
Количество уровней или разрядность квантования характеризует точность передачи уровня звукового сигнала. Действительно, при 256 уровнях квантования или представлении уровня звука с помощью 8 бит информации, величина погрешности квантования равна половине расстояния между соседними уровнями, так как именно с этой точностью значение электрического напряжения может быть преобразовано в цифровой код (при том условии, что наименьшему уровню сигнала, обозначенному min на рис. 3.7, соответствует цифровой код 000000002 или 00h, а наибольшему, обозначенному max, – 111111112 или 0ffh в 16-ричной форме представления), т. е. отнесено к одному из двух соседних уровней, между которыми находится реальное значение сигнала.
Нетрудно сообразить, что при частоте дискретизации в 44100 Гц и квантовании каждого такого уровня 16 двоичными разрядами (65536 уровней квантования) хранение 1 минуты цифрового аудио потребует около 5 Мбайт информационного пространства, а 30 минут стереозвучания – около 300 Мбайт.
Закодированные описанным способом цифровые аудио-данные характеризуются значительной избыточностью, т. е. они могут быть упакованы, а затем восстановлены без всякой потери качества. Однако применение для сжатия цифрового аудио архиваторов обычного типа, таких как ARJ или ZIP позволяет сжать исходный файл лишь приблизительно на 20%, т. е. такое сжатие является неэффективным.
Основная идея сжатия аудиосигнала с потерями – пренебрежение теми фрагментами звука, которые лежат вне пределов восприятия человеческого уха. Первая такая возможность определяется маскирующим эффектом, в соответствии с которым сильные звуки приводят к невосприимчивости уха к слабым звукам в том же самом частотном диапазоне. Поэтому слабые звуки можно кодировать с малым количеством уровней, в результате чего сокращается количество информации, используемое при кодировании звука.
Далее, весь частотный диапазон делится на поддиапазоны, каждый из которых обрабатывается отдельно, причем маскирующий эффект используется как внутри каждого поддиапазона, так и между ними, т. е. очень мощный звук в одном из поддиапазонов приводит к маскированию во всех остальных. Затем используются особенности психоакустической модели человеческого слуха, в соответствии с которой тщательно сохраняются звуки хорошо воспринимаемых частот и удаляются звуки тех частот, которые не воспринимаются.
Для стереозвучания используется дополнительный прием, связанный с тем, что стереоэффект воспринимается человеком только в области средних звуковых частот. Поэтому сигнал низких и высоких частот передается в монофоническом звучании.
Наконец, используются специальные алгоритмы сжатия, основанные на высокой предсказуемости звукового сигнала, т. е. большом значении его коэффициента автокорреляции. Все перечисленные выше методы и алгоритмы позволяют получить десятикратный и более высокий коэффициент сжатия практически без потери качества звучания, что реализуется в формате MP3, разработанном комитетом MPEG (Motion Picture Expert Group – группа экспертов в области движущихся изображений).
Для воспроизведения звуковых файлов формата MP3 существует целая группа программ-плееров. Список большинства из них можно найти на сайте http://www.dailymp3.com. Самые популярные из них это Winamp, которая включена в дистрибутив браузера Netscape Communicator, начиная с версии 4.7, K-Jofol, которая является самым быстрым декодером звука, и NAD (или NADDY), которая является лидером по качеству воспроизведения звука. Другие плееры используются гораздо реже.