ЛЕКЦИЯ 10 СТАНДАРТЫ КОМПЬЮТЕРНОЙ ГРАФИКИ Стандартизация в компьютерной графике направлена на обеспечение мобильности и переносимости прикладных программ, унификацию взаимодействия с графическими устройствами и обеспечение возможности обмена графической информацией между различными подсистемами. Использование стандартов позволяет сократить сроки разработки графических систем и увеличить их жизненный цикл. Сегодня в практике использования средств компьютерной графики применяется большое количество стандартов, различающихся по назначению и функциональным возможностям. Они имеют разную степень официальности - от фактических до международных стандартов. Эволюция графических стандартов естественно отражает процесс развития средств компьютерной графики - от векторной графики до систем виртуальной реальности. Наиболее заметный след в двадцатипятилетней истории графических стандартов оставили: Соге - Core Graphics System; GKS - Graphical Kernel System; MGKS - Minimal GKS; GKS-N - New Graphical Kernel System; CKS-3D - 3D Graphical Kernel System; PHIGS P - programmer's Hierarchical Interactive Graphics System; VDI - Virtual Device Interface; CGI - Computer Graphics Interface; PS - Adobe Systems PostScript Language; DPS - Adobe Systems Display Postscript System; NeWS - SUN Microsystems Network Extensible Window System; Х Window - MIT Х Window System; Windows - Microsoft Windows System; XGKS - Х+ GKS; РЕХ - PHIGS+ Х; OpenGL - SGI Graphical Language; VRML Virtual Realily Modeling Language; PREMO PResentation Environment for Multimedia 0bjects. В основе разработки графических стандартов лежит принцип виртуальных ресурсов, позволяющий разделить графическую систему на несколько слоев - прикладной, базисный и аппаратно зависимый. При этом каждый слой является виртуальным ресурсом для верхних слоев и может использовать возможности нижних слоев с помощью стандартизованных программных интерфейсов. Кроме того, графические системы могут обмениваться информацией с другими системами или подсистемами с помощью стандартизованных файлов или протоколов. В соответствий с этими соображениями первоначально были выделены три основных направления стандартизации - базисные графические системы, интерфейсы виртуального устройства, форматы обмена графическими данными. Стандартизация базисных графических систем направлена на обеспечение мобильности прикладных программ и основана на концепции ядра, содержащего универсальный набор графических функций, общих для большинства применений. Наиболее известными проектами по стандартизации базисных систем являются Core System, GKS, GKS-3D, PHIGS, PHIGS+. Основное направление развития этих проектов заключалось в усилении изобразительных возможностей для визуализации геометрических объектов (2D, 3D, удаление скрытых линий и граней, полутоновая закраска и пр.). Стандарт на базисную графическую систему включает в себя функциональное описание и спецификации графических функций для различных языков программирования. 1 Концепция виртуального устройства начала разрабатываться с момента появления аппаратно-независимых графических систем. Интерфейс виртуального устройства разделяет аппаратно-зависимую и аппаратно-независимую части графической системы. Он обеспечивает заменяемость графических устройств (терминальную независимость), а также возможность работы с несколькими устройствами одновременно. Интерфейс виртуального устройства может существовать в форме программного интерфейса и/или протокола взаимодействия двух частей графической системы. Развитие этой концепции совпало с активным перемещением графических средств на персональные компьютеры и графические станции. При этом основными интерактивными устройствами стали растровые дисплеи, а устройствами для получения твердых копий - растровые принтеры. Это привело к необходимости выделения отдельного набора растровых функций, позволяющих использовать функциональные возможности растровых устройств. Эта концепция нашла применение в проектах CGI, Х Window и MS Windows (а также NeWS и Display Postscript), обеспечивших удобные средства для манипулирования растровыми изображениями. Эти средства явились основой для развития систем обработки изображений и для организации эффективного многооконного пользовательского интерфейса с использованием меню, диалоговых панелей, полос просмотра и пр. Отметим, что традиционные средства вывода геометрических примитивов (линий, дуг, многоугольников) и текстов также имеются в этих системах. Сегодня, наиболее развитые проекты РЕХ и OpenGL неплохо совмещают основные достижения как геометрического, так и растрового направления. OpenGL предлагает интерфейс между программным обеспечением и аппаратурой. Данный интерфейс состоит из нескольких сотен процедур и функций, позволяющих программисту описывать трехмерные графические объекты и операции над ними. Так же, как и РЕХ, OpenGL интегрирует графические объекты в Х Window, но с таким же успехом может работать и с любой другой оконной системой или вовсе без нее. Предусмотрены следующие графические примитивы: точки, отрезки прямых линий, многоугольники, пиксельные прямоугольники или битовые карты. Каждый примитив задается множеством координат своих вершин, с которыми ассоциируются следующие атрибуты: цвет, нормаль ориентации и координаты текстуры. Все вершины обрабатываются независимо и на основе текущих установок и режимов. В OpenGL предусмотрено множество операций над плоскими и трехмерными объектами: матрицы преобразований, коэффициенты уравнения вычисления освещенности и т.п. Следует отметить, что стандарт отвечает только за визуализацию, осуществляемую через полностью независимый от производителя прикладной интерфейс пользователя, поэтому в нем нет средств описания структур сложных объектов. Главная цель OpenGL - задание механизма описания процесса визуализации сложных объектов, а не способов их построения. VRML предлагается в качестве средства для описания процесса интерактивного взаимодействия множества субъектов, находящихся в виртуальном пространстве, распределенном, благодаря возможностям Internet, по всему миру. PREMO в сферу влияния стандарта входит спецификация среды программирования для систем презентации, позволяющих конструировать и взаимодействовать с различными компьютерными средами. Объектами таких сред может быть компьютерная графика, анимация, аудио, видео и любые другие "медиа", несущие в себе презентационную нагрузку. Международная деятельность по стандартизации в машинной графике Работы по протоколам послужили отправной точкой по развитию стандартизации в машинной графике. В 1974 г. в США был создан комитет по стандартизации машинной графики GSPC в АСМ/SIGGRAPH. В 1975 г. в ФРГ в Институте стандартов был создан подкомитет по машинной графике - DIN-NI/UA-5.9. В 1977 г. в международной организации по стандартизации (ISO) была создана рабочая группа TC97/SC5/WG2 "машинная графика". Важную роль в разработке методологии стандартизации машинной графики сыграла конференция в Сейлаке (Франция), организованная графическим подкомитетом WG 5.2 IFIP в 1976 г. На конференции были сформулированы и обсуждены основные условия и проблемы стандартизации. Было установлено, что основная цель стандартизации - переносимость 2 графических систем, которая достигается стандартизацией интерфейса между графическим ядром системы (базовой графической системой), реализующим собственно графические функции, и моделирующей системой - проблемно-ориентированной прикладной программой, использующей функции графического ядра. Базовая система должна обладать: независимостью от вычислительных систем; независимостью от языков программирования; независимостью от области применения; независимостью от графических устройств. Структура прикладной графической системы, удовлетворяющей сформулированным требованиям, может быть представлена в виде шестиуровневой модели (рис. 10.1.). Рис. 10.1. Уровневая модель прикладной графической системы Процесс преобразования информации при выполнении вывода может быть представлен состоящим из следующих этапов (рис. 10.2): 1. Модельные преобразования. Проблемно-ориентированный уровень из геометрических моделей отдельных объектов, задаваемых в собственных локальных системах координат, формирует описание совокупного объекта в некоторой единой (мировой) системе координат. Описание совокупного объекта подается в графическую систему. 2. Нормализующие преобразования. Графическая система переводит описание из мировой, вообще говоря, произвольной, системы координат в т.н. нормализованные координаты устройства, имеющие фиксированные пределы изменения координат, например, от 0.0 до 1.0. 3. Преобразования сегментов. Если графическая система предоставляет средства манипулирования отдельными подкартинами изображения (часто именуемыми сегментами), например, для независимого размещения отдельных самостоятельных частей изображения, то могут потребоваться такие преобразования. 4. Видовые преобразования. В случае 3D описания изображения и 2D устройства вывода необходимо выполнить проецирование изображения на заданную картинную плоскость. Наоборот, при 2D сцене и 3D устройстве вывода необходимо выполнить преобразование, связанное с размещением изображения. При выполнении этих преобразований, естественно, может потребоваться выполнение отсечения частей изображения. После этого этапа по сути дела готово описание изображения в некоторой аппаратно-независимой форме, пригодной для вывода на любое устройство. 5. Преобразование рабочей станции. Для выполнения вывода на конкретное устройство необходимо преобразование данных из аппаратно-независимой формы в координаты устройства. Процесс преобразования координатной информации при вводе от координатных устройств обратен вышеописанному преобразованию при выводе. Концептуальная модель переносимой графической системы показана на рис. 10.3. Штриховые линии на нем обозначают интерфейсы, при стандартизации которых может быть обеспечена переносимость. Верхний уровень стандартизации - IGES предназначен для обеспечения мобильности компонент САПР. Средний уровень стандартизации - уровень базового графического пакета (GKS) определяется выбором базовых функций системы. Этот интерфейс делает базовую графическую систему независимой от области применения. 3 Рис. 10.2. Схема преобразований координатной информации в графической системе Нижний уровень стандартизации - уровень связи с виртуальным графическим устройством (CGI) зависит от выбора примитивов ввода/вывода, являющихся абстракцией возможностей устройств. Этот интерфейс делает базовую графическую систему аппаратно-независимой. Рис. 10.3. Архитектура переносимой графической системы Независимость от вычислительных систем и языков программирования обеспечивается соответствующей дисциплиной программирования и взаимодействия с системами программирования. Деятельность ISO, IEC по стандартизации в машинной графике Главными организациями, формирующими международные стандарты в области информационной технологии, являются ISO (International Organization for Standartization) и IEC (International Electrotechnical Commission). В конце 1987 г. был сформирован первый совместный технический комитет (JTC1) ISO/IEC с целью стандартизации в области информационной технологии. Стандартизацией в машинной графике занимается 24-й подкомитет (ISO/IEC JTC1/SC24). В 1988 г. была создана постоянная советская часть этого подкомитета. Основными стандартами являются: 1. GKS (Graphical Kernel System) - набор базовых функций для 2D аппаратно-независимой машинной графики. 2. GKS-3D (Graphical Kernel System for 3 Dimensions) - расширение GKS для поддержки базовых функций в 3D. 4 3. PHIGS (Programmer's Hierarchical Interactive Graphics System) - набор базовых функций 3D графики аналогичный GKS-3D, но в отличие от GKS-3D, ориентированной на непосредственный вывод графических примитивов, группируемых в сегменты, графическая информация накапливается в иерархической структуре данных. В целом PHIGS ориентирован на приложения, требующие быстрой модификации графических данных, описывающих геометрию объектов. 4. Языковые интерфейсы (Language bindings) - представление функций и типов данных функциональных графических стандартов в стандартизованных языках программирования. 5. CGM (Computer Graphics Metafile) - аппаратно-независимый формат обмена графической информацией. Используется для передачи и запоминания информации, описывающей изображения. 6. CGI (Computer Graphics Interafce) - набор базовых элементов для управления и обмена данными между аппаратно-независимым и аппаратно-зависимым уровнями графической системы. 7. CGRM (Computer Graphics Reference Model) - модель стандартов в машинной графике, которая определяет концепции и взаимосоотношения применительно к будущим стандартам в машинной графике. 8. Регистрация - механизм регистрации стандартизуемых аспектов примитивов вывода, обобщенных примитивов, escape-функций (для доступа к аппаратным возможностям устройств) и других графических элементов. 9. Тестирование реализаций на соответствие графическим стандартам - основные цели этого проекта: специфицирование характеристик стандартизованных тестов, используемых для определения соответствия реализаций графическим стандартам, и выработка предписаний разработчикам функциональных стандартов относительно правил соответствия. В составе 24-го подкомитета имеется 5 рабочих групп (WG): WG1: Архитектура. Цель этой группы - развитие CGRM - модели стандартов машинной графики. WG2: Интерфейсы прикладных программ. Стандартизация функциональных спецификаций для интерфейсов прикладных программ. WG3: Метафайлы и интерфейсы с устройствами. Стандартизация обмена графической информацией, включая метафайл и интерфейс с устройствами. WG4: Языковые интерфейсы. Стандартизация языковых интерфейсов для функциональных стандартов машинной графики. WG5: Верификация, тестирование и регистрация. Разрабатывает методы и процедуры проверки соответствия и тестирования реализаций функциональных стандартов машинной графики и методов и процедур регистрации графических примитивов. Стандарты обмена данными. Метафайлы Стандарты обмена графическими данными можно условно разделить на следующие группы: - графические метафайлы, - проблемно-ориентированные протоколы, - растровые графические файлы. Графический метафайл представляет собой описание изображения в функциях виртуального графического устройства (в терминах примитивов и атрибутов). Он обеспечивает возможность запоминать графическую информацию единым образом, передавать ее между различными системами и интерпретировать для вывода на различные устройства. Таким образом, метафайл структура данных, которая содержит различные информационные записи: информацию об изображении, об устройстве, создавшем изображение, и об устройстве, на котором изображение должно быть восстановлено. Характеристики метафайла определяются его функциональными возможностями и способом кодирования информации. Метафайл обычно разрабатывается как составная часть какой-либо графической системы. При этом его функциональные возможности однозначно соответствуют возможностям этой системы. 5 Метафайл Windows представляет собой набор команд Windows GDI (интерфейс графических устройств graphics device interface набор функций, которые управляют выводом на монитор компьютера и другие устройства), которые участвуют в создании изображения. Эти команды описания векторов, информация о цвете, растровые и текстовые данные записываются в виде инструкций, используемых для создания рисунка в Windows. В зависимости от того, каким редактором будет прочитан файл, команды будут интерпретироваться по-разному: в векторном редакторе получим векторный рисунок, в растровом редакторе растровый рисунок. Способ кодирования выбирается по одному из следующих критериев: - минимальность объема кодированной информации, - минимальность времени для кодирования и декодирования, - наглядность (возможность чтения и редактирования). В зависимости от выбранного способа кодирования метафайл может использоваться в качестве средства хранения и передачи изображений, протокола взаимодействия отдельных подсистем, языка описания изображений. GKSM - GKS Metafile; CGM - Computer Graphics Metafile; NAPLPS - North American Presentation Level Protocol Syntax; HPG - Hewlett Packard Graphics Language; PostScript - Adobe Systems Language; WMF - Microsoft Windows MetaFile; GEM - GEM Draw File Format; PIC - Lotus Graphics File Format; SLD - AutoCad Slide File Format. Как видно, наименование большинства из них происходит от соответствующих графических стандартов. Например, CGM - стандарт ISO на графический метафайл. Функционально CGM соответствует стандарту CGI. В CGM предусмотрены три способа кодирования - символьное, двоичное и текстовое. Символьное кодирование наиболее компактно и предназначено для хранения и транспортировки информации. Двоичное кодирование требует минимальных усилий по кодированию/декодированию и предназначено для внутрисистемного использования. Текстовое кодирование наиболее наглядно и обеспечивает возможность визуального просмотра и редактирования графических файлов. PostScript - является языком описания страниц для электронных печатающих устройств, в первую очередь лазерных принтеров. Он обеспечивает возможность получения высококачественных документов на устройствах разного разрешения. PostScript обладает широкими возможностям для описания сложных изображений. Естественно, что вследствие наглядности PostScript, как и другие языки программирования, не оптимален в смысле минимальности кодирования информации. Поэтому его использование в качестве графического метафайла представляется нецелесообразным. Однако он становится незаменим при передаче тексто-графических документов, предназначенных для воспроизведения на печатающих устройствах с высоким разрешением. WMF, GEM, PIC, SLD и др. - это локальные стандарты на метафайл в рамках соответствующих программных систем. Прикладные или проблемно-ориентированные графические протоколы обеспечивают наиболее эффективный способ хранения и передачи графических данных в прикладных системах. Кодирование информации в этих протоколах производится без потери семантики и в наиболее сжатой форме, что обеспечивает минимальность объема хранящейся или передаваемой информации и допускает свободу в выборе различных способов графического представления данных. Сегодня в части стандартизации прикладных графических протоколов наиболее проработанной является область машиностроительных и электронных САПР. Здесь уже имеется ряд отраслевых и международных стандартов: 6 IGES - Initial Graphics Exchange Specification; SET - Standard d'Exchange et de Transfert; PDDI - Product Data Definition Interface; МАР - Manufacturing Automation Protocol; VDAFS - Verband der Deutschen Automobilindustrie-Flachen-Schnittstelle; PDES - Product Data Exchange Standard; STEP - Standard for Exchange Product Model Data; EDIF - Electronic Design Interchange Format; DXF - Autocad Data eXchange Format; В других отраслях существуют пока только локальные стандарты, используемые в рамках одной или нескольких организаций. Форматы графических файлов Растровые графические файлы стали активно применяться для хранения и транспортировки графической информации, в системах обработки данных и подготовки научно-технической документации, использующих персональные компьютеры, а также лазерные и струйные печатающие устройства. Основными характеристиками растровых файлов являются метод упаковки (сжатия) информации и тип поддерживаемой цветовой модели. Первоначально растровые файлы содержали только статические изображения. В последнее время появились проекты по стандартизации форматов динамических (анимационных) изображений. Сегодня используется уже большое количество разнообразных форматов растровых файлов. Некоторые из них (например, GIF, TIFF, РСХ) получили широкое распространение и поддержку, другие ждут общественного признания, третьи поддерживаются только их разработчиками. IF - Compuserve Graphics Interchange Format; TIFF - Aldus & Microsoft Tag Image File Format; РСХ - ZSoft РС Paintbrush format; RLE - Compuserve & Teletext Run Length Encoded; ВМР - Microsoft Windows BitMaP; LBM - Deluxe Paint format; PIC - Pictor/PC Paint format; МАС - MacPaint format; IMG - Gem Paint format; CUT - Dr. Halo Cut files; TGA - Targa format; JPEG - Joint Photographic Experts Group; MEPG - Moving Pictures Experts Group; FLC - AutodeskAnimator; AVI - Microsoft Animation Video. Каждый из этих форматов по-разному хранит графическую информацию, и каждый из них разрабатывался под конкретные цели. Формат GIF, например, был разработан для того, чтобы уместить как можно больше информации в ограниченном пространстве с целью уменьшить время получения файлов для пользователей сети CompuServe. Поддерживаемая цветовая модель индексированные цветные изображения. Использует метод кодирования LZW (Lempel, Ziv & Welch), дающий высокий коэффициент сжатия. Позволяет содержать в одном файле несколько изображений, не связанных между собой. Поддерживается многими разработчиками графических систем. TIFF разработан фирмами Aldus и Microsoft главным образом для настольных издательских систем. Распространенность этого формата обусловлена его гибкостью в части поддерживаемых способов кодирования и цветовых моделей изображения. TIFF поддерживает двухуровневые (bilevel), монохромные (gray-scale), индексированные цветные (paletted color) и полные цветные (full RGB) изображения. Для кодирования различных изображений или его частей могут применяться различные методы, в частности LZW. Кроме того, TIFF содержит метрические характеристики 7 изображения - размер, плотность и пр. Предусмотрена возможность записи в один файл нескольких изображений и/или копий одного изображения с различными метрическими характеристиками. Формат PCX изначально разрабатывался для хранения черно-белых графических файлов, создаваемых ранней версией программы Paintbrush для компьютеров IBM PC. Формат PCX совершенствовался с годами, и сейчас, как, в некотором роде, общественный стандарт, применим для цветных графических файлов, широко используется различными графическими программами. РСХ формат распространен на ПК и поддерживается множеством графических редакторов и настольных издательских систем. В РСХ используется попутное или потоковое сжатие на основе учета повторяющихся серий. Этот метод, по сравнению с LZW, дает более низкий коэффициент сжатия, однако время, требуемое для чтения/записи упакованного таким способом файла, практически равно времени чтения/записи исходного файла. Это дает преимущества при использовании РСХ формата в интерактивных системах с быстрой сменой изображений. JPEG - стандарт, ориентированный на цифровое описание (сжатие и кодирование) фотоизображений. Он предусматривает возможность частичной потери информации без визуального ухудшения качества изображения. MPEG - стандарт, предназначенный для кодирования динамических изображений и связанной с ними звуковой информации. ВМР, LBM, PIC, IMG, CUT, FLC и множество других форматов являются локальными стандартами на представление растровых изображений в рамках соответствующих программных систем. Что содержит растровый графический файл? Такой файл обычно содержит информацию двух видов: графическую и неграфическую. В графических данных указываются цвета пикселов, неграфические данные содержат другую информацию, необходимую для восстановления изображения, например его высоту и ширину. (Если изображение содержит 1 миллион пикселов, то, как графической программе узнать размеры: рисовать ли ей изображение 500 на 2000 или 1000 на 1000 пикселов?) неграфическая часть файла может также включать другую информацию, такую как номер версии или сведения об авторских правах. Все зависит от формата и от того кто (или какой программный пакет) создал этот файл. В растровых файлах используется обычно один из двух методов хранения данных о пикселах. В полноцветных изображениях пиксел может принимать любое из более чем 16 миллионов значений, поэтому и цвет пиксела хранится обычно как 24-разрядное значение - по 8 битов на красную, зеленую и синюю компоненты цвета. Если изображение содержит 1 миллион пикселов, то размер файла будет равен 3 миллионам байтов плюс длина неграфических данных. Если же изображение ограничено 256 или менее цветами, то цветовая информация обычно кодируется с использованием палитры. Вместо того чтобы хранить значение цвета пиксела, информация о пикселе указывает на строку в палитре, а она, в свою очередь, содержит цвет. С уменьшением количества битов, требуемых для представления цвета пиксела, уменьшается размер файла (а это во все времена ценное приобретение, поскольку пространство памяти не бывает бесплатным). В качестве примера возьмем изображение из миллиона пикселов, содержащее 256 различных цветов. Кодирование цвета каждого пиксела 24-битным значением приводит к расточительной избыточности, потому что некоторые (а возможно и все) из 256-ти цветов повторяются неоднократно. Для хранения используемых цветов лучше выделить в файле 768 байтов под цветовую палитру: 256 полей по 24 бита, каждое поле содержит один из цветов, встречающихся в изображении. Тогда под значение цвета пиксела можно отвести 8 битов, то есть целое число в диапазоне от 0 до 255, указывающее номер цвета в палитре. Теперь для графической части файла достаточно 1.000.768 байтов, против прежних 3.000.000 байтов, которые требуются для хранения этого изображения без использования палитры. И даже с учетом дополнительных байтов из неграфической части файла, мы все-таки получаем уменьшение размера файла почти на две трети. В большинстве форматов графических файлов пикселы располагаются построчно. Если размеры изображения 1000 на 1000 пикселов, и каждый пиксел представляется 8-ю битами, то первые 1000 байтов графической части файла содержат цвета пикселов из верхней строки 8 изображения (слева направо), следующие 1000 байтов содержат цвета пикселов второй строки и так далее. Однако в некоторых форматах используется иной порядок строк. Например, BMPфайлы начинаются с нижней строки и заканчиваются верхней строкой изображения. В каждом формате графические и неграфические данные структурируются по-своему. Рассмотренные графические стандарты отражают процесс развития машинной графики от векторных систем к системам генерации реалистичных изображений. Следующее поколение стандартов будет связано уже с развитием систем мультимедиа, гипермедиа и виртуальной реальности, в которых графическая информация объединяется с любой другой. 9