Прикладная графическая программа. Прикладная программа передает данные и сформированные графические команды в графическую систему (рис. 1) [14]. Рис. Схема взаимодействия прикладной программы и графической системы

Вид материалаПрограмма

Содержание


1.1. Виды графических систем
1.2. Форматы графических файлов
Метод сжатия RLE (Run-Length Encoding)
Метод сжатия LZW
Метод сжатия JPEG
Фрактальное сжатие
1.3. Графические библиотеки
2. Системы цветов в компьютерной графике
2.1. Система аддитивных цветов
XYZ. В этой системе в качестве базовых были приняты три цвета X
2.2. Система субтрактивных цветов
2.3. Система «Тон – Насыщенность – Яркость»
3. Базовые растровые алгоритмы
Простейший пошаговый алгоритм
3.2. Устранение ступенчатого эффекта
3.3. Заполнение области (закрашивание)
3.4. Алгоритмы закрашивания, использующие математическое описание контура
4. Алгоритмы отсечения
5. Аффиные преобразования
5.1. Аффинные преобразования на плоскости
...
Полное содержание
Подобный материал:
  1   2   3   4   5

1. ОСНОВНЫЕ ЗАДАЧИ КОМПЬЮТЕРНОЙ ГРАФИКИ. ФОРМИРОВАНИЕ ИЗОБРАЖЕНИЯ


При обработке на компьютере информации, связанной с изображением, принято выделять несколько основных направлений: распознавание образов (COMPUTER VISION), основной задачей которого является получение описаний изображенных объектов, обработка изображений (IMAGE PROCESSING) и компьютерная графика (COMPUTER GRAPHICS). Ранее эти направления представляли собой совершенно независимые дисциплины. Сейчас области их пересечения становятся все шире, а их границы – все более условными [9, 14, 16, 17].

Задачей компьютерной (машинной) графики является визуализация, (т.е. создание изображения), проводимая на основе информации неизобразительного характера. Под термином «изображение» здесь понимается множество точек, линий и т.п., выводимых на графическое устройство (монитор, принтер и др.).

Необходимые для визуализации исходные данные, содержащие описание изображения, хранятся на компьютере в виде графических файлов. Внедрением и извлечением информации из графических файлов управляет прикладная графическая программа. Прикладная программа передает данные и сформированные графические команды в графическую систему (рис. 1.1) [14].


Рис. 1.1. Схема взаимодействия прикладной программы и графической системы.


Графическая система снабжена пакетом подпрограмм вывода, управляющих конкретным устройством вывода (монитором, принтером и пр.) и обеспечивающих визуализацию изображения этим устройством.

Большинство современных графических программ обеспечивают интерактивность компьютерной графики, т.е. дают пользователю возможность динамически управлять содержанием создаваемого на мониторе изображения с помощью устройств ввода (клавиатуры, мыши, джойстика, и др.). Ввод информации пользователем осуществляется с помощью подпрограмм ввода графической системы, которая передает вводимые данные в прикладную графическую программу.

1.1. Виды графических систем



На графических устройствах вывода изображение может создаваться двумя путями: путем произвольного сканирования или путем растрового сканирования [10, 14].

В системах с произвольным (векторным) сканированием изображение появляется на экране (или бумаге) в произвольном порядке путем рисования прямых или кривых линий (векторов). Изображение рассматривается как совокупность простых графических объектов (примитивов) – прямых, дуг, окружностей, прямоугольников и т.д.

Векторная визуализация используется в векторных дисплеях и таких печатающих устройствах, как перьевые графопостроители (плоттеры). Типичная последовательность действий при векторной визуализации выглядит так: перевести перо в начальную точку (для дисплея – отклонить пучок электронов) – опустить перо (увеличить яркость луча) – переместить перо в конечную точку – поднять перо (уменьшить яркость луча). Качество визуализации для векторных устройств зависит от точности вывода и номенклатуры базовых графических примитивов.

Недостатком векторного сканирования являются проблемы, возникающие при необходимости сплошного заполнения фигур.

В графических системах с растровым сканированием изображение представляется в виде совокупности отдельных точек – пикселей. Матрица пикселей образует растр. В зависимости от расположения пикселей в пространстве различают прямоугольный, квадратный, гексагональный и иные типы растра.

Основными характеристиками растра являются:
  • разрешающая способность – характеризует расстояние между соседними пикселями, измеряется в количестве пикселей на единицу длины (dpi – dots per inch – количество пикселей на дюйм);
  • размер растра – количество пикселей по горизонтали и вертикали;
  • форма пикселей – прямоугольные, квадратные, круглые;
  • количество цветов (глубина) – количество бит, используемых для хранения информации о цвете одного пикселя.

К устройствам с растровым сканированием относятся мониторы, телевизоры, принтеры.

Схема организации растрового сканирования зависит от конкретного устройства вывода. В общем случае, сначала появляются все части рисунка, находящиеся в первой строке (слева – направо), затем – все части рисунка, находящиеся во второй строке, и т.д.

В мониторах применяются построчная и чересстрочная развертки (рис. 1.2).




Рис. 1.2. Схемы построчной (а) и чересстрочной (б) разверток.

При построчной развертке сканирование начинается с левого верхнего угла экрана. Во время перемещения луча слева направо его интенсивность модулируется для создания различных уровней тона. При достижении правого края растра луч выключается и переносится левому краю, смещаясь при этом на одну единицу растра вниз. После того, как будут отработаны все строки растра, луч переводится в верхний левый угол. Прямой ход луча по горизонтали осуществляется сигналом строчной (горизонтальной) развертки, а по вертикали – кадровой (вертикальной).

Чересстрочная развертка чаще применяется в телевизорах. Сначала воспроизводятся только нечетные строки растра (нечетный полукадр), потом – четные (четный полукадр).

Большинство растровых графических устройств используют от 256 до 1024 строки, телевизионное вещание в США – 525 строк.

Недостатком растровых устройств вывода является дискретность изображения, состоящего из отдельных точек.

В настоящее время доминирует растровый способ визуализации. Это связано с большой распространенностью растровых мониторов и печатающих устройств (принтеров).


1.2. Форматы графических файлов


Формат графического файла – способ представления и расположения графических данных на внешнем носителе.

Как и в случае с аппаратной визуализацией, различают векторные и растровые форматы.

Файлы векторного формата содержат описание изображения в виде набора команд, необходимых для построения простейших графических объектов (векторных примитивов), составляющих изображение. Информация о цвете объекта, толщине линий и т.п. хранится как часть его описания. Хранимые в векторном формате описания изображений занимают относительно небольшой объем памяти.

Недостаток векторного формата – не позволяет получать описания изображений фотографического качества.

Для создания и редактирования векторных изображений используются специальные векторные прикладные графические программы (графические редакторы). К ним относятся CorelDRAW!, AutoCAD и др. Так как основным понятием векторной графики является объект (векторный примитив), то векторные графические редакторы позволяют пользователю проводить над объектами различные операции – создания, удаления, упорядочивания, пересечения и т.п. Одновременно с процессом рисования графический редактор формирует векторные команды, соответствующие объектам, из которых строится изображение.

Примером векторного формата графических файлов является формат AutoCAD DXF (Drawing Interchange Format – формат обмена чертежами), используемый прикладными программами AutoCAD, CorelDRAW! и многими программами САПР.

В файлах растровых форматов содержатся данные о размере и разрешении растра, битовой глубине, а также информация о цвете каждого пикселя изображения.

Для кодирования 16 цветов используется 4 бита на один пиксель изображения, для кодирования 256 цветов – 8 бит. С помощью 24 бит кодируют 224 цветов (True Color). Отсюда вытекает основной недостаток растрового формата – для хранения описания изображения высокого качества (с большим разрешением и битовой глубиной) требуется большой памяти. В тоже время, растровый формат, в отличие от векторного, позволяет получать описания изображений фотографического качества.

Решением проблемы большого объема растровых является сжатие, т.е. уменьшение размера файла за счет изменения способа организации данных.

Существуют следующие методы сжатия [5, 8].

1) С помощью программ-архиваторов (ZIP, ARJ, RAR). Сжатие проводится также как и для неграфических файлов. Сжатый таким образом файл не может использоваться ни одной программой до того как будет разархивирован.

2) С помощью алгоритма, включенного в формат файла (методы RLE, LZW, JPEG, фрактальный и др.).

Метод сжатия RLE (Run-Length Encoding) – проводится замена последовательности повторяющихся пикселей парой величин: цветом пикселя и количеством его повторений. Наиболее эффективен для изображений, содержащих большие области однотонной закраски. Используется в форматах BMP, TIFF, PCX.

Метод сжатия LZW (назван по фамилиям разработчиков Lempel, Ziv, Welch) основан на поиске повторяющихся узоров в изображении. Эффективен для изображений, насыщенных узорами. Используется в форматах GIF, TIFF.


Метод сжатия JPEG (Joint Photographic Experts Group) сильно уменьшает размер файла за счет потерь в качестве. Основан на том, что человеческий глаз более чувствителен к изменению яркости, чем к изменению цвета. При сжатии файла запоминается больше информации о разнице в яркости соседних пикселей и меньше – о разнице между их цветами. Используется для изображений фотографического качества. Степень сжатия файла и, следовательно, степень потери информации может контролироваться пользователем. Используется в форматах JPEG, TIFF и др.

Фрактальное сжатие – переводит изображение в совокупность математических данных, описывающих фрактальные, т.е. похожие, повторяющиеся, свойства изображения [10, 15].

С растровыми файлами работают графические редакторы Paint, Adobe PhotoShop и др. Так как основное понятие растровой графики – пиксель, то большинство инструментов и команд этих редакторов позволяют пользователю изменять яркость и цветовые оттенки отдельных пикселей, а также служат для выделения отдельных областей (наборов пикселей).

Геометрические преобразования растровых рисунков зачастую приводят к потере качества изображения. Графические редакторы производят изменение размеров растрового изображения одним из двух способов [5]:
  • одинаково изменяя размер всех пикселей рисунка – при увеличении рисунка растет число видеопикселей, необходимых для визуализации одного пикселя рисунка, и, следовательно, становится более заметной «ступенчатость» изображения;
  • проводя выборку пикселей из изображения путем удаления или введения новых пикселей, при этом цвет создаваемых пикселей определяется цветом исходного пикселя и его окружения; возможно исчезновение из рисунка отдельных деталей, уменьшение резкости, появление «муара».

Наиболее удобно, когда способ описания графического изображения (т.е. формат графического файла) соответствует способу аппаратной визуализации. В противном случае необходима конвертация. Векторизация (трассировка) – преобразование описания изображения из растрового в векторный формат. Обратное преобразование носит название растеризации (растрирования). Растрирование выполняется, например, когда хранимое в векторном формате изображение необходимо визуализировать на растровом устройстве (мониторе).

Помимо растрового и векторного форматов графических файлов существует еще метафайловый формат [8]. Метафайлы могут хранить и растровые и векторные данные. Простейшие метафайлы похожи на файлы векторного формата, но могут включать и растровое представление изображения. Метафайлы часто используются для транспортировки растровых и векторных данных между аппаратными платформами. Примерами метафайловых форматов являются WMF (Microsoft Windows Metafile), WPG (WordPerfect Graphics Metafile), CGM (Computer Graphics Metafile). На метафайлы распространяются все преимущества и недостатки растрового и векторного форматов, своеобразным «гибридом» которых они являются. Однако размер метафайла в некоторых случаях может оказаться меньше, чем размер растровой версии того же изображения.

Файлы трехмерной графики хранят описание формы и цвета объемных моделей воображаемых или реальных объектов [8]. Объемные модели обычно конструируются из многоугольников и гладких поверхностей, объединенных описаниями соответствующих элементов (цвета, текстуры, отражающих свойств поверхности), с помощью которых программа визуализации реконструирует объект. Модели помещаются в сцены с источниками света и камерами, поэтому такие файлы часто называют файлами описания сцены.

Трехмерные данные сейчас поддерживаются и рядом форматов, которые раньше служили только для хранения векторных данных (DFX и др.). Такие форматы иногда называют расширенными векторными форматами.

Существует и трехмерный растр, состоящий из объемных элементов – вокселей [10]. Воксел (voxel – volume element) является аналогом пикселя в двумерном растре. Каждый воксел имеет свой цвет, а , кроме того, прозрачность. Полная прозрачность воксела означает пустоту соответствующей точки объема. Трехмерный растр используется в компьютерных системах для медицины (например, для хранения данных томмографии), геологии и т.п. Достоинства и недостатки такие же, как и у двумерного растра. Для визуализации трехмерного растра на экране монитора используют срезы.

Форматы анимации появились сравнительно недавно. Иллюзия движения объектов на экране монитора создается за счет быстрой смены изображений, в каждом из которых незначительно изменяются позиции объектов анимации (FLI, DVM Movie и др.). Анимационные форматы хранят тем или иным способом только неподвижные изображения (видеоинформация не поддерживается):
  • хранят все изображения целиком, отображая их одно за другим;
  • хранят одно изображение и несколько цветовых таблиц для него; после загрузки новой цветовой таблицы цвет изображения меняется и создается иллюзия движения объекта;
  • хранят только различия между каждой парой последовательно отображаемых изображений (называемых фреймами); изменяют только те пиксели, которые меняются при отображении данного фрейма.

В настоящее время все большее значение приобретают мультимедиа-форматы, предназначенные для хранения данных различных типов в одном файле (форматы QuickTime, MPEG, Intel DVI, Microsoft RIFF и др.). Позволяют объединять графическую, звуковую и видеоинформацию.


1.3. Графические библиотеки


Интерфейс прикладного программирования API (Application Programming Interface) – это интерфейс между прикладной программой и графической системой, содержащий библиотеки функций, которые прикладная программа использует для связи с аппаратными средствами [10, 17, 20]. Функции для работы с графикой образуют графические библиотеки.

Применение API обеспечивает аппаратную независимость прикладных программ. Прикладной программист, работающий с API, избавлен от необходимости детально вникать в программную реализацию функций графической библиотеки и в подробности работы аппаратуры.

API делятся на стандартные (универсальные), поддерживающие широкий спектр устройств, и специализированные (для конкретного устройства или семейства устройств).

Графические функции из состава API Windows объединены в отдельную группу – подсистему GDI (Graphics Device Interface).

Наиболее часто при работе с трехмерной графикой в Windows используются следующие API – OpenGL и Direct3D.

Достоинством OpenGL является его широкая распространенность. Стандарт OpenGL разработан в 1992 г. В операционной системе Windows OpenGL поддерживается начиная с версии OSR 2.

OpenGL – это аппаратно-независимый интерфейс, поэтому он не включает в себя специальных команд по работе с окнами или ввода информации от пользователя. Эти функции отданы операционной системе.

Для работы OpenGL в Windows используется понятие контекста отображения (rendering context), который связывает OpenGL с оконной системой Windows. Контекст отображения указывает плоскость отображения, на которую делается графический вывод (окно программы на экране, страница принтера и т.п.). Чтобы начать работать с OpenGL, нужно создать хотя бы один контекст и сделать его текущим. Вызов необходимого драйвера устройства будет выполнять сама операционная система.

В состав OpenGL, как и других трехмерных графических API, входят функции, позволяющие описывать объекты, свойства материалов объектов, камеры, источники света [10, 12, 13, 20].

Существенный недостаток OpenGL – отсутствие встроенных объектно-ориентированных средств для описания сложных сцен. Существует надстройка для OpenGL – библиотека классов Open Inventor, которая является объектно-ориентированной API. Open Inventor позволяет пользователю сохранять описание сцены в виде текстового файла. Формат базы данных Open Inventor послужил основой для языка моделирования виртуальной реальности VRML (Virtual Reality Modeling Language).

Быстродействие прикладных графических программ, использующих OpenGL, достигается при аппаратной реализации базовых функций OpenGL. В настоящее время многие видеоадаптеры содержат специальный графический процессор (или несколько) для поддержки функций графики (преобразований координат, расчетов освещения, наложения текстур, отсечения и др.). Для повышения быстродействия применяется конвейерная архитектура ГС.


2. СИСТЕМЫ ЦВЕТОВ В КОМПЬЮТЕРНОЙ ГРАФИКЕ


Свет – это электромагнитное излучение. Лучи света, попадая на сетчатку глаза, производят ощущение цвета. Свет может попадать к глазу непосредственно от источника излучения (излучаемый свет), сохраняя все цвета, из которых он был создан. При отражении от какого-либо предмета часть световых волн может быть поглощена его поверхностью, а часть - отразиться (отраженный свет).

Для описания цветовых оттенков, которые могут быть воспроизведены на экране компьютера или при печати, разработаны специальные цветовые модели (системы цветов). Так как цвет может получиться и в процессе излучения, и в процессе отражения, существуют два противоположных метода его описания – системы аддитивных и субтрактивных цветов [5, 14, 17, 20].