Область применения компьютерной графики

advertisement
Область применения компьютерной графики
Компьютерной графики - это специальная область информатики, которая
изучает методы и средства создания и обработки изображений с помощью
программно-аппаратных вычислительных комплексов. Она охватывает все виды и
формы представления изображений, доступных для восприятия человеком либо на
экране монитора, либо в виде копии на внешнем носителе. Распространение
компьютерной графики началось с полиграфии, но вскоре она получила широкое
распространение во всех областях человеческой деятельности. Компьютерную
графику можно разделить на несколько направлений:
- полиграфия
- двухмерная графика
- web-дизайн
- мультимедиа
- 3D-графика и компьютерная анимация
- видеомонтаж
- САПР и деловая графика
Для каждой сферы применения создано свое программное обеспечение, включающее
разные специальные программы.
Графическая система, графическое ядро
Графические системы служат для создания, поиска, хранения, модификации и
вывода графических данных. Графические системы могут быть пассивными и
интерактивными. Пассивные системы обеспечивают вывод графических изображений,
при этом человек не может прямо воздействовать на графические преобразования.
Интерактивные системы дают возможность человеку динамически управлять
изображением в режиме диалога. Графические системы применяются при синтезе
изображения, анализе изображения и обработке изображения. При синтезе
изображения из описания объекта, который составил пользователь, получается
геометрическая модель объекта с последующим отображением на экране. Анализ
изображения выполняет обратную задачу, т.е. из имеющегося графического
изображения получают формальное описание объекта.
Функции графических систем:
- ввод данных;
- вывод графических изображений;
- обработка запросов пользователей;
- поиск и хранение данных;
- выполнение преобразований графической информации.
Основное назначение графической системы состоит в преобразовании двух или
трехмерной модели объекта, который формируется прикладной программой, в
графические команды и данные, которые либо передаются на устройства, либо
запоминаются в той или иной графической структуре данных.
Графическая система ПК состоит из аппаратной и программной частей.
Аппаратная часть включает видеоадаптер, монитор и интерфейсы, которые
обслуживают графическую систему: один между адаптером и северным мостом,
второй – между видеоадаптером и устройством отображения. Программная часть
обеспечивает поддержку интерфейсов видеоадаптера, монитора и приложений на
1
уровне BIOS, ОС, драйверов и специализированных прикладных языков
программирования (API). Графическая система используется всеми прикладными
программами. Приложение использует функции видеоадаптера при посредничестве
драйвера, который интерпретирует команды для графического процессора. В
соответствии с полученными командами видеоадаптер выводит на монитор
изображение.
Графическая система решает задачи:
- 2D графики. Это задачи интерфейса GUI (Graphic User Interface). Графическим
ядром Windows являются библиотеки GDI и новая версия GDI+.
- 3D графики. 3D графика представляет собой геометрические модели объектов.
Эти модели, как правило, создаются и обрабатываются специальными программами,
которые выполняются на ЦП и хранятся в ОП ПК. Графическая система используется
в основном для вывода трехмерных сцен. Современные видеоадаптеры могут
самостоятельно осуществлять создание и обработку геометрических моделей.
- задачи вывода и обработки видеографики.
Графической подсистемой часто считается часть операционной системы,
которая обеспечивает решение задач компьютерной графики. В нее входят
программные средства ввода, обработки и отображения графической информации, а
также преобразование данных в графическую форму. Например, пакет OpenGL для
Windows. Графическая подсистема состоит из ядра и обширной библиотеки
графических функций graphics.lib (ее нужно подключать при компоновке
программного модуля).
Графический примитив – это простейший геометрический объект, создаваемый
и обрабатываемый как единое целое и отображаемый на устройстве вывода.
Существуют графические примитивы двухмерной и трехмерной графики, каждый
примитив имеет определенный набор атрибутов. В качестве примеров примитивов
можно привести точку, линию, прямоугольник, овал, пирамиду, куб и т. д. В качестве
атрибутов – цвет, толщину и форму линии. Основное значение графических
примитивов - обеспечить наличие программных средств для рисования всевозможных
геометрических объектов. Условно можно разбить все графические примитивы по
типу рисуемых ими графических объектов на две группы: контурные и площадные.
Функции первой группы рисуют всевозможные контурные линии. Ко второй группе
относятся функции, предназначенные для рисования геометрических фигур с
закрашиванием ограничиваемых ими областей.
Графическое ядро является частью графической системы. Графическое ядро
имеет собственную систему команд и набор элементарных функций работы с
графикой. Графическое ядро реализует определенный набор графических примитивов.
Основной функцией графического ядра является поддержка вывода графических
примитивов.
Создание компьютерного изображения
Независимо от источника получения компьютерного изображения его свойства
характеризуются набором основных параметров, включающих размер изображения,
разрешение, формат, тип цветовой модели и палитру (цветовое разрешение).
Процедура создания цифрового изображения обычно включает три этапа:
2
- ввод или получение изображения
- обработку изображения
- вывод изображения
На этапе ввода или получения изображения цифровой аппарат или сканер
преобразуют (оцифровывают) световую информацию в численные значения, которые
сохраняются в файле изображения. В фазе обработки изображения с помощью
специального программного обеспечения (графического редактора) происходит
обработка числовой информацией об изображении, сохраненной на предыдущем этапе
в виде файла. Основной задачей данного этапа является выполнение
последовательности шагов для улучшения введенного в компьютер оригинального
изображения путем управления и настройки яркости, контраста, цветности, резкости,
кадрирования и других. При выводе изображения реализуется обратная процедура,
связанная с преобразованием чисел, хранящихся в файле изображения, в готовое
изображение аналогичное тому, которое было введено в компьютер на первом этапе.
Каждый из перечисленных этапов работы с изображением характеризуется своим
типом разрешения. Понятие разрешения включает в себя пространственное
разрешение и яркостное разрешение.
Пространственное
разрешение (или просто разрешение) характеризует
количество мельчайших элементов информации, из которых состоит изображение.
Яркостное разрешение характеризует количество уровней яркости, которые
может принимать отдельный пиксель. Чем выше яркостное разрешение, тем большее
число уровней яркости будет содержать файл изображения. Таким образом,
разрешение – это совокупность размера изображения в пикселях и глубины
цвета.
Основные сведения о графическом режиме ПК
В самых общих чертах работа с дисплеем ПК в графическом режиме может быть
представлена следующим образом. Экран дисплейного монитора представляется, как
набор отдельных точек – пикселей, образующий прямоугольный растр. Число
пикселей определяет разрешающую способность графической системы и обычно
отражается парой чисел, первое из которых показывает количество пикселей в строке,
а второе - число строк. Каждому пикселю экрана ставится в соответствие
фиксированное количество битов (атрибут пикселя) в некоторой области адресного
пространства центрального микропроцессора ПК. Атрибут пиксела (т.е. существенная
характеристика пиксела) – это определенное число битов в адресном пространстве ПК.
Эта адресное пространство называется видеопамятью, как правило, оно является
частью дисплейного адаптера (видеоадаптера) - специального устройства,
управляющего работой монитора. Видеоадаптер, в частности, осуществляет
циклическое воспроизведение содержимого видеопамяти на экране монитора. Причем
изображение каждого пикселя определяется текущим значение его атрибута. Такой
подход получил название битовой карты - bit-mapped graphics. Программе,
выполняющейся на ПК в графическом режиме, доступны для чтения/записи все
пиксели видеопамяти.
Совокупность экранного и цветового разрешения графического режима
определяет количество видеопамяти, необходимое для его реализации. В ряде случаев
возможно одновременное существование в видеопамяти двух или более областей
одинаковой структуры, каждая из которых содержит атрибуты всех пикселей экрана.
3
Такие области называются страницами. В данный момент времени любая из страниц
может отображаться видеоадаптером на дисплее, занимая при этом весь экран.
Наличие страниц позволяет программе мгновенно менять изображение на экране,
просто переключаясь с одной страницы на другую. В частности, это дает возможность
проводить всю “черновую работу” по подготовке графического изображения на
неотображаемой в настоящий момент времени странице, избегая появления на экране
побочных графических эффектов.
Если каждый пиксель в графическом режиме представляется n битами, то в
таком режиме имеется возможность одновременно представить на экране
N_pallette=2**n оттенков цвета (палитра режима).
Графический конвейер
Графическая обработка основывается на понятии конвейера, при которой
графические данные проходят последовательно несколько этапов обработки выходные данные одного этапа сразу передаются на вход следующего. Рассмотрим
универсальный графический конвейер и выделим в нем 5 этапов (G, T, X, R, D).
Графическая обработка реализуется аппаратно (видеокарта) и программно, но в
любом случае она состоит из пяти этапов.
Графические данные проходят
1) Этап генерации (G) - создание и модификация прикладных структур данных.
2) Этап обхода (T) прикладных структур данных и получение соответствующих
графических данных.
3) Этап преобразования (X
На этапе геометрической обработки графического конвейера выполняется
преобразование координат (применение мировой, видовой и проекционной матриц)
вершины, перевод вершины в пространство отсечения, расчет освещения, применение
материалов, определение цвета каждой вершины с учетом всех источников света и
генерация текстурных координат.
После выполнения этих операций наступает компоновка примитива. В этой
части конвейера вершины группируются в треугольники и подаются в растеризатор.
Растеризация (растрирование) – это процесс преобразования изображений
векторной графики в растровое изображение. Текстура – это дву или трехмерное
изображение, которое накладывается на части объекта.
4) На этапе растеризации (R) Растеризатор делит треугольник на фрагменты
(пиксели), для которых рассчитываются текстурные координаты и цвет. Затем для
каждого фрагмента происходит выполнение следующих операций: проверка
принадлежности пикселя, наложение текстур (заданные для фрагмента координаты
текстуры определяют цвет из элементов текстурного изображения — текселей,
значение этого цвета комбинируется с цветом фрагмента), применение эффектов и
т.д. После обработки всех этих методов полученный фрагмент помещается в буфер
кадра, который впоследствии выводиться на экран. В каждую из этих частей
графического процессора (геометрический блок и растеризатор) можно вставить свой
определенный шейдер. Шейдер — это специальная программа, которая
использует определенные программируемые регистры видеокарты для создания
различных графических эффектов. Ше́йдер— это программа, используемая в
трёхмерной графике для определения окончательных параметров объекта или
изображения. Это может включать в себя произвольной сложности описание
4
поглощения и рассеяния света, наложения текстуры, отражение и преломление,
затенение, смещение поверхности и эффекты пост-обработки.
Существует два различных шейдера: вершинный шейдер (vertex shader) и
пиксельный шейдер (pixel shader).
5) На этапе вывода (D) происходит сканирование буфера кадра и вывод
изображения на экран дисплея.
Аппаратная реализация конвейера:
В GPU обычно имеется нескольких блоков обработки информации, а именно: блок
обработки 2D графики, блок обработки 3D графики, в свою очередь, обычно
разделяющийся на геометрическое ядро (плюс кэш вершин) и блок растеризации
(плюс кэш текстур) и др.
В упрощенной модели графического конвейера особое значение имеет
обработка геометрии и обработка фрагментов.
Программная реализация конвейера:
Два первых этапа (Этап генерации (G) - создание и модификация прикладных
структур данных и Этап обхода (T) ) сильно зависят от приложения, от графического
интерфейса пользователя и от способа организации самой прикладной программы (эти
этапы могут быть совмещены). Поэтому графические системы общего назначения
поддерживают главным образом последние три этапа, которые собственно и
реализуют рендеринг.
Реальной и широко распространенной реализацией этапов рендеринга для
универсального конвейера стал программный интерфейс для 3D графики OpenGL.
Открытая Графическая Библиотека (OpenGL) появилась в середине 90-х. В настоящее
время многие функции этой библиотеки реализованы аппаратно.
Поскольку OpenGL ориентирован исключительно на рендеринг, он может быть
встроен в любую оконную систему или вовсе использоваться без нее.
В OpenGL есть генераторы преобразования абстрактных данных в геометрическую
форму, которую можно визуализировать. Генератор совершает преобразование
абстрактных данных в геометрическую форму, которую уже можно визуализировать.
Для примера, числовые данные могут быть превращены в цвет, изображающий модуль
напряжения.
Входом для OpenGL служат данные, описывающие вершины геометрических
объектов и их свойства, а выходом - изображение, сформированное конвейером
обработки в буфере кадра. В конвейере OpenGL поддерживаются такие графические
операции, которые могут быть реализованы как при наличии специализированной
аппаратуры, так и без нее.
Вершины и примитивы
Вершина является атомарным графическим примитивом OpenGL и определяет
точку, конец отрезка, угол многоугольника и т.д. Все остальные примитивы
формируются с помощью задания вершин, входящих в данный примитив. Например,
отрезок определяется двумя вершинами, являющимися концами отрезка.
С каждой вершиной ассоциируются ее атрибуты. В число основных атрибутов входят
положение вершины в пространстве, цвет вершины и вектор нормали
5
Положение вершины определяются заданием ее координат в двух-, трех-, или
четырехмерном пространстве (однородные координаты).
Реализации OpenGL показывают хорошую производительность на компьютерах
самого разного класса - от ПК до графических суперкомпьютеров.
OpenGL не занимается выводом на экран - результирующее изображение помещается
в буфер кадра, а управление дисплеем возлагается на оконную систему. Поэтому
OpenGL работает, например, в среде X Window System, NT, Windows 95 и OS/2.
Для подключения к новой среде требуется создание интерфейса с оконной системой.
Эти свойства сделали OpenGL стандартом в технологии открытых систем.
Представление графических данных
Форматы графических данных
Способ организации информации в файл называется форматом.
В компьютерной графике применяют по меньшей мере три десятка форматов
файлов для хранения изображений. Но лишь часть из них стала стандартом «дефакто» и применяется в подавляющем большинстве программ. Как правило,
несовместимые форматы имеют файлы растровых, векторных, трехмерных
изображений, хотя существуют форматы, позволяющие хранить данные разных
классов. Многие приложения ориентированы на собственные «специфические»
форматы, перенос их файлов в другие программы вынуждает использовать
специальные фильтры или экспортировать изображения в «стандартный» формат.
Графические форматы различаются по
- виду хранимых данных (растровая, векторная и смешанная формы),
- по допустимому объему данных
- параметрам изображения
- хранению палитры
- методике сжатия данных - по способам организации файла (текстовый,
двоичный)
- структуре файла (с последовательной или ссылочной (индекснопоследовательной) структурой) и т.д.
Растровый файл состоит из точек, число которых определяется разрешением,
измеряемым обычно в точках на дюйм (dpi) или на сантиметр (dpc). Очень важным
фактором, влияющим, с одной стороны, на качество вывода изображения, а с другой на размер файла, является глубина цвета, т.е. число разрядов, отводимых для хранения
информации о трех составляющих (если это цветная картинка) или одной
составляющей (для полутонового не цветного изображения). Например, при
использовании модели RGB глубина 24 разряда на точку означает, что на каждый цвет
(красный, синий, зеленый) отводится по 8 разрядов и поэтому в таком файле может
храниться информация о 2^24 = 16,777,216 цветах (Обычно в этом случае говорят о 16
млн. цветов). Очевидно, что даже файлы с низким разрешением содержат в себе
тысячи или десятки тысяч точек. Так, растровая картинка размером 1024х768 точек и с
256 цветами занимает 768 Кбайт. По сравнению с векторными форматами растровые
устроены проще. Это прямоугольная таблица или матрица bitmap, в каждой ячейке
или клетке которой установлен пиксель.
Считывание информации из файла растрового изображения сводится к
следующим действиям:
6
1 - Определяется размер изображения в виде произведения пикселей по
горизонтали и вертикали;
2 - Определяется размер пикселя;
3 - Определяется битовая глубина, она характеризует информационную емкость
пикселя в битах или цветовую разрешающую способность (количество цветов).
В цветовом RGB изображении каждый пиксель кодируется 24-битовым числом,
поэтому в каждой ячейке битовой матрицы хранится число из 24 нулей и единиц.
Векторный способ записи графических данных применяется в системах
автоматического проектирования (CAD) и в графических пакетах. В этом случае
изображение состоит из простейших элементов (линия, ломаная, кривая Безье, эллипс,
прямоугольник и т.д.), для каждого из которых определен ряд атрибутов (например,
для замкнутого многоугольника - координаты угловых точек, толщина и цвет
контурной линии, тип и цвета заливки и т.д.). Записывается также место объектов на
странице и расположение их друг относительно друга (какой из них "лежит" выше, а
какой ниже).
У каждого метода есть свои преимущества. Растровый позволяет передавать
тонкие, едва уловимые детали образов, векторный же лучше всего применять, если
оригинал имеет отчетливые геометрические очертания. Векторные файла меньше по
объему, зато растровые быстрее вырисовываются на экране дисплея, так как для
вывода векторного изображения процессору необходимо произвести множество
математических операций. С другой стороны, векторные файлы гораздо проще
редактировать.
Существует множество программ-трансляторов, переводящих данные из
векторного формата в растровый. Как правило, такая задача решается довольно
просто, чего нельзя сказать об обратной операции - преобразовании растрового файла
в векторный и даже о переводе одного векторного файла в другой. Векторные
алгоритмы записи используют уникальные для каждой фирмы-поставщика
математические модели, описывающие элементы изображения
Основные критерии выбора формата – это совместимость программ и
компактность записи.
Растровые форматы
В заголовке растрового формата располагаются:
1.Идентификатор формата (первые несколько байт). Например, в формате BMP
это - 2 символа 'BM' (BitMap), в формате GIF - GIF87a.
2.Тип данных (RGB или палитра, тип упаковки, кол-во битов на пиксель)
3.Размеры изображения
4.Дополнительные параметры (разрешение, строка описания и т.п.)
5 Далее располагается палитра (если она требуется) и массив пикселей. В
некоторых форматах начало палитры и массива пикселей указывается в заголовке, в
других - они следуют непосредственно после него.
TIFF (Tagged Image File Format). Формат предназначен для хранения растровых
изображений высокого качества (расширение имени файла .ТIF). Относится к числу
широко распространенных, отличается переносимостью между платформами (IBM PC
к Apple Macintosh), обеспечен поддержкой со стороны большинства графических,
верстальных и дизайнерских программ. Предусматривает широкий диапазон цветового охвата — от монохромного черно-белого до 32-разрядной модели цветоделения
7
CMYK. Начиная с версии 6.0 в формате TIFF можно хранить сведения о масках
(контурах обтравки) изображений. Для уменьшения размера файла применяется
встроенный алгоритм сжатия LZW. Формат .ТIF считается лучшим для импорта
растровой графики в векторные программы.
PSD (PhotoShop Document). Собственный формат программы Adobe Photoshop
(расширение имени файла .PSD), один из наиболее мощных по возможностям хранения растровой графической информации. Позволяет запоминать параметры слоев,
каналов, степени прозрачности, множества масок. Поддерживаются 48-разрядное
кодирование цвета, цветоделение и различные цветовые модели. Основной недостаток
выражен в том, что отсутствие эффективного алгоритма сжатия информации приводит
к большому объему файлов, однако данный формат постоянно совершенствуется.
Существует еще один формат программы Adobe Photoshop
Windows Bitmap. Формат хранения растровых изображений в операционной
системе Windows (расширение имени файла .BMP). Соответственно, поддерживается
всеми приложениями, работающими в этой среде. Формат Windows BMP является
одним из простейших форматов. Он встроен в операционные системе Microsoft
Windows, сжатие в BMP-формате оказывает эффект только при наличии в
изображении больших областей одинакового цвета, что ограничивает ценность
встроенного алгоритма сжатия. BMP-файлы Windows редко находятся в сжатом
виде.
GIF (Graphics Interchange Format). Формат GIF (Graphics Interchange Format,
Формат Взаимообмена Графикой).
Преимущественное использование GIF - передача графических данных в режиме
"онлайн" по компьютерным сетям. Эксклюзивный владелец - CompuServe Incorporated.
Стандартизирован в 1987 году как средство хранения сжатых изображений с
фиксированным (256) количеством цветов (расширение имени файла .GIF). Получил
популярность в Интернете благодаря высокой степени сжатия. Последняя версия
формата GIF89a позволяет выполнять чересстрочную загрузку изображений и
создавать рисунки с прозрачным фоном, поддерживает анимированные иллюстрации.
Суть чересстрочной записи изображения состоит в том, что в начале файла хранятся
строки изображения с номерами кратными 8, потом кратными 4 и т.д. Просмотр
изображения идет с нарастающим уровнем детализации, т.е. видно приблизительное
изображение до окончания полной загрузки. Ограниченные возможности по
количеству цветов обусловливают его применение исключительно в электронных
публикациях.
Основным форматом GIF является формат GIF89a (стандарт 1990 года).
Отличительные особенности: использование эффективного алгоритма LZW для
сжатия (см. далее), возможность сохранять как статические одиночные, так и
анимированные изображения, наличие удобных средств наложения изображений,
наличие альфа-канала для отдельных цветов, использование текстовых и специальных
блоков расширения в файле. Достаточно прост для реализации и хорошо
документирован. Преимущество для сетевых технологий - чересстрочный способ
кодирования изображений.
RAW – формат хранения фотографий.
Это сравнительно новый формат, относится к профессиональным, размер
немного больше, чем .TIFF. Данный формат обрабатывается не всеми версиями
8
PhotoShop, только Adobe PhotoShop CS и Adobe PhotoShop CS2. Формат существует в
нескольких вариантах и фотография, сделанная на фотоаппарате Panasonic, может не
открыться в программе Olympus Master.
Достоинства .RAW – очень высокое качество изображений и низкие потери
информации, при пересохранении не происходит потерь качества.
Недостатки .RAW – большой объем фотографий, несовместимость со старым
программным обеспечением и некоторыми цифровыми устройствами, например DVD
плеером.
Формат PNG – формат разработан для замены формата .GIF. Этот формат
использует сжатие без потерь, алгоритм сжатия похож на алгоритм LZW, сжатые
файлы меньше, чем файлы .GIF. Глубина цвета может любой до 48 бит, используется
двухмерная запись изображения через строчку не только строк, но и столбцов,
поддерживаются полупрозрачные пиксели, в файл записывается информация о гамме
коррекции. Гамма коррекция помогает реализации основной цели передачи
изображений в Интернете – передаче одинакового отображения информации
независимо от аппаратуры пользователя. Распространяется бесплатно.
Для хранения векторных изображений ОС Windows имеет собственный
формат .WMF, этот формат обеспечивает быстрый вывод изображения на экран, но
искажает цвет и имеет огромные размеры. WMF - Windows Metafile Format. В системе
Windows фирмы Microsoft для сохранения и последующего использования цветных
изображений используется свой формат метафайла. Метафайл содержит заголовок и
собственно описание изображения в виде записей GDI (Graphical Device Interface)
функций. Поддерживает векторную и растровую графику. В метафайле записаны
команды интерфейса графических устройств (GDI-команды), каждая из которых
описывает одну графическую функцию. Для того, чтобы отобразить метафайл,
программа передает эти команды специальной функции, которая воспроизводит
изображение. Метафайлы обеспечивают независимые от устройства средства
хранения
и
выборки
графической
информации.
В отличие от растровых файлов, хранящих графическую информацию
непосредственно а виде пикселей, метафайлы идеально подходят для таких
изображений, как карты, диаграммы, архитектурные чертежи и другие рисунки,
состоящие из перекрывающихся фрагментов. Так, например, в САПР, метафайлы
могут применяться для запоминания данных. Они также полезны при передаче
изображений в их собственных форматах в системный буфер Windows (clipboard) для
использования их другими приложениями. Если изображение может быть нарисовано
с помощью команд GDI, оно может быть передано другой программе как метафайл.
При этом подразумевается, что программа знает, как интерпретировать команды
метафайла. Популярные приложения Windows используют WMF-файлы для хранения
графической информации.
К универсальным форматам хранения изображения относится формат .EPS, он
описывает как векторные, так и растровые изображения на языке описания страниц
PostScript. На экран векторные изображения выводятся в формате - .WMF, растровые
- .TIFF.
Итак, форматы растровых изображений - BMP, TIFF, PCX, PSD, IPEG, GIF;
форматы векторных изображений – WMF; Универсальные форматы – EPS, PICT,
CDR, FLA и др.
9
Алгоритмы сжатия изображений
Для уменьшения объемов файлов разработаны специальные алгоритмы сжатия
графической информации. Именно они и являются основной причиной существования
графических форматов.
В настоящее время не существует алгоритмов, одинаково сжимающих файлы
любых форматов. Степень сжатия изображений может колебаться от 4:1 до 200:1.
Различают алгоритмы сжатия с потерями качества изображения и без потерь. Суть
алгоритмов сжатия без потерь в том, что при наличии больших областей однотонной
закраски или однотипных узорах в растровых изображениях повторяющиеся
одинаковые пиксельные области запоминают один раз и впоследствии повторяют его
необходимое количество раз. При этом в исходных данных ничего не отбрасывается и
не теряется. Такие алгоритмы используются в форматах TIFF или GIF. Пример такого
алгоритма – LZW.
Алгоритмы сжатия с потерями приходиться использовать, если имеют дело с
фотографическими изображениями, у которых нет повторяющихся узоров или
больших областей однотонной закраски. В растровом рисунке, который имеет много
слегка отличающихся друг от друга оттенков (пикселей) большие области могут
заполняться пикселями одного цвета. Важным моментов в применения сжатия с
потерями является определение приемлемого уровня потерь.
1 Типы изображений.
Для того чтобы корректно оценивать степень сжатия, нужно разделить
изображения на несколько типов.
 Схематические изображения. Изображения с небольшим количеством цветов,
и большими областями, заполненными одним цветом (деловая графика, чертежи).
 Фотореалистичные
изображения
(цифровые
или
отсканированные
фотографии, изображения созданные в программах 3D –визуализации).
 Текстуры, накладываемые на поверхности.
Основная идея ввода типов изображений состоит в том, что мы можем
сравнивать алгоритмы только на определенных типах изображений. Вообще говоря,
бессмысленно говорить, что один алгоритм лучше другого, не указав тип
изображений, на котором они сравниваются.
2 Требования к алгоритмам компрессии.
Одни приложения могут предъявлять различные требования к алгоритмам
компрессии, с другой стороны для других приложений эти же требования могут быть
не актуальны.
 Высокая степень компрессии. Данное требование почти всегда актуально,
хотя есть и исключения. Хотя в большинстве случаев приходится искать некоторый
компромисс со следующим требованием, а именно
Высокое качество изображения, которое, вообще говоря, противоречит
выполнению предыдущего. Кстати, довольно часто алгоритм предоставляет
возможность выбора качества архивации (например, JPEG), и соответственно, степени
10
архивации. В случае необходимости 100% соответствия используются алгоритмы
сжатия без потерь.
Высокая скорость компрессии. Интуитивно понятно, что чем больше
времени мы будем анализировать изображение, тем лучше будет результат. Таким
образом, оно также может входить в противоречие с двумя предыдущими. В
некоторых алгоритмах, например фрактальном, можно управлять временем
компрессии, естественно, в некоторый (возможно незаметный) ущерб качеству.
Стоит также отметить, что важно также не только сама скорость, а скорее ее
зависимость от, например, размеров изображения. Реализация фрактального
алгоритма “в лоб” приведет вообще говоря, к зависимости n2 от площади
изображения.
Высокая скорость декомпрессии. Достаточно универсальное требование,
хотя стоит отметить, что иногда более, а иногда менее актуально.
Возможность постепенного проявления изображения, т.е. возможность
показать огрубленное изображение, использовав только начало файла. Данное
требование стало актуально в web, когда пользователь может, например, решить,
продолжать ему закачку большой картинки или нет, скачав только его часть. Иногда
эта возможность является свойством алгоритма (например, wavelet), иногда алгоритм
можно модифицировать. (В алгоритме Motion JPEG, например, изменили порядок
записи коэффициентов,
чтобы сначала шли низко, потом средне, а потом
высокочастотные компоненты изображения. В алгоритме Interlaced GIF поступили
еще проще, просто записывая строчки изображения не подряд, а через четыре)
Устойчивость к ошибкам, или локальность нарушений при порче фрагмента
файла. В случае широковещания в сети, или цифрового телевидения, не исключена
возможность того, что часть данных не дойдет до пользователя. Не хотелось бы,
чтобы порча одного маленького кусочка приведет к невозможности посмотреть весь
фильм целиком.
Редактируемость. Под редактируемостью понимается минимальная степень
ухудшения качества изображения, при его повторном сохранении после
редактирования. Если изображение было сжато с потерями, потом разжато, потом
слегка отредактировано (например, пара пикселей поменяли цвет), то этот параметр
определит, насколько изображение потеряет в качестве еще. Иногда, изображение
может терять в качестве даже безо всякого редактирования, что обусловлено, скорее
всего, несовершенством реализации алгоритма, иногда же, например, при
фрактальном сжатии, самим алгоритмом.
Небольшая стоимость аппаратной и (или) эффективность программной
реализации. Это требование важно, например, при проектировании алгоритмов
сжатия текстур, с учетом дальнейшей интеграции этих алгоритмов в видеочип. Также
стоит оценить эффективность таких технологий MMX, 3DNow! и Katmai, и
возможность эффективного распараллеливания алгоритмов.
Вообще говоря, в каждом конкретном случае одни требования нам более важны,
другие менее важны, или совсем безразличны. Более того, иногда выбор того или
иного алгоритма определяется некоторыми специфическими требованиями. Например,
11
при архивации текстур нам бы хотелось получить информацию о конкретном пикселе
как можно меньшими затратами.
3 Критерии сравнения алгоритмов.
Основным критерием является коэффициент сжатия и скорость компрессии и
декомпрессии. Лучший, худший и средний коэффициенты сжатия. Следует отметить,
что средний коэффициент следует считать по отношению к тем изображениям, на
которые ориентирован алгоритм (например, реальную эффективность алгоритма
сжатия факсимильных сообщений бессмысленно измерять на тесте из фотографий).
Худший коэффициент, кстати, может быть и больше 1.
4 Алгоритмы архивации без потерь.
При рассмотрении алгоритмов без потерь, стоит отметить несколько важных
моментов. Во-первых, поскольку алгоритмы не изменяют исходные данные, то мы
можем считать любой алгоритм сжатия информации алгоритмом сжатия изображений
без потерь (кстати, не так много алгоритмов сжатия без потерь разрабатывались
специально для изображений)
Во-вторых, невозможно построить алгоритм сжатия без потерь, который для
любой первоначальной цепочки данных давал бы меньшую по длине цепочку. Если
есть цепочки, которые алгоритм укорачивает, то есть те, которые он удлиняет. Хотя,
впрочем, можно модифицировать алгоритм, так чтобы в худшем случае увеличение
составляло всего 1 бит, а именно, в случае если алгоритм увеличивает цепочку, писать
в выходной поток единицу, а потом исходную цепочку, в противном случае писать
ноль и архивированную цепочку.
Методы сжатия
Метод
BMP GIF PNG JPEG
RLE
X
X
LZ
X
X
Huffman
X
X
DCT
X
Метод RLE – кодирование длин серий.
Последовательные пиксели с одинаковым значением кодируются с помощью
пары чисел. Эти числа включают длину серии и значение пикселя. Например, 9
повторяющихся пикселей со значением равным 8, можно представить в виде 2байтовой последовательности
09160816 вместо 081608160816081608160816081608160816
Метод LZ.
Программа сжатия ведет словарь, который содержит уже
встречавшиеся последовательности значений пикселей. Сжатый поток содержит коды,
указывающие элементы словаря.
Кодирование Хаффмана (Huffman). Для представления значений компонент
используются коды переменной длины. Значениям, которые повторяются чаще,
присваиваются более короткие коды.
Метод DCT (дискретное косинусное преобразование). Блоки пикселов
представляются с помощью косинусных функций с разными частотами. Высокие
частоты, которые обычно вносят малый вклад в данные изображений, отбрасываются.
12
Большинство форматов файлов изображений используют сжатие без потерь. Под
этим понимают, что если взять изображение, сжать его по технологии сжатия без
потерь, а затем восстановить, то получившееся изображение будет идентично
оригиналу с точностью до бита. Метод сжатия с потерями дает после распаковки
изображение только близкое к оригиналу. В этом случае используют тот факт, что
человеческому взгляду трудно различить почти одинаковые цвета. Методы сжатия с
потерями используются потому, что они обеспечивают большую степень сжатия.
Понятие цвета
Цвет чрезвычайно важен в компьютерной графике как средство усиления зрительного впечатления и повышения информационной насыщенности изображения.
Ощущение цвета формируется человеческим мозгом в результате анализа светового
потока, попадающего на сетчатку глаза от излучающих или отражающих объектов.
Восприятие цвета зависит от физических свойств света, т. е. электромагнитной
энергии, от его взаимодействия с физическими веществами, а также от их
интерпретации зрительной системой человека. Зрительная система человека
воспринимает электромагнитную энергию с длинами волн от 400 до 700 нм как
видимый свет (1 нм = 10-9м). Свет принимается либо непосредственно от источника,
например электрической лампочки, либо косвенно при отражении от поверхности
объекта или преломлении в нем. Источник или объект является ахроматическим, если
наблюдаемый свет содержит все видимые длины волн в приблизительно равных
количествах. Ахроматический источник кажется белым, а отраженный или
преломленный ахроматический свет - белым, черным или серым. Белыми выглядят
объекты, ахроматически отражающие более 80% света белого источника, а черными менее 3%. Промежуточные значения дают различные оттенки серого. Хотя трудно
определить различие между светлотой и яркостью, светлота обычно считается
свойством несветящихся или отражающих объектов и изменяется от черного до
белого, а яркость является свойством самосветящихся или излучающих объектов и
изменяется в диапазоне от низкой до высокой. Если воспринимаемый свет содержит
длины волн в произвольных неравных количествах, то он называется хроматическим.
Если длины волн сконцентрированы у верхнего края видимого спектра, то свет
кажется красным или красноватым, т. е. доминирующая длина волны лежит в красной
области видимого спектра. Если длины волн сконцентрированы в нижней части
видимого спектра, то свет кажется синим или голубоватым, т. е. доминирующая длина
волны лежит в синей части спектра. Однако сама по себе электромагнитная энергия
определенной длины волны не имеет никакого цвета. Ощущение цвета возникает в
результате преобразования физических явлений в глазу и мозге человека. Цвет
объекта зависит от распределения длин волн источника света и от физических свойств
объекта. Объект кажется цветным, если он отражает или пропускает свет лишь в узком
диапазоне длин волн и поглощает все остальные.
В машинной графике применяются две системы смешения основных цветов:
аддитивная - красный, зеленый, синий (RGB) и субтрактивная - голубой, пурпурный,
желтый (CMY). Цвета одной системы являются дополнительными к другой: голубой к красному, пурпурный - к зеленому, желтый - к синему. Дополнительный цвет - это
разность белого и данного цвета: голубой это белый минус красный, пурпурный белый минус зеленый, желтый - белый минуc синий. Хотя красный можно считать
13
дополнительным к голубому, по традиции красный, зеленый и синий считаются
основными цветами, а голубой, пурпурный, желтый - их дополнениями. Интересно,
что в спектре радуги или призмы пурпурного цвета нет, т. е. он порождается
зрительной системой человека. Для отражающих поверхностей, например
типографских красок, пленок и несветящихся экранов применяется субтрактивная
система CMY. В субтрактивных системах из спектра белого цвета вычитаются длины
волны дополнительного цвета. Например, при отражении или пропускании света
сквозь пурпурный объект поглощается зеленая часть спектра. Если получившийся свет
отражается или преломляется в желтом объекте, то поглощается синяя часть спектра и
остается только красный цвет. После его отражения или преломления в голубом
объекте цвет становится черным, так как при этом исключается весь видимый спектр.
По такому принципу работают фотофильтры. Аддитивная цветовая система RGB
удобна для светящихся поверхностей, например экранов ЭЛТ или цветных ламп.
Способы описания цвета
В компьютерной графике применяют понятие цветового разрешения (другое
название — глубина цвета). Оно определяет метод кодирования цветовой
информации для ее воспроизведения на экране монитора. Для отображения чернобелого изображения достаточно одного бита (белый и черный цвета).
Восьмиразрядное кодирование позволяет отобразить 256 градаций цветового тона.
Два байта (16 бит) определяют 65 536 оттенков. При 24-разрядном способе
кодирования возможно определить более 16,5 миллионов цветов
С практической точки зрения цветовому разрешению близко понятие цветового
охвата, имеется в виду диапазон цветов, который можно воспроизвести на устройствах
вывода. Цветовые модели расположены в трехмерной системе координат, которая
образует цветовое пространство. При этом исходят из законов Грассмана о том, что
цвет можно выразить точкой в трехмерном пространстве.
Цветовая модель CIE Lab
В1920 году была разработана цветовая пространственная модель CIE Lab
L,a,b — обозначения осей координат в этой системе). Система является аппаратно
независимой и потому часто применяется для переноса данных между устройствами.
В модели CIE Lab любой цвет определяется светлотой (I) и хроматическими
компонентами: параметром а, изменяющимся в диапазоне от зеленого до красного, и
параметром b, изменяющимся в диапазоне от синего до желтого. Цветовой охват
модели CIE Lab значительно превосходит возможности мониторов и печатных
устройств, поэтому перед выводом изображения, представленного в этой модели, его
приходится преобразовывать. Данная модель была разработана для согласования
цветных фотохимических процессов с полиграфическими. Сегодня она является
принятым по умолчанию стандартом для программы Adobe Photoshop.
Цветовая модель RGB
14
Рис.. Аддитивная цветовая модель RGB
Цветовая модель RGB является аддитивной, то есть любой цвет представляет
собой сочетание в различной пропорции трех основных цветов — красного, зеленого,
синего. Она служит основой при создании и обработке компьютерной графики,
предназначенной для электронного воспроизведения (на мониторе, телевизоре). При
наложении одного компонента основного цвета на другой яркость суммарного
излучения увеличивается. Совмещение трех компонентов дает ахроматический серый
цвет, который при увеличении яркости приближается к белому цвету. При 256
градационных уровнях тона черному цвету соответствуют нулевые значения RGB, а
белому — максимальные, с координатами (255,255,255).
RGB с Альфа - каналом
Альфа-канал позволяет объединять изображение с его фоном. Каждое значение
пикселя содержит дополнительное Альфа-значение, размер которого в битах равен глубине
цвета изображения. Цветовая модель RGB с Альфа - каналом может использоваться
только при глубине цвета равной 8 и 16 битам.
Нулевое значение Альфа - канала означает, что пиксель полностью прозрачен, и в этом
случае фон полностью виден через изображение.
Значение Альфа – канала равному 2глубина цвета изображения-1
соответствует полностью непрозрачному пикселю; это означает, что фон полностью
закрыт изображением. Когда значение Альфа - канала равно промежуточной величине, цвет
пикселя сливается с фоном посредством некоторого алгоритма.
Цветовая модель HSB
15
Рис. Цветовая модель HSB
Цветовая модель HSB разработана с максимальным учетом особенностей
восприятия цвета человеком. Она построена на основе цветового круга Манселла.
Цвет описывается тремя компонентами: оттенком (Hue), насыщенностью (Saturation) и
яркостью (Brightness). Значение цвета выбирается как вектор, исходящий из центра
окружности. Точка в центре соответствует белому цвету, а точки по периметру
окружности — чистым спектральным цветам. Направление вектора задается в
градусах и определяет цветовой оттенок. Длина вектора определяет насыщенность
цвета. На отдельной оси, называемой ахроматической, задается яркость, при этом
нулевая точка соответствует черному цвету. Цветовой охват модели HSB перекрывает
все известные значения реальных цветов.
Модель HSB принято использовать при создании изображений на компьютере с
имитацией приемов работы и инструментария художников. Существуют специальные
программы, имитирующие кисти, перья, карандаши. Обеспечивается имитация работы
с красками и различными полотнами. После создания изображения его рекомендуется
преобразовать в другую цветовую модель, в зависимости от предполагаемого способа
публикации. В настоящее время эта цветовая модель используется только в некоторых
программах обработки изображения.
Цветовая модель YCbCr
Изображения в формате JPEG почти всегда сохраняются с использованием
трехкомпонентного цветового пространства YCbCr. Компонент Y или яркость
представляет яркость изображения. Компоненты Cb и Cr определяют цветность.
Значение Cb задает синеву изображения, а значение Cr задает его красноту.
Соотношение между цветовыми моделями YCbCr и RGB находят по
соответствующим формулам.
Все рассмотренные выше модели относятся к аддитивным. Это означает, что
компоненты добавляют цвет в изображение. Чем выше значение компонента, тем
ближе цвет к белому.
16
Цветовая модель CMYK, цветоделение
Рис. Цветовая модель CMYK
Цветовая модель относится к субтрактивным, и ее используют при подготовке
публикаций к печати. Цветовыми компонентами CMY служат цвета, полученные
вычитанием основных из белого:
голубой (cyan) = белый - красный = зеленый + синий;
пурпурный (magenta) = белый - зеленый = красный + синий;
желтый (yellow) = белый - синий = красный + зеленый.
Такой метод соответствует физической сущности восприятия отраженных от
печатных оригиналов лучей. Голубой, пурпурный и желтый цвета называются
дополнительными, потому что они дополняют основные цвета до белого. Отсюда
вытекает и главная проблема цветовой модели CMY — наложение друг на друга
дополнительных цветов на практике не дает чистого черного цвета. В модели CMYK
большие значения компонентов представляют цвета, более близкие к черному. При
комбинации голубой, пурпурной и желтой красок поглощается весь цвет, что
теоретически должно приводить к черному цвету, но на практике чистый черный цвет
не создается. Поэтому в цветовую модель был включен компонент чистого черного
цвета. Так появилась четвертая буква в аббревиатуре цветовой модели CMYK (Cyan,
Magenta, Yellow, blacK). Между моделью и RGB нет однозначного соответствия. На
одно и то же значение RGB отображается множество значений CMYK.
Для печати на полиграфическом оборудовании цветное компьютерное
изображение необходимо разделить на составляющие, соответствующие компонентам
цветовой модели CMYK. Этот процесс называют цветоделением. В итоге получают
четыре отдельных изображения, содержащих одноцветное содержимое каждого
компонента в оригинале. Затем в типографии с форм, созданных на основе
цветоделенных пленок, печатают многоцветное изображение, получаемое наложением
цветов CMYK.
Гамма
Цветовые модели, используемые для представления изображений, основываются
на предположении, что между значением цветового компонента и цветом, видимым на
экране, существует линейная связь. В действительности применяемые устройства
17
отображения не реагируют линейно на поступающий входной сигнал. Гамма
приближение описывает нелинейные характеристики этих устройств. С математической точки зрения, Гамма - степенная функция:
Настройка Гаммы изображения может выполняться как совместно с
преобразованием в цветовое пространство XYZ, так и отдельно. Регулировка Гаммы
оказывает большее воздействие на вид изображения на компьютерном мониторе, чем
преобразование в цветовое пространство XYZ и обратно.
Эффект воздействия Гаммы на изображение состоит в придании компоненту
более темного или более светлого оттенка.
Системы координат
Для создания сложного реалистического компьютерного изображения
необходимо математическую модель изображаемого объекта или процесса достоверно
повторить на экране в пространстве и во времени. При этом необходимо задавать
положение точек, линий и поверхностей в различных системах координат. Положение
точки в Евклидовом пространстве задается радиус-вектором, который имеет n
координат и разложение по
n линейно-независимым базисным векторам.
Совокупность базисных векторов и единиц измерения расстояний вдоль этих векторов
составляет систему координат. Для описания формы графических объектов, задания
расположения объектов в пространстве и их проекций на экране дисплея используют
различные СК, наиболее удобные в каждом конкретном случае. Положение точек в
пространстве удобно описывается с помощью декартовой системы координат.
Декартова система координат имеет три направленные прямые линии, которые не
лежат в одной плоскости – оси координат, оси пересекаются в одной точке – начале
координат. На осях выбирается единица измерения. Положение любой точки в
пространстве описывается через координаты этой точки, которые представляют собой
расстояния от начала координат до проекций точки на соответствующие оси
координат. Для практических расчетов удобнее, чтобы оси координат были
расположены взаимно перпендикулярно. Такая система координат называется
ортогональной. Взаимное расположение осей в ортогональной системе координат
может быть двух видов. Ось 0z может проходить в направлении от наблюдателя в
плоскость листа – это левосторонняя система координат. Если ось 0z проходит от
плоскости листа к наблюдателю – это правосторонняя система координат.
Системы координат наиболее часто применяемые в компьютерной графике
Мировая система координат является основной системой координат, в ней
заданы все объекты сцены. Одной из распространенных задач компьютерной графики
является изображение двумерных графиков в некоторой системе координат. Эти
графики предназначены для отображения зависимости между переменными,
заданными с помощью функций. Например, графики, характеризующих восприятие
света глазом человека. Чтобы получить такой график, прикладная программа должна
описать различные выходные примитивы (точки, линии, цепочки символов), указав их
местоположение и размеры в прямоугольной системе координат. Единицы измерения,
в которых задаются эти объекты, зависят от их природы: изменение температуры,
например, можно отображать в градусах за час, перемещение тела в пространстве - в
километрах в секунду, и т. д. Эти прикладные (или ориентированные на пользователя)
координаты позволяют задавать объекты в двумерном или трехмерном мире
пользователя, и их принято называть мировыми координатами.
18
Неподвижная мировая система координат (МСК) x, y, z, содержит точку отсчета
(начало координат) и линейно независимый базис (совокупность базисных векторов –
осей координат), благодаря этому возможно цифровое описание геометрических
свойств любого графического объекта в абсолютных величинах. Мировую систему
координат обозначим xмyмzм.
Модельная система координат – система координат, в которой задана
внутренняя структура объектов.
Экранная система координат - в ней задается положение проекций
геометрических объектов на экране дисплея. Проекция точки в ЭСК
имеет
координату zэ=0. Однако не следует отбрасывать эту координату, т. к. МСК и ЭСК
часто выбираются совпадающими, а также вектор проекции [xэ yэ 0] может
участвовать в преобразованиях, к которых нужны не две, а три координаты.
Выбор точки и направления зрения можно описать математически, введя
декартову систему координат наблюдателя, начало которой находится в точке
обзора, а одна из осей совпадает с направлением зрения
Система координат сцены (СКС) xсyсzс, в которой описывается положение
всех объектов сцены – некоторой части мирового пространства с собственными
началом отсчета и базисом, которые используются для описания положения объектов
независимо от МСК.
Объектная система координат (ОСК) xоyоzо, связанная с конкретным объектом
и совершающая с ним все движения в СКС или МСК.
Изображение трехмерных объектов сопряжено с целым рядом задач. Прежде
всего надо помнить, что изображение является плоским, поэтому надо добиться
адекватной передачи визуальных свойств предметов, дать достаточно наглядное
представление о глубине. В дальнейшем группы трехмерных объектов,
предназначенных для изображения, будем называть пространственной сценой, а ее
двумерное изображение - образом.
Рис. 4.3. Объектная система координат и система координат наблюдателя
19
Видимый образ формируется на некоторой плоскости, которую в дальнейшем
будем называть картинной плоскостью. Способы преобразования трехмерного
объекта в двумерный образ (проекции) могут быть различными. Так или иначе, но
полученный образ также должен быть описан в некоторой двумерной системе
координат . В зависимости от способа его получения реальные размеры образа также
могут быть различны. Различные виды проецирования будут подробно рассмотрены
позднее.
Рис. 4.4. Картинная плоскость и экран
Поскольку нашей конечной целью является получение изображения на экране,
то перенесение образа сопровождается изменением масштаба в соответствии с
размерами экрана. Обычно началом координат в системе координат образа считается
левый нижний угол листа с изображением. На экране дисплея начало координат
традиционно находится в левом верхнем углу. Отображение рисунка с картинной
плоскости на экран должно производиться с минимальным искажением пропорций,
что само по себе вносит ограничение на область экрана, занимаемую рисунком.
Изменение масштаба должно осуществляться с сохранением пропорций области (рис.
4.4).
Объекты в системе координат картинной плоскости задаются в каких- либо
единицах измерения, причем масштаб одинаков по обеим осям координат. На экране
единицей измерения является пиксель, который следует рассматривать как
прямоугольный, поэтому масштабы по горизонтальной и вертикальной осям могут
быть различны, что необходимо учитывать при задании коэффициентов
масштабирования
Пример преобразований в системах координат
Для того, чтобы управлять изображением на экране, вносить изменения в его
положение, ориентацию и размер производят геометрические преобразования. Они
позволяют изменять характеристики объектов в пространстве. Допустим необходимо
создать на компьютере изображение движения солнца по небу и автомобиля по земле.
Данную картину наблюдатель видит из определенной точки в пространстве в
определенном направлении. Чтобы описать эти сложные преобразования
математически сначала следует выбрать системы координат.
20
Первая система координат – мировая, зададим ее осями xмyмzм, она
размещается в некоторой точке и остается всегда неподвижной.
Вторая система координат определяет положение наблюдателя в пространстве и
задает направление взгляда – система координат наблюдателя xnynzn.
Третья система – система координат объекта, их будет две: система координат
солнца и система координат автомобиля. Эти системы могут перемещаться и
изменять свое положение в пространстве относительно мировой системы координат.
Координаты точек объектов задаются в системах координат объектов, каждая из них
привязана к мировой системе координат. Система координат наблюдателя тоже
перемещается относительно мировой системы координат. Чтобы увидеть трехмерный
объект на дисплее нужно выполнить:
 Преобразовать координаты объекта, заданные в собственной системе
координат, в мировые координаты;
 Преобразовать координаты объекта из мировой системы в систему
координат наблюдателя;
Спроецировать полученные координаты на плоскость в с системе координат
наблюдателя, при этом мы будем иметь положение всех объектов сцены в
координатах сцены.
Этапы построения изображений
Как было сказано ранее, компьютерная графика изучает методы построения
изображений различных геометрических объектов и сцен. Главными этапами
построения изображений являются:
 Моделирование, которое использует методы математического описания
объектов и сцен самой разной природы в двух- и трехмерном
пространстве.
 Визуализация – методы построения реалистических изображений
объемного мира на плоском экране дисплея ЭВМ, при этом модели
объектов и сцен преобразуются в статическое изображение или фильм
(последовательность статических кадров).
Все графические объекты приводятся к алгоритмическому виду, это отличает
компьютерную графику от обычной.
Геометрические преобразования
Цель изучения геометрических преобразований – научиться описывать
движение объектов и визуализировать объекты математически. Геометрическое
преобразование – это отображение образа точки, принадлежащей n -мерному
Евклидову пространству в точку n’ -мерного прообраза. К геометрическим
преобразованиям
относятся
проективные
преобразования
и
аффинные
преобразования.
Проективные преобразования. Проекции
21
Для того чтобы синтезировать изображение на экране ПК, необходимо
предложить способ математического описания объектов в трехмерном пространстве
или на плоскости. Проективные преобразования изображают сцену в желаемом
ракурсе. Проекцией называется способ перехода трехмерных объектов к их
изображению на плоскости. Проецирование – это отображение трехмерного
пространства на двухмерную картинную плоскость (КП). Получение проекции
основывается на методе трассировки лучей. Из центра проецирования (проектора)
проводятся лучи через каждую точку объекта до пересечения с КП. Фигура на
плоскости, которая образуется точками пересечения лучей с картинной плоскостью,
является проекцией объекта. Важным свойством любого метода проецирования
является достоверность восприятия объекта по его проекции. Проекции, одинаково
хорошо подходящей для любых задач не существует. Плоская геометрическая
проекция – это тип проецирования на плоскую поверхность прямыми линиями.
Плоские геометрические проекции бывают центральные и параллельные. Если центр
проекции находится на конечном расстоянии от проекционной плоскости, то это
центральная проекция. Если центр проекции удален на бесконечность, то такая
проекция является параллельной. Центральные проекции имеют от одной до трех
точек схода. Точкой схода называется точка пересечения центральных проекций всех
параллельных прямых, которые не параллельны проекционной плоскости.
Итак, центральные проекции бывают с разным количеством точек схода.
Параллельные проекции имеют много типов, но основными можно считать
ортогональные и косоугольные.
Простейшей проекцией является параллельная прямоугольная проекция. В ней
совместно изображаются виды сверху, спереди и сбоку.
22
Проекции
Параллельные
Центральные
Прямоугольные
Косоугольные
Косоугольная
изометрическая
Косоугольная
диметрическая
Триметрическая
Прямоугольная
диметрическая
Аксонометрические
Изомет рическая
Вид сбоку
Вид сверху
Вид спереди
Ортографические
Основные виды проекций
Аффинные преобразования
Аффинное преобразование имеет следующие свойства:
 отображает n-мерный объект в n-мерный – точку в точку, линию в линию,
поверхность в поверхность;
 сохраняет параллельность линий и плоскостей;
 сохраняет пропорции параллельных объектов – длин отрезков на
параллельных прямых и площадей на параллельных плоскостях.
Эти свойства позволяют строить прообразы полигонов на плоскости и полиэдров
в пространстве по конечному набору m точек их вершин. К элементарным аффинным
преобразованиям относятся масштабирование, сдвиг, вращение.
Сложным
аффинным преобразование называется преобразование, реализующее цепочку не
менее, чем из двух элементарных преобразований. Почти все аффинные
преобразования не коммутативны, т. е. результат цепочки преобразований зависит от
порядка их выполнения. Аффинные преобразования – основа кинематического метода
построения параметрических объектов (кривых и поверхностей). Этот метод
генерирует состояние объекта из заданных начальных состояний точки, отрезка,
окружности как функции некоторого параметра, имеющего физический смысл
времени движения. Конечным результатом преобразований являются не уравнения
объекта, а его изображение на экране.
23
Двумерные геометрические преобразования
При формировании изображения постоянно возникает необходимость его
изменять. При этом используются команды редактирования: перемещение,
масштабирование, поворот, копирование, осевая симметрия и другие. В основе
изменения графической информации лежат три элементарных аффинных
преобразования: перенос, масштабирование и поворот.
Перенос
Точки на плоскости можно перенести в новые позиции, если добавить к
координатам этих точек константы переноса. Пусть точка P(x,y) перемещается в
′ ′ ′
новую точку P (x ,y ), при этом по оси x она сдвигается на Dx , а по оси y на
величину Dy. Тогда имеем:
′
x =x+Dx, =y+Dy
Определим векторы строки:
′ ′ ′
P=[xy] P =[x y ] T=[DxDy]
Получим уравнение
′ ′
′
[x y ]=[xy]+[DxDy] или сокращенно P =P+T
Однако объект состоит из множества точек и необходимо для переноса объекта
применить уравнение переноса для каждой точки. Удобнее переносить две крайние
точки отрезка, а затем вычерчивать новый отрезок между ними.
Рис. Перенос объекта Dx=3, Dy=-4
(4,5)
(7,5)
(7,1)
(10,1)
Масштабирование
Точки можно масштабировать (растягивать) по оси x в Sx раз и по оси y в Sy раз.
Новые точки получаются с помощью умножения:
x′=x*Sx y′ =y*Sy
Определяем S в виде матрицы :
24
 Sx 0 

 0 Sy 
S  
Получим новые точки в матричном виде:
x' y'  xy* 
Sx 0 
 или P′=P*S
 0 Sy 
Масштабирование производится относительно начала координат. Если
масштабирующие коэффициенты меньше единицы, то домик уменьшится и станет
ближе к началу координат. Если масштабирующие коэффициенты больше единицы, то
домик увеличится и отдалится от начала координат. Если Sx≠Sy, то это неоднородное
масштабирование, и пропорции домика изменяются. Однородное масштабирование
Sx=Sy, не влияет на пропорции.
Масштабирование объекта Sx=1/2, Sy=1/4
(2,4)
(4,4)
(1,1)
(2,1)
Поворот (вращение)
Точки могут быть повернуты на угол θ относительно начала координат.
Рис. Поворот точки
P’(x’,y’)
о
30
P(x,y)
25
′
Координаты точки P :
x′=xcosθ-ysinθ
′
y =xsinθ+ycosθ
В матричной форме:
cos 
 sin 
x' y'  xy* 
sin  
cos  
Или P′=P*R, где R - матрица поворота
Положительное значение соответствует повороту против часовой стрелки,
отрицательное – по часовой.
Рис. Поворот объекта θ=45о
Однородные координаты и двумерные преобразования
Преобразования переноса, масштабирования и поворота в матричной форме
имеют вид:
P′=P+T
P′=P*S
P′=P*R
Если выразить точки в однородных координатах, то все три преобразования
можно реализовать с помощью умножения, при большом количестве точек объекта,
это существенно уменьшает скорость обработки.
В однородных координатах точка P(x,y) записывается как
P(W*x,W*y,W), где W – масштабный множитель, не равный нулю.
При этом, если точка задана в однородных координатах P(X,Y,W), то можно
найти ее декартовы координаты:
X=X/W, y=Y/WЕсли W=1, то операция деления не нужна:
P(x,y,1), P′(x′,y′,1)
Основные преобразования в однородных координатах
Перенос
Уравнение переноса запишется в виде матрицы преобразования:
26
1
x' y'1  xy1*  0
 Dx
1
T ( Dx , Dy )   0
 Dx
0
1 0
Dy 1
0
или P′=P*T(Dx,Dy), где
0
1 0
Dy 1
0
Перемножив, получим: x' y'1  x  Dx, y  Dy,1
Масштабирование
Уравнение масштабирования в матричной форме имеет вид:
 Sx 0 0
x' y'1  xy1*  0 Sy 0
 0 0 1
 Sx 0 0
Так как S ( Sx, Sy)   0 Sy 0 имеем: P′=P*S(Sx,Sy)
 0 0 1
Перемножим и получим:
[x′y′1]=[x*Sx y*Sy 1]
Поворот
Уравнение поворота имеет вид:
 cos 
x' y'1  xy1*  sin 
 0
sin 
cos 
0
 cos 
Так как R( )   sin 
 0
0
0
1
sin 
cos 
0
0
0
1
получим P'  P * R( )
Перемножим и получим:
x' y'1  x cos y sin 
x sin   y cos 1
Матричное представление трехмерных преобразований
Итак, двумерные преобразования описываются матрицами размером 3х3, а
трехмерные преобразования представлены в виде матриц 4х4.
Трехмерная точка P(x,y,z) записывается в однородных координатах следующим
образом:
P(W*x,W*y,W*z,W), W≠0.
Если W=1, то точка представлена в виде: P(x,y,z,1).
Перенос
Трехмерный перенос – это расширение двумерного переноса
27
1
0
T ( Dx , Dy , Dz )  
0

 Dx
0
1
0
0
0
0

Dz 1
0
0
1
Dy
P′=P*T(Dx,Dy,Dz)
[x′ y ′z′ 1]=[x y z 1]*T(Dx,Dy,Dz)=[x+Dx y+Dy z+Dz 1]
Масштабирование
Трехмерное масштабирование – расширение двумерного масштабирования.
 Sx 0 0 0
 0 Sy 0 0

S ( Sx, Sy, Sz )  
 0 0 Sz 0


 0 0 0 1
P′=P*S(Sx,Sy,Sz) или
[x′ y ′z′ 1]=[x y z 1]*S(Sx,Sy,Sz)=[x*Sx y*Sy z*Sz 1]
Поворот
Поворот возможен вокруг осей x, y, z.
Двумерный поворот является поворотом вокруг оси z:
 cos 
 sin 
Rz ( )  
 0

 0
sin 
cos 
0
0 0
0 0
1 0

0 1
0
Матрица поворота вокруг оси x:
0
1
0 cos 
Rx ( )  
0  sin 

0
0
0
sin 
cos 
0
0
0
0

1
Матрица поворота вокруг оси y:
cos 
 0
Ry ( )  
 sin 

 0
0  sin 
1
0
0 cos 
0
0
0
0
0

1
Моделирование
Моделирование в рамках графических систем]
В упрощенном виде для пространственного моделирования объекта требуется:
- спроектировать и создать виртуальный каркас объекта, наиболее полно
соответствующий его реальной форме
- спроектировать и создать виртуальные материалы, по физическим свойствам
визуализации похожие на реальные
- присвоить материалы разным частям поверхности объекта
- настроить физические параметры пространства, в котором будет действовать
объект – задать освещение, гравитацию, свойства атмосферы,
28
- свойства взаимодействующих объектов и поверхностей
- задать траектории движения объектов
- рассчитать результирующую последовательность кадров
- наложить поверхностные эффекты на итоговый анимационный ролик
Из всех параметров пространства, в котором действует задаваемый объект, с
точки зрения визуализации самым важным является определение источников света. В
трехмерной графике принято использовать виртуальные эквиваленты физических
источников.
Аналогом равномерного светового фона служит растворенный свет. Он
характеризуется только светом и интенсивностью
Удаленный не точечный источник называют удаленным светом. Ему
присваиваются конкретные геометрические параметры
Точечный источник света, который равномерно испускает свет во всех
направлениях и имеет координаты
Направленный источник света, который характеризуется местоположением,
направлением светового потока, углами раствора полного конуса света и его наиболее
яркого пятна.
После завершения конструирования в визуализации объекта приступают к его
оживлению, т. е. заданию параметров движения.
Процесс расчета реалистичных изображений называют рендерингом
(визуализацией).
Геометрическая модель
Модель объекта – это его абстрактное представление, которое соответствует
реальному объекту и позволяет визуализировать и обрабатывать объект с помощью
компьютера. Модель объекта – это набор данных, которые отражают свойства
объекта, и отношения между этими данными. Для обработки модели в графической
системе используют не весь объем информации об объекте, а только ту часть данных,
которая определяет его геометрию: форму, размер и пространственное размещение.
В процессе построения сцены решаются геометрические и оптические задачи. К
геометрическим относятся задачи формирования поверхностей, составление моделей
объектов сцены, композиции объектов в пространстве сцены, отсечения элементов
сцены, не попавших в отображаемую область, удаление невидимых элементов
отображаемой области. В результате получается эскиз сцены. Далее решаются
оптические задачи реалистичного изображения объектов: закрашивание поверхностей
с учетом их света, освещенности и ориентации в пространстве, расчет теней,
отражений, бликов, прозрачности и т. д. Таким образом, построение сцены – процесс
многошаговый. Изображение формируется в буферной памяти ЭВМ и затем
выводится на экран дисплея.
Рис. Схема геометрического моделирования.
Описание
объекта
Языковой
интепретатор
Геометрическая модель
внутрикомпьютерное
представление
29
Виды геометрических моделей
Геометрические модели
Двумерные
Каркасные
Трехмерные
Сплошные
Воксельные
Граничные
Поверхностные
Конструктивные
Двумерные модели намного дешевле и пригодны для многих задач. В
двумерных системах описание объекта ведется по алгоритмам в интерактивном
режиме. Двумерное представление не годится для сложных решений. Двумерная
геометрическая модель использует данные следующих типов:
- геометрические данные – координаты точек, уравнения прямых, окружностей;
- топологические данные – отрезок, соединяющий две точки, контур,
определенный базовыми объектами;
- структурные данные – комплекс базовых элементов виде дерева;
- оформительские данные – размерные линии, тексты, штриховка;
- реляционные данные – отношения между элементами, например, элемент А
касается элемента В.
Трехмерное моделирование
Типы данных
- элементы нулевого уровня – двумерные элементы: точки, отрезки, кривые,
контуры, дуги;
- элементы первого уровня – поверхности;
- элементы второго уровня – объемы.
Из этих элементов можно с помощью разных операций создавать комплексы
Каркасные поверхности
Среди трехмерных моделей первыми появились каркасные. В каркасной модели
хранится информация двух типов:
топологическая – ребра, которые определяются вершинами;
геометрическая – координаты вершин.
30
Это самый простой и примитивный способ передачи формы объемного тела.
Многие прикладные программы 3d-графики для быстрого эскизного
изображения поверхности выводят на экран дисплея не все ее точки, а лишь то
небольшое количество, которое достаточно реалистично передает характер
искривления поверхности в пространстве. Совокупность таких точек образует каркас –
систему линий на поверхности. Эти условные линии разбивают поверхность на
ячейки, граничащие друг с другом по ребрам, которые соединяются в вершинах. В
зависимости от способа описания поверхности строятся соответствующие каркасные
линии. Важный момент при построении каркасных моделей – это разумный выбор
числа интервалов дискретизации, который определяет размер ячеек и расстояние
между каркасными линиями. Ячейки каркасных поверхностей могут быть:
прозрачными и непрозрачными; объемными и плоскими, которые называются
гранями; полигональными и криволинейными.
Каркасная модель с прозрачными гранями
модель с плоскими гранями
модель с объемной гранью
В случае прозрачной плоской каркасной поверхности достаточно вывести на
экран все ее ребра в произвольном порядке. Каркасное изображение объекта с
прозрачными гранями, построенное без учета удаленности ребер от наблюдателя
выглядит двусмысленно, т. к. не ясно, какая грань является видимой.
Если необходима объемная грань, то нужны вспомогательные каркасные линии,
проведенные в межреберном пространстве.
В изображение непрозрачного каркаса
включают только ячейки, видимые наблюдателем. Для этого необходимо выполнить
процедуру удаления невидимых ячеек.
Проволочные модели используются для эскизного изображения объектов и их
габаритных оболочек.
Сплошная модель
Сплошная модель включает в объект как граничные, так и внутренние точки.
Сплошная, объемная или твердотельная модель охватывает все точки на поверхности
объекта. Описание сплошными телами подразумевает перечисление вокселей –
мельчайших 3d-ячеек, которые заполняют объект, или конструирование сложной
формы как композиции небольшого числа простых объемных примитивов (куб, сфера,
31
конус, цилиндр), Это позволяет производить декомпозицию сложного объекта на
простые составляющие (кубы, сферы, конусы) и строить разнообразные композиции
из простых примитивов. Процесс композиции заключается в выполнении аффинных
преобразований примитивов для создания нужных форм в нужном месте объема и
булевых операций с формами для создания единого объекта. Это напоминает
строительный конструктор. За счет небольшого числа примитивов и четырех булевых
операций (отрицание примитива – т. е. дополнение его до пространства; объединение
примитивов, пересечение примитивов, исключение, т. е. вычитание одного примитива
из другого) конструктивный подход к описанию сложных объектов и сцен позволяет
уменьшить память и трудоемкость построения сцены.
2 Конструктивные модели (Пространственная геометрия)
В пространственной геометрии объект задается набором примитивов и операций
над ними.
Рисунок 5 Дерево пространственной геометрии
Примитивы являются "строительными блоками" нашего объекта. Под
операциями понимаются булевы операции над примитивами, а также геометрические
преобразования, такие как передвижение, поворот, изменение размеров.
Можно говорить о дереве пространственной геометрии. Листьями дерева являются
геометрические примитивы, каждой ветви сопоставляется операция, а ветвью можно
назвать промежуточную форму. Вершиной дерева является искомый геометрический
объект. Поскольку каждый примитив может быть использован несколько раз, дерево
превращается в направленный ациклический граф.
Сплошные модели хорошо приспособлены к работе в системах логического
конструирования сложных форм. Алгоритмы выполнения булевых операций с 3d32
объектами являются частью сплошного моделирования и применяются в САПР
твердотельных конструкций.
Граничные модели
Граничное описание включает перечень всех элементов, создающих границы
объекта, т. е. тонкие оболочки, под которыми находится пустое пространство.
Объект – это часть пространства, заключенная между некоторыми границами.
Границы играют важную роль в моделировании объектов КГ. Благодаря их
непрозрачности объекты становятся видимыми. Взаимная ориентация графических
объектов тоже выполняется относительно их границ. В алгоритмах трассировки
рассчитываются пересечения лучей с объектами в их граничных точках.
К граничным элементам объекта относятся:
 Грани – ограниченные поверхности, отделяющие внутреннее
пространство объекта от внешнего;
 Ребра – линии пересечения граней;
 Вершины – точки пересечения ребер
Вершины инцидентные (принадлежащие) одному ребру, грани, имеющие общее
ребро являются смежными. Количественное соотношение между числами вершин nв,
граней nг и ребер nр замкнутого объекта устанавливается формулой Эйлера
nв+nг=nр+2
Граничное моделирование детальнее каркасного, оно выполняет более реалистичную
визуализации объектов.
Поскольку глобальная параметризация поверхности объекта произвольной
формы обычно является трудновыполнимой задачей, поверхность приближается
набором граней (face). Обычно разбиение выполняется таким образом, чтобы каждая
грань имела компактное математическое представление.
Границы граней представляется ребрами (edge). Так - же как и грани, ребра
выбираются таким образом, чтобы иметь компактное математическое описание. Часть
кривой, формирующей ребро, заканчивается вершинами (vertex).
Поверхностная модель
Поверхность – это граница, отделяющая пространство, принадлежащую объекту
от внешнего мира. Модели поверхностей играют важную роль в конструировании
автомобилей, кораблей, самолетов, разработки программ обработки поверхностей для
автоматических станков, в дизайне одежды, мебели и т. д. Наибольший интерес
представляют методы конструирования математических моделей поверхностей и их
реалистичного изображения на плоскости.
Возможны различные виды поверхностей и этим определяются различные
модели объектов. Объекты можно разделить на ограниченные гранями,
аппроксимированные гранями. Эти виды объектов описываются заданием граней.
Существуют криволинейные поверхности, которые описываются с помощью
уравнений. Ряд поверхностей аппроксимируется плоскими гранями, в этом случае
можно построить поверхностную модель с помощью полигональных сеток.
Поверхностная модель, которая имеет только плоские грани, называется
полигональной моделью. Чаще всего в роли полигонов используются треугольники,
33
т.к. треугольник - это простейшая плоская фигура, которая однозначно располагается
в трехмерном пространстве. Рассмотрим возможные варианты задания полигональной
модели.
Рисунок 6 Основные составляющие граничной модели
3.1 Явное представление.
В этом случае каждая грань есть полигон, состоящий из последовательности
координат вершин. Объект состоит из набора граней.
Рисунок 7 Пример
Недостатки такого представления в том, что, во-первых, взаимоотношения
граней заданы неявно, а во-вторых, координаты каждой вершины появляются столько
раз, сколько граней имеют эту вершину.
3.2 Список вершин
Повторяемость координат вершин можно обойти путем выделения координат
вершин в отдельную структуру. В этом случае с гранями ассоциируются не
координаты вершин, как в предыдущем случае, а индексы в массиве координат
вершин. В нашем примере (см. рисунок ) будем иметь:
Вершины
Координаты
Грани
Вершины
34
v1
v2
v3
v4
v5
v6
v7
v8
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
x5 y5 z5
x6 y6 z6
x7 y7 z7
x8 y8 z8
f1
f2
f3
f4
f5
f6
v1 v2 v3 v4
v6 v2 v1 v5
v7 v3 v2 v6
v8 v4 v3 v7
v5 v1 v4 v8
v8 v7 v6 v5
Заметим, что список вершин каждой грани упорядочен по часовой стрелке, как
если смотреть снаружи куба. Такое представление полезно во многих алгоритмах,
таких как удаление невидимых поверхностей. Однако в таком представление остаются
многие недостатки полигонального, например, задача поиска ребер, инцидентных
данной вершине по-прежнему требует полного перебора.
3.3 Список ребер
В такой модели грань представляется набором ребер и вершины грани
определяются через ребра.
Ребра Вершины Вершины Координаты Грани Ребра
e1
v1 v2
v1
x1 y1 z1
f1
e1 e2 e3 e4
e2
v2 v3
v2
x2 y2 z2
f2
e9 e6 e1 e5
e3
v3 v4
v3
x3 y3 z3
f3
e10 e7 e2 e6
e4
v4 v1
v4
x4 y4 z4
f4
e11 e8 e 3 e7
e5
v1 v5
v5
x5 y5 z5
f5
e12 e5 e4 e8
e6
v2 v6
v6
x6 y6 z6
f6
e12 e11 e10 e9
e7
v3 v7
v7
x7 y7 z7
e8
v4 v8
v8
x8 y8 z8
e9
v5 v6
e10
v6 v7
e11
v7 v8
e12
v8 v5
Таким образом, для каждого ребра мы задаем направление. Например, ребро e1
направлено ( имеет положительное направление) от точки v1 к точке v2. Грани также
ориентированы, т.е. ребра заданы по часовой стрелке, если смотреть на куб снаружи.
Графические поверхности
Графическая поверхность
описывается множеством отдельных точек,
принадлежащих этой поверхности. Поточечное описание применяется в случаях
сложных негладких поверхностей, которые имеют разрывы, отверстия и т. д. Это
могут быть грунтовые поверхности, рентгеновские снимки и др. Существует много
способов изображения графической поверхности.
Параметрическое описание поверхностей
Для аналитического представления поверхности используется параметрическое
описание или описание неявными функциями. Параметрическими поверхностями
считаются поверхности, заданные в виде:
X=X(u,t)
35
Y=Y(u,t)
Z=Z(u,t) u и t – параметры, изменяющиеся в заданных пределах.
Для одной фиксированной пары (u t) можно вычислить положение только одной
точки поверхности. Для полного представления всей поверхности нужно с
определенным шагом перебрать множество пар (u t) из диапазона их значений,
вычисляя каждый раз X,Y,Z.
 
Плоскость, проходящая через точку (x0,y0,z0) и векторы n1 и n2 , исходящие из
этой точки определяется системой уравнений:
x=x0+u*n1x+t*n2x
y=y0+u*n1y+t*n2y
z=z0+u*n1z+t*n2z

nmx nmy nmz – проекции n m (m=1,2) на оси 0X0Y0Z.
Кубические сплайны
(параметрические кубические кривые)
При создании сложных криволинейных поверхностей изображения широкое
применение находят гладкие сплайновые поверхности. Математическими сплайнами
называются функции, используемые для аппроксимации кривых. Нам необходимо
решить задачу проведения гладких кривых по заданным граничным точкам, т. е.
задачу интерполяции. Важным свойством сплайнов является простота их вычислений.
На практике обычно используются сплайны вида полиномов третьей степени. С их
помощью удобно проводить кривые, которые соответствуют человеческому
субъективному понятию гладкости. Термин «сплайн» означает гибкую полоску стали,
которую применяли чертежники для проведения плавных кривых.
Минимум
интегральной кривизны сплайного объекта дают кубические сплайны, т. е
используются функции полиномом третьей степени.
Интерполяционным кубическим сплайном называется кусочно-определенная
функция, которая обладает свойствами:
- она проходит через все узлы интерполяции;
- на каждом интервале интерполяции описывается кубическим (линия (pi(t)) или
бикубическим (поверхность pij(t,τ)) полиномом;
- кусочные полиномы гладко сопрягаются друг с другом в узлах интерполяции.
Y=S(x)
x0
x1 x2 x3
x4
xi
Сплайновая функция
36
На рисунке показана сплайновая функция одной переменной, для построения
которой на плоскости задается ряд точек.
Функция Si(x) ищется на каждом из отрезков [xi,xi+1] в виде полинома третьей
степени:
3
S i ( x)   aij ( x  xi ) j
j 0
Задача построения полинома сводится к нахождению коэффициентов aij.
Если кривые задаются в трехмерном пространстве, то функция ищется в
параметрическом виде. Кубический полином, который описывает криволинейный
сегмент записывается в виде:
x(t )  a x t 3  bx t 2  c x t  d x
y( y)  a y t 3  by t 2  c y t  d y
z (t )  a z t 3  bz t 2  c z t  d z
Существует другой способ задания параметрического кубического сплайна. Им
является указание координат начальной и конечной точек, а также векторов
касательных в этих точках. Такой способ задания называется формулой Эрмита.
R1
Р2
Р1
R4
Параметрический сплайн в форме Эрмита. Вытянутость кривой вправо
обеспечивается тем, что |R1|>|R4|. Кривые Эрмита просты в обработке с точки зрения
визуализации.
Следующий способ задания– это задание параметрических сплайнов в форме
Безье. Полезным свойством сплайнов в форме Безье является то, что кривая всегда
лежит внутри выпуклой оболочки, образованной четырехугольником Р1 Р2 Р3 Р4.
Точки Р1 Р2 Р3 Р4 называются контрольными точками, они используются для
определения положения касательных векторов.
37
Р2
Р4
Р1
Р3
Параметрический сплайн в форме Безье
Каркасное изображение сплайновой поверхности
из-за криволинейных
каркасных линий является гладким. Этим она отличается от полигонального каркаса,
построенного на тех же узловых точках. Возможность расчета любых промежуточных
точек позволяет строить сплайновую поверхность с более мелкими ячейками без
нового расчета параметров сплайнов. Сплайновое описание поверхности приходит на
смену полигональному, оно широко применяется в промышленных САПР. Имея
уравнение поверхности, мы получаем возможность доступа к любой ее точке,
возможность преобразования, изображения в желаемой проекции, изготовления
натурной модели, программирования станка с числовым управлением и т. д.
Конструктивное моделирование представляет собой объекты комбинацией
простых плоских и объемных примитивов. Простота примитивов означает
относительную простоту математических расчетов и удобство конструирования из них
произвольных
тел.
Многообразие
конструкций
достигается
аффинными
преобразованиями примитивов.
Метод построения охватывающих оболочек
Для ускорения расчетов в задачах ориентации и пересечения сложные объекты
часто окружаются виртуальными габаритными оболочками простой формы в виде
сферы или параллелепипеда. Метод оболочек получил широкое распространение в
системах машинной графики из-за резкого сокращения трудоемкости решаемых задач
трассировки лучей и визуализации. Суть метода в том, что сложный 3d-объект с
большим числом разных полигональных или криволинейных, плоских или объемных,
выпуклых или невыпуклых ячеек окружается виртуальной выпуклой оболочкой более
простой формы, чем объект.
Назначение оболочек
1. Оболочки локализуют часть пространства, которое содержит объект.
2. Заменяют выполнение вычислений со сложной поверхностью объекта
вычислениями с его простой оболочкой. Оболочки обновляются после каждого
геометрического преобразования, приводящего к изменению модели. Модели
оболочки добавляют к списку объектов моделей сцены.
Применение оболочек эффективно во многих задачах, т. к. они экономят
машинные ресурсы. Их применяют в алгоритмах, использующих трассировку лучей,
при обработке столкновений движущихся объектов, в системах анимации,
моделирования и автоматизированного проектирования. В этом случае практикуется
38
эскизное изображение звеньев сложной формы в виде охватывающих их оболочек
параллелепипедов. Это повышает эффективность проектирования и ускоряет вывод
по сравнению с каркасной и сплошной моделями, за счет исключения трудоемкой
визуализации сложных поверхностей и оптических эффектов. Наиболее
распространены сферические, габаритные и полигональные оболочки.
Геометрические задачи визуализации
Главная геометрическая задача визуализации – это отсечение элементов, не
попавших в область отображения сцены и удаление элементов, заслоненных другими
элементами от наблюдателя.
Алгоритмы визуализации
Метод обратной трассировки лучей
Построение компьютерного изображения трехмерных объектов и сцен основано
на методе обратной трассировки лучей. Этот метод моделирует процесс
распространения световых лучей от момента их испускания до взаимодействия с
объектами сцены и попадания в приемник. Основная идея метода сводится к
повторению на ЭВМ всех геометрических преобразований, которые бы совершил
световой луч на пути источник – объект – приемник (глаз наблюдателя). Обычно
ограничиваются трассировкой выборочных лучей, достаточных для достижения
желаемой реалистичности изображения сцены, т. е. совокупности объектов и
окружающего их интерьера. Например, для изображения полностью видимого отрезка
прямой линии необходимо два луча, проведенных через его концевые точки. Основная
задача метода трассировки лучей состоит в определении освещенности произвольной
точки поверхности и части световой энергии, которая содержится в отраженном и
преломленных лучах. Освещенность создается первичной энергией источников света
и вторичной энергией лучей, отраженных от других объектов сцены. Отсутствие
освещенности означает затененность точки. Существование и интенсивность
вторичной энергии определяются свойствами материалов: прозрачностью, цветом,
шероховатостью и отражательной способностью поверхности. Для каждого луча
решается задача пересечения с объектами сцены. Распространяясь прямолинейно, луч
либо проходит мимо всех объектов и покидает сцену, либо пересекает первый
встретившийся на его пути объект. В точке пересечения часть световой энергии
поглощается материалом поверхности, а оставшаяся часть энергии первичного луча
делится на вторичные лучи: отраженный и преломленный. Вторичные лучи при
распространении со следующей поверхностью образуют третичные лучи и т. д. Любое
взаимодействие с поверхностью уменьшает суммарную энергию отраженных и
преломленных лучей. Через определенное число столкновений с поверхностью
объектов интенсивность луча затухает. Достоинство метода обратной трассировки
лучей в высоком реализме получаемого изображения, но метод требует большого
объема вычислений.
Суть метода обратной трассировки лучей заключается в следующем.
1. Из точки наблюдения сцены посылается в пространство виртуальный луч, по
траектории которого должно прийти изображение в точку наблюдения
39
2. Для определения параметров приходящего луча все объекты сцены проверяются
на пересечение с траекторией наблюдения. Если пересечения не происходит,
считается, что луч попал в фон сцены и приходящая информация определяется
только параметрами фона. Если траектория пересекается с объектом, то в точке
соприкосновения рассчитывается свет, уходящий в точку наблюдения в
соответствии с параметрами материала.
3. Сначала просчитывается преломленный и отраженный свет, затем проверяется
видимость из точки пересечения всех источников света и интенсивность светового
потока. Также вычисляется наличие, резкость и ширина бликов от каждого
источника света.
4. Полученные в результате итоговые значения света и интенсивности
обрабатываются с учетом траектории луча и параметров атмосферы, и
присваиваются точке объекта как значения визуализации для наблюдателя. Затем
процесс повторяется для всех элементов сцены.
Применение сложных математических моделей позволяет имитировать такие
физические эффекты как взрывы, дождь, огонь, дым, туман. Существуют методы
расчета процедурных эффектов и взаимодействия систем частиц. Самые совершенные
на сегодняшний день устройства созданы для обучения пилотированию космических
кораблей. Моделированием и визуализацией объектов заняты специализированные
графические станции, построенные на мощных RISC-процессорах.
5. Построение реалистических изображений
Процесс создания реалистичного изображения сцены можно представить как
графический конвейер, на который различные объекты ставят свои элементы – точки,
отрезки, полигоны – для последующей обработки. Пройдя через участки
геометрических преобразований в пространстве, они проецируются на картинную
плоскость, отсекаются окном вывода, далее элементы поступают на этап удаления, где
определяется их взаимное экранирование и степень видимости наблюдателем. В
результате из видимых фрагментов формируется растр изображения в желаемой
цветовой палитре: черно-белой или цветной. Далее рассчитывается цвет, освещение,
тени, фактура и другие параметры, окончательно создающие реалистичное
изображение. Процессы создания реалистических изображений используются при
синтезе реалистичных изображений и при реалистичном оживлении синтезированных
объектов. В расчетах учитывают следующие источники света: излучающие и
отражающие источники; точечные источники; распределенные источники; рассеянный
свет, в расчетах участвуют типы поверхностей: отражающие; поглощающие;
полупрозрачные; рассеивающие.
5.2. Простая модель освещения
Световая энергия, падающая на поверхность, может быть поглощена, отражена
или пропущена. Частично она поглощается и превращается в тепло, а частично
отражается или пропускается. Объект можно увидеть, только если он отражает или
пропускает свет; если же объект поглощает весь падающий свет, то он невидим и
называется абсолютно черным телом. Количество поглощенной, отраженной или
пропущенной энергии зависит от длины волны света. При освещении белым светом, в
котором интенсивность всех длин волн снижена примерно одинаково, объект
выглядит серым. Если поглощается почти весь свет, то объект кажется черным, а если
только небольшая его часть - белым. Если поглощаются лишь определенные длины
40
волн, то у света, исходящего от объекта, изменяется распределение энергии и объект
выглядит цветным. Цвет объекта определяется поглощаемыми длинами волн.
Свойства отраженного света зависят от строения, направления и формы
источника света, от ориентации и свойств поверхности. Отраженный от объекта свет
может также быть диффузным или зеркальным. Диффузное отражение света
происходит, когда свет как бы проникает под поверхность объекта, поглощается, а
затем вновь испускается. При этом положение наблюдателя не имеет значения, так как
диффузно отраженный свет рассеивается равномерно по всем направлениям.
Зеркальное отражение происходит от внешней поверхности объекта.
При диффузном отражении пользуются законом Ламберта:
Падающий свет рассеивается во все стороны с одинаковой интенсивностью.
Освещенность точки пропорциональна доле ее площади, видимой от источника.
Итак, свет точечного источника отражается от идеального рассеивателя по
закону косинусов Ламберта: интенсивность отраженного света пропорциональна
косинусу угла между направлением света и нормалью к поверхности, т. е.
I = Ilkdcosθ 0 <= θ <= π/2
где I - интенсивность отраженного света, Il - интенсивность точечного
источника, kd - коэффициент диффузного отражения (0 <= kd <= 1), θ - угол между
направлением света и нормалью к поверхности. Если θ > π/2, то источник света
расположен за объектом. Коэффициент диффузного отражения k d зависит от
материала и длины волны света, но в простых моделях освещения обычно считается
постоянным.
Поверхность предметов, изображенных при помощи простой модели освещения
с ламбертовым диффузным отражением, выглядит блеклой и матовой.
Предполагается, что источник точечный, поэтому объекты, на которые не падает
прямой свет, кажутся черными. Однако на объекты реальных сцен падает еще и
рассеянный свет, отраженный от окружающей обстановки, например от стен комнаты.
Рассеянному свету соответствует распределенный источник. Поскольку для расчета
таких источников требуются большие вычислительные затраты, в машинной графике
они заменяются на коэффициент рассеяния - константу, которая входит в формулу в
линейной комбинации с членом Ламберта:
I = Iaka + Ilkdcosθ 0 <= θ <= π/2
где Ia - интенсивность рассеянного света, ka - коэффициент диффузного
отражения рассеянного света (0 <= ka <= 1). Пусть даны два объекта, одинаково
ориентированные относительно источника, но расположенные на разном расстоянии
от него. Если найти их интенсивность по данной формуле, то она окажется
одинаковой. Это значит, что, когда предметы перекрываются, их невозможно
различить, хотя интенсивность света обратно пропорциональна квадрату расстояния
от источника, и объект, лежащий дальше от него, должен быть темнее. Если
предположить, что источник света находится в бесконечности, то диффузный член
модели освещения обратится в нуль. В случае перспективного преобразования сцены в
качестве коэффициента пропорциональности для диффузного члена можно взять
расстояние d от центра проекции до объекта. Но если центр проекции лежит близко к
объекту, то 1/d2 изменяется очень быстро, т. е. у объектов, лежащих примерно на
одинаковом расстоянии от источника, разница интенсивностей чрезмерно велика. Как
41
показывает опыт, большей реалистичности можно добиться при линейном затухании.
В этом случае модель освещения выглядит так:
I = Iaka + (Ilkdcosθ)/(d + K)
где K - произвольная постоянная.
Если предполагается, что точка наблюдения находится в бесконечности, то d
определяется положением объекта, ближайшего к точке наблюдения. Это означает,
что ближайший объект освещается с полной интенсивностью источника, а более
далекие — с уменьшенной. Для цветных поверхностей модель освещения применяется
к каждому из трех основных цветов.
Интенсивность зеркально отраженного света зависит от угла падения, длины
волны падающего света и свойств вещества. Зеркальное отражение света является
направленным. Угол отражения от идеальной отражающей поверхности (зеркала)
равен углу падения, в любом другом положении наблюдатель не видит зеркально
отраженный свет. Если поверхность не идеальна, то количество света, достигающее
наблюдателя, зависит от пространственного распределения зеркального отраженного
света. У гладких поверхностей распределение узкое или сфокусированное, у
шероховатых — более широкое.
Благодаря зеркальному отражению на блестящих предметах появляются
световые блики. Из-за того что зеркально отраженный свет сфокусирован вдоль
вектора отражения, блики при движении наблюдателя тоже перемещаются. Более
того, так как свет отражается от внешней поверхности (за исключением металлов и
некоторых твердых красителей), то отраженный луч сохраняет свойства падающего.
Например, при освещении блестящей синей поверх ности белым светом возникают
белые, а не синие блики.
Закраска объектов с гладкими формами
В большинстве случаев объекты задаются набором плоских выпуклых граней.
Поэтому при построении изображения естественно воспользоваться этой простотой.
Существуют три простейших метода закраски, дающих достаточно приемлемые
результаты - метод постоянного закрашивания, метод Гуро, метод Фонга.
Flat- метод постоянного закрашивания
самый простой из всех методов.
Основная идея: каждая грань закрашивается одним цветом.
Рис. 3.2.1
Рассчитывается яркость в одной точке (например, в центре тяжести для выпуклых
многоугольников) грани (по Ламберту) и производится заливка грани полученным
цветом.
42
Метод закраски Гуро
Обеспечивает непрерывность освещенности. Основная идея: заливка осуществляется с
учетом линейной интерполяции яркости, вычисляется яркость только для вершин
многоугольника.
S
S
V3
V1
1)
V3
V2
V1
2)
Рис. 3.2.2
V2
Пусть задана плоская грань V1 V2 V3(рис 5.2.2). Найдем значение освещенности в
каждой ее вершине. Обозначим получившиеся значения через I1, I2, I3. Рисуя грань V1
V2 V3 построчно (рис 5.2.3), находим значения освещенности в конце каждого
горизонтального отрезка путем линейной интерполяции значений вдоль ребер. При
рисовании очередного отрезка AB будем считать, интенсивность изменяется от I(A) до
I(B) линейно.
V1
A
B
P
V2
V3
Рис 3.2.3
Недостаток метода в том, что если источник света проецируется в плоскость
многоугольника, то, после использования этого метода заливки, будет получен
результат рис. 3.2.2 (1), хотя должно быть рис.3.2.2 (2).
Закраска по Фонгу
N=const
const, если прожектор
S= Var, если точечный источник света
43
N, S – для Ламберта
N, S, P – для Фонга
В основе метода лежит интерполяция векторов
Основная идея: для каждой точки изображения устанавливаются пространственные
координаты, исходя из которых получаем яркость для точки.
Недостаток метода – большая сложность вычислений.
Моделирование освещения методом наложения текстуры
Используется только для Ламберта и точечного источника света
N=const
S=Var
P – не учитывается
Задачу закраски объектов, состоящих из отдельных граней можно решить с помощью
текстурирования. Можно упростить вычисления, сведя метод Фонга к процедуре
нанесения текстуры.
Рис. 3.2.4
44
Z
N
S

D
Y
G

(x,y)
O
2
x +y
X
2
S-точечный источник света, в центре будет максимальная яркость
Рис. 3.2.5
Основная идея: в памяти рассчитывается текстура рис. 3.2.4, затем заливка объектов
осуществляется с использованием полученной текстуры.
 Расчет вспомогательной текстуры.
Для каждой точки текстуры рассчитывается яркость
Максимальная яркость будет в точке максимально приближенной к источнику
света.
Итак, закраска поверхностей осуществляется методами Гуро или Фонга. В
первом случае цвет примитива рассчитывается лишь в его вершинах, а затем линейно
интерполируется по поверхности. Во втором случае строится нормаль к объекту в
целом. Ее вектор интерполируется по поверхности составляющих примитивов и
освещение рассчитывается для каждой точки. Свет, уходящий с поверхности в
конкретной точке в сторону наблюдателя, представляет собой сумму компонентов,
умноженных на коэффициент, связанный с материалом и цветом поверхности в
данной точке. К таковым компонентам относятся:
- свет, пришедший с обратной стороны поверхности, т.е. преломленный свет
- свет, равномерно рассеиваемый поверхностью
- зеркально отраженный свет
- блики, т.е. отраженный свет источников
собственное свечение поверхности.
5.4. Тени
Если положения наблюдателя и источника света совпадают, то теней не видно,
но они появляются, когда наблюдатель перемещается в любую другую точку.
Изображение с построенными тенями выглядит гораздо реалистичнее, и, кроме того,
тени очень важны для моделирования. Например, особо интересующий нас участок
45
может оказаться невидимым из-за того, что он попадает в тень. В прикладных
областях - строительстве, разработке космических аппаратов и др. - тени влияют на
расчет падающей солнечной энергии, обогрев и кондиционирование воздуха.
Наблюдения показывают, что тень состоит из двух частей: полутени и полной
тени. Полная тень - это центральная, темная, резко очерченная часть, а полутень окружающая ее более светлая часть. В машинной графике обычно рассматриваются
точечные источники, создающие только полную тень. Распределенные источники
света конечного размера создают как тень, так и полутень: в полной тени свет вообще
отсутствует, а полутень освещается частью распределенного источника. Из-за
больших вычислительных затрат, как правило, рассматривается только полная тень,
образуемая точечным источником света. Сложность и, следовательно, стоимость
вычислений зависят и от положения источника. Легче всего, когда источник
находится в бесконечности, и тени определяются с помощью ортогонального
проецирования. Сложнее, если источник расположен на конечном расстоянии, но вне
поля зрения; здесь необходима перспективная проекция. Самый трудный случай,
когда источник находится в поле зрения. Тогда надо делить пространство на секторы и
искать тени отдельно для каждого сектора.
Для того чтобы построить тени, нужно по существу дважды удалить невидимые
поверхности: для положения каждого источника и для положения наблюдателя или
точки наблюдения, т. е. это двухшаговый процесс. Тень может образовываться двояко:
это собственная тень и проекционная. Собственная тень получается тогда, когда
сам объект препятствует пропаданию света на некоторые его грани. При этом
алгоритм построения теней аналогичен алгоритму удаления нелицевых граней: грани,
затененные собственной тенью, являются нелицевыми, если точку наблюдения
совместить с источником света.
Если один объект препятствует попаданию света на другой, то получается
проекционная тень. Чтобы найти такие тени, нужно построить проекции всех
нелицевых граней на сцену. Центр проекции находится в источнике света. Точки
пересечения проецируемой грани со всеми другими плоскостями образуют
многоугольники, которые помечаются как теневые многоугольники и заносятся в
структуру данных. Для того чтобы не вносить в нее слишком много многоугольников,
можно проецировать контур каждого объекта, а не отдельные грани.
После добавления теней к структуре данных, как обычно, строится вид сцены из
заданной точки наблюдения. Отметим, что для создания разных видов не нужно
вычислять тени заново, так как они зависят только от положения источника и не
зависят от положения наблюдателя.
5. Построение реалистических изображений
5.5. Фактура
В машинной графике фактурой называется детализация строения
поверхности. Обычно рассматриваются два вида детализации. Первый состоит в том,
чтобы на гладкую поверхность нанести заранее заданный узор. После этого
поверхность все равно остается гладкой. Наложение узора на гладкую поверхность
выполняется с помощью функции отображения. Второй тип детализации заключается
в создании неровностей на поверхности. Такие шероховатые поверхности реализуются
путем внесения возмущений в параметры, задающие поверхность.
46
Download