Богданов - 4 (774758), страница 2
Текст из файла (страница 2)
FlashPix является еще очень молодым форматом, которому тем не менее пророчат большое будущее. Он был анонсирован 3 июня 1996 года на выставке COMDEX. Архитектура формата FlashPix вобрала в себя лучшие идеи цифровой обработки изображений. Их описание применительно к FlashPix приведено ниже.
И спользование нескольких разрешений. Вместо хранения изображения с одним разрешением FlashPix создает иерархию из нескольких независимых копий одного и того же изображения с разными разрешениями. Это свойство позволяет приложениям выбирать уровень с наиболее удобным для работы разрешением. Причем процесс выбора и подстановки этого уровня вместо уровня с максимальным разрешением абсолютно прозрачен и незаметен для пользователя. Например, когда требуется показать картинку на экране монитора, будет выбран уровень с наиболее близким разрешением, зато при выводе на печать будет задействован уровень с высоким разрешением, соответствующим возможностям печатающего устройства.
Очень удобно пользоваться этим свойством формата при редактировании изображений. Сам процесс редактирования может производиться на уровне с низким разрешением, где любая операция будет выполняться практически мгновенно.
Последовательность действий пользователя, к которым относятся фильтрация изображений, изменение масштаба, цветовая коррекция и т. п., будет сохранятся в специальном сценарии (script). Когда работа будет завершена, сценарий «проигрывается» на уровне с максимальным разрешением, все подуровни автоматически пересчитываются, и результат можно сохранять.
Многоуровневая организация файлов FlashPix помогает также при работе в сетях передачи данных. Например, для простого просмотра изображений пользователем достаточно загрузить их с экранным разрешением, а если потребуется получить эти изображения, то тогда по сети будут переданы их копии с высоким разрешением. Такой механизм передачи графической информации применительно к FlashPix называется Internet Imaging Protocol (IIP), и в настоящее время начинает набирать популярность.
Иерархия создается начиная с уровня с максимальным разрешением (рис. 16). Следующий уровень имеет разрешение вдвое меньшее. Приложения, оптимизированные для работы с FlashPix, создают его, уменьшая в два раза вертикальный и горизонтальный размеры изображения. Еще более низкий уровень имеет разрешение в 4 раза меньшее, чем самый верхний. Процесс создания новых уровней прекращается, когда изображение целиком способно уместиться в квадрате с ребром 64 пиксела.
Разбивка изображения на блоки. FlashPix делит изображение на одинаковые прямоугольные фрагменты вместо того, чтобы, как это реализуется в других форматах, хранить изображение в виде строк пикселов. Размер этих фрагментов, называемых блоками, выбирается кратным квадрату размером 64 пиксела.
Благодаря делению на блоки ввод-вывод изображения и его обработка происходят быстрее, так как в памяти могут находиться только те блоки, непосредственно с которыми в настоящий момент работает программа, а не все изображение целиком, как это применяется при традиционном подходе.
Структурированное хранилище. Файл FlashPix изнутри представляет из себя так называемое структурированное хранилище (structured storage). Эта технология была позаимствована у Microsoft OLE и подобна файловой системе. Вся информация в файле FlashPix при этом организована в некую структуру из виртуальных директорий и виртуальных файлов. Такой подход позволяет внедрять в файлы FlashPix помимо графической любую другую информацию, что решает проблему гибкости и расширяемости формата. Более того, применение структурированного хранилища делает файлы FlashPix идеальными объектами для встраивания в любые документы при помощи технологий OLE2 или OpenDoc.
Возможность JPEG-компрессии. Естественно, что универсальный графический формат, тем более претендующий на роль стандарта de facto в ближайшем будущем, обязан обладать возможностью сжатия информации. Формат FlashPix версии 1.0 поддерживает JPEG-компрессию и сжатие по одному цвету, и кроме этого, может содержать несжатую графическую информацию. Сжатие по одному цвету применяется для блоков, содержащих пикселы одинакового цвета. Коэффициент сжатия при этом может достигать величины 4096:1.
Поддержка только этих алгоритмов сжатия объясняется, возможно, тем, что FlashPix в силу своей специфики получит наибольшее распространение в компьютерных сетях (в особенности в Internet), цифровой фото-видео аппаратуре и некоторых устройствах вывода, где JPEG применяется традиционно по уже описанным выше причинам. Возможно также и то, что использование других алгоритмов сжатия, например, LZW, ограничивается соответствующими патентами.
Применение различных цветовых моделей. FlashPix поддерживает две основные модели с возможностью цветовой калибровки: RGB (в том числе и grayscale) и Photo YCC — цветовой схемы, применяемой в формате Kodak PhotoCD и аналогичной YCbCr. В принципе, благодаря расширяемости формата и со специальным указанием, что цветовая калибровка запрещена, возможно применение и других цветовых моделей. Но, как для любого расширения стандарта, нет никакой уверенности в его поддержке всеми приложениями.
Описательная информация. Благодаря использованию структурированного хранилища формат FlashPix позволяет внедрять в файл неграфическую информацию, например, ссылки на авторские права, словесное описание содержимого файла, сценарии обработки изображения, информация об устройствах ввода-вывода, для которых предназначен этот файл, и др.
Таблица 4. Сравнение растровых графических форматов
Характеристика | Графический формат | |||||
Bitmap | TIFF | GIF | JPEG | FlashPix | ||
Цветовые | Black & White | + | + | + | ||
модели | Grayscale | + | + | + | + | |
Index Colors | + | + | + | |||
RGB | + | + | + | |||
CMYK | + | |||||
YCbCr | + | + | + | |||
Методы | PackBits (RLE) | + | + | |||
сжатия | Huffman | + | + | |||
LZW | + | + | ||||
JPEG | + | + | + | |||
Расширяемость | нет | хорошо | нет | плохо | хорошо | |
Потери | нет | да/нет* | нет | да | да/нет* | |
Платформы | Windows, OS/2 | любые | любые | любые | любые | |
Расширение имени файла | .bmp, .dib, .rle, .ico | .tif | .gif | .jpg | .fpx |
* — потери при использовании JPEG-компрессии
Векторные изображения
Векторная графика представляет собой совершенно особый класс изображений. Ее появление, в первую очередь, обусловлено развитием средств вычислительной техники.
Как уже упоминалось, векторное изображение состоит из графических примитивов — фигур, заданных своим математическим описанием. При отображении эти фигуры рисуются одна за другой в определенной последовательности, накладываясь друг на друга, что в конечном итоге образует требуемое изображение.
Если сравнивать векторную и растровую графику, то у каждой есть как свои преимущества, так и недостатки. Например, растровая графика наилучшим способом способна передать все полутоновые переходы в изображении, но такие преобразования как масштабирование, поворот и т. п. приводят к потерям качества, причем необратимым. Представьте себе шахматную доску, то есть растровую картинку 8 на 8 пикселей, и попробуйте уменьшить ее до размера, скажем 6 на 6. Какие бы хитрые алгоритмы ни применялись для этого, признать в полученном результате шахматную доску сможет лишь человек с необычайно развитым ассоциативным мышлением.
Напротив, векторные изображения лишены этого недостатка. К ним можно применять любые математические преобразования (хоть узлом завязывать), и их качество при этом нисколько не пострадает. А применив обратное преобразование, получим изображение тождественное исходному (если, конечно, не учитывать возможные округления). Но с другой стороны, и это особенно хорошо видно при увеличении, векторные изображения не выглядят естественными — налицо их некоторая схожесть с чертежами.
Преобразования между двумя классами изображений возможны, но, в основном, в одну сторону. Очевидно, что растеризовать векторное изображение несложно. Для этого его нужно нарисовать на некоторой сетке (матрице пикселей) с клеточками определенного размера (то есть разрешением). Обратный процесс, в принципе, возможет, но он не может дать однозначного результата. Существуют специальные программы для векторизации растровых изображений, в них применяются очень сложные в математическом плане алгоритмы, и результат сильно зависит от применяемого алгоритма и его настроек.
Рассмотрим теперь наиболее часто используемые векторные форматы и те графические примитивы, которые в них используются.
Windows Metafile
Поскольку Windows является графической системой, в нее встроены функции работы с графикой. Иногда бывает полезным сохранить последовательность команд интерфейса графических устройств (Graphic Device Interface, GDI) в виде макрокоманды. Такая макрокоманда и есть метафайл Windows. Если сохранить его в виде файла, то получится хорошее средства для обмена графической информацией между приложениями Windows.
Рисование в Windows выполняется при помощи объектов, в качестве которых могут выступать перо, кисть, битовая карта, текст или область. Перо рисует линии, которые могут быть как сплошными, так и пунктирными. Кисть предназначена для заливки замкнутых областей. Windows GDI поддерживает сплошные, штрихованные и текстурные заливки. Области представляют собой комбинацию прямоугольников, многоугольников и эллипсов.
Метафайл состоит из короткого заголовка, за которым следуют записи, содержащие информацию о вызовах функций Windows GDI. Сюда входят размер записи, номер функции и список ее аргументов.
Следует отметить, что с появлением Windows 95 формат метафайла был расширен благодаря появлению новых функций GDI. Этот расширенный формат носит название Enhanced Windows Metafile (EMF). Помимо уже упоминавшихся инструментов рисования формат поддерживает кривые Безье (Bezier curve), сложные составные кривые (path), появилась поддержка шрифтов Unicode, в которых один символ кодируется двумя байтами, и некоторые другие средства. Кроме того, новый формат содержит 32-разрядные данные, в то время как все данные в старом формате представлялись 16-разрядными значениями.
О кривых Безье следует сказать особо, так как этот инструмент поддерживается всеми профессиональными редакторами векторной графики. Сколь угодно сложную кривую можно аппроксимировать с помощью кубических сплайнов. На рис. 17 видно, как кривая задается точками — узлами, — причем для каждого узла определяются еще две служебные точки для обозначения направляющих линий (конечные точки кривой Безье имеют одну направляющую).
Data exchange Format (DXF)
Этот формат получил распространение благодаря популярности пакета AutoCAD фирмы Autodesk. Первоначально он применялся как формат обмена данными для CAD-приложений на PC. Позже, когда эти приложения были перенесены на другие платформы, такие как Macintosh и рабочие станции Unix, область применения DXF сильно расширилась, коснувшись даже издательских систем.