Нам остается рассмотреть последнюю часть вопроса, связанную с форматами графических файлов.
Как и любые другие результаты нашей работы на компьютере, графические изображения также могут сохраняться на внешних носителях в виде файлов. Количество графических форматов весьма разнообразно, поэтому выбор наиболее подходящего из них есть важная практическая задача.
Как уже отмечалось раньше, типичным векторным форматом графических файлов в среде Windows является WMF. Каждый мощный векторный редактор использует свой собственный формат хранения рисунков (например, CDR у Corel Draw); к счастью, такие редакторы поддерживают большое количество форматов, что позволяет легко преобразовывать их один в другой.
Растровые форматы обладают еще большим разнообразием. Стандартным графическим форматом в операционной системе Windows является BMP. Это очень простой формат, который может использовать любое программное обеспечение. Тем не менее он имеет существенный недостаток — файлы .BMP очень велики. Для смягчения этого недостатка многие графические форматы используют внутреннее сжатие (подробности см. ниже). В сети Интернет очень распространен один из таких форматов — GIF. Если сохранить один и тот же рисунок в форматах .BMP и .GIF, то последний окажется существенно меньше при абсолютно таком же качестве изображения. К сожалению, рисунок в формате .GIF не может иметь более 256 цветов, что несколько ограничивает его применение5. Наконец, для хранения многоцветных художественных иллюстраций и фотографий существует формат со специальным сжатием — JPEG (обычно расширение файлов уменьшают до стандартной длины и пишут JPG). Традиционные методы сжатия на многоцветные изображения практически не действуют, т.к. в них почти нет соседних точек с одинаковым цветом: например, все точки листа зеленые, но их оттенки различны. Поэтому большая группа экспертов по цветопередаче JPEG (Joint Photographic Experts Group), обобщив полувековой опыт исследований в области компьютеров, телевидения, полиграфии и других родственных областях, а также по особенностям человеческого зрения, представила детальные рекомендации по сжатию графической информации. Результат получился впечатляющим: объем графических файлов сократился более чем на порядок. Не следует только забывать, что преобразование в формат .JPEG является необратимым — восстанавливаемый после сжатия рисунок не абсолютно идентичен исходному, хотя на глаз это практически незаметно. Файлы .JPG являются вторым базовым стандартом изображений в сети Интернет.
Вопросы, связанные с графическими форматами файлов, представляют большой самостоятельный интерес. Наиболее любознательные читатели могут обратиться за интересными подробностями к указанной в списке литературе [3–8].
Обсуждая наиболее распространенные форматы графических файлов, мы не могли не упоминать об использующихся в них методах сжатия информации. (Возможно, с точки зрения повышения логичности ответа авторам билета стоило поменять местами в тексте вопроса сжатие и форматы файлов.) Итак, рассмотрим методы сжатия графической информации.
Сжатие — это один из процессов обработки информации. Прежде всего различают обратимое и необратимое сжатие (упаковка с потерей информации или без нее). В первом случае то, что получается в результате восстановления сжатой информации, полностью совпадает с оригиналом, а во втором распакованные данные хоть и не сильно, но отличаются от исходных. В частности, обратимого сжатия обязательно требует текстовая и числовая информация, зато графика и звук допускают некоторые незаметные для органов чувств искажения. Еще большие искажения можно позволить при упаковке отдельных кадров фильма, поскольку они сменяются настолько быстро, что человек не в состоянии рассмотреть отдельные детали изображения.
Наиболее распространенной идеей, лежащей в основе обратимого сжатия графических изображений, является учет числа повторений точек с одинаковым цветом. Основанный на ней метод называется методом группового кодирования; в англоязычной литературе он носит название RLE (Run Length Encoding — кодирование длин серий).
Метод наиболее хорошо подходит к упаковке простых контурных графических изображений с небольшим числом цветов. Рассмотрим ее на примере простейшего рисунка, на котором на синем небе находится желтое солнышко. Его фрагмент в увеличенном виде приведен на рис. 2.
Рис. 2
На рис. 2 одно из горизонтальных сечений рисунка отмечено черной прямой. Как отчетливо видно, в нем после достаточно большого количества синих точек имеется одна желтая, а затем снова следует группа синих. Очевидно, что вместо хранения информации о каждой точке можно просто закодировать, что 22 точки имеют синий цвет, 1 — желтый6 и т.п. В результате в нашем случае вместо 38 чисел, характеризующих цвет каждого пикселя, оказывается достаточно всего трех пар, указывающих количество точек и их цвет.
Еще более мощным групповой метод становится для черно-белых (двухуровневых) изображений. В этом случае даже нет необходимости специально указывать цвета, поскольку они обязательно чередуются, — можно просто сохранять число точек в черных и белых группах. Подобные стандарты упаковки данных активно используются в факс-машинах [5].
Метод RLE, будучи необязательной возможностью файлов формата BMP, используется на практике не очень часто. Помимо него, в некоторых других форматах графических файлов также может применяться сжатие: метод LZ (назван так в честь его авторов: A.Lempel и J.Ziv) и его модификации в форматах GIF и PNG, а также метод Хаффмана (PNG и JPG — о последнем речь пойдет ниже).
В последнее время все большее распространение получают системы сжатия, специально вносящие некоторые незаметные для человека искажения данных с целью повышения возможности их сжатия. Потребность в подобных технологиях обусловлена тем, что традиционные способы не могут обеспечить существенной степени сжатия. В частности, обратимым методам удается достаточно хорошо упаковать контурные рисунки с небольшим количеством цветов, но попытки проделать то же самое с многоцветными фотографическими изображениями приводят к результатам, которые намного хуже; но именно такие картинки в первую очередь и нуждаются в сжатии из-за большого объема!
Наиболее известные стандарты необратимого сжатия базируются на рекомендациях группы профессиональных экспертов по качеству графических изображений и цветопередаче JPEG. Данные рекомендации существенным образом учитывают особенности человеческого зрения.