рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

ОСНОВЫ КОМПЬЮТЕРНОЙ ГРАФИКИ - раздел Компьютеры, Министерство Образования И Науки Российской Федерации Федеральное Го...

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

 

А.Ю. Дёмин

 

 

О С Н О В Ы К О М П Ь Ю Т Е Р Н О Й

Г Р А Ф И К И

    Издательство

УДК 681.3.06 (082.5)

ББК

Рецензенты

 

Доктор технических наук,
– заведующий кафедрой программирования Томского государственного университета, профессор

А.Ю. Матросова

Доктор технических наук,
профессор кафедры автоматизированных систем управления

Томского государственного университета систем управления и радиоэлектроники, профессор
М.Ю. Катаев

 

 

© ФГБОУ ВПО НИ ТПУ, 2011

© Демин А.Ю. 2011

© Оформление. Издательство Томского
политехнического университета, 2011


Введение

Если заглянуть в историю, то можно проследить, как с момента появления первых ЭВМ люди стремятся разнообразить способы общения человека и машины, приблизившись к уровню общения человека с человеком. Это общение было бы гораздо более ограниченным, если бы не использовало один из наиболее простых способов — язык изображений, образов. Сегодня графические изображения на экране монитора современного персонального компьютера стали для нас нормой, совершенно неотъемлемым атрибутом интерфейса. Спектр применения компьютерной графики, помимо средства интерфейса «человек-машина», чрезвычайно широк: от создания рекламных роликов, компьютерных мультфильмов и игр, кроя одежды, малых и монументальных форм дизайна, компьютерной живописи до визуализации результатов научных изысканий [10]. Можно с уверенностью сказать, что популярность Internet, и в частности WWW, во многом объясняется широким применением графики.

Рынок программного и аппаратного обеспечения компьютерной графики – один из самых динамичных. Об этом можно судить по объему литературы и числу сервисов Internet, посвященных так или иначе компьютерной графике.

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

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

Программный код, приведенный в пособии, создан в MS Visual Studio 2010 на языке C#.

Способы представления изображений в ЭВМ

Трехмерное изображение отличается от двухмерного, тем, что строится исходя из математического описания некоторой трехмерной сцены. Математическое… Вопросы 2D, 3D графики, общего геометрического моделирования, связанные с… На специализацию в отдельных областях указывают названия некоторых разделов: инженерная графика, научная графика,…

Растровое представление изображений

Возьмём фотографию (например, см. рис. 1.1). Конечно, она тоже состоит из маленьких элементов, но будем считать, что отдельные элементы мы… Теперь наложим на изображение прямоугольную сетку. Таким образом, разобьем… Как мы видим, изображение стало состоять из конечного числа прямоугольников определённого цвета. Эти прямоугольники…

Параметры растровых изображений

Разрешение (resolution) — это степень детализации изображения, число пикселей (точек), отводимых на единицу площади. Поэтому имеет смысл говорить о… Поскольку изображение можно рассматривать применительно к различным… § разрешение оригинала;

Векторное представление изображений

Вернемся к изображению на рис. 1.1. Взглянем на него по-другому. На изображении легко можно выделить множество простых объектов — отрезки прямых,…   Рис. 1.5. Векторное изображение и узлы его примитивов

Представление изображений с помощью фракталов

Фрактал (лат. fractus — дробленый, сломанный, разбитый) — сложная геометрическая фигура, обладающая свойством самоподобия, то есть составленная из… Для классификации фракталов часто используют деление на следующие классы: § геометрические фракталы;

Геометрические фракталы

Рассмотрим один из таких фрактальных объектов - триадную кривую Коха. Построение кривой начинается с отрезка единичной длины (рис. 1.6) - это 0-е…    

Алгебраические фракталы

Фазовое пространство — пространство, на котором представлено множество всех состояний системы, так, что каждому возможному состоянию системы… Известно, что нелинейные динамические системы обладают несколькими устойчивыми… Таким образом, фазовое пространство системы разбивается на области притяжения аттракторов. Если фазовым является…

Системы итерируемых функций

IFS представляет собой систему функций из некоторого фиксированного класса функций, отображающих одно многомерное множество на другое. Наиболее… X1' = A*X + B*Y + C Y1' = D*X + E*Y + F

Представление цвета в компьютере

Свет и цвет

Свет может рассматриваться либо как электромагнитная волна, либо как поток фотонов. Одной из характеристик электромагнитной волны является ее длинна… На практике мы редко сталкиваемся со светом какой то определенной длинны… Источник или объект является ахроматическим, если наблюдаемый свет содержит все видимые длины волн в приблизительно…

Цветовые модели и пространства

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

Цветовая модель RGB

Поскольку в RGB модели происходит сложение цветов, то она называется аддитивной (additive). Именно на такой модели построено воспроизведение цвета… Значения координат R, G и B можно считать принадлежащими отрезку [0,1], что… Голубой (0, 1, 1) Зеленый (0, 1,…

Субтрактивные цветовые модели

  .  

Модели HSV и HSL

В цветовом пространстве модели HSV (Hue, Saturation, Value), иногда называемой HSB (Hue, Saturation, Brightness), используется цилиндрическая… Основание конуса представляет яркие цвета и соответствует V = 1. Тон (H)… Конус имеет единичную высоту (V = 1) и основание, расположенное в начале координат. В основании конуса величины H и S…

Системы управления цветом

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

Графические файловые форматы

Форматов графических файлов существует великое множество и выбор приемлемого отнюдь не является тривиальной задачей. Для облегчения выбора… По типу хранимой графической информации: § растровые (TIFF, GIF, BMP, JPEG);

BMP

BMP (от англ. BitMap Picture) — формат хранения растровых изображений. BMP был создан компанией Microsoft и широко используется в операционных системах семейства Windows.

Глубина цвета в данном формате может быть 1, 2, 4, 8, 16, 24, 32, 48 бит на пиксель, максимальные размеры изображения 65535×65535 пикселей. Однако, глубина 2 бит официально не поддерживается.

Формат BMP является примером хранения полноцветных изображений. В этом случае, цвета пикселей можно определять, явно задавая несколько параметров цвета. Например, в RGB-модели конечный цвет каждого пикселя определяется тремя слагаемыми для трех основных цветов.

В формате BMP есть поддержка сжатия по алгоритму RLE. Алгоритм RLE или алгоритм кодирования повторов оперирует сериями данных, то есть последовательностями, в которых один и тот же символ встречается несколько раз подряд. При кодировании строка одинаковых символов, составляющих серию, заменяется строкой, которая содержит сам повторяющийся символ и количество его повторов.

Рассмотрим изображение, состоящее из строки белых и черных пикселей. Опишем эту строку как:

WWWWBWWWWBBBWWWWBWWWW

Здесь B представляет чёрный пиксель, а W обозначает белый. Если мы применим RLE кодирование к этой строке, то получим следующее:

4W1B4W3B4W1B4W

Файлы формата BMP могут иметь расширения .bmp, .dib и .rle. DIB означает аппаратно-независимый растр (Device Independent Bitmap). При использовании этого формата программист может получить доступ ко всем элементам структур, описывающих изображение, при помощи обычного указателя. Но эти данные не используются для непосредственного управления экраном, так как они всегда хранятся в системной памяти, а не в специализированной видеопамяти. Формат пикселя в оперативной памяти может отличаться от того формата, который должен заноситься в видеопамять для индикации точки такого же цвета. Например, в DIB-формате может использоваться 24 бита для задания пикселя, а графический адаптер в этот момент может работать в режиме HighColor с цветовой глубиной 16 бит. При этом ярко-красная точка в аппаратно-независимом формате будет задаваться тремя байтами 0x0000ff, а в видеопамяти — словом 0xF800.

DDB означает аппаратно-зависимый растр (Device Dependent Bitmap, DDB). Этот формат всегда содержит цветовые коды, совпадающие с кодами видеобуфера, но храниться он может как в системной, так и в видеопамяти. В обоих случаях он содержит только коды цвета в том формате, который обеспечит пересылку изображения из ОЗУ в видеопамять при помощи простого копирования.

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

Кроме поддержки полноцветных изображений формат BMP может обеспечивать хранения изображений с использованием индексированной палитры. Второй подход заключается в том, что в первой части файла, хранящего изображение, хранится «палитра»,в которой с помощью одной из цветовых моделей кодируются цвета, присутствующие на изображении. А вторая часть, которая непосредственно описывает пиксели изображения, фактически состоит из индексов в палитре.

Формат BMP может использовать режим индексирования цветов при следующих значениях глубины цвета: 1 бит (2 цвета), 2 бита (4 цвета), 4 бита (16 цветов), 8 бит (256 цветов).

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

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

TIFF

TIFF (англ. Tagged Image File Format) — формат хранения растровых графических изображений. Изначально был разработан компанией Aldus в сотрудничестве с Microsoft. TIFF был выбран в качестве основного графического формата операционной системы Mac OS X. В настоящее время авторские права на спецификации формата принадлежат компании Adobe.

Принцип хранения данных в TIFF основан на использовании специальных маркеров (тэгов) в сочетании с битовыми последовательностями кусков растра.

Формат TIFF поддерживает большую глубину цвета: 8, 16, 32 и 64 бит на канал при целочисленном кодировании, а также 32 и 64 бит на канал при представлении значения пикселя числами с плавающей запятой.

Структура формата гибкая и позволяет сохранять изображения в режиме цветов с палитрой, а также в различных цветовых пространствах: бинарном (двуцветном), полутоновом, с индексированной палитрой, RGB, CMYK, YCbCr, CIE Lab. Помимо традиционных цветов CMY формат поддерживает цветоделение с большим числом красок, в частности систему Hexachrome компании Pantone. В систему Hexachrome, известную как CMYKOG, добавлены оранжевые и зеленые краски для лучшего представления цветов при печати.

Помимо прочих достоинств формат TIFF позволяет сохранять растровые изображения с компрессией без потери качества. Этот формат поддерживает сжатие без потери качества по алгоритму LZW-компрессии.

Алгоритм Лемпеля — Зива — Велча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь данных. Алгоритм на удивление прост. Если в двух словах, то LZW-сжатие заменяет строки символов некоторыми кодами. Это делается без какого-либо анализа входного текста. Вместо этого при добавлении каждой новой строки символов просматривается уже существующая таблица строк. Сжатие происходит, когда код заменяет строку символов. Коды, генерируемые LZW-алгоритмом, могут быть любой длины, но они должны содержать больше бит, чем единичный символ. Первые 256 кодов (когда используются 8-битные символы) по умолчанию соответствуют стандартному набору символов. Остальные коды соответствуют обрабатываемым алгоритмом строкам. Простой метод может работать с 12-битными кодами. Значения кодов 0 - 255 соответствуют отдельным байтам, а коды 256 - 4095 соответствуют подстрокам.

Приведем пример LZW кодирования применительно к изображению. Так, если в изображении имеются наборы из розового, оранжевого и зелёного пикселей, повторяющиеся 50 раз, LZW выявляет это, присваивает данному набору отдельное число (например, 7) и затем сохраняет эти данные 50 раз в виде числа 7. Метод LZW, так же, как и RLE, лучше действует на участках однородных, свободных от шума цветов, он действует гораздо лучше, чем RLE, при сжатии произвольных графических данных, но процесс кодирования и распаковки происходит медленнее.

Кроме LZW-компрессии формат TIFF поддерживает следующие алгоритмы сжатия:

§ RLE;

§ LZ77;

§ ZIP;

§ JBIG;

§ JPEG;

§ CCITT Group 3, CCITT Group 4.

При этом JPEG является просто инкапсуляцией формата JPEG в формат TIFF. Формат TIFF позволяет хранить изображения, сжатые по стандарту JPEG, без потерь данных (JPEG-LS).

GIF

Первая версия формата GIF (Graphics Interchange Format, «Формат для обмена графической информацией») была разработана в 1987 г. специалистами компьютерной сети CompuServe. Этот формат сочетает в себе редкий набор достоинств, неоценимых при той роли, которую он играет в WWW. Сам по себе формат содержит уже достаточно хорошо упакованные графические данные.

Формат GIF использует для хранения изображений индексированную палитру, ограничивающую количество цветов 256 значениями. Размер палитры может быть и меньше. Если в изображении используется, скажем, 64 цвета (26), то для хранения каждого пикселя будет использовано ровно шесть бит и ни битом больше.

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

Изменив порядок следования данных в файле, создатели GIFa заставили картинку рисоваться не только сверху вниз, но и, если можно так выразиться, «с глубины к поверхности», – то есть становиться все четче и детальнее по мере подхода из сети новых данных.

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

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

PNG

PNG (portable network graphics) - растровый формат хранения графической информации, использующий сжатие без потерь по алгоритму Deflate.

PNG поддерживает три основных типа растровых изображений:

§ Полутоновое изображение (с глубиной цвета 16 бит);

§ Цветное индексированное изображение (палитра 8 бит для цвета глубиной 24 бит);

§ Полноцветное изображение (с глубиной цвета 48 бит).

Формат PNG спроектирован для замены устаревшего и более простого формата GIF, а также, в некоторой степени, для замены значительно более сложного формата TIFF. Алгоритм сжатия Deflate является свободным в отличие от защищенного патентами и соответственно платного LZW, используемого в GIF. В отличии от LZW кодирования, которое позволяет эффективно сжимать горизонтальные одноцветные области, с Deflate сжатием можно забыть про эти ограничения.

В формате GIF один из цветов в палитре может быть объявлен «прозрачным». В этом случае в программах, которые поддерживают прозрачность GIF (например, большинство современных браузеров) сквозь пиксели, окрашенные «прозрачным» цветом будет виден фон. Однако создатели PNG пошли еще дальше, разработав технологию альфа-канала. Альфа-канал позволяет добиться эффекта частичной прозрачности пикселей. Также, в PNG поддерживается гамма-коррекция. Гамма-коррекция - коррекция функции яркости в зависимости от характеристик устройства вывода. Повышение показателя гамма-коррекции позволяет повысить контрастность, разборчивость тёмных участков изображения, не делая при этом чрезмерно контрастными или яркими светлые детали снимка.

 

Кроме этого PNG формат имеет следующие преимущества перед GIF:

§ практически неограниченное количество цветов в изображении (GIF использует в лучшем случае 8-битный цвет);

§ двумерная чересстрочная развёртка;

§ возможность расширения формата пользовательскими блоками.

К недостатком формата, можно отнести, что PNG изначально был предназначен лишь для хранения одного изображения в одном файле. Поэтому данный формат не поддерживает анимацию. Для решения этой проблемы создана модификация формата APNG.

JPEG

JPEG (Joint Photographic Experts Group, по названию организации-разработчика) - один из популярных графических форматов, основанный на алгоритме сжатия JPEG и применяемый для хранения фотоизображений и подобных им изображений.

Алгоритм JPEG разработан группой экспертов из Международной организации по стандартизации (ISO) специально для сжатия полноцветных 24-битовых изображений.

Процесс сжатия по схеме JPEG состоит из нескольких шагов. На первом шаге производится преобразование изображения из цветовой модели RGB в модель YUV, основанной на характеристиках яркости и цветности.

В модели YUV, Y-компонента – светлота (яркость). Компоненты U и V содержат информацию о цвете.

На следующем после преобразования шаге изображение разделяется на квадратные участки размером 8х8 пикселей. После этого над каждым участком производится дискретное косинус-преобразование (ДКП). При этом выполняется анализ каждого блока, разложение его на составляющие цвета и подсчет частоты появления каждого цвета.

Если говорить научным языком, то JPG использует для сохранения ряды Фурье и при больших степенях сжатия просто отбрасывает члены ряда высшего порядка.

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

На следующем этапе изображение представляется строками чисел, которые можно сжимать дальше. Поскольку в результате предыдущей обработки строки содержат много нулей, последняя стадия кодирования выполняется по алгоритму Хаффмана, что дает хорошие результаты и позволяет получить файл в 10–500 раз меньше, чем ВМР.

В дополнении к стандарту JPEG, ориентированным прежде всего на сжатие с потерями, был разработан стандарт на сжатие без потерь — JPEG-LS (в котором, однако, предусмотрен также режим сжатия с ограниченными потерями).

Алгоритм сжатия, лежащий в основе JPEG-LS, использует адаптивное предсказание значения текущего пикселя по окружению, включающему уже закодированные пиксели.

К недостаткам сжатия по стандарту JPEG следует отнести появление на восстановленных изображениях при высоких степенях сжатия характерных артефактов (заметных искажений изображения).

PDF

Формат PDF (Portable Document Format) предложен фирмой Adobe как независимый от платформы формат, в котором могут быть сохранены и иллюстрации (векторные и растровые), и текст, причем со множеством шрифтов и гипертекстовых ссылок. Для достижения продекларированной в названии переносимости размер PDF-файла должен быть малым. Для этого используется компрессия (для каждого вида объектов применяется свой способ). Например, растровые изображения записываются в формате JPEG.

Для работы с этим форматом компания Adobe выпустила пакет Acrobat. Бесплатная утилита Acrobat Reader позволяет читать документы и распечатывать их на принтере, но не дает возможности создавать или изменять их. Acrobat Distiller переводит в этот формат PostScript-файлы. Многие программы (Adobe PageMaker, CorelDraw, FreeHand) позволяют экспортировать свои документы в PDF, а некоторые – еще и редактировать графику, записанную в этом формате. Обычно в этом формате хранят документы, предназначенные только для чтения, но не для редактирования. Файл в формате PDF содержит все необходимые шрифты. Это удобно и позволяет не передавать шрифты для вывода (передача шрифтов не вполне законна с точки зрения авторского права).

PostScript

· векторная графика, позволяющая рисовать прямые линии, дуги, кривые произвольного размера, ориентации, ширины, закрашивать площади любого размера,… · работа с текстом – для вывода текста произвольного размера в различных… · растровые изображенияпозволяют выводить на листе сканированные рисунки или фотографии с масштабированием и…

Растровые алгоритмы

Растровые алгоритмы   Алгоритмы обработки растровых изображений … Рис. 4.1. Классификация растровых алгоритмов

Алгоритмы растеризации

1. Четырехсвязность: пиксели считаются соседними, если либо их x-координаты, либо их y – координаты отличаются на единицу: |x1­ – x2| + |y1 – y2| ≤ 1; 2. Восьмисвязность: пиксели считаются соседними, если их x-координаты и y-координаты отличаются не более чем на…

Растровое представление отрезка. Алгоритм Брезенхейма

0 ≤ yb – ya ≤ xb – xa . Тогда отрезок описывается уравнением: y = ya + (x–xa), x Є [xa, xb] или y = kx + b. Отсюда получаем простейший алгоритм растрового представления отрезка:

Кривые Безье

Построение кривых Безье является решением задачи аппроксимации, то есть построения кривой по узловым точкам. При этом кривая не обязательно проходит… Кривая Безье это параметрическая кривая, задаваемая выражением:

Линейные кривые

При n = 1 кривая представляет собой отрезок прямой линии, опорные точки P0 и P1 определяют его начало и конец. Кривая задаётся уравнением:

B(t) = (1–t) P0 + t P1 t Є [0, 1].

 

Квадратные кривые

B(t) = (1–t)2 P0 +2t(1-t) P1 + t2 P2 t Є [0, 1].  

Кубические кривые

  B(t) = (1–t)3 P0 + 3t(1-t)2 P1 + 3t2(1-t) P2 + t3 P3 t Є [0, 1].  

Сплайн Безье

1. непрерывность заполнения сегмента между начальной и конечной точками; 2. инвариантность относительно аффинных преобразований. Как следствие поворот… 3. кривая Безье принадлежит выпуклой оболочке опорных точек, т.е. кривая всегда располагается внутри фигуры,…

Закраска области, заданной цветом границы

Задача заполнения области заданным цветом в случае, когда эта область не является выпуклой, может оказаться довольно сложной. Приведем простейший рекурсивный алгоритм заполнения области:  

Заполнение многоугольника

Часто возникает задача заполнения многоугольников, заданных набором вершин.

Задача заполнения многоугольников решается в два этапа:

1) сначала проводится операция отсечения многоугольника;

2) затем производится заполнение полученных многоугольников.

Этап отсечения необходим для определения реальных областей многоугольника, которые будут выведены на экран. Это необходимо, если многоугольник больше или выходит за пределы экрана или окна вывода.

Отсечение многоугольников

Рассмотрим алгоритм Сазерленда-Ходгмана (Sutherland-Hodgman). В алгоритме используется стратегия «разделяй и властвуй», которая позволяет решение… … Рис. 4.10. Последовательное отсечение многоугольника

Заполнение многоугольников

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

Методы устранения ступенчатости

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

Лестничный эффект проявляется:

1) при визуализации мелких деталей;

2) при прорисовке ребер и границ;

3) при анимации мелких деталей.

Опишем основные методы устранения ступенчатости.

Метод увеличения частоты выборки

  Увеличение разрешения в два раза   + + + + + + + + + + …

Метод, основанный на использовании полутонов

В этом эвристическом методе интенсивность пикселя на ребре устанавливается пропорционально площади части пикселя, находящегося внутри многоугольника.

 

Рис. 4.14. Закраска ребра

На рис. 4.14 приводится многоугольник, ребро которого сгенерировано основным алгоритмом Брезенхейма. Пиксели в этом ребре и внутренние пиксели многоугольника полностью закрашены. Пиксели, находящиеся выше ребра, закрашиваются с различной интенсивностью, которая пропорциональна площади пикселя, попадающего внутрь многоугольника.

Методы обработки изображений

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

Яркость и контраст

Яркость (brightness) представляет собой характеристику, определяющую то, на сколько сильно цвета пикселей отличаются от чёрного цвета. Например,… В цветовом пространстве RGB , яркость можно рассматривать как среднее… Контраст (contrast) представляет собой характеристику того, насколько большой разброс имеют цвета пикселей…

Масштабирование изображения

Возникает вопрос о том, каким образом определять цвета при изменении размеров изображения. Существует два основных подхода к этой проблеме: 1. Цвет пикселя в масштабированном изображении принимается равным цвету… 2. Использование интерполяции. В этом случае цвет пикселя масштабируемого изображения вычисляется, как значение…

Преобразование поворота

1. Области изображения, вышедшие за его границы при повороте отсекаются, а незаполненные части заполняются каким-либо цветом. 2. Рассчитывается новый размер изображения на основе угла поворота таким… В любом случае для расчёта преобразования поворота может быть использована следующая формула:

Цифровые фильтры изображений

Цифровые фильтры позволяют накладывать на изображение различные эффекты, например: размытие, резкость, деформацию, шум и т. д.

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

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

Линейные фильтры

Результатом служит изображение B. В приведенной формуле не определены пределы…

Сглаживающие фильтры

, а сумма по всем элементам матрицы равна, таким образом, единице. При… Рис. 4.19. Пример использования сглаживающего фильтра

Контрастоповышающие фильтры

Например, контрастоповышающим фильтром является фильтр с ядром, задаваемым матрицей: либо матрицей:

Разностные фильтры

Результат показывает, насколько «резко» или «плавно» меняется яркость изображения в каждой точке, а значит, вероятность нахождения точки на грани, а… Если на изображении будет присутствовать однотонная область или область с… Математически, градиент функции двух переменных для каждой точки изображения (которой и является функция яркости) —…

Нелинейные фильтры

Линейные фильтры, несмотря на разнообразие производимых ими эффектов, не позволяют проделывать некоторые самые естественные операции. Хорошим… Величина γ является порогом фильтрации. Пороговая фильтрация может быть использовано как предварительный этап…

Преобразования растровых изображений

Векторизация с помощью волнового алгоритма

Различают следующие виды векторизации: § Автоматическая векторизация — перевод растровых изображений чертежей… § Ручная векторизация — перевод бумажных чертежей в электронный вид перечерчиванием каждого документа вручную в…

Построение скелета изображения

При 4-х связном растре распространение идет в форме ромба (рис. 5.2, а), при 8-связном – в виде квадрата (рис. 5.2, б). Если попеременно… При распространении сферической волны на отрезке прямой наблюдаются следующие…     а)   б)   в)

Оптимизация скелета изображения

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

Сегментация изображений

Цель сегментации заключается в упрощении и/или изменении представления изображения, чтобы его было проще и легче анализировать. Сегментация и… Методы сегментации можно разделить на два класса: автоматические – не… Далее рассмотрим только автоматические методы. Задачи автоматической сегментации делятся на два класса:

Методы, основанные на кластеризации

После сведения задачи сегментации к задаче кластеризации можно воспользоваться любыми методами кластерного анализа. Наиболее популярные методы… Алгоритм k-средних — это итеративный метод, который используется, чтобы… 1. Выбрать K центров кластеров, случайно или на основании некоторой эвристики.

Алгоритм разрастания регионов

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

Компьютерная геометрия

Двумерные преобразования

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

Преобразование единичного квадрата

  Применение общего матричного преобразования к единичному квадрату приводит… .

Отображение

В то время как чистое двумерное вращение в плоскости xy осуществляется вокруг оси, перпендикулярной к этой плоскости, отображение определяется поворотом на 180° вокруг оси, лежащей в плоскости ху.

Такое вращение вокруг линии у = х происходит при использовании матрицы .

Преобразованные новые выражения определяются соотношением

.

Вращение вокруг у = 0 получается при использовании матрицы

.

Однородные координаты

, , .

Двумерное вращение вокруг произвольной оси

. Выполнив две операции умножения матриц, можно записать  

Трехмерные преобразования

  Если ось вращения Положительным будет направление поворота X От y к z Y От z к x …   Рис. 6.6. Трехмерная система координат

Трехмерное изменение масштаба

Рассмотрим частичное изменение масштаба. Оно реализуется следующим образом:

S(Sx,Sy,Sz,1)= ,

т. е. [x,y,z,1]*S(Sx,Sy,Sz)=[Sx*x,Sy*y,Sz*z,1].

Общее изменение масштаба получается за счет 4-го диагонального элемента, т. е.

 

[x y z 1] * = [x y z S] = [x* y* z* 1] = [ ].

 

Такой же результат можно получить при равных коэффициентах частичных изменений масштабов. В этом случае матрица преобразования такова:

S= .

 

Трехмерный сдвиг

Недиагональные элементы матрицы 3´3 осуществляют сдвиг в трех измерениях, т. е.

[x y z 1]* =[x+yd+hz, bx+y+iz, cx+fy+z, 1].

Трехмерное вращение

Двухмерный поворот, рассмотренный ранее, является в то же время трехмерным поворотом вокруг оси Z . В трехмерном пространстве поворот вокруг оси Z описывается матрицей

 

Rz( )= .

Матрица поворота вокруг оси X имеет вид

Rx( )= .

Матрица поворота вокруг оси Y имеет вид

 

Ry( )= .

Результатом произвольной последовательности поворотов вокруг осей x, y, z является матрица

А= .

Подматрицу 3´3 называют ортогональной, так как ее столбцы являются взаимно ортогональными единичными векторами.

Матрицы поворота сохраняют длину и углы, а матрицы масштабирования и сдвига нет.

Проекции

Будем рассматривать случай проецирования трех измерений в два. Проекция трехмерного объекта (представленного в виде совокупности точек) строится при…   Рис. 6.7. Центральная и параллельная проекции

Математическое описание плоских геометрических проекций

Центральная (перспективная) проекция получается путем перспективного преобразования и проецирования на некоторую двухмерную плоскость «наблюдения».…   [X Y Z H] = [x y z 1]* = [x y 0 (rz+1)].

Изображение трехмерных объектов

Несоответствие между пространственными объектами и плоскими изображениями устраняется путем введения проекций, которые отображают трехмерные объекты…    

Видимый объем

  Рис. 6.20. Картинная плоскость и определяющие ее параметры Картинная плоскость определяется (рис. 6.20) некоторой точкой на плоскости, которую будем называть опорной точкой (ОТ)…

Преобразование видимого объема

В общем, идея заключается в том, чтобы свести преобразование центральной перспективы математически к виду параллельной проекции. Будем решать задачу в два этапа. В начале приведем видимый объем к… Нормирующим преобразованием в этом случае будет операция масштабирования, которая для произвольной точки X выражается…

Представление пространственных форм

Мы остановим внимание на двух широко распространенных трехмерных представлениях поверхностей в пространстве: полигональных сетках и параметрических… При втором способе описания трехмерных форм поверхность может быть разбита на…  

Полигональные сетки

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

· Объем требуемой памяти;

· Простота идентификации ребер, инцидентных вершине;

· Простота идентификации многоугольников, которым принадлежит данное ребро;

· Простота процедуры поиска вершин, образующих ребро;

· Легкость определения всех ребер, образующих многоугольник;

· Простота получения изображения полигональной сетки;

· Простота обнаружения ошибок в представлении (например, отсутствие ребра или вершины или многоугольника).

Рассмотрим подробнее три способа описания полигональных сеток.

Явное задание многоугольников

Каждый многоугольник можно представить в виде списка координат его вершин:

P = ((x1, y1, z1), (x2, y2, z2), … , (xn, yn, zn))

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

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

Задание многоугольников с помощью указателей в список вершин

При использовании этого представления каждый узел полигональной сетки запоминается лишь один раз в списке вершин V =((x1, y1, z1), … , (xn, yn, zn)). Многоугольник определяется списком указателей (или индексов) в списке вершин. Многоугольник, составленный из вершин 3, 5, 7 и 10 этого списка, представляется как Р = (3, 5, 7, 10).

Такое представление имеет ряд преимуществ по сравнению с явным заданием многоугольников. Поскольку каждая вершина многоугольника запоминается только один раз, удается сэкономить значительный объем памяти. Кроме того, координаты вершины можно легко изменять. Однако все еще не просто отыскивать многоугольники с общими ребрами. Ребра при изображении всей полигональной фигуры по-прежнему рисуются дважды. Эти две проблемы можно решить, если описывать ребра в явном виде.

Явное задание ребер

В этом представлении имеется список вершин V, однако будем рассматривать теперь многоугольник как совокупность указателей на элементы списка ребер, в котором ребра встречаются лишь один раз. Каждое ребро в списке ребер указывает на две вершины в списке вершин, определяющие это ребро, а также на один или два многоугольника, которым это ребро принадлежит. Таким образом, мы описываем многоугольник как P =(E1, ..., E2), а ребро — как Е = (V1, V2, P1, P2). Если ребро принадлежит только одному многоугольнику, то либо P1 либо P2 – пусто.

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

В некоторых приложениях ребра полигональных сеток являются общими для более чем двух многоугольников. Рассмотрим, например, случай в картографии, когда такие подразделения, как округа, штаты и т. д., описываются многоугольниками. Ребро (или последовательность ребер), представляющее часть границы между двумя штатами, является также границей округа в каждом штате, а возможно, и города. Таким образом, ребро может принадлежать одновременно шести многоугольникам. Если принять во внимание деление городов на районы, избирательные округа и школьные участки, то это число соответственно возрастет. Для таких приложений описания ребер могут быть расширены, чтобы включить произвольное число многоугольников: Е = (V1, V2, P1, P2, …, Pn).

Ни в одном из этих представлений задача определения ребер, инцидентных вершине, не является простой: для ее решения необходимо перебрать все ребра. Конечно, для определения таких отношений можно непосредственно использовать дополнительную информацию.

Удаление невидимых линий и поверхностей

Классификация методов удаления невидимых линий и поверхностей

Задача удаления невидимых линий и поверхностей является одной из наиболее сложных в машинной графике. Алгоритмы удаления невидимых линий и поверхностей служат для определения линий ребер, поверхностей или объемов, которые видимы или невидимы для наблюдателя, находящегося в заданной точке пространства. Необходимость удаления невидимых линий, ребер, поверхностей или объемов проиллюстрирована рис. Ошибка! Источник ссылки не найден.

 

а б в

Рис. 8.1. Необходимость удаления невидимых линий

На рис. 8.1, а приведен типичный каркасный чертеж куба. Каркасный чертеж представляет трехмерный объект в виде штрихового изображения его ребер. Рис. 8.1, а можно интерпретировать двояко: как вид куба сверху слева или снизу справа. Для этого достаточно прищуриться и перефокусировать глаза. Удаление тех линий или поверхностей, которые невидимы с соответствующей точки зрения, позволяют избавиться от неоднозначности. Результаты показаны на рис. 8.1, б и рис. 8.1, в.

Сложность задачи удаления невидимых линий и поверхностей привела к появлению большого числа различных способов ее решения. Многие из них ориентированы на специализированные приложения. Наилучшего решения обшей задачи удаления невидимых линий и поверхностей не существует. Для моделирования процессов в реальном времени, например для авиатренажеров, требуются быстрые алгоритмы, которые могут порождать результаты с частотой видеогенерации 30 кадр/с. Для машинной мультипликации, например, требуются алгоритмы, которые могут генерировать сложные реалистические изображения, в которых представлены тени, прозрачность и фактура, учитывающие эффекты отражения и преломления цвета в мельчайших оттенках. Подобные алгоритмы работают медленно, и зачастую на вычисления требуется несколько минут или даже часов. Строго говоря, учет эффектов прозрачности, фактуры, отражения и т. п. не входит в задачу удаления невидимых линий или поверхностей. Естественнее считать их частью процесса визуализации изображения. Однако многие из этих эффектов встроены в алгоритмы удаления невидимых поверхностей. Существует тесная взаимосвязь между скоростью работы алгоритма и детальностью его результата. Ни один из алгоритмов не может достигнуть хороших оценок для этих двух показателей одновременно. По мере создания все более быстрых алгоритмов можно строить все более детальные изображения. Реальные задачи, однако, всегда будут требовать учета еще большего количества деталей.

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

Алгоритмы удаления невидимых линий или поверхностей можно классифицировать по способу выбора системы координат или пространства, в котором они работают [7]. Выделяют три класса алгоритмов удаления невидимых линий или поверхностей:

¨ Алгоритмы, работающие в объектном пространстве.

¨ Алгоритмы, работающие в пространстве изображения (экрана).

¨ Алгоритмы, формирующие список приоритетов.

Алгоритмы, работающие в объектном пространстве, имеют дело с физической системой координат, в которой описаны эти объекты. При этом получаются весьма точные результаты, ограниченные лишь точностью вычислений. Полученные изображения можно свободно увеличивать во много раз. Алгоритмы, работающие в объектном пространстве, особенно полезны в тех приложениях, где необходима высокая точность.

Алгоритмы же, работающие в пространстве изображения, имеют дело с системой координат того экрана, на котором объекты визуализируются. При этом точность вычислений ограничена разрешающей способностью экрана. Обычно разрешение экрана бывает довольно низким, типичный пример: 512´512 точек. Результаты, полученные в пространстве изображения, а затем увеличенные во много раз, не будут соответствовать исходной сцене. Например, могут не совпасть концы отрезков. Алгоритмы, формирующие список приоритетов, работают попеременно в обеих упомянутых системах координат.

Объем вычислений для любого алгоритма, работающего в объектном пространстве и сравнивающего каждый объект сцены со всеми остальными объектами этой сцены, растет теоретически, как квадрат числа объектов (n2). Аналогично, объем вычислений любого алгоритма, работающего в пространстве изображения и сравнивающего каждый объект сцены с позициями всех пикселей в системе координат экрана, растет теоретически, как nN. Здесь n обозначает количество объектов (тел, плоскостей или ребер) в сцене, а N — число пикселей. Теоретически трудоемкость алгоритмов, работающих в объектном пространстве, меньше трудоемкости алгоритмов, работающих в пространстве изображения, при n < N. Однако на практике это не так. Дело в том, что алгоритмы, работающие в пространстве изображения, более эффективны потому, что для них легче воспользоваться преимуществом когерентности при растровой реализации.

Алгоритм плавающего горизонта

F(x, у, z) = 0. Подобные функции возникают во многих приложениях в математике, технике,… Главная идея данного метода заключается в сведении трехмерной задачи к двумерной путем пересечения исходной…

Алгоритм Робертса

Работа Алгоритм Робертса проходит в два этапа: 1. Определение нелицевых граней для каждого тела отдельно. 2. Определение и удаление невидимых ребер.

Определение нелицевых граней

Для определения, лежит ли точка в положительном подпространстве, используют проверку знака скалярного произведения (l, n), где l – вектор,… В алгоритме Робертса требуется, чтобы все изображаемые тела или объекты были…   aх + by + cz + d = 0 ( 8.1.)

Удаление невидимых ребер

Возможны следующие случаи: ¨ Грань ребра не закрывает. Ребро остается в списке ребер. ¨ Грань полностью закрывает ребро. Ребро удаляется из списка рассматриваемых ребер.

Методы трассировки лучей

Алгоритм на псевдокоде можно кратко записать так: for all pixels for all objects

Алгоритмы, использующие список приоритетов

Для простых элементов сцены, например для многоугольников, этот метод иногда называют алгоритмом художника, поскольку он аналогичен тому способу,… Для простой сцены, вроде той, что показана на рис. 8.14, а, окончательный…  

Алгоритм Ньюэла-Ньюэла-Санча для случая многоугольников

Если ближайшая вершина Р ( ) будет дальше от точки наблюдения, чем самая удаленная вершина Q ( ), т. е. ≥ никакая часть P не может… Если < , то Р потенциальное экранирует не только Q, но также и любой… ¨ Верно ли, что прямоугольные объемлющие оболочки Р и Q не перекрываются по х?

Алгоритм Варнока (Warnock)

Поскольку алгоритм Варнока нацелен на обработку картинки, он работает в пространстве изображения. В пространстве изображения рассматривается окно и… Кратко опишем оригинальную версию алгоритма, предложенного Варноком. Разобьем видимую часть картинной плоскости на четыре равные части и рассмотрим, каким образом могут соотноситься между…

Алгоритм Вейлера-Азертона (Weiler-Atherton)

Предлагаемый метод работает с проекциями граней на картинную плоскость. В качестве первого шага производится сортировка всех граней по глубине… Затем из списка оставшихся граней берется ближайшая грань A и все остальные грани обрезаются по этой грани. Если…

Методы закраски

Диффузное отражение и рассеянный свет

θ поверхность … Рис. 9.1. Падающий свет и нормаль к поверхности Освещенность рассеянным светом вычисляется по формуле

Зеркальное отражение

Если мы изменим положение головы, то заметим, что световой блик тоже сместится. Это объясняется тем, что блестящие поверхности отражают свет…   q …

Однотонная закраска полигональной сетки

1) однотонная закраска; 2) метод Гуро (основан на интерполяции значений интенсивности); 3) метод Фонга (основан на интерполяции векторов нормали).

Метод Гуро

1. Вычисляются нормали ко всем полигонам. 2. Определяются нормали в вершинах путем усреднения нормалей по всем…  

Метод Фонга

В каждом пикселе вдоль сканирующей строки новое значение интенсивности вычисляется с помощью любой модели закраски. Заметные улучшения по сравнению… Чтобы закрасить куски бикубической поверхности, для каждого пикселя, исходя из…

Тени

Алгоритмы затенения в случае точечных источников света идентичны алгоритмам удаления скрытых поверхностей. В алгоритме удаления скрытых поверхностей определяются поверхности, которые можно увидеть из точки зрения, а в алгоритме затенения выделяются поверхности, которые можно «увидеть» из источника света. Поверхности, видимые как из точки зрения, так и из источника света, не лежат в тени. Те же поверхности, которые видимы из точки зрения, но невидимы из источника света, находятся в тени. Эти рассуждения можно легко распространить на случай нескольких источников света. Отметим, однако, что, используя такой простой подход, нельзя смоделировать тени от распределенных источников света. При наличии таких источников потребуется вычислять как тени, так и полутени.

Поскольку алгоритмы затенения и удаления скрытых поверхностей одинаковы, представляется возможным обрабатывать описание объекта, используя лишь один из этих алгоритмов, последовательно применяя его к точке зрения и к каждому из точечных источников света. Совокупность полученных результатов позволяет определить, какие части объекта видимы наблюдателю и какие видны из одного или нескольких источников света. На основании этой информации осуществляется закраска сцены. Если правильно организовать вычислительный процесс, определение теней можно проводить лишь один раз для серии сцен, которые состоят из одних и тех же объектов, рассматриваемых с различных точек зрения. Источники света предполагаются неподвижными относительно объектов. Все это оказывается возможным потому, что тени не зависят от положения точки зрения.

Поверхности, пропускающие свет

Изложим кратко идею только одного метода (подход Уиттеда), учитывающего пропускающий свет. Данный подход основан на использовании алгоритмов… Id = Ia × ka + Ip × kd × ( × )

Детализация поверхностей

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

Детализация цветом

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

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

Детализация фактурой

Один пиксель на экране может покрывать несколько элементов массива узора. Чтобы избежать проблем, связанных с лестничным эффектом, необходимо… Отображение при такой детализации проводится в два этапа: 1. Фиксированное отображение рисунка на поверхность объекта.

Библиотека OpenGL

Существенным достоинством OpenGL является его широкая распространенность – он является стандартом в мире графических рабочих станций типа Sun,… OpenGL представляет собой программный интерфейс к графическому оборудованию… OpenGL был разработан как эффективный, аппаратно-независимый интерфейс, пригодный для реализации на различных…

Особенности использования OpenGL в Windows

То, что эти библиотеки поставляются в составе операционной системы, значительно упрощает распространение разработанных приложений. То, что OpenGL… Для работы с OpenGL в Windows используется понятие контекста воспроизведения… Таким образом, чтобы начать работать с командами OpenGL, приложение должно создать, как минимум, один контекст…

Основные типы данных

Таблица 1 Типы данных OpenGL Суффикс Описание Тип в C Тип… Некоторые команды OpenGL оканчиваются на букву v. Это говорит о том, что команда получает указатель на массив…

Рисование геометрических объектов

Работа с буферами и задание цвета объектов

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

Для очистки внутренних буферов служит процедура glClear(GLbitfield mask), очищающая буферы, заданные переменной mask. Параметр mask является комбинацией следующих констант:

GL_COLOR_BUFFER_BIT – очистить буфер изображения (фреймбуфер);

GL_DEPTH_BUFFER_BIT – очистить z-буфер;

GL_ACCUM_BUFFER_BIT – очистить аккумулирующий буфер;

GL_STENCIL_BUFFER_BIT – очистить буфер трафарета.

Цвет, которым очищается буфер изображения, задаётся процедурой glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha). Значение, записываемое в z-буфер при очистке, задаётся процедурой glClearDepth(GLfloat depth). Значение, записываемое в буфер трафарета при очистке, задаётся процедурой glClearStencil(GLint s). Цвет, записываемый в аккумулирующий буфер при очистке, задаётся процедурой glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha).

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

Для задания цвета объекта служит процедура

 

glColor{3 4}{b s i f d ub us ui}[v](TYPE red, …).

 

Цифра 3 или 4 указывает на количество требуемых аргументов, а буква, следующая за цифрой, показывает тип аргументов. Например, в процедуру glColor3i будут переданы три параметра целого типа.

Если значение параметра не задано, то оно автоматически полагается равным единице. Версии процедуры glColor, где параметры являются переменными с плавающей точкой, автоматически обрезают переданные значения в отрезок [0, 1].

Процедура glFlush() вызывает немедленное рисование ранее переданных команд. При этом ожидания завершения всех ранее переданных команд не происходит. С другой стороны, команда glFinish() ожидает, пока не будут завершены все ранее переданные команды.

Если нужно включить удаление невидимых поверхностей методом z-буфера, то z-буфер необходимо очистить и передать команду glEnable(GL_DEPTH_TEST). Команду glEnable() можно выполнить только один раз при инициализации системных переменных OpenGL. Очистку z-буфера необходимо производить перед началом построения очередного кадра изображения.

Задание графических примитивов

Все геометрические примитивы в OpenGL задаются в терминах вершин. Каждая вершина задаётся набором чисел, определяющих её координаты в пространстве.

OpenGL работает с однородными координатами (x, y, z, w). Если координата z не задана, то она считается равной нулю. Если координата w не задана, то она считается равной единице.

Под линией в OpenGL подразумевается отрезок, заданный своими начальной и конечной вершинами.

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

Все геометрические объекты в OpenGL задаются посредством вершин, а сами вершины задаются процедурой

 

glVertex{2 3 4}{s i f d}[v](TYPE x, …),

 

где реальное количество параметров определяется первым суффиксом (2, 3 или 4), а суффикс v означает, что в качестве единственного аргумента выступает массив, содержащий необходимое количество координат. Например:

 

glVertex2s(1, 2);

glVertex3f(2.3, 1.5, 0.2);

GLdouble vect[] = {1.0, 2.0, 3.0, 4.0};

glVertex4dv(vect);

 

Для задания геометрических примитивов необходимо как-то выделить набор вершин, определяющих этот объект. Для этого служат процедуры glBegin() и glEnd(). Процедура glBegin(GLenum mode) обозначает начало списка вершин, описывающих геометрический примитив. Тип примитива задаётся параметром mode, который принимает одно из следующих значений:

GL_POINTS – набор отдельных точек;

GL_LINES – пары вершин, задающих отдельные точки;

GL_LINE_STRIP – незамкнутая ломаная;

GL_LINE_LOOP – замкнутая ломаная;

GL_POLYGON – простой выпуклый многоугольник;

GL_TRIANGLES – тройки вершин, интерпретируемые как вершины отдельных треугольников;

GL_TRIANGLE_STRIP – связанная полоса треугольников;

GL_TRIANGLE_FAN – веер треугольников;

GL_QUADS – четвёрки вершин, задающие выпуклые четырёхугольники;

GL_QUAD_STRIP – полоса четырёхугольников.

Процедура glEnd() отмечает конец списка вершин.

Между командами glBegin() и glEnd() могут находится команды задания различных атрибутов вершин: glVertex(), glColor(), glNormal(), glCallList(), glCallLists(), glTexCoord(), glEdgeFlag(), glMaterial(). Между командами glBegin() и glEnd() все остальные команды OpenGL недопустимы и приводят к возникновению ошибок.

Рассмотрим в качестве примера задание окружности:

 

glBegin(GL_LINE_LOOP);

for (int i = 0; I < N; i++)

{

float angle = 2 * M_PI * i / N;

glVertex2f(cos(angle), sin(angle));

}

glEnd();

 

Хотя многие команды могут находиться между glBegin() и glEnd(), вершины генерируются при вызове glVertex(). В момент вызова glVertex() OpenGL присваивает создаваемой вершине текущий цвет, координаты текстуры, вектор нормали и т. д. Изначально вектор нормали полагается равным (0, 0, 1), цвет полагается равным (1, 1, 1, 1), координаты текстуры полагаются равными нулю.

Рисование точек, линий и многоугольников

Для задания ширины линии в пикселях служит процедура gflineWidth(GLfloatwidth). Шаблон, которым будет рисоваться линия, можно задать при помощи… Многоугольники рисуются как заполненные области пикселей внутри границы, хотя… Многоугольник имеет две стороны (лицевую и нелицевую) и может быть отрисован по-разному, в зависимости от того, какая…

Преобразование объектов в пространстве

Преобразования в пространстве

Изначально камера находится в начале координат и направлена вдоль отрицательного направления оси Оz. В OpenGL существуют две матрицы, последовательно применяющиеся в… Существует набор различных процедур, умножающих текущую матрицу (моделирования или проецирования) на матрицу…

Получение проекций

Для задания перспективного преобразования в OpenGL служит процедура gIFrustrum(GLdouble teft, GLdoubte right, GLdouble bottom, GLdouble top,… Параметры определяют плоскости, по которым проводится отсечение. Величины near… Иногда для задания перспективного преобразования удобнее воспользоваться следующей процедурой из библиотеки утилит…

Задание моделей закрашивания

Линия или заполненная грань могут быть нарисованы одним цветом (плоское закрашивание, GL_FLAT) или путём интерполяции цветов в вершинах (закрашивание Гуро, GL_SMOOTH).

Для задания режима закрашивания служит процедура glShadeModel(GLenum mode), где параметр mode принимает значение GL_SMOOTH или GL_FLAT.

Освещение

Для правильного освещения объектов необходимо для каждой грани задать материал, обладающий определенными свойствами. Материал может испускать свой… Пользователь может определить до восьми источников света и их свойства, такие,… Для использования источников света расчёт освещенности следует разрешить командой glEnable(GL_LGHTING), а применение…

Наложение текстуры

Для использования текстуры надо сначала разрешить одно- или двумерное текстурирование при помощи команд glEnable(GL_TEXTURE1D) или… Для задания двумерной текстуры служит процедура glTexlmage2D(GLenum target,… Параметр target зарезервирован для будущего использования и в текущей версии OpenGL должен быть равен GL_TEXTURE_2D.…

Аппаратные средства машинной графики

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

· устройства ввода (сканеры, дигитайзеры/графические планшеты, цифровые фото- и видеокамеры);

· устройства вывода (мониторы, принтеры, плоттеры, цифровые проекторы);

· устройства обработки (графические ускорители, кодеры MPEG и др.).

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

Устройства ввода

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

Сканеры

Принцип действия и виды сканеров Принцип действия практически всех типов сканеров един. Он основан на том, что… Как правило, светочувствительные элементы объединяют в матрицу, для того, чтобы сканировать одновременно целый участок…

Основные характеристики

Разрешение (Resolution) – число точек или растровых ячеек, из которых формируется изображение, на единицу длины или площади. Чем больше разрешение… Аппаратное/оптическое разрешение сканера (Hardware/optical Resolution) – это… Интерполированное разрешение (Interpolated Resolution) – разрешение изображения, полученного при помощи математической…

Фирмы-производители

На мировом рынке представлено достаточно большое число фирм-производителей сканеров. Наиболее популярные модели производят Hewlett-Packard, Agfa, Canon, Mustek.

 

Дигитайзеры

Дигитайзер (графический планшет) — это устройство, предназначенное для оцифровки изображений, применяемое для создания на компьютере рисунков и набросков (рис. 11.2). Художник создает изображение на экране, но его рука водит пером по планшету. Как правило, планшет используют профессиональные художники для более точной обработки (создания) изображений.

 

 

Рис. 11.2. Графический планшет

Кроме того, дигитайзер можно использовать просто как аналог манипулятора «мышь».

Принцип действия

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

Основные характеристики

Шаг считывания регистрирующей сетки является физическим пределом разрешения дигитайзера. Мы говорим о пределе разрешения, потому что следует… Следует отметить, что в работе планшетов возможны помехи со стороны излучающих… Важной характеристикой дигитайзера является регистрируемое число степеней нажатия электронного пера. В существующих…

Фирмы-производители

Наиболее популярны модели следующих фирм: CalComp, NUMONICS, WACOM.

Цифровые фотокамеры

  Рис. 11.3. Цифровая фотокамера Достоинства цифровых фотокамер:

Принцип действия

Кроме CCD, ADC и памяти в электрическую схему цифровой фотокамеры входят процессор DSP, который формирует изображение из цифровых потоков, и… Сменная память используется в цифровых камерах для увеличения количества…

Фирмы-производители

Литература 1. Божко А. Н. Компьютерная графика : [учебное пособие для вузов] / А. Н.… 2. Гринченко В.Т., Мацыпура В.Т., Снарский А.А. Введение в нелинейную динамику. Хаос и фракталы. - 2-е изд.…

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

Учебное пособие   Научный редактор

– Конец работы –

Используемые теги: основы, компьютерной, графики0.067

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ОСНОВЫ КОМПЬЮТЕРНОЙ ГРАФИКИ

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Компьютерная графика. Достоинства компьютерной графики. ОСНОВЫ КОМПЬЮТЕРНОЙ ГРАФИКИ
Компьютерная графика это наука предметом изучения которой является создание хранение и обработка графической информации с помощью ЭВМ... Компьютерная графика в настоящее время сформировалась как наука об аппаратном... В компьютерной графике рассматриваются следующие задачи...

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

Основы планирования. Теоретические основы управления проектами. Основы планирования. Планирование проекта в MS Project 7
Использованная литература В В Богданов Управление проектами в Microsoft Project Учебный курс Санкт Петербург Питер г...

Тематика по дисциплине Компьютерное моделирование в дизайне 2 год обучения, 3 семестр 1.Специфика и возможности векторной компьютерной графики
для студентов направления подготовки Дизайн заочной формы обучения... год обучения семестр...

Компьютерная графика вчера и сегодня
Как же получаются все эти «картинки» на экране ЭВМ? Вы уже хорошо знаете, что любую работу компьютер выполняет по определённым программам, которые… Иначе говоря, человек вручную производил графическую обработку результатов… Дисплей – это устройство вывода информации, хранящейся в памяти ЭВМ. Значит, и «картинки» на экране – это отражение…

Специфика и возможности векторной компьютерной графики
В отличие от растровой графики в векторной графике изображение строится с... Еще одно преимущество качественное масштабирование в любую сторону Увеличение или уменьшение объектов производится...

Тема Основы функционирования глобальной компьютерной сети INTERNET
Тема Основы функционирования глобальной компьютерной сети INTERNET... Раздел САМЫЕ РАСПРОСТРАНЕННЫЕ УСЛУГИ INTERNET... Задание...

Технические устройства, используемые в компьютерной графике
Однако и малое разрешение на большом экране тоже не годится, так как большой экран при малом разрешении отобразит символы и картинки зернистыми.… Весь диапазон цветов, включая белый, может быть представлен только в том… Если сведение лучей недостаточно хорошее, то один из цветных лучей проходит не через то отверстие, через которое…

Компьютерная преступность и компьютерная безопасность
Изменения, происходящие в экономической жизни России - создание финансово-кредитной системы, предприятий различных форм собственности и т.п… Проблемы информационной безопасности постоянно усугубляется процессами… Объектами посягательств могут быть сами технические средства компьютеры и периферия как материальные объекты,…

Конспект лекций по дисциплине Компьютерная графика
Кафедра Вычислительной Техники... Конспект лекций по дисциплине Компьютерная графика...

0.049
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам