Методы и средства распознавания образов и визуализации

advertisement
Санкт-Петербургский национальный исследовательский университет
информационных технологий, механики и оптики
А.В. Меженин
МЕТОДЫ И СРЕДСТВА
РАСПОЗНАВАНИЯ
ОБРАЗОВ И ВИЗУАЛИЗАЦИИ
Санкт-Петербург
2012
ВВЕДЕНИЕ
1. ОБРАБОТКА ИЗОБРАЖЕНИЙ
1.1. Преобразование яркости и контраста...................................................................... 04
1.2. Нахождение и построение гистограмм ................................................................... 05
1.3. Сжатие изображений. Вейвлеты.............................................................................. 06
2. ОСНОВЫ РАСПОЗНАВАНИЯ ОБЪЕКТОВ
2.1. Алгоритмы поиска характерных точек ................................................................... 12
2.2. Выделение контуров методом Собеля .................................................................... 13
2.3. Инвертирование изображения ................................................................................. 14
2.4. Бинаризация изображения........................................................................................ 14
2.5. Применение фильтров Габора.................................................................................. 14
2.6. Распознавание объектов на основы вычисления коэффициента корреляции..... 15
2.7. Распознавание номерных знаков автомобилей ...................................................... 18
2.8. Обнаружение лиц на изображении.......................................................................... 31
3. ВИЗУАЛИЗАЦИЯ. ОСНОВЫ 3D КОМПЬЮТЕРНОЙ ГРАФИКИ. ГРАФИЧЕСКИЕ
БИБЛИОТЕКИ
3.1. Визуализация в компьютерной графике ................................................................. 36
3.1.1. Компьютерные системы и модели. Периоды развития .............................. 36
3.1.2. Техническая графика. САПР ......................................................................... 39
3.1.3. Визуализация в науке..................................................................................... 41
3.1.4. Визуализация в дизайне................................................................................. 42
3.1.5. Игровые приложения ..................................................................................... 43
3.2. Компьютерная графика реального времени
3.2.1. Графические интерфейсы программирования............................................. 44
3.2.2. Шейдеры и языки программирования шейдеров ........................................ 45
3.2.3. Развитие компьютерной графики реального времени ................................ 48
3.2.4. Особенности в проектировании графических процессоров....................... 48
3.3. Базовые методы и алгоритмы. Визуализация
3.3.1. Трехмерные системы координат. Проекции................................................ 49
3.3.2. Векторы в трехмерном пространстве ........................................................... 51
3.3.3. Матрицы. Преобразования координат ......................................................... 52
3.3.4. Визуализация .................................................................................................. 53
3.3.5. Алгоритмы удаления невидимых линий и поверхностей .......................... 55
3.3.6. Алгоритмы закрашивания видимых поверхностей.................................... 56
3.3.7. Текстуры......................................................................................................... 57
3.3.8. Освещение. Трассировка лучей, радиосити................................................ 57
3.4. Графические библиотеки
3.4.1. Direct X ............................................................................................................ 59
3.4.2. Microsoft XNA ................................................................................................ 60
3.4.3. OpenGL ............................................................................................................ 61
4. СИСТЕМЫ 3D МОДЕЛИРОВАНИЯ. ФОТОРЕАЛИСТИЧЕСКАЯ ВИЗУАЛИЗАЦИЯ
4.1. Универсальные пакеты
4.1.1. CAD системы .................................................................................................. 63
4.1.2. 3ds max............................................................................................................. 64
4.1.3. Maya ................................................................................................................. 66
4.1.4. Blender 3D........................................................................................................ 68
4.1.5. Rhinoceros ........................................................................................................ 70
4.1.6. Zbrush. Autodesk Mudbox ............................................................................... 71
2
4.2. Методы компьютерной визуализации..................................................................... 73
4.3. Технология Normal Mapping .................................................................................... 75
4.4. Шейдеры..................................................................................................................... 77
4.5. Системы визуализации .................................................................................................
4.5.1. Mental Ray ....................................................................................................... 80
4.5.2. V-ray................................................................................................................. 95
4.5.3. Maxwell Render ............................................................................................. 125
4.5.4. Yaf(a)Ray ....................................................................................................... 127
Список литературы............................................................................................................... 128
3
1. ОБРАБОТКА ИЗОБРАЖЕНИЙ
1.1. Преобразование яркости и контраста
Преобразование яркости имеет большое значение в обработке цифровых изображений. С
его помощью можно исправлять ошибки экспозиции, выделять темные, либо светлые
области изображения. Рассмотрим несколько определений понятия "яркость". Согласно
колориметрическому определению [G. Wyszecki, W. S. Stiles, Color Science. Concepts and
Methods, Quantitative Data and Formulae, Second Edition, John Wiley & Sons, 2000] яркость –
некоторая характеристика зрительного восприятия. Такое определение не годится для
обработки цифровых изображений. В фотометрии световой поток (luminous flux Pv)
определяется как скалярное произведение функции спектрального распределения энергии
(radiant power) Pe ( ) на функцию V ( ) (spectral luminous efficiency function). В цветовом
телевидении в качестве яркости выбрана координата Y в цветовой координатной системе
YUV. Такое пределение не совпадает с фотометрическим, так как цветовая координатная
система YUV не линейна, т. е. сумме стимулов [1], [5] в YUV не соответствует сумма их
координат, в отличие, например, от линейной цветовой координатной системы CIE XYZ
1931. Одной из разновидностей YUV является широко используемая в современном
программном обеспечении цветовая координатная система YCbCr. Например, в JPEG
сжатии
применяется
следующая
координатная
система
[http://en.wikipedia.org/wiki/YCbCr]:
0.587
0.144   R   0 
 Y   0.299

  
   
0.5
 C b     0.168736  0.331264
   G   128 
C  
0.5
 0.418688  0.081312   B  128 
 r 
где R, G, B – sRGB координаты. Еще одной широко используемой величиной является
светлота канал в цветовой координатной системе CIE L*a*b* (и других ей подобных
цветовых координатных системах, например, PCS Lab [ICC.1:2004-10, Image technology
colour management - Architecture, profile format, and data structures , International Color
Consortium. http://www.color.org], Hunter Lab и т. д.). В различных RGB пространствах для
1
расчета яркости часто используется формула ( R  G  B ) , однако такое определение не
3
очень хорошо соответствует особенностям человеческого зрения.
Методы изменения яркости изображения.
Рассмотрим несколько методов изменения яркости, опирающиеся на приведенные выше
определения. В телевизионном алгоритме каждого элемента изображения задается
формулой Y  Y0  k  Yxy , где базовый уровень яркостного сигнала Y0 устанавливается при
помощи элемента регулировки "яркость". В современных графических редакторах (Adobe
Photoshop, Corel PHOTO-PAINT) операция изменения яркости сводится к
разбеливанию (при увеличении яркости). Триплет (R, G, B) преобразованием яркости с
параметром K преобразуется в (R + K, G + K, B + K). Такой алгоритм полностью
соответствует преобразованию яркости в цветном телевидении.
Для описания телевизионного алгоритма изменения контраста введем ряд обозначений.
Яркость каждого пикселя представляется в виде суммы
Yxy  Y0  Yxy ,
4
где Yxy - YCbCr яркость пикселя в точке (x,y), Y0 - средняя яркость по всему изображению:
1
 Yx, y , где N – число пикселей изображения, а Yxy  Yxy  Y0 .
N x, y
При изменении контраста с (положительным) множителем k, яркость изменяется по
формуле
Yxy'  Y0  k  Yxy .
Y0 
В современных графических пакетах при редактировании изображений в цветовой
координатной системе RGB применяется следующая модификация телевизионного
алгоритма.
Сначала, следуя телевизионному алгоритму, вычисляется средняя яркость Y0 . Потом
для каждого пикселя (x, y) изображения для каждой из цветовых компонент R, G и B
выполняется следующее преобразование:
C xy  C xy  Y0 ;
C xy'  Y0  k  C xy ,
где С – одно из R, G, B. Т.е. , для каждой цветовой компоненты R, G, и B вычисляется ее
отклонение от среднего значения яркости, и это отклонение умножается на коэффициент
усиления (ослабления) контраста.
Рис. 1.1. Изменение яркости и контраста
1.2. Нахождение и построение гистограмм
Гистограмма растрового изображения — это график распределения полутонов
изображения, в котором по горизонтальной оси представлена яркость, а по вертикали —
относительное число пикселей с данным значением яркости. Гистограмма изображения
(иногда: график уровней или просто уровни) — гистограмма уровней насыщенности
изображения (суммарная, или разделённая по цветовым каналам). Гистограмма
изображения позволяет оценить количество и разнообразие оттенков изображения, а
также общий уровень яркости изображения. Например, недоэкспонированное
изображение будет иметь пик в области малых цветов и иметь спад (или полное
отсутствие уровней) в области ярких цветов, переэкспонированное — наоборот.
Изображение с недостаточным динамическим диапазоном будет иметь узкий всплеск
яркостей. Считается, что идеальной формой гистограммы изображения является пологая
гауссиана, в которой мало совсем тёмных и совсем ярких цветов, а по мере приближения к
средним цветам, их количество увеличивается.
5
Для построение гистограммы растрового изображения воспользуемся функцией – imhist
из библиотеки Image Processing Toolbox MATLAB. Функции imhist(I, n) и imhist(BW, n) в
текущем окне строят гистограммы яркостей пикселов соответственно полутонового и
бинарного изображений. Гистограмма состоит из n столбцов. Значение n при вызове
функции можно не указывать, в этом случае будут использованы значения по умолчанию:
n=256 для полутонового изображения и n=2 для бинарного изображения. Под рисунком
гистограммы выводится шкала яркостей.
Пример построения гистограммы:
c=imread('pic01.jpg');
[M,N,K]=size(c); % M - число строк, N - число столбцов
M
N
K
imshow(c)
I=rgb2gray(c);
imhist(I)
Рис. 1.2. Гистограмма изображения
1.3. Сжатие изображений. Вейвлеты
Чтобы изображение можно было хранить, просматривать и обрабатывать на компьютере,
оно должно быть представлено в так называемом цифровом виде. Такое представление
или описание изображения можно выполнить различными способами. Самый простой
способ состоит в сохранении каждого элемента изображения (точки или как принять
говорить пиксель) в виде числа характеризующего либо яркость или цвет. Изображения
представленные таким способом называют растровыми.
По существу, информация о растровом изображении представляется в виде двумерной
матрицы, элементами которой являются числа. В простейшем случае эти числа
соответствуют яркостям пикселей. Кроме этого могут использоваться так называемые
6
индексированные цвета. В этом случае числа матрицы указывают не яркость пикселей, а
ячейку в специальной таблице (палитре) цветов, которая также хранится в файле.
Сжатие (компрессия) имеет очень большое значение при создании, хранении и передаче
графических, видео - и аудио - файлов. Особенно в сети Интернет. Сжатые данные
должны содержать только самую существенную информацию, здесь не должно быть
места избыточным данным. В некотором смысле задача сжатия данных заключается в
извлечении из потока данных самой значимой и уникальной его части, которая позволяет
целиком восстановить всю исходную информацию.
Алгоритмы сжатия, используемые при создании файлов делятся на два класса:
 Сжатие без потерь – по сжатым данным можно полностью восстановить исходную
информацию.
 Сжатие с частичной потерей информации – если допускается неточное
восстановление сжатых данных.
Рассмотрим простейший пример, демонстрирующий более экономное представление
информации. Пусть исходная информация представлена в виде последовательности букв:
ААААААБББВВВВВААААА. Ее можно представить следующим образом А5Б3В4А5,
используя символ буквы и число ее повторений в последовательности. При этом получим
уменьшение объема данных в 2,7 раз. Алгоритм декодирования этой последовательности
очевиден. Если изображение содержит большие области одинаковых пикселей, будет
получен хороший результат сжатия.
Величина допустимого расхождения оригинальных данных и их разжатой копии часто
определяется субъективно по их неразличимости глазом или ухом человека, который, в
конечном итоге является получателем данного рода информации [13]. Алгоритмы могут
иметь различную сложность (быстродействие) и обеспечивать различную степень сжатия.
Вейвлет преобразования
Многомасштабное представление – это многоуровневая структура, первый уровень
которой содержит информацию достаточно грубого (с низким разрешением)
представления объекта. При добавлении информации из каждого последующего уровня
степень детализации постепенно увеличивается до тех пор, пока объект не будет
восстановлен полностью, с максимальным разрешением. С помощью методов,
основанных на многомасштабном представлении, может быть решен широкий круг задач
синтеза, анализа и обработки графических объектов. Кроме того, предлагаемые методы
обеспечивают сокращение объемов данных за счет удаления избыточной и
несущественной информации, снижая, тем самым, вычислительные затраты на
последующую обработку. Алгоритмы обработки многомасштабных представлений,
основанные на вейвлет–преобразованиях (ВП), достаточно просты и эффективны в
реализации, показывают высокое быстродействие и минимальный расход памяти.
Этот метод становится все более важным в сжатии изображений и в компрессии аудиовидео информации. Последовательность шагов, состоящих в вычислении средних
(полусумм) и полуразностей, которые преобразуют одномерный массив исходных данных
к виду, удобному для сжатия. Этот метод обобщается на двумерные массивы данных, что
с успехом можно использовать для сжатия оцифрованных изображений. Рассмотренная
последовательность трансформаций массива данных является простейшим примером
поддиапазонного преобразования.
7
Идея вейвлет-сжатия заключается в следующем (рис. 1). Сначала к изображению
применяется вейвлет-преобразование, а затем из данных преобразованного изображения
удаляются некоторые коэффициенты. К оставшимся коэффициентам может быть
применено кодирование. Сжатое изображение восстанавливается путем декодирования
коэффициентов, если это необходимо, и применением обратного преобразования к
результату. Предполагается, что в процессе удаления части коэффициентов
преобразования теряется не слишком много информации (рис. 2).
W-1
W
Исходное
Вейвлетизображение
преобразование
преобразование
Децимация/квантование
преобразованных компонентов
Обратное
Рис. 1.3. Вейвлет сжатие
Рис. 1.4. Процесс удаления части коэффициентов преобразования
Усреднение и детализация
Рассмотрим изображение, состоящее из двух точек {x1, x2}. Эти значения могут быть
заменены средним значением a и полуразностью d:
a = (x1 + x2)/2
d = (x1 - x2)/2
Заметим, что {x1, x2} можно выразить через {a, d}:
x1 = a + d
x2 = a – d
8
Рассмотрим массив чисел (1, 2, 3, 4, 5, 6, 7, 8). Сначала вычислим четыре средние
величины (1 + 2)/2 = 3/2, (3 + 4)/2 = 7/2, (5 + 6)/2 = 11/2 и (7 + 8)/2 = 15/2. Вычислим
четыре полуразности (1 – 2)/2 = -1/2, (3 – 4)/2= -1/2, (5 – 6)/2 = -1/2 и (7 – 8)/2 = -1/2,
которые будем называть коэффициентами деталей.
Полусуммы можно рассматривать как крупномасштабное представление исходного
образа, а полуразности – числа которые необходимы для восстановления мелких
подробностей или поправок.
Массив (3/2, 7/2, 11/2, 15/2, -1/2, -1/2, -1/2, -1/2), состоящий из четырех полусумм и
четырех полуразностей, можно использовать для восстановления исходного массива
чисел. При таком представлении данных информация не добавляется и не теряется. Но
если значения x1 и x2 не оказываются близкими друг другу, то в этом случае полуразность
d мала, и может быть заменена на нули. Тем самым мы получаем сжатие с потерей части
информации.
Повторим процедуру нахождения полусумм и полуразностей к четырем первым
(крупным) компонентам нашего нового массива. Они преобразуются в два средних и в две
полуразности. Остальные четыре компонента оставим без изменений. Получим массив
(10/4, 26/4, -4/4, -4/4, -1/2, -1/2, -1/2, -1/2).
Следующая и последняя итерация нашего процесса преобразует первые две компоненты
этого массива в одно среднее (которое, на самом деле, равно среднему значению всех 8
элементов исходного массива) и одну полуразность. В итоге получим массив чисел (36/8, 16/8, -4/4, -4/4, -1/2, -1/2, -1/2, -1/2), который называется вейвлет преобразованием Хаара
исходного массива данных.
Оценим сложность этого преобразования (число арифметических операций) как функцию
размера данных.
Для нашего примера требуется 8 + 4 + 2 = 14 операций (сложений и вычитаний). Это
число можно выразить как 14 = 2(8 – 1). В общем случае, пусть имеется N = 2n элементов
массива. На первой итерации потребуется 2n операций, на второй – 2n-1 операций, и так
далее до последней итерации, в которой будет 2n-(n-1) = 21 операции. Значит, суммарное
число операций равно
2 n 1  1
 n i
2   2  1 
 1  2 n 1  2  2(2 n  1)  2( N  1)

2 1
i 1
 i 0 
n
i
Таким образом для совершения преобразования Хаара массива из N элементов
потребуется совершить 2(N - 1) арифметических операций.
Одномерное вейвлет преобразование Хаара легко переносится на двумерный случай.
Здесь снова производится вычисление полусумм и полуразностей. При этом возможны
различные подходы, в частности – стандартное разложение и пирамидальное разложение.
Стандартное разложение начинается вычислением вейвлет преобразований всех строк
изображения (рис. 3). К каждой строке применяются все итерации процесса, до тех пор
пока, самый левый элемент каждой строки не станет равен среднему значению чисел этой
строки, а все остальные элементы будут равны взвешенным разностям. Получится
матрица в первом столбце которой находится среднее столбцов исходного массива. После
9
этого выполняется вейвлет преобразование для каждого столбца. В результате получится
двумерный массив, в котором самый левый верхний угловой элемент равен среднему
всего исходного массива.
Исходный
образ
L1
L2 H2
H1
H2
H1
H1
Рис. 1.5. Стандартное вейвлет разложение
Пирамидальное разложение вычисляет вейвлет преобразование, применяя итерации
поочередно к строкам и столбцам (рис. 4). На первом шаге вычисляются полусуммы и
полуразности для всех строк (только одна итерация, а не все вейвлет преобразование). Это
действие образует полусуммы в левой половине и полуразности – в правой половине. На
втором шаге вычисляются полусуммы и полуразности для всех столбцов получившейся
матрицы[13].
Исходный
образ
L
LL
LH
HL
HH
LH
H
HL
HH
LH
HL
HH
Рис 1.6. Пирамидальное разложение образа
10
Обработка цветных изображений
Сжатие цветных картинок требует предварительно разложения цвета на три
составляющих. В обычной жизни часто можно встретиться с обычным разложением на
три цвета: красный, синий и зелёный. Такое разложение называется RGB:
Рис. 1.7. Разложение на цветовые составляющие
Но при сжатии картинок, в частности, при JPG-сжатии, обычно используют другое
разложение, называемое YCrCb. Y – это набор яркостей, который основывается по
большей части на зелёном цвете, лучше всего воспринимаемом человеческим глазом.
Наборы Cr и Cb хранят ключи для восстановления красного и синего цвета из Y.
Использование разложения YCrCb позволяет сильнее сжимать изображение при меньших
потерях качества, так как главная информация для человека в картинке – это именно
информация о яркости отдельных точек. Составляющие Cr и Cb хорошо сжимаются, не
внося сильных ухудшений в качество картинки, сами по себе они менее чёткие, чем Y:
Рис. 1.8. Разложение в системе YCrCb
Программа разлагает цветное изображение на составляющие RGB компоненты по
следующим фрмулам:
rez = Picture1.Point(X, Y) Mod 256
rez = rez Mod 65536 - rez Mod 256
rez = rez - rez Mod 65536
при это учитывается ограничение установленное применяемыми коэффициентами
If rez < 16 Then rez = 16
If rez > 234 Then rez = 234
Используя полученные RGB составляющие для Wavelet преобразования программа
раскладывает изображение наYCrCb компоненты по соответствующим формулам:
yy = ((77 / 256) * Picture2.Point(X, Y)) + (((128 / 256) *
Picture3.Point(X, Y)) / 256) + (((29 / 256) * Picture4.Point(X, Y)) /
256 / 256)
11
yy = (-(44 /
Picture3.Point(X,
256 / 256) + 128
yy = ((131 /
Picture3.Point(X,
256 / 256) + 128
256) * Picture2.Point(X, Y)) - (((87 / 256) *
Y)) / 256) + (((131 / 256) * Picture4.Point(X, Y)) /
256) * Picture2.Point(X, Y)) - (((110 / 256) *
Y)) / 256) - (((21 / 256) * Picture4.Point(X, Y)) /
К каждому компоненту применяется Wavelet-преобразование. Главная цель этого
преобразования – изменить последовательность цветов (или яркостей) таким образом,
чтобы в этой последовательности было как можно больше идущих подряд одинаковых
значений (как правило, нулевых). Ниже показано графическое представление Waveletпреобразования:
Рис. 1.9. Графическое представление Wavelet-преобразования
Области чёрного цвета – это наборы нулевых значений, которые будут легко сжиматься
при любом архивировании.
2. ОСНОВЫ РАСПОЗНАВАНИЯ ОБЪЕКТОВ
Под распознаванием мы понимаем «отнесение исследуемого объекта, задаваемого в виде
совокупности наблюдений, к одному из взаимоисключающих классов». В таком смысле
«распознавание образов является одной из разновидностей классификации» [Верхаген К.,
Дёйн Р., Грун Ф. Распознавание образов: состояние и перспективы . М.: РиС, 1985. -104с.],
а «в тех случаях, когда каждый класс содержит только один объект, классификация
эквивалентна идентификации». Идентификацией в данном случае понимается
«присвоение рассматриваемому объекту однозначного названия». То есть получение
характерных точек на изображении позволит в дальнейшем классифицировать
рассматриваемый объект (распознать).
В настоящий момент существуют три основных направления в области распознавания:
1. Распознавание с помощью нейронных сетей;
2. Сопоставление изображения с эталоном;
3. Распознавание изображения по характерным точкам (при этом способ получения
характерных точек может отличаться).
В зависимости от объекта распознавания тип и количество методов могут изменяться
(например, для распознавания лиц наряду с перечисленными методами применяют:
распознавание путем эластичного графа, анализ оптических потоков изображений, метод
главных компонент [Самаль Д. И. Алгоритмы идентификации человека по фотопортрету
на основе геометрических преобразований// Диссертация на соискание ученной степени
кандидата наук. Ин-т техн. киберн. НАН Беларуси; Рук. С.В. Абламейко. Мн., 2002.170с.]).
2.1. Алгоритмы поиска характерных точек
12
Как правило, выявление характерных точек на изображении включает следующие
основные этапы:
1. Получение нормализованного полутонового изображения;
2. Поиск исследуемых областей;
3. Выделения краев на исследуемой области (методы Собеля, Лапласса, Кани и т. д.);
4. Преобразование рассматриваемого участка в монохромное изображение;
5. Анализ полученного монохромного и полутонового изображения в исследуемой
области.
Для получения полутонового черно – белого изображения используются следующая
классическая формула:
I (C )  0,3  R (C )  0,59  G (C )  0,11  B(C ) , где
I – интенсивность в точке полутонового изображения, R, G и B (значения 0..255) –
красная, зеленная и синяя компонента цвета С.
2.2. Выделение контуров методом Собеля
Для выделения краев на изображении было предложено применять метод Собеля,
использующий для вычисления градиента первого порядка функции интенсивности
специальные ядра, известные как «операторы Собеля» [3].
 1 0 1


Sx    2 0 2
 1 0 1


- X оператор
Собеля;
  1  2  1


0
0
Sy   0
1
2
1 

- Y оператор
Собеля;
 I11

I
I   21


I
 m1
I12
Im2
I1n 

I 2n 
 

 I mn 

- матрица исходного
изображения, где I ij
значения
интенсивности в
точке.
Ядра применяются к каждому пикселу изображения: он помещается в центр ядра, и
значения интенсивности в соседних точках умножаются на соответствующие
коэффициенты ядра, после чего полученные значения суммируются. Следует отметить,
что для крайних элементов (точек) исходной матрицы изображения I операторы Собеля не
применяются. Х - оператор Собеля, примененный к 3х3 матрице исходного изображения,
дает величину горизонтальной составляющей градиента интенсивности в центральной
точке этой матрицы, а Y - оператор Собеля дает величину вертикальной составляющей
градиента. Коэффициенты ядра выбраны так, чтобы при его применении одновременно
выполнялось сглаживание в одном направлении и вычисление пространственной
производной – в другом. Величина градиента определяется как квадратный корень из
суммы квадратов значений горизонтальной и вертикальной составляющих градиента. В
результате образуется массив чисел
13
I 
S x  I 2  S y  I 2 ,
характеризующих изменения яркости в различных точках изображения.
2.3. Инвертирование изображения
После применения оператора Собеля изображение подвергается инвертированию
а
б
Рис. 2.1. Инвертирование изображения: а) результат применения оператора Собеля; б)
инверсия
В результате применения оператора Собеля получается изображение I  (рис. 1, а) с
выделенными краями. Применив инверсию к I  получим изображение (рис. 2, б):
I   G  I  , где
G – константа равная числу уровней яркости изображения (в данном случае 255).
2.4. Бинаризация изображения
Изображение бинаризируется (преобразуется в монохромное) в соответствии с методом
Отсу [4] I   Ot ( I ) :
0, I ij  T opt ;
I   Ot ( I )  
opt
1, I ij  T ;
где T opt - оптимальный для I  порог бинаризации.
2.5. Применение фильтров Габора
В 1946 г. Д. Габор предложил подход, описывающий некоторую временную функцию, с
одновременным учётом частоты сигнала, который впоследствии стал носить его имя. На
основе этого подхода Дагманн в 1988 году сформулировал двумерное преобразование
Габора [Jain A.K., Ratha N.K. and Lakshmanan S. Object detection using Gabor filters// Pattern
recognition. . 1997. . Vol.30. . N.2. . P.295 . 309.], которое применил для идентификации
человека по изображению радужной оболочки глаза. За последние 5-10 лет фильтры
Габора компактная форма упомянутого преобразования стали широко используемым
инструментом разработчиков систем обработки изображений. Так, например, они
применяются для оценки симметричности текстур и их классификации, обнаружения
движения на видеопоследовательностях [Фомин Я.А., Тарловский Г.Р. Статистическая
теория распознавания образов . М.: РиС, 1986. . 264с., Quan Sh. and Chen D. Discrete Gabor
transform// IEEE Trans. On Signal Processing.- 1993.-Vol.41.- No.7.- P.2429-2438.].
Упорядоченная группа таких фильтров, используемых с разными параметрами, часто
14
называется Габоровскими вейвлетами. Окрестность, окружающая пиксель a(i,j) может
быть описана значениями фильтров Габора, которые в совокупности формируют векторпризнак, характеризующий эту окрестность.
Общий вид фильтра может быть представлен:
ho0  g o0 ( x, y ) expi ( x cos  0  y sin  0 )  , где
 ( x cos  y cos ) 2 ( x cos  y sin  ) 2 
0
0
0
0
exp
g o0 ( x, y ) 


2
2
2 x
2 y
 x y


1
g o0 ( x, y ) является двумерным гауссином с отклонениями  x , y повернутым на угол  0 .
Из анализа выражений следует, что фильтр характеризуется следующими параметрами.
Радиусами эллипса σx и σy, углом ориентации θ. В зависимости от периода cos и sin у
фильтров может быть различное количество пиков (локальных максимумов). Результатом
свёртки фильтра с изображением в некоторой точке (x,y) является комплексное число.
В настоящее время, судя по количеству появляющихся публикаций, фильтры Габора
являются одним из наиболее исследуемых и обещающих подходов в области
распознавания образов и обработки изображений. В ряде случаев они применялись и для
идентификации человека по фотопортрету [Smeraldi F., Carmona O. and Bigun J. Saccadic
search with Gabor features applied to eye detection and real-time head tracking// Image and
Vision Computing. - 2000. - No 18. - P. 323-329.]. Однако все возможности применения
данного инструмента пока не раскрыты из-за большого количества возможных вариантов
фильтров, а также их упорядоченных наборов упорядоченных и произвольных наборов.
2.6. Распознавание объектов на основе вычисления коэффициента корреляции
Рассмотрим метод распознавания объектов на изображении на основе использования
вычисления коэффициента корреляции. В этом случае, для решения такого рода задач
необходимо кроме исходного изображения иметь также изображение объекта, который
необходимо обнаружить на исходном изображении. Описание примера иллюстрируется
использованием функций MATLAB.
Выберем в качестве исходного изображение, содержащее набор букв.
function [] = r01()
L=imread('a.png');
figure, imshow(L);
15
Рис. 2.2. Исходное изображение 100х300
Также нам необходимо иметь эталонные изображения объектов (букв), которые
необходимо распознать.
L1=imread('b.png');
L2=imread('c.png');
Рис. 2.3. Эталонные изображения
Следующий шаг заключается в вычислении коэффициента корреляции между матрицами
исходного изображения и соответствующего эталона. Для этого используется функция
corr2.
Функция r = corr2(A,B) возвращает коэффициент корреляции между двумя матрицами или
векторами A и B. Коэффициент корреляции вычисляются по формуле:
r
 ( A
mn
m
n
 ( A
mn
m
n
 A)( Bmn  B )
 A) 2  ( Bmn  B ) 2
m
, где A  mean 2( A), B  mean 2( B )
n
A=[1 2; 3 4];
B=[3 4; 5 6];
r=corr2(A,B);
r
r=
1
>>
16
A=[1 2; 3 4];
B=[6 5; 4 3];
r=corr2(A,B);
r
r=
-1
>>
Необходимо помнить, что функция corr2 вычисляет коэффициент корреляции между
матрицами одинакового размера. Поэтому из большей матрицы исходного изображения
необходимо вырезать части, которые равны матрице эталонного изображения (см. рис.
2.4). Далее вычисляется коэффициент корреляции между каждой частью исходного
изображения и каждым эталоном.
Рис. 2.4. Выделение части изображения
Итак, коэффициент корреляции между первым эталоном (буква А) и исходным
изображением вычисляется следующим образом.
for p=1:3;
L_t=L(:,SH*(p-1)+1:SH*p);
k(p)=corr2(L1,L_t);
end;
Значения коэффициентов корреляции для первого эталона (буква А) и трех частей
исходного изображения представлены на графике
figure, plot(k);
Расположение максимума коэффициента корреляции свидетельствует о том, что эта часть
исходного изображения максимально похожа на эталон. Определим, расположение
максимального значения коэффициента корреляции.
R=find(k==max(k))
17
R =
1
Из рисунка видно, максимальное значение корреляции достигается между матрицей
первого эталона (буква А) и первой частью исходного изображения, где и размещена
буква А. Аналогичным образом вычисляются коэффициенты корреляции между другими
эталонами (вторым и третьим) и исходным изображением.
а)
б)
в)
Рис. 2.5. График значений коэффициентов корреляции для первого - а, второго – б и
третьего - с эталона и трех частей исходного изображения.
Из двух приведенных выше рисунков видно, что максимального значения коэффициенты
корреляции достигают во второй и третьей части изображения. Это соответствует
наибольшей схожести, т.е. распознаванию второго эталона и второй части исходного
изображения, а также третьего эталона и третьей части исходного изображения.
Таким образом, нами был рассмотрен подход к распознаванию объектов на основе
вычисления коэффициента корреляции между матрицами их изображений. Этот подход
получил довольно широкое распространение. Однако при распознавании реальных
объектов корреляционный метод характеризуется большой вычислительной сложностью.
Связано это с масштабированием и поворотами распознаваемого изображения.
2.7. Распознавание номерных знаков автомобилей
При решении задачи распознавания номерных знаков автомобилей можно выделить два
этапа:
 локализация номерного знака на изображении
 распознавание символов на знаке.
Для этого сформируем исходное изображение и считаем его в рабочее пространство
MATLAB.
I=imread('inputimage.bmp');
figure,imshow(I);
Для упрощения дальнейших расчетов и программной реализации преобразуем исходное
цветное изображений в полутоновое. Для этого воспользуемся функцией rgb2gray,
которая реализует это преобразование.
I=rgb2gray(I);
figure, imshow(I);
18
Рис. 2.6. Преобразование изображения в оттенки серого
Одним из недостатков функции rgb2gray является то, что она не всегда корректно
выполняет преобразование полноцветного изображения в полутоновое. Например, на
полутоновом изображении, в отличие от полноцветного, отсутствуют фары красного
цвета. В данном случае это не является принципиальным, поскольку для нас важно как
обрабатывается изображение номера, но все же для корректности будем использовать
другой подход.
I=I(:,:,1);
I=rgb2gray(I);
Теперь, как и при решении большинства других задач, необходимо провести
предварительную обработку исходных изображений. Этот этап особенно важен при
решении задач распознавания. От качества решения этапа предварительной обработки во
многом будет зависеть эффективность решения задачи распознавания в целом.
К наиболее распространенным дефектам, которые могут присутствовать на исходных
изображениях, относятся шум и низкий уровень контрастности. Продемонстрируем
некоторые способы подавления шума и повышения контрастности исходных изображений
с помощью встроенных функций MATLAB. Для этого сформируем сначала исходное
изображение с наличием шума. В качестве примера рассмотрим импульсный шум.
I=imread('217670.jpg');
figure,imshow(I);
I=rgb2gray(I);
%I=I(:,:,1);
I=imnoise(I,'salt & pepper', 0.005); % Импульсный шум
figure, imshow(I);
Для устранения импульсных выбросов используем медианную фильтрацию, которую
выполним с помощью функции median.
for i=1:N;
for j=1:M-2;
I(i,j)=median(median(I(i,j:j+2)));
end;
end;
figure, imshow(I);
Результат обработки представлен на изображении внизу.
19
Рис. 2.7. Изображение с импульсными шумами и изображение после устранения
импульсных шумов
Фильтр повышения резкости 'unsharp'
Фильтр, повышающий резкость изображения, имеет маску, определяемую следующим
выражением:
  a a 1  a 
1 
h
a  1 a  5 a  1 ,

a 1
  a a  1  a 
где параметр a выбирается в пределах от 0 до 1.
I=imread('z_2e75354a.jpg');
I=rgb2gray(I);
h=fspecial('unsharp', 0.2);
I2 = filter2(h,I)/255;
figure
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(I2);
20
Рис. 2.8. Устранение размытости изображения
Кроме этого, для улучшения качества изображения можно воспользоваться функцией
HISTEQ библиотеки Image Processing Toolbox.
Функция histeq улучшает контраст изображения с помощью преобразования значений
пикселей исходного изображения таким образом, чтобы гистограмма яркостей пикселей
результирующего
изображения
приблизительно
соответствовала
некоторой
предопределенной гистограмме. Данная функция предназначена для преобразования
полутоновых изображений или палитровых изображений.
% test08 Выравнивание гистограммы изображения (histeq)
RGB=imread('z_2e75354a.jpg');
I = rgb2gray(RGB);
J = histeq(I);
figure;
subplot(2,2,1); imshow(I);
subplot(2,2,2); imhist(I);
subplot(2,2,3); imshow(J);
subplot(2,2,4); imhist(J);
Рис. 2.9. Выравнивание гистограммы
Определение расположения номерного знака на изображении
После проведения предварительной обработки изображения необходимо определить
расположение номерного знака. Для этого на изображении ищутся так называемые
связанные области пикселей. Для этого воспользуемся функцией BWLABEL – поиск
объектов, входящей в группу функций Поиск объектов и вычисление их признаков,
библиотеки Image Processing Toolbox.
Функция L=bwlabel(BW, n) ищет на бинарном изображении BW связные области
пикселов объектов и создает матрицу L, каждый элемент которой равен номеру объекта,
21
которому принадлежит соответствующий пиксел изображения BW. Размер матрицы
номеров объектов L равен размеру BW. Объекты нумеруются по порядку начиная с 1.
Элементы, имеющие значение 1, относятся к первому объекту, имеющие значение 2
относятся ко второму объекту и т. д. Если элемент в матрице L равен 0, то это означает,
что соответствующий пиксел исходного изображения относится к фону. Параметр n
указывает критерий связности, используемый для нахождения связных областей объектов. Параметр n может принимать значения 4 или 8 (значение по умолчанию).
Функция [L, num]=bwlabel(BW, n) дополнительно в параметр num возвращает количество
объектов, найденных на изображении BW.
Матрица L имеет формат представления данных double.
I=imread('text1.png');
I =rgb2gray(I);
bw = im2bw(I,0.9);
imshow(bw)
L = bwlabel(bw);
%L
figure,imshow(L == 1)
Рис. 2.10. Результат выполнения функции bwlabel
Аналогичным образом применим функцию bwlabel к изображению с номерным знаком.
I=imread('217670.jpg');
I =rgb2gray(I);
bw = im2bw(I,0.6);
imshow(bw)
[L num] = bwlabel(bw);
num
Получаем общее количество объектов на изображении.
num =
24
Следующий этап – вычисление признаков найденных объектов. Для этого воспользуемся
функцией IMFEATURE из библиотеки Image Processing Toolbox.
Функция feats=imfeature(L, measurements, n) вычисляет признаки всех объектов,
отмеченных в матрице номеров объектов L. Элементы матрицы L, имеющие значение 1,
22
относятся к первому объекту, имеющие значение 2 относятся ко второму объекту и т.д.
Если элемент в матрице L равен 0, то он относится к фону.
Значения признаков возвращаются в массиве структур feats. Количество элементов
массива feats равно максимальному элементу матрицы L(mах(L(:))) и, следовательно,
количеству объектов на изображении. Каждая структура содержит признаки для одного
объекта. Какие именно признаки входят в структуру feats, определяется параметром
measurements. Если в качестве параметра measurements указать строку "all", то будут
вычислены все перечисленные ниже признаки. Если параметр measurements опущен или
является строкой "‘basic", то вычисляются признаки "Area", "Centroid" и "BoundingBox".
Вместо параметра measurements можно через запятую перечислить те признаки, которые
необходимо вычислить. Имена полей структур из массива feats совпадают с именами
вычисляемых признаков.
При вычислении ряда морфометрических признаков используются понятия механики
твердого тела. В частности, это относится к длинам осей инерции объекта. Направления в
теле, совпадающие с полуосями эллипсоида инерции, называют главными осями инерции.
Для нахождения главных осей инерции, лежащих в плоскости объекта, в функции
imfeature используются следующие соотношения [1, 2, 3].
Пусть N - количество пикселей, относящихся к объекту. Все множество пикселей р(х, у),
относящихся к объекту, обозначим Q. Тогда координаты центра масс объекта
вычисляются как
xc 
1
N
x
p ( x , y )
yc 
1
N
y
p ( x , y )
Затем вычисляется несколько вспомогательных величин:
Ux 
1 1

12 N
Uy 
1 1

12 N
 (x  x )
p ( x , y )
2
c
(y  y )
p ( x , y )
2
c
c  (U x  U y ) 2  4  U xy2
Тогда длины максимальной
Amax и минимальной Amin осей инерции вычисляются как:
Amax  2 2  U x  U y  C
Amin  2 2  U x  U y  C
Длины главных осей инерции используются для вычисления эксцентриситета и
ориентации объекта. Эксцентриситет определяется с помощью соотношения
23
2  (0.5  Amax ) 2  (0.5  Amin ) 2
E
Amax
Ориентация определяется как угол в градусах между максимальной осью инерции и осью
X. Если ,
O
U y  U x то ориентация О вычисляется с помощью формулы
U y U x  C 

 arctg 



 2  U xy

180
в противном случае О вычисляется как
O
 2  U xy 

 arctg 



U y Ux  C 
180
Следующий фрагмент кода демонстрирует использование функции imfeature. L – матрица
объектов, полученная на предыдущем шаге.
feats=imfeature(L,'Centroid','Extent',8);
Extent=zeros(num);
CentX=zeros(num);
CentY=zeros(num);
for i=1:1:num;
Extent(i)=feats(i).Extent;
CentX(i)=feats(i).Centroid(1);
CentY(i)=feats(i).Centroid(2);
end;
%Extent
Визуализируем найденный массив координат объектов.
feats=imfeature(L,'Centroid','Extent',8);
Extent=zeros(num);
CentX=zeros(num);
CentY=zeros(num);
for i=1:1:num;
Extent(i)=feats(i).Extent;
CentX(i)=feats(i).Centroid(1);
CentY(i)=feats(i).Centroid(2);
%text(CentX(i),CentY(i),'x','Color',[1 0 0])
text(CentX(i),CentY(i),num2str(i),'Color',[1 0 0])
end;
24
Рис. 2.11. Цифрами обозначены найденные объекты
Приведем результаты вычислений признаков для всех объектов изображения. В качестве
параметра был выбран коэффициент заполнения, который равен отношению площади
объекта к площади ограничивающего прямоугольника.
Extent =
Columns 1 through 10
0.7181
0.7500
0.3818
0.6243
1.0000
1.0000
0.6429
0.5974
0.8161
0.8363
0.3988
0.9286
0.7143
0.8125
0.3553
0.9167
0.5714
0.6250
1.0000
0.5000
1.0000
0.7632
1.0000
0.7273
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Для объекта, который представляет изображение номерного знака, параметр “Extent”
будет равен заранее известному числу. Поскольку соотношение сторон номерных
постоянно, то этот параметр также будет постоянным. Вероятность присутствия на
25
изображении объекта, который описывался бы тем же значением параметра “Extent”,
небольшая. Но для повышения достоверности локализации можно использовать еще и
другие параметры.
Таким образом, зная числовое значение параметра “Extent”, можно определить номер
объекта интереса. Путь это значение будет равно 0.6243. Этому значению соответствуют
координаты (4, 1). Зная эти координаты, из CentX и CentY можно определить координаты
расположения номерных знаков на изображении.
CentX =
Columns 1 through 11
246.6550
92.3333
106.8095
242.5795
116.5000
119.0000
130.7778
132.2391
162.3908
191.6690
247.6890
250.3077
260.7000
276.3077
302.4074
321.3636
327.3750
350.6000
354.0000
357.5000
361.0000
383.2759
412.5000
468.0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
CentY =
Columns 1 through 11
117.6157
140.6667
136.9524
191.3400
141.0000
140.5000
140.2222
191.2826
186.9930
186.5694
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
26
48.7748
182.9692
138.6000
138.3846
138.3333
198.9091
137.8750
138.4000
138.0000
138.2500
137.0000
137.6207
131.0000
127.5000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Таким образом, координаты размещения центра масс интересующего нас объекта, т.е.
номерных знаков, равны
CentX(4,1)
CentY(4,1)
ans =
242.5795
ans =
191.3400
>>
Выделим изображение номерного знака на изображении.
I=imread('217670.jpg');
I =rgb2gray(I);
bw = im2bw(I,0.6);
imshow(bw)
L = bwlabel(bw);
%L
figure,imshow(L == 4)
Рис. 2.12. Результат выполнения функции bwlabel
27
Таким образом, можно определить координаты центра масс объекта, в нашем случае
номерного знака, изображению которого свойственно значение Extent = 0.6243.
Распознавание символов
После локализации номерного знака на изображении, выполняется второй этап –
распознавание символов. Для этого воспользуемся рассмотренным ранее подходом распознавание объектов на основе вычисления коэффициента корреляции.
Первый шаг – выделение части изображения. Результат выполнения функции показан на
рис. 2.13.
function [] = m01()
L=imread('FIN.png');
figure, imshow(L);
%LR = imrotate(L,1,'crop');
p=2;
SH=100;
L_t=L(1:100,1:200);
figure, imshow(L_t);
Рис. 2.13. Исходное изображение с номерным знаком и изображение с выделенной
областью
Для упрощения задачи распознавания символов, определим их точное положение на
изображении с помощью программы Photoshop. Выставляя направляющие и используя
панель Инфо получим координаты расположения первого символа на изображении.
28
46
126
89x135
Рис. 2.14. Определение координат первого символа
Используя исходное изображение и программу Photoshop, создадим эталонное
изображение.
Исследуемое изображение
800x219
89x135
Эталонное
изображение
Рис. 2.15. Исходное и эталонное изображение
29
Создадим функцию, в которой будем перемещать эталон по исходному изображению с
шагом 1px. На каждом шаге, с помощью функции CORR2, будем определять коэффициент
корреляции. Результат выполнения функции представлен на рис. 2.16.
L=imread('FIN.png');
figure, imshow(L);
N8=imread('M.png');
figure, imshow(n8);
w=89; % ширина
h = 135; % высота
for x=1:800;
L_t=L(y:y+h-1,x:x+w-1);
n8 = rgb2gray(N8);
k(x)=corr2(L_t,n8);
%k
end;
figure, plot(k);
title('\bfКоэффициент корреляции')
xlabel('x'), ylabel('k(x)') % метки осей
R=find(k==max(k));
R
Рис. 2.16. Коэффициента корреляции между матрицами исследуемого изображения и
соответствующего эталона
Два выброса на графике коэффициента корреляции показывают координаты совпадения
эталонного изображения и исследуемого. Аналогичным образом, создав набор эталонных
символов можно получить распознавание всех символов номерного знака.
30
2.8. Обнаружение лиц на изображении
Проблема автоматического выделения объектов заданного класса на цифровых
визуальных изображениях актуальна для широкого круга приложений вследствие того,
что технические возможности регистрации визуальных изображений сейчас превосходят
возможности их смысловой обработки. Исследования показывают, что принципы
автоматического обнаружения объектов наиболее надежно выявляются методами
вычислительного эксперимента на примерах высокой практической значимости, для таких
применений обычно уже имеются достаточные базы данных, необходимые для обучения
детектора, его тестирования и контроля результатов. Ключевым примером такого типа
является задача автоматического обнаружения лиц людей на электронных
видеоизображениях – она необходимая для борьбы с терроризмом и преступностью, для
общего контроля перемещения людей, для идентификации личности при банковских
операциях в электронных сетях и для целого ряда смежных задач, где цена ошибочной
идентификации высока. При этом автоматический захват лица требуется выполнять
быстро, точно и надежно, в связи с необходимостью дальнейшего анализа изображения –
например, для идентификации личности по видеоизображению лица.
Задача обнаружения лица на изображении (face detection) находят применение в системах
технического зрения, робототехнике, системах видеонаблюдения и контроля доступа, в
различных интерфейсах взаимодействия человек-компьютер, что говорит об ее
актуальности. В общем виде алгоритмы обнаружения лиц решает следующую задачу: по
произвольному изображению или данным видеопотока на входе системы определить
имеются ли на этом изображении лица, и если да, то указать, где находится каждое лицо и
каков его размер. Основными требованиями, которые предъявляются к подобному классу
алгоритмов, являются: высокое качество распознавания, работа в режиме реального
времени, робастность по отношению к внешним факторам [1-3].
Алгоритмы выделения лиц находят применение в системах технического зрения,
робототехнике, системах видеонаблюдения и контроля доступа, в интерфейсах
взаимодействия человек-компьютер. Работа большинства алгоритмов выделения лиц на
изображениях заключается в сканировании входного изображения окном, имеющим
определенную форму и различный масштаб, и в определении к какому классу относится
изображение внутри этого окна («лицо» либо «не лицо»). Таким образом, задача
выделения лиц на изображениях сводится к построению классификатора, эффективно
разделяющего классы «лиц» и «не лиц» [4].
За последние несколько лет было предложено множество алгоритмов обнаружения лиц,
использующих различные подходы. Основные методы обнаружения лиц на изображениях
можно разделить на четыре категории [5, 6].
Методы, основанные на знаниях
Сначала осуществляется поиск определенных черт лица (глаза, нос, рот) на входном
изображении. Затем найденные кандидаты проверяются на соответствие закодированным
законам, которые используют человеческие знания о том, что собой представляет
типичное человеческое лицо. Законы описывают взаимозависимости между чертами лица,
представленные их положением и расстоянием между ними. Например, лицо на
изображении обычно имеет два глаза, расположенных симметрично относительно носа и
рта.
Методы на основе инвариантных свойств
31
Эти алгоритмы стараются найти инвариантные свойства, которыми обладают области
изображения, где находится лицо, даже при изменении условий освещения, выражения
лица и его положения по отношению к камере. Сначала с помощью глобальных свойств,
таких как цвет кожи, размер и форма лица, находятся кандидаты. Затем осуществляется
проверка отобранных кандидатов с помощью таких черт лица как брови, глаза, нос, рот и
волосы. Черты лица обычно находятся с помощью краевых детекторов.
Методы на основе сравнения с шаблоном
В этом случае выбирается несколько шаблонов лиц или отдельных черт лиц, чтобы в
дальнейшем определить местонахождение лица, посчитав корреляции между входным
изображением и этими шаблонами. Шаблоны лиц (обычно фронтальных) задаются
вручную непосредственно или в виде параметров некоторой функции. Для того чтобы
справляться с разнообразием форм и размеров, применяются масштабируемые,
деформируемые шаблоны, шаблоны с переменным разрешением.
Методы на основе обучения
Алгоритмы на базе методов обучения используют математические модели, которые
обучаются с помощью набора тренировочных изображений. Затем обученные модели
используются для решения задачи обнаружения лиц на изображениях.
Методы, входящие в первые три категории, имеют существенные недостатки. Так,
недостатком методов, основанных на знаниях, является то, что очень сложно
преобразовать человеческие знания в хорошо определенные законы. Если составить очень
детальные (строгие) законы, то система будет отбрасывать лица, которые не
удовлетворяют им полностью. Если законы будут слишком общими, то это приведет к
большому числу неверных обнаружений лиц. К тому же тяжело составить правила для
обнаружения лиц в различных позах, поскольку необходимо предусмотреть все
возможные случаи. Проблемой методов на базе неизменных характерных черт является
то, что эти черты могут быть серьезно повреждены шумами, а также при засвечивании и
затемнении изображения. Лицо может иметь еле заметную границу, в то время как тени
могут дать многочисленные и четкие края, что приведет к некорректной работе алгоритма.
Методы на основе сравнения с шаблоном демонстрируют низкий уровень выделения лиц,
так как они не могут эффективно справляться с разнообразием форм, поз и размеров.
Методы на основе обучения лишены перечисленных выше недостатков, и поэтому
считаются более эффективными. Среди них наибольшее распространение в настоящее
время получили такие подходы как метод главных компонент, линейный
дискриминантный анализ, искусственные нейронные сети, метод опорных векторов [5, 6].
Ошибки в работе систем выделения лиц
Как показывает практика, можно выделить два типа ошибок, возникающих в результате
работы системы выделения лиц: не выделение лица и ложное обнаружение (выделение
объекта, который лицом не является). В связи с наличием двух типов ошибок, существует
два основных параметра, характеризующих эффективность работы алгоритмов
обнаружения лиц: уровень выделения (detection rate), показывающий процент
обнаруженных лиц, и уровень неверного выделения (false positive rate), равный общему
числу ложных обнаружений на специальных тестовых наборах.
32
Перечислим некоторые факторы, влияющие на результат работы системы выделения лиц:
ориентация лиц на изображении, разрешение и качество изображения (зашумленность,
степень сжатия), условия освещения (фиксированные известные, приблизительно
известные, любые), фон (фиксированный, контрастный однотонный, слабоконтрастный
зашумленный, неизвестный).
Библиотека компьютерного зрения OpenCV
OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с
открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки
изображений и численных алгоритмов общего назначения с открытым кодом [1].
Реализована на C/C++, также разрабатывается для Python, Ruby, Matlab, Lua и других
языков. Может свободно использоваться в академических и коммерческих целях —
распространяется в условиях лицензии BSD.
Для использования библиотеки в среде .NET разработана кроссплатформенная оболочка
Emgu CV [2].
Рис. 2.17. Содержимое папки Emgu CV
Пример использования библиотеки OpenCV. Нахождение лиц на фотографии
Для выполнения упражнения создать новый проект – Windows Application в среде
Microsoft Visual C#. Cкопировать DLL библиотеки из папки \Emgu CV\bin в папку \Debug
проекта. В эту же папку скопировать растровое изображение исследуемого объекта.
33
Рис. 2.18. Папка проекта \bin\Debug
В проекте добавить ссылки на библиотеки Emgu.CV.dll и Emgu.Utils.dll (рис. 3).
Рис. 2.19. Окно Solution Explorer
34
Рис. 2.20. Рабочее окно
Листинг 1. Исходный код программы
using
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
Emgu.CV;
Emgu.CV.CvEnum;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (Image<Bgr, Byte> image = new Image<Bgr,
byte>("faces.jpg")) //Read the image as a Bgr 8-bit image
using (Image<Gray, Byte> gray = image.Convert<Gray, Byte>())
//Convert it to Grayscale
35
{
//Read the HaarCascade object
HaarCascade face = new
HaarCascade("haarcascade_frontalface_alt2.xml");
//Detect the faces and store the locations as rectangle
Emgu.CV.Rectangle<double>[][] facesDetected =
image.DetectHaarCascade(face);
foreach (Rectangle<double> f in facesDetected[0])
{
image.Draw(f, new Bgr(255, 0, 0), 2);
}
}
pictureBox1.Image = image.ToBitmap();
}
private void button2_Click(object sender, EventArgs e)
{
//CvInvoke.cvWaitKey(0); //Wait for the key pressing event
//CvInvoke.cvDestroyWindow(win1); //Destory the window
}
}
}
Рис. 2.21. Результат обнаружения лиц на реальном изображении
3. ВИЗУАЛИЗАЦИЯ. ОСНОВЫ 3D КОМПЬЮТЕРНОЙ ГРАФИКИ.
ГРАФИЧЕСКИЕ БИБЛИОТЕКИ
3.1. Визуализация в компьютерной графике
3.1.1. Компьютерные системы и модели. Периоды развития
Компьютерная графика – все, что связано с созданием и отображением визуальной
информации с использование компьютера. Компьютерная графика базируется на
следующих элементах:
 Оборудование (Hardware)
36


Программное обеспечение (Software)
Приложения (Application)
Двумерная графика по типу представления информации и алгоритмам ее обработки
делится в первую очередь на векторную и растровую. Векторная графика базируется на
использовании геометрических примитивов – точки, прямые, окружности. Для
отображения гладких кривых используются сплайны, в первую очередь кривые Безье.
Основные атрибуты векторной графики – толщина, цвет и т.д. Изображение в компьютере
хранится как набор координат, векторов и других числовых данных. Векторное
изображение без искажений может быть трансформировано – масштаб, поворот,
деформации. С помощью векторной графики достаточно просто имитировать
трехмерность. Векторная графика в первую очередь используется для описания
масштабируемых шрифтов. Кроме этого векторная графика широко используется для
деловой графики – чертежи, схемы и т.д. Растровая графика базируется на использовании
двумерного массива пикселей для описания изображения. Каждый пиксель содержит
информацию о цвете, яркости и прозрачности. К недостаткам растровой графики следует
отнести большой объем памяти, необходимый для хранения данных об изображении и
потери качества при редактировании (масштабирование, поворот и т.д).
Трёхмерная графика (3D — от англ. three dimensions — «три измерения») используется
для описания и отображения объектов в трехмерном пространстве. Наиболее
распространенное описание 3D моделей и произвольных поверхностей это полигональное
представление. В качестве полигона обычно используется треугольник. Для описания
вершин треугольника используются вектора в трехмерном пространстве (x, y, z).
Преобразования в 3D графике базируются на использовании матриц преобразований: поворота, сдвига, масштабирования. На экране монитора 3D графика представлена в виде
плоского изображения - проекции. В настоящее время интенсивно ведутся разработки
получения стерео-изображений как на экране, так и без их традиционного использования.
Рассмотрим исторические периоды развития 3D компьютерной графики на базе
использования вычислительных машин для получения и обработки изображений.
Компьютерная графика 1960-1970 годы
Этот период можно охарактеризовать следующими элементами:
 Использование векторных дисплеев для отображения графики.
 Появление первых графических процессоров.
 Разработка основ человеко-машинного взаимодействия.
 Использование светового пера для интерактивного взаимодействия с компьютером.
 Использование каркасных моделей для описания и отображения 3D графики.
 Разработка базовых алгоритмов компьютерной графики.
Большой вклад в развитие компьютерной графики вносят работы Айвена Сазерленда (Ivan
Sutherland) из Массачусетского технологического института. Им создан программноаппаратный комплекс позволяющий рисовать на экране электронно-лучевой трубки
графические примитивы – точки, отрезки, окружности. Реализованы базовые действия с
примитивами: перемещение, копирование и т.д. Фактически реализован первый
векторный редактор.
С точки зрения развития компьютерного оборудования в это время появляется понятие
дисплейный процессор – display processor (DPU) для регенерации изображения на экране
монитора.
37
Host
Display
processor
Электронно-лучевая
трубка – cathode ray
tube (CRT)
Display list
Рис. 3.1. Блок-схема элементов регенерации изображения
Разрабатываются первые библиотеки работы с 3D графикой для языка программирования
Fortran. Тем самым открываются двери для широкого использования компьютерной
графики в области САПР.
Компьютерная графика 1970-1980 годы
Этот период можно охарактеризовать как зарождение растровой графики. Появляются 2D
и 3D графические стандарты GKS - International Organization for Standardization (ISO).
Появляются первые рабочие станции (Workstation) и персональные компьютеры (PCs).
Растровая графика характеризуется как массив (the raster) элементов (pixels) в буфере
кадров (frame buffer). Растровая графика позволяет перейти от каркасного отображения
объемных моделей к закрашенным полигонам.
Рис. 3.2. Объемная модель, отображаемая закрашенными полигонами
В настоящее время уже не делается различия между рабочими станциями и ПК. В то же
время рабочая станция имела сетевое соединение и выполняла задачи клиент-серверного
соединения и характеризовалась высоким уровнем интерактивности. Для ПК того периода
характерно выделение части памяти компьютера под буфер кадров.
Компьютерная графика 1980-1990 годы
В этот период происходит повышение реализма за счет использования следующих
технологий:
 сглаживание - smooth shading;
38


использование растровых изображений (карт) для моделирования окружающей
среды - environmental mapping;
использование растровых изображений для формирования карт глубин
(моделирование неровностей поверхности) - bump mapping.
Рис. 3.3. 3D модели высокого реализма
Появление специализированных процессоров – Silicon Graphics geometry engine. Это сверх
большие интегральные схемы СБИС (VLSI) реализующие графический контейнер. В
области стандартов появляются индустриальные стандарты – Programmer′s Hierarchical
Interactive Graphics System (PHIGS) (API стандарт для визуализации 3D графики) и
RanderMan – промышленный стандарт рендеринга для 3D-анимации компании Pixar.
Именно этот стандарт лег в основу одноименного программного продукта компании Pixar
для рендеринга. RenderMan использовался в производстве таких известных фильмов как
Трансформеры, Человек-паук, Гарри Поттер, Аватар и д.р.
Это период характеризуется появлением сетевой графики - X Window System и развитием
человеко-машинного интерфейса Human-Computer Interface (HCI).
Компьютерная графика 1990-2000 годы
Разработка платформенно-независимого программного интерфейса 2D-3D графики
OpenGL API.
В эти годы появляются первые полнометражные компьютерные фильмы (Toy Story).
Появляются новые аппаратные возможности графических карт:
 текстурирование (texture mapping);
 наложение смешивание (blanding);
 накопление буфера шаблонов (accumulation, stencil buffer).
Компьютерная графика 2000 – годы
Усиление вычислительной мощности способствует повышению фотореализма. В области
разработки и производства графических карт и ускорителей доминируют такие компании
как Nvidia, ATI, 3DLabs. Появляются специализированные игровые приставки – Game
boxes и Game play station. В киноиндустрии все шире применяется компьютерная графика.
Совершенствуются пакеты Maya, 3ds Max, Lightwave. Появляются облачные сервисы
рендеринга – RenderMan Pixar, MentalRay.
3.1.2. Техническая графика. САПР
39
Техническая графика – область, в которой в первую очередь стала активно применяться
компьютерная графика. Современные пакеты САПР позволяют создавать
конструкторские документы на основе набора графических примитивов, а также с
использованием изображений стандартных, типовых и унифицированных деталей и узлов.
Во всех отраслях науки, техники, медицины, в коммерческой деятельности используются
построенные с помощью компьютера чертежи, схемы, графики, диаграммы,
предназначенные для наглядного отображения разнообразной информации (рис.1,2).
Рис. 3.4. Сборочный чертеж
Конструкторы, разрабатывая новые узлы, модели автомобилей и самолетов, используют
различные средства трехмерной графики.
Рис. 3.5. Моделирование технического узла
AutoCAD. На сегодняшний день AutoCAD компании Autodesk – можно считать одна из
самых мощных и распространенных систем автоматизированного проектирования,
работающих на персональных компьютерах. В этой системе можно выполнять
практически все виды чертёжных работ, необходимых в разнообразных областях
технического проектирования.
40
Рис. 3.6. Интерфейс программы AutoCAD
3.1.3. Визуализация в науке
Компьютерная графика, ставшая самостоятельным научным направлением, проникает
сегодня во все сферы интеллектуальной деятельности человека, включая кино и
телевидение, издательские системы, космос и авиацию, медицину, экологический
мониторинг, научные исследования и образование. Многие алгоритмы машинной графики
названы по фамилиям авторов – алгоритмы отсечения Сазерленда (Sazerland), прямые
Брезенхейма и Брассини, кривые Безье, поверхности Кунса, Цао Ена и т.д. Этот список
постоянно пополняется новыми алгоритмами, и соответственно именами их авторов.
Научный аспект компьютерной графики связан с моделированием динамических
процессов, диагностикой и распознаванием образов.
Традиционными объектами для методов визуализации являются скалярные и векторные
поля, поскольку именно в терминах таких полей описываются решения задач, которые
интересуют исследователей. Скалярными полями представляются, например,
температура, плотность
и давление, векторными – скорость, напряженности
электрического и магнитного поля. Минимальная размерность евклидова пространства,
содержащего область определения поля, называется размерностью поля и определяет
сложность визуализации. Наиболее распространенные задачи оперируют с двух- и трехмерными объектами, однако существуют задачи, требующие изучения полей большей
размерности, в частности, задача тензорной геометрии. В зависимости от изучаемого
явления, наряду с самим полем, исследователя могут интересовать отдельные
характеристики этого поля. Приведем несколько простых иллюстрирующих примеров.
При обработке рентгеновского снимка врача интересуют области наибольшей плотности,
соответствующие патологическим явлениям.
При изучении аэродинамического обтекания автомобиля инженерами исследуются
режимы образования рециркуляционных зон в зависимости от скорости обтекания.
Из вышеперечисленного можно сделать вывод, что объекты, представляющие интерес для
исследователя, существенно зависят от изучаемой задачи и для каждого конкретного
случая при визуализации необходимо смещать акценты в зависимости от выбора
проблемы. Естественно, существует набор методов визуализации, предлагаемый
41
стандартными пакетами программ. Каждый конкретный пользователь такого пакета
должен выбрать подходящий ему метод или комбинацию методов, наиболее адекватно
изображающие искомые характеристики изучаемого объекта.
Рис. 3.7. Визуализация средствами компьютерной графики в науке
Ansys. Система инженерного анализа Ansys 12.0 позволяет равный доступ к
высококвалифицированному анализу данных функционального и инженерного состояния
систем сложного взаимодействия. В сжатом цикле работы происходит
последовательность процессов, превышающая по скорости на несколько порядков
реальные исследования условий взаимодействия элементов инженерных устройств.
3.1.4. Визуализация в дизайне
Дизайнеры, как посредники между производителями и покупателями стараются сделать
информацию, которую несет продукт более понятной и ясной, удалить все
неопределенности в его понимании. Это и является наиболее важной задачей.
"Визуализация" является разновидностью эффективной доставки информации до
потребителя. Возможность создавать наглядные зрительные образы помогает дизайнерам
представлять множество своих идей, часть из которых реализуется на практике. Данная
отрасль является перспективным направлением исследований.
Для визуального дизайна продуктов основной целью является с помощью графических и
интуитивно понятных средств, передать информацию и четко и эффективно
взаимодействовать с пользователем и формирование эффективных функций, используя
отображение для выполнения пользовательских целей и задач. Выбирая правильные
элементы интерфейса, пользователь хочет решить задачу быстро и просто. Уменьшая
когнитивную нагрузку на пользователя, мы уменьшаем его физическую нагрузку.
При понимании какой-либо информации пользователь проходит двух этапов: во-первых,
быстрое составление первого впечатления и, во-вторых, детальное изучение конкретного
содержания. При изучении, потребитель хочет получить за короткий промежуток времени
получить как можно больше данных, передаваемых цветом, контрастностью, положением
и формой. Ему необходимо выделить основные функции продукта.
На данный момент визуализацию используют во множестве различных направлений в
дизайне. Давайте рассмотрим основные из них. К важным относятся промышленный
(предметный) дизайн, дизайн интерьеров, экстерьеров и ландшафтов.
Промышленный дизайн.
Промышленный дизайн – это термин, который включает в себя множество продуктов
промышленности. К этим продуктам относятся все виды потребительских товаров,
42
начиная от полиэтиленового пакета, и заканчивая, к примеру, космической станцией.
Промышленный дизайн включает в себя процесс анализа, создания, планирования и
разработки товаров, как для единичного, так и для массового производства. Важным
этапом в визуализации является процесс представления конечного продукта потребителю
(при уже найденных форме и проработанных деталях). На этой стадии пользователь уже
готов оценить данную продукцию, на промежуточных же этапах чаще всего
визуализируемый объект понятен только разработчикам и они нужны для выявления
ошибок и неточностей. Эти этапы могут происходить в различных программных пакетах.
Визуализация – это основной инструмент для перехода из виртуального мира в реальность
и из естественной среды в компьютерные технологии. 3D визуализацию можно получить
не только с помощью 3d программ, но и благодаря 2d редакторам, но первые более
предназначены для этих целей.
Рис. 3.8. Пример промышленного дизайна
3.1.5. Игровые приложения
С технической точки зрения за последние 25 лет графические технологии прошли
полный круг. Если помните, первые трехмерные игры, такие как DOOM и QUAKE,
использовали программный растеризатор. Затем была усовершенствована аппаратура
фиксированного конвейера трехмерной графики, игры стали больше полагаться на
аппаратуру, куда переместился конвейер, что привело к значительно меньшему
контролю над процессом визуализации. Теперь мы можем программно управлять
каждым пикселем и это ошеломляющая концепция. Итак, шейдеры замкнули круг; мы
получили скорость аппаратных решений вместе с гибкостью программных. Я
предполагаю, что следующим этапом развития графических аппаратных средств
станут полностью переконфигурируемые и перепрограммируемые ядра в
видеопроцессоре.
43
Рис. 3.9. Копия экрана эпизода компьютерной игры SKYRIM
3.2. Компьютерная графика реального времени
3.2.1. Графические интерфейсы программирования
Программирование компьютерной графики реального времени предусматривает
массированное использование часто повторяющихся графических примитивов класса
Draw (начертить) в различных версиях (точка, отрезок, ломаная линия, треугольник,
многоугольник и т.д.). Кроме того, при создании и интерактивной визуализации
трехмерных объектов и сцен необходимы различные матричные преобразования
координат вершин объектов, которые используются очень часто по отношению ко всем
объектам трехмерных сцен. Программирование этих одинаковых для всех графических
приложений рутинных операций на стандартных языках программирования каждым
отдельным прикладных программистом нецелесообразно, поэтому с самых первых лет
существования компьютерной графики разрабатывались стандартизованные библиотеки
макросов или подпрограмм, которые могли включаться в прикладную программу и
реализовывать базовые графические функции. Такие наборы библиотек обычно
прилагаются к компиляторам языков высокого уровня Fortran, C++ и другим, чтобы
облегчить прикладное программирование задач, требующих интерактивного
графического вывода. В состав этих библиотек также включались специальные
программы управления непосредственно графическими устройствами, как дисплеи и
графопостроители, которые сейчас называют драйверами устройств. Это обеспечивало
абстрактное представление устройств и их виртуализацию для прикладного
программиста. Современное название таких библиотек – графический интерфейс
прикладного программирования (graphics Application Programmers’ Interface – API).
Для обеспечения переносимости программного обеспечения все API реализовывались как
графические стандарты (1-е поколение до начала 90-х годов 20-го столетия). Известны
следующие стандартные наборы функций и соответствующих библиотек интерактивного
графического программирования:
 3D Core Graphics System (1977), GRAFOR -ГРАФОР (1979)
 GKS, GKS 3D Graphical Kernel System (1988)
44



PHIGS, PHIGS+ Programmer's Hierarchical Interactive Graphics System (1988)
PEX and PEXlib (PHIGS+ for X-window) (1989)
Эти стандарты и библиотеки разрабатывались в основном академическими
учреждениями и впоследствии внедрялись в промышленность, причем достаточно
туго и замедленно.
С развитием Интернета появились также специальные протоколы для обмена
данными в сети (Web Data Exchange and Streaming Protocols):
 MPEG 2 и MPEG 4, который в дополнение имеет встроенную компрессию,
использующую геометрию моделей объектов.
 VRML Virtual Reality Modeling Language (1994), рассмотренный в предыдущих
главах и который превратился в стандарт X3D в рамках протокола XML.
Графические API из индустрии (2-е поколение)
Взрывной характер развития информационных технологий и электроники в начале 80-х
годов породил массу предприятий, которые разрабатывали и производили различные
графические устройства, которые требовали стандартизации управления и совместимости
с интерактивными графическими системами. Одной из таких компаний была Silicon
Graphics, позже SGI, которая разработала свой собственный графический интерфейс GL ,
который затем был сделан публичным стандартом OpenGL (Open Graphics Library), 1992.
Сейчас развитие этого стандарта управляется общественной организацией OpenGL ARB
(Architecture Review Board). Этот графический интерфейс и все его производные являются
полностью открытым и публичным в отличие от ряда индустриальных систем,
контролируемых конкретными компаниями. В качестве объектно-ориентированного
расширения OpenGL был разработан интерфейс Open Inventor, SGI (1993), который
используется совместно в качестве интерфейса высокоуровневого программирования.
Следует отметить также другие индустриальные стандарты как QuickDraw 3D, Apple
(1995), он стал называться Quesa после того, как Apple оставил дальнейшее продвижение
этого стандарта. В настоящее время эта компания активно поддерживает развитие
открытого стандарта OpenGL, который в своем развитии уже дошел до версии OpenGL
4.х.
Одним из наиболее распространенных интерфейсов программирования является Direct3D
фирмы Microsoft (1995), как часть мультимедиа интерфейсов DirectX2-3, Dx5, Dx6, Dx7Dx11, которые является популярной платформой для разработчиков компьютерных игр.
Общее название у интерфейса WGF (Windows Graphics Foundation), который развивается
непосредственно компанией Microsoft в сотрудничестве с разработчиками игр и
графических процессоров.
Следует отметить одно принципиальное отличие графических API из индустрии от
академических стандартов первого поколения. Если ранние стандарты не были связаны
напрямую с возможностями графических устройств и архитектурой графических станций,
то индустриальные графические интерфейсы 90-х годов были в значительной степени
приближенными к реальным структурам и их функции были гораздо более
адаптированными к акселерации в графических процессорах того времени.
3.2.2. Шейдеры и языки программирования шейдеров
Интерфейсы графического программирования с фиксированными функциями к середине
80-х использовались достаточно широко в промышленности и научных учреждениях, но
45
фиксированный набор функций с ограниченными возможностями не позволял их
использовать для генерации реалистичных изображений в задачах компьютерной
анимации, синтетической фотографии и кинематографии. Эти потребности служили
отправной точкой разработки процедурных языков программирования шейдеров, которые
позволяли реализовать практически неограниченную функциональность в обработке
графических данных для генерации реалистичных изображений.
Первым языком программирования шейдеров стал вездесущий Renderman API фирмы
Pixar, который был разработан в конце 80-х годов. Он поддерживал все типы моделей
освещенности (локальные и глобальные) и обеспечивал общие процедурные шейдерные
операции с использованием стандартной библиотеки математических функций.
Обеспечивалась работа с текстурами, массивами и таблицами любых размеров и степени
разрешения, причем все данные были в формате с плавающей запятой. Это позволяло
иметь очень большой динамический диапазон данных. Крайне важным было обеспечение
условных переходов и циклов внутри программ шейдеров (управление исполнением), что
позволило многократно усложнить обработку геометрических моделей и получать
изображения очень высокой степени реалистичности.
Renderman
остается крайне популярным для офф-лайн рендеринга
в студиях
компьютерной анимации во всем мире. Сложность программ шейдеров такова, что даже
современные многоядерные CPU в комплекте с GPU не могут обеспечивать достаточной
вычислительной мощности для исполнения этих программ RenderMan-шейдеров в
реальном масштабе времени.
Тем не менее, RenderMan сделал огромный вклад в создание концепции языков
программирования шейдеров реального времени, которые очень интесивно используются
для разработки компьютерных игр. Сложные визуальные эффекты в компьютерных играх
требуют использования процедурных программ шейдеров реального времени.
Кинематографическое качество игровых сцен может достигнуто только с использованием
программ шейдеров, так как старые интерфейсы программирования с фиксированными
функциями не позволяют строить действительно реалистичные изображения.
Эти потребности пользователей систем компьютерной графики создали прецендент для
модификации интерфейсов графического программирования реального времени. В
дополнение к существующим фиксированным функциям графического программирования
к ним стали добавлять программы шейдеров, которые расширяли возможности по
генерации реалистичных изображений. В качестве таких примеров для OpenGL можно
перечислить:
 PixelFlow Shading Language (1998) как расширение OpenGL
 SGI Interactive Shading language (2000) как расширение OpenGL
 Расширения для шейдерной обработки вершин и фрагментов для OpenGL версий
1.x (ARB, EXT, ATI, NV, Apple)
 Stanford Real-Time Shading Language (2001)
 OGL Shading language (GLSL) для OpenGL 2.0 (3Dlabs, ARB)
Таким же образом компания Микрософт развивала свой корпоративный интерфейс
графического программирования DirectX7, который был аналогичен по фиксированным
функциям OpenGL 1.1:
 Версия DirectX 8 получила ограниченные по возможностям шейдеры вершин и
пикселей (Vertex and Pixel shaders – VS 1.x, PS 1.x)
 Версия DirectX 9 получила расширенные шейдеры VS/PS 2.x and VS/PS 3.0
46

Версии DirectX 10 и DirectX 11получили многофунциональные шейдеры для всех
типов примитивов, включая высокоуровневые криволинейные фрагменты
поверхностей (для OS Vista & Windows 7).
На рис. 5.1. проиллюстрировано включение в графический конвейер процессорных блоков
шейдера вершин и шейдера пикселей. Если раньше все компоненты конвейера были с
фиксированными аппаратными функциями и пользователь в процессе программирования
выбирал, какую функцию из заданных использовать, то с введением шейдеров обработка
вершин и обработка пикселей стала программируемой на уровне псевдо-ассемблерного
кода и гораздо более гибкой по сравнению с предыдущим фиксированным набором
функций.
Fixed
Function
HW
Vertex
Shader
Unit
Fixed
Function
HW
Pixel
Shader
Unit
Fixed
Function
HW
Stat
e
Vertex
shader
program
Stat
e
Pixel
shader
program
Stat
e
GPU is a combination of programmable and fixed-function processors
Рис. 3.10. Включение шейдера вершин и шейдера пикселей в графический конвейер .
При сохранении общей последовательности обработки процессорные блоки шейдеров
выполняют функции обработки вершин и пикселей, покрывая предшествующую версию с
фиксированными функциями (Legacy shaders) и давая новые возможности обработки за
счет программирования шейдеров с использованием специальных команд, которые также
кодировались в токены управления конвейером, как и состояния обработки. Типичный
графический процессор является смесью программируемых блоков и блоков с
фиксированными аппаратными функциями.
Первоначально языки программирования шейдеров реального времени развивались как
отдельные команды ассемблерного типа, которые вставлялись в текст графической
программы написанной в обычном интерфейсе графического программирования, но
буквально в течении нескольких лет появились полнофункциональные языки
программирования шейдеров высокого уровня (Real-time High-Level shading languages).
К ним относятся широко ныне используемые разработчиками игр и других графических
приложений корпоративные стандарты языков шейдеров:
 Cg и CgFX от фирмы Nvidia
 HLSL от Microsoft, поставляемый в составе Dx9-Dx11
47
Кроме того, были разработаны университетские и открытые для пользователей версии
языков программирования шейдеров:
 Brook (GP GPU, Stanford) для программирования шейдеров, используемых для
вычислений общего назначения
 Sh (Open source embedded to C++, University of Waterloo) открытая библиотека
расширения языка С++.
3.2.3. Развитие компьютерной графики реального времени
Развитие рынка компьютерной графики реального времени происходит крайне динамично
и определяется, в первую очередь, потребностями постоянно совершенствующихся
компьютерных игр и в некоторой степени – компьютерной анимации. Именно активные
компьютерные игры и игровые консоли требуют максимальной скорости генерации
изображений при высокой степени реализма сцен, скорости от 30 кадров в секунду и
выше являются типичными для мира компьютерных игр. Рассмотрим взаимодействие
основных игроков, которые формируют рынок компьютерной графики реального
времени. На самом верхнем уровне находятся две ключевые группы игроков, которые
определяют архитектуру, функционал и аппаратные возможности графических
процессоров:
 независимые производители аппаратуры (процессоров): IHV – independent hardware
vendor;
 поставщики системного программного обеспечения: OS/API (System SW) vendor.
Результатом работы этих двух групп игроков являются следующие продукты, которые
формируют основу рынка компьютерной графики реального времени:
 графические процессоры и драйверы для их управления: GPU and drivers
 графические интерфейсы программирования в виде специальных наборов
инструментария и бинарные коды рабочих библиотек: Graphics API SDK, API
Runtime
Эти продукты определяют технологическую платформу для разработки самих
графических устройств, оборудования и приложений: графических карт и консолей,
компьютерных игр, систем проектирования и прочих.
Следующие группы игроков определяют разработку и производство продуктов для
конечного пользователя, как графических устройств, так и прикладных программ:
 Производители оригинального оборудования: OEM – original equipment
manufacturer
 Независимые поставщики программного обеспечения: ISV – Independent Software
Vendor
Качество оборудования и программного обеспечения обычно оценивается с помощью
многочисленных тестовых программ оценки производительности: 3D Benchmarking
(3DMark и другие).
Конечный пользователь (End user) покупает оборудование (компьютеры в комплекте с
графическими картами, игровые консоли) и различные программы с графическим
содержанием (3D content, games, application SW.
3.2.4. Особенности в проектировании графических процессоров
Ключевым пунктом, начиная с 2000 года, было расширение программируемости с
фиксированного набора функций до максимально достижимой программируемости в
обработке на всех ступенях графического конвейера. Причем идеалом продолжает
48
считаться т.н. «Машина Тьюринга», которая позволяет запрограммировать любой
алгоритм. Безусловно, это имеет свою цену и часть функций графического конвейера до
сих пор остается аппаратными (с фиксированным набором операций) ввиду высокой
стоимости их перевода на полностью программируемую основу.
Следующей особенностью является использование параллелизма в модели SPMD (Single
Program – Multiple Data), реализующего многопотоковую и многотредную обработку. Это
предусматривает обработку потоков данных вершин и пикселей в структурах типа SIMD
(Single instruction – Multiple Data) и MIMD (Multiple instruction – Multiple Data) с
максимально достижимым уровнем параллелизма. Такие структуры требуют
балансировки пропускной способности ступеней конвейера с фиксированными
функциями и параллельных программируемых процессоров, реализующих функции
шейдеров.
Серьезной проблемой являются межпотоковые и межгрупповые коммуникации по
передаче данных (зависимости по данным). Во всех современных графических
процессорах предусмотрены специальные модули памяти, обеспечивающие такие
коммуникации.
Эффективность подсистем и всей иерархии памяти является крайне важной для
производительности графического процессора. К основным факторам, обеспечивающим
эту эффективность относятся:
 Кэш-память разных типов, поддерживающая эффективную переброску потоков
данных для обработки на параллельных процессорах, исполняющих программы
шейдеров.
 Специальные буферы для компенсации задержки доступа к памяти на всех
ступенях графического конвейера (FIFO для наборов промежуточных данных,
ожидающих прибытия недостающих данных из основной памяти вне кристалла
процессора).
 Обеспечение локальности доступа внутри страниц DRAM с отображенным 2D&3D
доступом.
 Построение механизмов оптимального доступа к динамической памяти, что
предусматривает минимизацию оборотов чтение/запись и пересечения границ
страниц.
Проблема поиска точек баланса графического конвейера является ключевой в получении
максимальной производительности графического процессора. Конвейер должен быть
сбалансирован для всех основных режимов работы. Достижение баланса позволяет
получить максимально возможное соотношение производительности к стоимости. При
этом необходимо максимально использовать пропускную способность всех ступеней
графического конвейера, причем проблема ввода-вывода данных должна быть под
контролем непрерывно, так как от нее зависит загрузка параллельных модулей
процессоров-шейдеров.
3.3. Базовые методы и алгоритмы
В этом разделе дадим краткие сведения об основных математических инструментах, на
которых базируется трехмерная компьютерная графика. Это системы координат, типы
проекций, векторы, матрицы, методы преобразований и методы визуализации.
3.3.1. Трехмерные системы координат. Проекции.
49
Необходимо понимать, что 3D графика это некоторая иллюзия – это 2D изображения
создаваемые на экране монитора компьютера, дисплее мобильного телефона и т.д. Здесь
не говорится о различных системах виртуальной реальности. Для получения иллюзии
пространства используется эффект перспективы, с успехом используемый уже много лет в
искусстве.
Отображение трехмерной графики неразрывно связано с трехмерными системами
координат. Ортогональная
(прямоугольная) система координат, наиболее часто
используемая система координат на плоскости или в пространстве. Такая система
координат в пространстве образуется тремя взаимно перпендикулярными осями
координат OX, OY и OZ. Оси координат пересекаются в точке O, которая называется
началом координат, на каждой оси выбрано положительное направление, указанное
стрелками. Прямоугольную систему координат связывают с именем Декарта (René
Descartes или лат. Renatus Cartesius). Соотвественно используются термины декартова
(картезианская) система координат (Cartesian coordinate system).
Принято оси X и Y располагать в плоскости экрана. Тогда ось Z может быть направлена
на наблюдателя или вглубь экрана. В этом случае говорят о двух типах систем координат:
левосторонней и правосторонней. Их названия определяются направлением оси Z
относительно осей X и Y. Чтобы определить это направление, можно воспользоваться
правилом левой и правой руки. Для этого необходимо расположить пальцы одной руки
вдоль положительного направления оси X, и согнуть их против часовой стрелки к
положительному направлению оси Y. В этом случае большой палец показывает
направление оси Z. Эту концепцию иллюстрирует рис. 3.11.
Y
Y
Z
X
X
Z
Левосторонняя
трехмерная
система координат
Правосторонняя
трехмерная
система координат
Рис. 3.11. Декартовы трехмерные системы координат
Другими словами, в левосторонней системе координат значение Z становится больше
(положительное направление), когда происходит перемешаетесь от экрана к удаленной от
наблюдателя точке (предполагается, что оси X и Y расположены на экране компьютера).
В правосторонней трехмерной системе координат все наоборот: значения Z
увеличиваются по мере приближения к наблюдателю от экрана.
В графических библиотеках DirectX используется левосторонняя система координат, в
XNA Framework – правосторонняя.
В OpenGL используются как основные три системы координат: левосторонняя,
правосторонняя и оконная. Первые две системы являются трехмерными и отличаются
50
друг от друга направлением оси z: в правосторонней она направлена на наблюдателя, а в
левосторонней – в глубь экрана. Расположение осей x и y аналогично описанному выше.
В основе отображения трехмерных объектов на двумерный экран компьютера лежит
концепция проекции (proection) которая отображает объекты на двумерной,
проекционной, картинной плоскости.
Перспективная проекция. Наиболее общий тип проекции, который учитывает расстояние
до объекта по оси Z и соответствующим образом перестраивает объекты. В этой проекции
чем дальше объект находится от экрана, тем он меньше.
Положение
камеры
Экран
Рис. 3.12. Перспективная проекция
3.3.2. Векторы в трехмерном пространстве
Векторы обеспечивают удобный механизм задания направления в трехмерном
пространстве. Например, необходимо задать ориентацию грани, направление камеры,
указать направление распространения световых лучей. Кроме этого векторы очень удобны
для моделирования физических величин, которые характеризуются модулем и
направлением. Вектор нормали используется для расчетов освещенности поверхностей.
Геометрическим представлением вектора является направленный отрезок прямой линии.
У каждого вектора есть два свойства: длина (также называемая модулем или нормой
вектора) и направление.
b
Конец
Начало
a
c
Рис. 3.13. Геометрическое представление векторов
Два вектора одинаковой длины и имеющие одно направление считаются равными, даже
если они расположены в разных местах. Векторы b и c равны. Система координат не
является свойством вектора. Говорят, что вектор описан в конкретной систем координат.
Если система координат изменится, то тот же самый вектор буде описан относительно
другой системы координат. Если начало вектора находится в начале системы координат,
его можно описать указав только координаты конечной точки.
Для определения некоторой точки в пространстве необходимо указать три ее координаты:
x, y, z . Соединив начало координат O с точкой V , получим вектор – направленный
51
отрезок прямой линии, соединяющий две точки и характеризуемый только длиной и
направлением. Математически вектор описывается одним из двух способов:
x 
x y z  или  y 
 z 
В компьютерной графике для учета перспективы было предложено описывать точку в
пространстве четырех элементным вектором x y z 1 . В этом случае говорят, что точка
представлена однородными координатами.
Y
V
y
Z
O
(0, 0, 0)
z
x
X
Рис. 3.14. Трехмерная ортогональная система координат
3.3.3. Матрицы. Преобразования координат
Большинство приложений 3D-графики базируется на использовании матриц.
В математике, матрицы прямоугольник группы чисел называется elements. Размер
матрицы выражается в число строк на число столбцов. В 3D-графике, наиболее
распространенный тип матрицы 4 на 4, которая содержит 16 значений с плавающей
точкой.
Любое преобразование пространства, сохраняющее расстояние между точками
в трехмерном пространстве, согласно теореме Шаля [17] , может быть представлено
в виде суперпозиции поворота и параллельного переноса.
Перенос точки с координатами (x,y,z) на вектор (dx,dy,dz) делается простым сложением
всех координат. То есть результат — это (x+dx,y+dy,z+dz). Как бы сложили вектор-точку
и вектор-перенос.
Поворот. Рассмотрим поворот точки (x,y,z) относительно оси z. В этом случае координата
z не меняется, а координаты (x,y) меняются так же, как и при 2D повороте относительно
начала координат. Таким образом:
52
x   x * cos(alpha )  y * sin( alpha )
y   x * sin( alpha )  y * cos(alpha )
z  z
Большинство приложений 3D-графики, используют матричный подход. Базовым
элементом матричного метода является матрица размером 4x4. Четвертый компонент
координаты точки называется W-координатой и предназначен для осуществления
проекции точки на плоскость экрана. Это весовой фактор, на который умножаются
координаты точки при ее проецировании.
Матрицы сдвига по осям X, Y и Z выглядят так:
1
0

0

0
0
1
0
0
0
0
1
b
0
0
0

1
1
0

0

0
0
1
0
b
0
0
1
0
0
0
0

1
1
0

0

a
0
1
0
0
0
0
1
0
0
0
0

1
Три матрицы сдвига можно объединить в одну, дающую возможность осуществлять сдвиг
одновременно по нескольким осям. Последняя строка такой матрицы имеет ненулевые
значения в столбцах, соответствующих нужным осям.
Аналогично сдвигу, операции поворота описываются матрицами. Для поворота на угол 
вокруг оси X вектор координат вершины надо умножить на такую матрицу. Матрицы
поворота вокруг осей X, Y и Z
0
1 0
0 cos sin
Rx  
0 - sin cos

0
0 0
0
cos

0
0
Ry  
- sin
0


1
0
0 sin 0 
cos - sin

sin cos
1 0 0
Rz  
0
0 cos 0
0


0 0 1
0
0
0
0
1
0
0
0 
0

1
3.3.4. Визуализация
Важнейший этап любой системы компьютерной графики – визуализация трехмерных
моделей и сцен. В этом разделе обсуждаются общие вопросы компьютерной
визуализации.
Условно способы визуализации трехмерных объектов по характеру
изображений и по степени сложности соответствующих алгоритмов визуализации можно
разделить на следующие виды [Порев Компьютерная графика
http://library.tuit.uz/skanir_knigi/book/kompyuternaya_grafika/pred_3.htm
]:
 Каркасная ("проволочная") модель.
 Отображение поверхностей в виде многогранников с плоскими гранями или
сплайнов с удалением невидимых точек.
 То же, что и для второго вида, плюс сложное закрашивание объектов для
имитации отражения света, затенения, прозрачности. Использование текстур.
53
Рис. 3.15 Каркасная модель Wireframe. Удаление невидимых линий (Hidden Line)
Рис. 3.16. Закрашивание граней с учетом освещения (Fasets). Имитация гладких
поверхностей закрашиванием (Smooth + Highlights).
Рис. 3.17. Материал – ProMaterials: Water, Type – Steram/River, Color – Tropical.
Визуализатор – mental ray.
Соответственно, в области 3D визуализации можно выделить следующие задачи:
 удаление невидимых линий и поверхностей;
54



закрашивание видимых поверхностей;
использование текстур;
системы освещения.
Графический конвейер. Большинство систем компьютерной графики построено на
использовании графического конвейера.
Описание сцены в
трехмерном приложении
Стадия геометрических преобразований
Модельные
преобразования
Генерация
треугольников
Освещение
Проверка
глубины
Стадия рендеринга (Renderin pipeline)
Сортировка по Z –
буферу и смещение
текстур
Наложение
текстур
Закраска
треугольников
Сглаживание
Вывод изображения сцены на экран
Рис. 3.18. Графический контейнер
Конвейер разделен на множество этапов, на каждом из которых аппаратно или
программно выполняется некоторая функция. Наличием переходов между этапами
конвейера обеспечивается возможность выбора между программной и аппаратной
реализацией очередного этапа. Такой подход к настройке конвейера позволяет
приложениям трехмерной графики получать преимущества аппаратной реализации, когда
таковая доступна. Таким образом, реализация конвейера может быть чисто программной,
полностью аппаратной или смешанной (программно-аппаратной).
3.3.5. Алгоритмы удаления невидимых линий и поверхностей
Алгоритмы удаления невидимых линий и поверхностей служат для определения линий
ребер и поверхностей, которые видимы или невидимы для наблюдателя, находящегося в
заданной точке пространства.
Алгоритмы удаления невидимых граней могут быть условно поделены на два класса:
 алгоритмы, работающие в пространстве объекта (для определения видимости
данной грани сравнивается ее взаимное расположение со всеми остальными
гранями в сцене);
55

алгоритмы, работающие в пространстве изображения (основаны на нахождении
точки ближайшей грани, которую пересекает направление взгляда, проходящего
через заданную точку на растре).
Все алгоритмы включают в себя сортировку. Соответственно эффективность любого
алгоритма во многом определяется эффективностью алгоритма сортировки. Рассмотрим
базовые алгоритмы удаления невидимых линий и поверхностей.
Алгоритм плавающего горизонта. Главная идея данного метода заключается в сведении
трехмерной
задачи
к
двухмерной.
Исходная
поверхность
пересекается
последовательностью параллельных секущих плоскостей, имеющих постоянные значения
координаты z.
Алгоритм Робертса. Это наиболее известный алгоритм, работающий в пространстве
объекта. Удаляет из каждого объекта те ребра или грани, которые закрываются самим
объектом (нелицевые грани).
Алгоритм, использующий z-буфер. Это один из простейших алгоритмов удаления
невидимых поверхностей. Работает в пространстве изображения.
Алгоритм художника. Идея алгоритма используется способ, которым художник создает
картину.
Сначала художник рисует фон, затем предметы, лежащие на среднем
расстоянии, и, наконец передний план. Тем самым художник решает задачу об удалении
невидимых поверхностей или задачу видимости, путем построения картины в порядке
обратного приоритета. Алгоритмы использующие список приоритетов, работают как в
пространстве объекта, так и в пространстве изображения.
Алгоритмы построчного сканирования. Алгоритмы этого класса, как и алгоритм
плавающего горизонта, сводят трехмерную задачу удаления невидимых линий и
поверхностей к двумерной. Сканирующая плоскость определяется точкой наблюдения,
расположенной в бесконечности на положительной полуоси z, и сканирующей прямой.
Задача удаления невидимых поверхностей решается в пределах окна, образованного
сканирующей плоскостью.
3.3.6. Алгоритмы закрашивания видимых поверхностей
Любой объект видим благодаря тому, что он отражает или пропускает свет. Свойства
отраженного света зависят от строения, направления и формы источника света, от
ориентации и свойств поверхности.
Используются различные модели:
 Закраска с постоянной интенсивностью. Самая простая модель построена на
идее что любая поверхность испускает свет равномерной интенсивности.
Используются термины фасетное закрашивание или равномерное затенение.
 Интерполиованное закрашивание. Информация о закрашивании многоугольника
линейно интерполируется относительно значений, определенных для его вершин.
 Закрашивание по методу Гуро. Использует нормали к поверхности.
 Закрашивание по методу Фонга. Интерполирует нормали поверхности, а не
интенсивность света вершин.
56
3.3.7.
Текстуры
В результате использования рассмотренных выше алгоритмов закрашивания получаются
гладкие, однородные поверхности. Однако этого явно недостаточно для реализации
реалистичных сцен. Решение проблемы – использование текстур. В простейшем случае
это растровое изображение какой либо реальной поверхности. Такое изображение
называют картой текстур.
Текстурные карты — это bitmap-изображения (например, в форматах JPEG, GIF) или
процедурные (генерируемые программным путем с использованием специальных
алгоритмов) изображения, которые можно наносить на поверхность объектов либо
использовать для изменения свойств материала. Практически любой параметр материала
может определяться числовыми параметрами либо с помощью текстурной карты.
С помощью карт деформации (выдавливания) можно получить визуальный эффект
изменения геометрии поверхности объекта на основе интенсивности цветов растрового
изображения. С помощью карт можно придать материалам и, соответственно, моделям
более реалистичный вид. Кроме этого, карты можно накладывать на источники освещения
(использовать в качестве фильтров) или создавать на их основе фоновое изображение.
Недостатком использования карт является ограниченность их в пространстве. Поэтому
применяется операция Tailing — мозаичное покрытие всей поверхности выбранной
картой. При этом появляется некая неправдоподобность, из-за однородности и швов
между повторяющимися элементами текстуры. Хотя эти проблемы решаются путем
использования специальных приемов.
3.3.8.
Освещение. Трассировка лучей. Радиосити
Локальное освещение. Локальная модель освещения учитывает только свойства
заданной точки и источников освещения, игнорируя эффекты рассеивания, линзирования,
отражения от соседних тел.
Глобальное освещение с трассировкой лучей. Модель освещения с трассировкой лучей
(рейтресингом) предназначена для расчета интенсивности отраженного к наблюдателю
света в каждой точке (пикселе) изображения. В методе трассировки лучей луч
трассируется до первого пересечения с объектом. В глобальной модели предполагается,
что падающий луч отражается от поверхности и пропускается сквозь эту поверхности по
законам геометрической оптики. Построение трассы лучей заканчивается, когда все лучи
уходят за пределы сцены. Однако для уменьшения расчетов этот процесс прерывается,
когда интенсивность света падает ниже определенного предела.
Глобальное освещение средствами радиосити. Метод Radiosity подразумевает
использование фотометрических источников света, когда можно установить точные
значения параметров осветительных приборов. В частности их мощность.
Типы источников света в пакетах трехмерной графики. Большинство пакетов
трехмерной графики, предоставляет в распоряжение пользователя четыре основных типа
световых источников: прожектор (spotlight), всенаправленный (omni), направленный
(directional) и рассеянный (ambient) свет. Эти четыре базовых типа предоставляют
достаточно возможностей для создания любого задуманного эффекта и имеют различные
характеристики.
57
Помимо этого, можно использовать фотометрические источники света и системы
имитации солнечного света. Использование тех или иных источников света во многом
определяется системой рендеринга, используемой для визуализации.
Стадия рендеринга
Рендеринг — это процесс преобразования объекта или сцены, созданных в приложении
трехмерной графики, для вывода на экран монитора, который представляет собой
двухмерную плоскость [3]. На стадии рендеринга по описанию треугольников
генерируются пиксели изображения. В отличие от механизма геометрических
преобразований в процессе рендеринга объем операций с плавающей точкой не столь
велик и в основном состоит из простых операций над пикселями.
Этапы стадии рендеринга:
 сортировка по Z-буферу (так называемый «буфер глубины») и смешение текстур;
 наложении текстурной карты на объект;
 закраска треугольников. Для выполнения этой задачи используются три модели плоское закрашивание (по Ламберту) и закрашивание по Гуро и по Фонгу. Модель
с плоским закрашиванием заключается в равномерном однородном закрашивании
каждого треугольника одним цветом (обычная заливка).
В результате объект предстает как множество плоских граней.
Рис. 3.19. Закрашивание
В процедурах закрашивания по Гуро и по Фонгу цвет интерполируется относительно
границ треугольника, что приводит к более реалистичной и непрерывной закраске
объекта. Закрашивание по Фонгу дает более реалистичный результат, чем закрашивание
по Гуро, но требует более интенсивных вычислений. На заключительном этапе
рендеринга применяется алгоритм сглаживания (антиалтасинг) для устранения эффекта
дискретизации, ступенчатости изображения на границе объектов.
3.4. Графические библиотеки
Графические библиотеки существенно облегчают разработку различных приложений
компьютерной графики. В этом разделе даны краткие сведения о самых
распространенных библиотеках – DirectX и OpenGL.
58
3.4.1.
DirectX
DirectX – это мультимедийная библиотека, позволяющая напрямую работать с
аппаратным обеспечением компьютера. Разработка компании Microsoft. Тесное
взаимодействие DirectX и оборудования с драйверами, написанными производителями
оборудования, дают возможность разрабатывать программный код, не вдаваясь в
подробности работы аппаратной части. DirectX содержит следующие компоненты:
 DirectX Graphics
 DirectInput
 DirectMusic
 DirectSound
 DirectPlay
 DirectShow
 DirectSetup
Остановимся подробнее на библиотеке Direct3D отвечающей за работу с трехмерной
графикой. В ранних версиях DirectX Graphics состоял из двух частей – DirectDraw
(рисование двумерной графики) и Direct3D (трехмерная графика). Начиная с восьмой
версии, DirectDraw вошла в состав Direct3D.
DirectX включает в себя уровень абстракции – HAL (Hardware Abstraction Layer),
позволяющий приложению работать с любым оборудованием компьютера, независимо от
производителя.
Библиотека DirectX построена на основе модели составных объектов – COM (Component
Object Model). Фактически, это программные продукты предназначенные для
тиражирования и многократного применения в различных проектах. COM своеобразный
стандарт для разрабатываемой компонентной архитектуры. Для исключения повторения
имен библиотек разработчиками, COM-объекты и интерфейсы идентифицируются в
системе 128-битным глобально-уникальным идентификатором (GUID).
Direct3D один из главных компонентов DirectX. Отвечает за вопросы отображения
трехмерной графики, наложение на объект текстур, использование вершинных и
пиксельных шейдеров. Все это позволяет реализовывать различные трехмерные
приложения на платформе MS Windows.
Основа визуализации трехмерной сцены на экране монитора – это процесс рендеринга
(rendering). Процесс рендеринга состоит из нескольких механизмов – тесселяции,
трансформации, освещения и растеризации. Эти механизмы образуют так называемый
конвейер рендеринга или графический конвейер. Дадим краткую характеристику этим
процессам.
 Тесселяция (tesselation) - это механизм разбиения поверхности на полигоны.
 Трансформация (transformation) – преобразование координат объекта с помощью
матриц - вращение, перенос, масштабирование.
 Освещение (lighting) – видимость предметов зависит от источников освещения.
 Растеризация (rasterizer) – механизм отображения сцены на экране монитора в
пиксельном виде. В этот момент учитывается наличие текстур, выполняется Zбуферизация, происходит скрытие невидимых поверхностей и т.д.
Создание 3D приложения средствами Direct3D условно можно разбить на следующие
этапы.
59
1. Создание оконного приложения. Основа любого программно приложения
Windows.
2. Инициализация Direct3D. Создание так называемого устройства (Device) Direct3D.
Сначала формируется класс параметров (Present Parameters) отображения
трехмерной графики. Задаются режимы – оконное или полноэкранное приложение,
использование буфера глубины, использование антиалиасинга. Этот класс
параметров используется при создании устройства. Кроме этого указывается
используемый видеоадаптер, использование аппаратного ускорения графики и т.д.
3. Создание объектов. Это набор параметрических объектов – Box, Cylinder, Sphere.
Все остальные объекты представляют собой полигональные объекты. Для
формирования полигонов используются вершины, координаты которых задаются в
трехмерном пространстве. Естественно есть возможность загрузки объектов из
файлов, созданных специальными программами 3D моделирования.
4. Освещение, материалы и текстура. Использование различных типов источников
света, загрузка материалов текстур и присвоение их соответствующим
поверхностям.
5. Рендеринг сцены. Отображение сформированной 3D сцены. Использование
различных параметров визуализации.
Сцены формируются из примитивов – точек, отрезков, треугольников и
последовательности сцепленных треугольников. Вершины примитива описываются
структурой данных. Кроме координат описание вершины может содержать цвет, нормаль
и текстурные координаты.
3.4.2. Microsoft XNA
Microsoft XNA (англ. XNA's Not Acronymed) - набор инструментов с управляемой средой
времени выполнения (.NET), созданный Microsoft, облегчающий разработку и управление
компьютерными играми. XNA стремится освободить разработку игр от написания
«повторяющегося шаблонного кода» и объединить различные аспекты разработки игр в
одной системе. Набор инструментов XNA был анонсирован 24 марта 2004 на Game
Developers Conference в Сан-Хосе, Калифорния. Первый Community Technology Preview
XNA Build был выпущен 14 марта 2006.
Платформа XNA является надстройкой над Microsoft Visual Studio, позволяющей
значительно упростить создание игр для операционной системы Windows, игровой
приставки Xbox360 и в скором времени медиаплеера Zune. Основная целевая аудитория
XNA на данный момент – разработчики, интересующиеся созданием игр и мультимедиа
приложений и не являющиеся профессиональными программистами.
XNA базируется на (платформе) CLR (Common Language Runtime), которая, в принципе,
обеспечивает исполнение программ на любом языке. Но в данный момент XNA
поддерживает только язык С#. Выбор C# является удачным для такой системы, поскольку
обеспечивает «золотую середину». С одной стороны язык приближен к С++, что
позволяет с легкостью его освоить профессиональным программистам и использовать
свой опыт. С другой стороны язык не является столь низкоуровневым как C++ и в этом
смысле приближен к Visual Basic, что обеспечивает лёгкость изучения и использования
для тех, кто только изучает программирование или использует его как «попутный
инструмент».
Использование Managed Code позволяет повысить безопасность программы при
использовании неопытным разработчиком. Использование сборщика мусора обеспечивает
60
возможность упростить работу с оперативной памятью, что вполне допустимо для
приложений малого масштаба. XNA – «набор библиотек», «решение», «каркас», средство,
которое всё равно понемногу становится игровым движком, развивая свою архитектуру
снизу вверх. Реализованные части игровых подсистем приобретают чётко выраженные
интерфейсы.
Очевидные плюсы XNA:
1.
Кросс-платформенность и очень лёгкий доступ на консоль Xbox360.
2.
Готовые библиотеки нижнего уровня для работы с оборудованием и контентом.
3.
Относительно простой в изучении и использовании язык C#.
4.
Большой объём свободного для использования контента.
Первая игровая стратегия реального времени Arena Wars реализованная на платформах
XNA и .NET вышла в 2004 году. Руководитель разработки Бенджамин Ницчке (Benjamin
Nitschke) [1,2]. Он же является основателем и ведущим программистом разработок игр в
компании exDream entertainmen. Arena Wars первая коммерческая игра для платформы
.NET собравшая по всему миру более 20 наград. Особенно был отмечен замечательный
многопользовательский режим.
Рис. 3.20. Сцена из игры Arena Wars. Web-сайт компании exDream entertainment
3.4.3. OpenGL
По замыслу разработчиков, спецификация OpenGL была создана независимой от какойлибо конкретной платформы. В результате был получен переносимый,
рационализированный и эффективный интерфейс к библиотекам двух- и трехмерного
рендеринга. Конкретная система управления окнами должна сама позаботиться об
открытии и отображении окон. Библиотека OpenGL взаимодействует с оконной системой
через дополнительные библиотеки.
61
Рис. 3.21. Элементы библиотеки
Библиотека набора утилит OpenGL (GLUT, от GL Utility Toolkit) - это интерфейс для
программистов, создающих приложения OpenGL, не зависящие от системы управления
окнами. Благодаря разработчикам GLUT мы имеем возможность использовать единый
интерфейс для работы с окнами независимо от платформы. Приложения OpenGL,
использующие GLUT могут быть с легкостью перенесены с платформы на платформу, без
многочисленных переделок исходного кода. GLUT значительно облегчает написание кода
приложений и дополняет библиотеку OpenGL.
Программный интерфейс GLUT представляет собой конечный автомат (state machine), как
и сам OpenGL. Это значит, что GLUT содержит ряд переменных состояния, которые
изменяются во время исполнения приложения. Начальные состояния машины GLUT были
выбраны с таким расчетом, чтобы удовлетворять большинству приложений. Программа
может изменять значения этих переменных состояния, для удовлетворения
специфических требований. Каждый раз при вызове функции GLUT меняют свое
поведение в зависимости от значений переменных состояния. Функции GLUT просты и
требуют минимума параметров. Они не возвращают указателей, а единственными
указателями в параметрах функций являются указатели на текстовые строчки и
дескрипторы шрифтов.
Функции GLUT могут быть классифицированы на несколько групп согласно своей
функциональности:
 Инициализация
 Начало обработки событий
 Управление окнами
 Управление перекрытием
 Управление меню
 Регистрация вызываемых (callback) функций
 Управление индексированной палитрой цветов
 Чтение состояния
 Отображение шрифтов
 Отображение геометрических фигур
62
4. СИСТЕМЫ 3D МОДЕЛИРОВАНИЯ. ФОТОРЕАЛИСТИЧЕСКАЯ
ВИЗУАЛИЗАЦИЯ
4.1. Универсальные пакеты
4.1.1. CAD системы
AutoCAD – это универсальная интерактивная графическая система, предназначенная для
автоматизации инженерно-конструкторских и чертежно-графических работ в режиме
диалога «человек-компьютер». Обширный инструментарий AutoCAD позволяет выбирать
наиболее оптимальный алгоритм построения требуемых изображений. Кроме этого,
AutoCAD, как развивающаяся система проектирования, предоставляет пользователю
возможность самому создавать необходимые для его работы инструменты.
Созданная с учетом нужд проектировщика САПР AutoCAD делает работу максимально
комфортной, и в то же время позволяет создавать чертежи невероятно быстро (благодаря
своим функциональным возможностям), не теряя при этом точность исполнения и
экономя время. Масштабирование пояснительных элементов, поддержка работы со
слоями и таблицами, совмещенные выноски — все это позволяет достичь высочайшего
уровня выполнения проектных работ и подготовки документации. Новаторские
инструменты AutoCAD для концептуального проектирования и визуализации проектов в
сочетании с новыми возможностями позволяют реализовывать самые сложные проекты.
SolidWorks. Называя себя мировым лидером в производстве и распространении программ
для автоматического проектирования компания Dassault Systemes совершенно не
приукрашивает свои заслуги в этой области. С самого начала своего существования в 1981
году компания активно продвигает свои методы и концепции по проектированию и
производству с помощью компьютерных систем промышленных образцов технических
изделий. Доказательством широкого распространения программных продуктов компании
служат 115000 пользователей продукцией Dassault Systemes из восьмидесяти стран.
SolidWorks, одна из наиболее продвинутых и известных программных систем компании,
позволяет проследить весь путь от начала производства продукта до его виртуального
тестирования.
Рис. 4.1. Логотип компании Dassault Systemes и интерфейс системы SolidWorks
63
"Графика новой линейки продуктов NVIDIA становится намного реалистичней, даже с
точки зрения требовательного пользователя, благодаря новому виду сглаживания со
смещенной решеткой, поддерживаемому процессорами NVIDIA Quadro FX 4000. NVIDIA
опять помогает SolidWorks обеспечить инженерам и разработчикам лучшее в индустрии
качество без ущерба производительности."
CATIA. Наряду с узкоспециальными программами автоматического проектирования
производственных и сборочно-расчетных работ, существуют и универсальные решения,
производящие полный комплекс действий от чертежей, до создания мини программ по
переводу в конкретные листы команд для исполнительных механизмов. Одна из таких
систем – CATIA. В ее состав входят модули CAD/CAM/CAE/PDM, позволяющие в
пределах одного приложения осуществлять все действия по приведению проекта в
рабочее состояние. Современный авиационный комплекс проектируется на 75% при
помощи данной программы. Рено, Мерседес и БМВ используют при проектировании
только этот программный продукт. Для производства новых продуктов, даже, кажется,
таких незамысловатых, как кабель RG5, программа CATIA представляется наиболее
естественным выбором.
Рис. 4.2. Интерфейс программы CATIA
4.1.2. 3ds Max
3ds Max универсальный пакет трехмерного моделирования, анимации и визуализации
компании Autodesk. Уже много лет с успехом используется практически во всех областях
3D-графики. Имеет мощные и гибкие инструменты для создания геометрических объектов
и работы с ними, удобный редактор для создания материалов, обширные возможности для
работы со светом, современную и качественную систему визуализации. Программа
работает не только с сетками (полигонами), но и имеет инструменты для NURBSмоделирования.
Специальные средства визуализации 3ds Max позволяют рассчитывать непрямое
освещение, светотени, добиваться потрясающего качества при трассировке лучей.
Специальные методы (метод фотонных карт) позволяют имитировать отражение от
матовых, блестящих и глянцевых поверхностей, искажения, связанные с прохождением
света сквозь прозрачные объекты. Все эти возможности могут быть использованы в
сочетании с другими: размывание изображения, фокусное расстояние и т. д. Средства
визуализации позволяют не только получать изображения высокого качества и реализма,
но и осуществлять расчет изображений, распределяя задание среди нескольких
64
процессоров или компьютеров. Эти возможности визуализации, несомненно привлекают
архитекторов, дизайнеров интерьеров, разработчиков компьютерных игр, специалистов в
области кинемотографии и рекламы.
Специальные модули, такие как Character Studio, помимо средств создания достаточно
сложной анимации отдельных персонажей, имеют возможность имитировать их
поведение в составе больших групп. Модуль Reactor предназначен для создания
физически корректной имитации динамики твердых и мягких тел и жидкостей.
В 3ds Max имеются удобные средства для реализации технологии Normal Mapping.
Используется в индустрии разработки компьютерных игр, в производстве фильмов и
визуализации, для существенной экономии времени. В основе технологии лежит замена
высоко-полигональных моделей низко-полигональными. Высокий реализм получается в
результате использования материалов на основе карт текстур, содержащих изображения
геометрии высокого разрешения.
Возможности последних версий программы существенно расширены за счет появления
новых модулей. В частности это модуль Cloth — специальный инструмент для имитации
ткани одежды. Раньше для этого использовался модуль reactor и создание ткани требовало
больших усилий. Работа с модулем Cloth основана на использовании выкроек, на основе
которых формируется окончательный вид одежды. Кроме этого, модуль позволяет
рассчитывать поведение одежды при движениях персонажей.
Специальный модуль Hair and Fur предназначен для создание волос и шерсти. Имеется
библиотека шаблонов различных причесок. Кроме этого, с помощью него можно
определять не только геометрию волос, но и динамику их поведения.
Значительно расширяет возможности программы – встроенный язык сценариев
MAXScript. С его помощью можно писать программы – сценарии различной сложности,
создавать новые элементы интерфейса. Язык во многом схож с классическими языками
программирования – Basic, Pascal, C++.
Таким образом, Autodesk 3ds Max является мощным средством трехмерного
моделирования и визуализации. Кроме этого, необходимо отметить огромный опыт
использования этого пакета, отраженный в литературе, открытых уроках (tutorals)
представленных в сети Интернет и возможности повышения квалификации в различных
учебных центрах.
На рис. 4.3 представлена модель, созданная в 3ds Max по эскизам.
65
Рис. 4.3. Эскиз и результат моделирования
4.1.3. Maya
Maya – это пакет для моделирования, анимации, рендеринга, разработки визуальных
эффектов. Разработка компании Alias. http://www.alias.com
Изначально Maya была разработана компанией Alias Systems Corporation. В 2005 году
компания Alias влилась в Autodesk и в настоящее время распространяется как Autodesk
Maya.
Autodesk Maya предлагает специалистам все возможности для реализации целостного
творческого процесса с помощью полного набора средств для 3D-анимации,
моделирования, рендеринга, отслеживания движения и композитинга на базе легко
расширяемой платформы. Maya предоставляет наборы инструментов, отвечающие
технологическим требованиям при создании визуальных эффектов, разработке игр и 3Dанимации. В Maya 2013 добавлены инструменты, позволяющие организовать
параллельные рабочие процессы и работать над проектами повышенной сложности, а
также новые функции творческого характера. Повышена производительность создания
высококачественного контента.
С помощью пакета можно создавать пространственные модели, накладывать текстуры,
добавлять пространственные эффекты, создавать анимацию. Интерфейс Maya
представляет собой своеобразный конструктор, где предусмотрено все, вплоть до
создания собственных кнопок. Интерактивный рендер избавляет от длительных ожиданий
при отладке сцены.
Пакет рассчитан в первую очередь на профессионалов, работающих в области создания
анимации и спецэффектов в кинематографе. Самостоятельное изучение программы
достаточно сложно. Желательно, чтобы в качестве преподавателя выступал человек,
имеющий опыт не только в Maya, но и в индустрии, на которую нацелена программа.
Во многих современных высоко-бюджетных фильмах была использована эта программа.
66
Лидерство в этой области Maya держит не столько благодаря своему стандартному набору
инструментов, сколько из-за наличия встроенного языка программирования MEL (Maya
Embededded Language). С помощью этого языка можно практически полностью изменить
программу, начиная с интерфейса и заканчивая алгоритмами визуализации. Тиак пакет
этот весьма мощный и довольно широко используется, но, в основном, профессионалами
и лишь в области спецэффектов кино.
Персонажная анимация в Maya
Maya предоставляет широкие возможности для моделирования и анимации персонажей
(рис. 4.4).
Рис. 4.4. 3D модель, выполненная в Maya
Во многих фильмах используется анимация и эффекты Maya («Человек-Паук», «Звездные
Войны», «Властелин Колец» и др.).
Превизуализация в Maya
Превизуализация - техника упрощенной визуализации сцен перед финальной
визуализацией/реальной съемкой с целью создания общего представления о сцене и/или
улучшения ее качества/устранения недостатков. Maya очень часто используется
профессиональными превизуализаторами (рис. 4.5).
Рис. 4.5. Превизуализация в Maya
67
С помощью Maya превизуализировали «Аватар», «Алиса в стране чудес», «Железный
человек» и многие другие фильмы.
Сначала в Maya моделируется сцена в натуральную величину, как примерно она должна
выглядеть в конечном итоге. В Maya есть возможность «заснять» видео из окна
проекции/камеры без непосредственной визуализации (опция Playblast), что существенно
ускоряет работу над превизуализационным роликом. Для камеры можно включить опцию
Hand Held Control (Ручная съемка), что позволяет быстро создавать эффект дрожания
камеры для большего реализма видеоролика (рис. 4.6).
Рис. 4.6. Сцена, вид из камеры. Модель павильона с «зеленым экраном»
В Maya также моделируются сцены, показывающие как снимать желаемое действие с
использованием «зеленого экрана», т.е. можно заранее определить, где располагать этот
экран, какого размера он должен быть, какой величины понадобится павильон, где
располагать камеры, рельсы для камер, источники освещения, какая понадобится
аппаратура и т.д.
Все камеры «привязаны» к кранам, которые в свою очередь двигаются по рельсам – точно
так, как сцена будет сниматься в реальном павильоне, что позволяет избежать ошибок в
расположении оборудования и более эффективно подготовиться к съемкам.
4.1.4. Blender 3D
Blender - это кроссплатформенное приложение для создания трѐхмерной компьютерной
графики. Оно даѐт возможность моделирования, анимации, рендеринга и постобработки
видео, а также создания интерактивных приложений.
Blender был разработан как рабочий инструмент голландской анимационной студией
NeoGeo. В июне 1998 года автор Blender’а, Тон Розендаль (Ton Roosendaal), основал
компанию Not a Number (NaN) с целью дальнейшего развития и сопровождения Blender.
Программа распространялась по принципу shareware (свободно распространяемое
программное обеспечение). В 2002 году компания NaN обанкротилась. Усилиями Тона
Розендаля кредиторы соглашаются на изменение лицензии распространения Blender в
пользу GNU GPL с условием единовременной выплаты €100000. 18 июля 2002 года
началась программа по сбору спонсорских пожертвований на покрытие необходимой
суммы. Уже 7 сентября 2002 года было объявлено о том, что необходимая сумма набрана,
и о планах перевести в ближайшее время исходный код и сам Blender под лицензию GPL.
13 октября 2002 года компания Blender Foundation представила лицензированный под
GNU GPL продукт. В настоящее время Blender является проектом с открытым исходным
кодом и развивается при активной поддержке Blender Foundation.
68
Возможности. Характерной особенностью пакета Blender является его небольшой размер.
Установленный пакет занимает около 50 МБ. В базовую поставку не входят развѐрнутая
документация и большое количество демонстрационных сцен.
Функции пакета:
Поддержка разнообразных геометрических примитивов, вклю-чая полигональные модели,
систему быстрого моделирования в режиме subdivision surface (SubSurf), кривые Безье,
поверхности NURBS, metaballs (метасферы), скульптурное моделирование и векторные
шрифты.
Универсальные встроенные механизмы рендеринга и интеграция с внешним рендерером
YafRay.
Инструменты анимации, среди которых инверсная кинематика, скелетная анимация и
сеточная деформация, анимация по ключевым кадрам, нелинейная анимация,
редактирование весовых коэффициентов вершин, ограничители, динамика мягких тел
(включая определение коллизий объектов при взаимодействии), динамика твѐрдых тел на
основе физического движка Bullet, система волос на основе частиц и система частиц с
поддержкой коллизий.
Скрипты, написанные на языке программирования Python, используется как средство
создания инструментов и прототипов, системы логики в играх, как средство
импорта/экспорта файлов, автоматизации задач.
Базовые функции нелинейного редактирования и комбинирования видео.
Game Blender — подпроект Blender, предоставляющий интерактивные функции, такие как
определение коллизий, движок динамики и программируемая логика. Также он позволяет
создавать отдельные real-time приложения начиная от архитектурной визуализации до
видео игр.
Область применения. Наиболее общими сферами применения пакета Blender можно
назвать архитектурный рендеринг, создание графики для компьютерных игр. Кроме того,
он используется при записи музыкальных видеороликов, телевизионной рекламы,
короткометражных фильмов и, несколько реже, полнометражной анимации. Ему
отводится также роль дополнительного средства для устранения слабых сторон уже
имеющихся у художников инструментов - анимационных программ Silo, Modo и ZBrush и средства построения UV-развертки, которое может применяться совместно с
большинством известных пакетов трехмерной графики.
В последнее время этот инструмент завоевывает признание в профессиональных студиях.
Среди пользователей Blender можно выделить ряд новых студий, например студию Manos
Digitales Animation Studio - создателя нового анимационного фильма Plumiferos
("Пернатые"). При создании этого фильма Blender применялся для выполнения всех видов
работ, включая моделирование, UV-развертку, риггинг (настройка скелета), скиннинг
(формирование изображения кожи), анимацию, моделирование освещения, рендеринг и
создание различных эффектов, а также для нелинейного редактирования видео и
компоновки. А после того как Blender был использован при создании фильма Elephants
Dream ("Мечта слонов"), его стали считать удачным выбором для выполнения
большинства задач, связанных с кинопроизводством.
69
С использованием Blender создаются великолепные короткометражные мультфильмы. А в
2010 году некоммерческая организация Blender Foundation сделала очень качественный
короткометражный мультфильм Sintel. За первую неделю после выхода мультфильма в
свет, его просмотрели более миллиона пользователей.
Преимущества и недостатки. Из плюсов Blender следует отметить – бесплатное
распространение, малый размер, сочетается с большим числом операционных систем
(Windows, Linux, Irix, Sun Solaris, FreeBSD и Mac OS X), прогрессивное развитие, большое
количество бесплатных плагинов и готовых моделей, доступных в Интернете, постоянная
поддержка и обновление программы разработчиками, возможность подстроить интерфейс
«под себя». К минусам Blender относятся:
 Непривычный на первый взгляд интерфейс по сравнению с 3ds Max и Maya.
 Возможные проблемы при конвертировании.
 Небольшой объем документации на русском языке.
Рис. 4.7. Интерфейс программы Blender
4.1.5. Rhinoceros
Продукт Rhinoceros, или Rhino – это профессиональная система моделирования на основе
NURBS-технологии моделирования.
http://www.rhino3d.com
Это не универсальная 3D-программа (в ней нет анимации и весьма скудные возможности
для текстурирования или рендеринга). Она предназначена специально для дизайнеров,
желающих построить высококачественные 3D модели.
Подход Rhino к моделированию, скорее всего, слишком тяжеловесен для построения
персонажей с качественной анимацией, но идеален для создания различных автомобилей,
механических моделей, моделей оружия, промышленных образцов, инженерных
прототипов, различных ограненных логотипов и 3D-текста.
Результаты работы могут быть использованы в других системах 3D моделирования.
Продукт имеет свободное распространение.
70
Рис. 4.8. Nurbs модели
На примере стандартной огранки из 57 плоских граней рассчитана геометрия и создана
модель бриллианта и 57 полигонов.
Рис. 4.9. Полигональная модель бриллианта
4.1.6. Zbrush. Autodesk Mudbox
Существует немало способов моделирования. Вот самые распространѐнные из них:
полигональное моделирование, моделирование Nurbs-кривыми, менее универсальные
способы - Loft, Boolean и т.д. Так же существует метод трѐхмерной лепки, который мы и
рассмотрим. Для каждой задачи целесообразно применять самый удобный, простой и
функциональный метод. Например, если нужно сделать простой простую бутылку, не
нужно использовать способ полигонального моделирования, гораздо удобнее будет
использовать для этого метод вращения сечения по пути Bevel Profile или Lathe. Это
простой пример, рассмотрим более сложный. Задача – смоделировать персонажа, к
примеру, с множеством мелких деталей, сложными формами и т.д.
71
Здесь уже нет однозначного ответа на вопрос какой метод лучше. Можно конечно
использовать средства моделирования 3D Max, но если мы посмотрим на приведѐнный
пример (рис. 5.0 a), то увидим насколько сложный и долгий будет этот способ. На другом
примере (рис. 5.0 b) реализовать это только средствами 3D Max, или Maya на данный
момент невозможно.
Рис. 4.10. Модели, созданные методом трехмерной лепки
Для решения таких задач предлагается использовать метод трѐхмерной лепки. Для этих
целей разработаны специальные программы. Самые распространѐнные из них это
конкурирующие Autodesk Mudbox и Zbrush компании Pixologic [Pixologic. – URL:
http://www.pixologic.com/home.php].
Zbrush. Отличительной особенностью данного ПО является имитация процесса «лепки»
3d-скульптуры, усиленного движком трѐхмерного рендеринга в реальном времени, что
существенно упрощает процедуру создания требуемого 3d-объекта. В программе
используется концепция пиксоли (pixol) [1] – когда каждая точка содержит информацию
не только о своих координатах XY и значениях цвета, но также и глубине Z, ориентации и
материале. Это значит, что вы не только можете «лепить» трѐхмерный объект, но и
«раскрасить» его, рисуя штрихами с глубиной [Концепция пиксоля - Основы ZBrush ZBrush 2 - Каталог уроков - ZBrush - уроки, скрипты, материалы, альфа, форум. – URL:
http://zbrush.3dn.ru/publ/2-1-0-5/]
Autodesk
Mudbox
(Мадбокс) —
профессиональная
графическая
программа
предназначенная для моделирования высокополигональной (high poly) цифровой
скульптуры и текстурного окрашивания 3D моделей. Предоставляет специалистам по
моделированию и художникам по текстурам все возможности для создания цифровых 3D
объектов и 2D скетчей, как если бы они работали с глиной и красками [Ara Kermanikian.
Introducing Mudbox. Издательство Paperback, 2010. — 416 стр. ISBN 978-0-470-53725-1,
Bridgette Mongeon. Digital Sculpting with Mudbox: Essential Tools and Techniques for Artists.
Издательство Paperback, 2010. — 288 стр. ISBN 0240812034].
Для процесса трехмерной лепки важное значение имеет топология модели –
полигональный каркас. Особенно это касается моделей которые в дальнейшем будут
анимированы.
72
Рис. 4.11. Топология полигональных моделей
Существуют следующие пути создания моделей:
 Использование готовых моделей, например созданных в 3ds max. Такие модели в
большинстве случаев имеют правильную топологию.
 Создание моделей с нуля. В этом случае больше творческих возможностей, минус
– меньший контроль над топологией.
В основе технологии трехмерной лепки и рисования лежит использование различных
кистей. Это выдавливание и вдавливание, при этом можно регулировать силу. Задание
цвета и его интенсивности. Кроме этого можно регулировать размер кисти и ее резкость.
ZBrush работает с очень большим количеством полигонов в модели (около 10 миллионов),
этого хватает при работе с боьшинством моделей, но если создаѐтся модель уровня
―Аватара‖ то существует функция ―DivideHD‖ для работы с десятками миллионов
полигонов.
4.2. Методы компьютерной визуализации
Рассмотрим источник света, испускающий лучи во всех направлениях. Попадая на
поверхность, луч частично преломляется, отражается и частично рассеивается. Проходя
через прозрачный материал, луч ослабевает. Коэффициент ослабления в общем случае
можно представить как:
k  exp( l ) ,
где l – длина пути внутри материала, а  - коэффициент его прозрачности.
Рассмотрим зеркальное и диффузное отражение. При зеркальном отражении угол
отражения равен углу падения между поверхностью и нормалью и лежит с ним в одной
плоскости. При диффузном отражении (рассеянии) световая энергия, согласно закону
Ламберта с одинаковой интенсивностью рассеивается во все стороны.
На рис. 4.12. показана поверхность с точкой P и единичным вектором внешней нормали
n.
73
n


P
'
Рис. 4.12. Освещение поверхности точечным источником света
Пусть точка P освещается точечным источником света в направлении, определяемом
вектором l . Тогда энергия L r , отражаемая в направлении вектора  , задается формулой:
Lr 
RLi (n, l )
r2
где R - коэффициент отражения, L i - интенсивность источника света, r - расстояние от
точки P до источника света.
С учетом диффузного отражения можно записать:
R  sR s  dRd , s  d  1
где R s - коэффициент для зеркального отражения, R d - диффузная составляющая.
Пусть падающий луч составляет угол  с нормалью n . Определим угол  ' из выражения:
sin  ' 
1
sin  ,
ns
где n s - коэффициент преломления материала.
Тогда
Rs  k1 F ( , n s ) Rd  k 2 F ( , ns )
cos  ns cos '
1  ns cos  cos '
F ( , ns ) 

2  ns cos  cos '
cos  ns cos '

2
2




Коэффициенты k1 и k 2 зависят от материала.
Преломленный луч будет лежать в плоскости исходного луча и нормали к поверхности и
составлять с нею угол  ' , выведенный выше. Интенсивность преломленного луча задается
формулой:
74


Lt  s 1  F ( ' , n) Li
Таким образом можно определить освещенность каждой поверхности сцены и построить
требуемое изображение.
Полный просчет лучей, называемй прямой трассировкой, требует огромного количества
вычислений. На практике используют так называемую обратную трассировку, при
которой отслеживаются только те лучи, которые попадают в глаз наблюдателя.
Алгоритмы учитывающие глобальное освещение
Radiocity Используется для расчета вклада диффузной составляющей света, отраженного
от объектов, в освещенность сцены.Принцип действия Radiocity В основе метода лежит
упрощение – учитывается лишь диффузный свет При этом поверхность объектов сцены
разбивается на лоскутки (patches) прямоугольной или треугольной формы В каждый из
этих лоскутков осуществляется рендеринг сцены с целью расчета ее освещенности в
данной точке Этот процесс многократно повторяется, распространяя диффузный свет по
всей сцене.
Метод фотонных карт
Photon mapping Лучи от камеры и источника света трассируются независимо друг от друга
Затем на этапе расчета освещения происходит объединение информации, полученной при
трассировке этих лучей Лучи от источника представляют собой траекторию движения
фотонов. При столкновении с поверхностями, фотоны отдают часть своей энергии и
отражаются в некотором направлении Информация о полученной поверхностями энергии
сохраняется в кэше, называемом фотонной картой Данный подход позволяет передать
каустики (блики), возникающие при прохождении света через прозрачные предметы
photon mapping – фотонное проецирование, алгоритм (технология) расчѐта
освещѐнности трѐхмерных объектов, метод фотонных карт # в КГА – алгоритм расчѐта
глобального освещения, основанный на трассировке лучей и используемый для имитации
взаимодействия лучей света с объектами сцены; позволяет уменьшить объѐм
необходимых вычислений, особенно хорошо подходит для сцен, где присутствуют облака,
туман и дым; даѐт возможность избавиться от ―шума‖, который часто возникает после
визуализации (см. также global illumination).
4.3. Технология Normal Mapping
С развитием индустрии компьютерных игр создатели пакетов 3D-моделирования все
больше стали включать в их состав различные инструменты для создания объектов
игрового мира. Как известно, игровые пространства, построенные на трехмерной графике,
предъявляют высокие требования к производительности компьютера. Поэтому
разработчикам компьютерных игр постоянно приходится решать проблему оптимизации.
Меньше полигонов, меньше вершин, минимум требуемой оперативной памяти и высокая
скорость визуализации. Компенсировать же теряемое качество приходится
использованием карт текстур высокого разрешения, а также использованием текстур
смещения Normal Bump maps.
Технология Normal Mapping (Normal Bump Mapping) позволяет симулировать высоко
детализированную поверхность на моделях низкого разрешения. Карты текстур Normal
75
maps — это улучшенный вариант обычных текстур смещения Bump maps. Normal maps
используют RGB-текстуру для изменения ориентации нормалей поверхности модели. И, в
отличие от обычных черно-белых текстур Bump maps, Normal maps позволяют достичь
наиболее качественного результата.
Технологический процесс представляет собой создание карт текстур смещения
(графического файла) на основе геометрии высокополигонального варианта модели и
применение полученных текстур на низкополигональной модели (рис. 24.58). Важно, что
низкополигональная модель должна по форме быть максимально приближена к своему
высокополигональному варианту.
Рис. 4.13. Технология Normal Mapping
На рис. 4.13. вверху слева показана высокополигональная модель, справа — ее
низкополигональный вариант; вверху посередине — карта текстуры смещения (bump
map), полученная из первой модели; внизу — результат наложения bump map на
низкополигональный вариант модели.
Для реализации технологии Normal Mapping используется специальное средство Render
To Texture (Визуализация в текстуру).
Кроме создания текстуры высокого разрешения это средство используется для сведения
освещения сцены в отдельные карты освещения. Эти текстурные карты содержат только
информацию об освещении и определяют уровень яркости объектов. Этот механизм
используется при разработке игр и позволяет получить более качественное изображение,
чем игровые алгоритмы.
4.4. Шейдеры
Ше́йдер (англ. Shader) — это программа для одной из ступеней графического конвейера,
используемая в трѐхмерной графике для определения окончательных параметров объекта
или изображения. Она может включать в себя произвольной сложности описание
поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение,
смещение поверхности и эффекты пост-обработки.
Типы Шейдеров
Вершинные шейдеры (Vertex Shader) - оперируют данными, сопоставленными с
вершинами многогранников. К таким данным, в частности, относятся координаты
76
вершины в пространстве, текстурные координаты, тангенс-вектор, вектор бинормали,
вектор нормали. Вершинный шейдер может быть использован для видового и
перспективного преобразования вершин, генерации текстурных координат, расчета
освещения и т. д.
Геометрические шейдеры (Geometry Shader) - в отличие от вершинных, способны
обработать не только одну вершину, но и целый примитив. Это может быть отрезок (две
вершины) и треугольник (три вершины), а при наличии информации о смежных вершинах
(adjacency) может быть обработано до шести вершин для треугольного примитива. Кроме
того геометрический шейдер способен генерировать примитивы «на лету», не задействуя
при этом центральный процессор. Впервые начал использоваться на видеокартах Nvidia
серии 8.
Фрагментные (Пиксельные) шейдеры (Pixel Shader) - работают с фрагментами
изображения. Под фрагментом изображения в данном случае понимается пиксель,
которому поставлен в соответствие некоторый набор атрибутов, таких как цвет, глубина,
текстурные координаты. Фрагментный шейдер используется на последней стадии
графического конвейера для формирования фрагмента изображения.
Применение шейдеров
Для визуализации (рендеринга) материалов с высокой степенью реализма – металлы,
природные камни, дерево, краска.
Рис. 4.14. Пример использования шейдеров
Для визуализации различных природных явлений – огонь, облака, дым, вода.
77
Рис. 4.15. Пример использования шейдеров
Для процедурного (изображения получаемые с помощью специальных алгоритмов)
текстурирования – плоски, кружочки, кирпичи, звездочки, текстуры созданные с
помощью шумовых функций.
Рис. 4.16. Пример использования шейдеров
Для создания нефотореалистичных (NPR) эффектов (non-photorealistic (NPR) effects) имитация живописи, рисование пером, эффект мультфильма, техническая иллюстрация.
Рис. 4.17. Пример использования шейдеров
78
Языки программирования шейдеров. Для графических библиотек OpenGL и
Direct3D созданы свои C-подобные языки для написания шейдеров:



GLSL (The OpenGL Shading Language) для OpenGL ;
HLSL (High Level Shader Language) для Direct3D;
CG (C for Graphics) для OpenGL и Direct3D .
Язык шейдеров GLSL для OpenGL. Язык шейдеров GLSL был введен в обращение
стандартом OpenGL 2.0. Он очень похож на CG. Однако это стандарт, который
вынуждены соблюдать все производители видеокарт. Преимущества - язык высокого
уровня, может применяться на самых различных видеокартах, поддержка GLSL
включается в стандартные драйверы OpenGL. Их применение не требует использования
больших дополнительных библиотек.
Недостатки - нет поддержки DirectX.
Основное преимущество GLSL над HLSL - простота жесткая стандартизация
расширяемость и спокойное эволюционное развитие библиотеки OpenGl в отличие от
Direct3D, расширяемость и эволюцонность развития в которой находятся практически на
нуле (с выходом новых версии драйвера Direct3D сводятся на нет все накопленные навыки
в работе с прошлыми версиями). Также библиотека OpenGl является кросс
платформенной, что позволяет применять ее на самых различных аппаратных и
программных платформах. В результате чего GLSL является открытым
межплатформенным стандартом. За исключением языка шейдеров OpenGL, нет других
шейдерных языков, являющихся частью межплатформенного стандарта. Более того,
отличительная особенность GLSL в том, что он тщательно анализировался и оценивался
многими производителями аппаратного обеспечения. Основная цель при его создании –
достижение кроссплатформенности, надежности и стандартизации.
Наконец, в отличие от HLSL/Cg , GLSL создавался в расчете на будущее аппаратное
обеспечение, поэтому, теоретически, он намного мощнее. Благодаря данным
отличительным особенностям GLSL является стандартом в профессиональной
трехмерной графике.
Языки шейдеров HLSL для DirectX. В DirectX в свое время также существовал
низкоуровневый язык программирования шейдеров. Сейчас в DirectX поддерживается
высокоуровневый язык шейдеров HLSL. Он похож на CG и GLSL и является стандартом
для DirectX. Совсем недавно корпорация ATI выпустила в свет утилиту, конвертирующую
шейдеры, написанные на языке HLSL, в шейдеры на GLSL. Этот факт говорит о
совершенной идентичности функциональности обоих языков.
Язык шейдеров CG от NVidia. Язык шейдеров CG появился в 2002 году. Отличительной
чертой является использование С-подобного синтаксиса. Поддерживаются циклы,
условный оператор, функции. Кроме того, главным новшеством была трансляция
шейдеров, написанных на CG, на тот низкоуровневый язык шейдеров, который
поддерживает
конкретная
видеокарта,
будь
то
расширения
GL_ARB_VERTEX_PROGRAM, GL_ARB_FRAGMENT_PROGRAM или специфичные
расширения видеокарты. Преимущества - язык высокого уровня, может применяться как
с OpenGL, так и с DirectX, может применяться на самых различных видеокартах за счет
компиляции в низкоуровневый шейдерный язык видеокарты. Недостатки - использование
CG требует поставлять вместе с основной программой и динамические линкуемые
библиотеки NVidia CG, которые имеют достаточно большой размер, язык не стал
стандартом, язык ориентирован главным образом на видеокарты NVidia.
79
4.5. Системы визуализации
4.5.1. Mental Ray
Mental Ray — программный модуль, который используется для высококачественной
визуализации (рендеринга) трехмерных сцен. В предыдущих версиях пакета Mental Ray
поставлялся как отдельный продукт, начиная с версии 6.0 Mental Ray интегрирован в 3ds
max, что значительно расширяет его возможности.
Mental Ray — профессиональная система рендеринга и визуализации изображений,
которая позволяет создавать непревзойденные по качеству и реалистичности сцены. Пакет
Mental Ray получил высокую оценку специалистов и широко используется для
трехмерной визуализации изображений, при создании художественных фильмов.
В основе работы Mental Ray лежит динамический просчет прохождения светового потока
(фотонов) через различные природные среды и вычисление распределения освещенности
с учетом физических свойств поверхностей. При этом отслеживается прямой и обратный
ход лучей, а также рассчитывается отражение света от поверхностей объектов с учетом
свойств материалов. Как известно любая поверхность в той или иной степени отражает
свет попадающий на нее. Например, если в ярко освещенной комнате стоит стол,
накрытый красной скатертью, то на стенах образуются красные блики; в закрытом
бассейне можно наблюдать сильные отблески света от поверхности воды. Особенный
интерес вызывают сцены, в которых используются стеклянные предметы. Именно там
должны проявляться эффекты преломления и отражения света. Обычные средства
визуализации (рендеринга) не позволяют получить реалистичного изображения
описанных выше сцен. Именно визуализатор Mental Ray позволяет решить многие из
этих проблем.
Рис. 4.18. Визуализация средствами Mental Ray
Важно отметить, что после активации визуализатора Mental Ray в редакторе материалов
появляются дополнительные материалы. Именно их использование позволит получить
проявление всех эффектов визуализатора. Кроме этого необходимо использовать и
специальные источники света.
Основные возможности Mental Ray:
 Global Illumination (GI) (Глобальное освещение) позволяет имитировать
многократное светоотражение. Вся сцена рассматривается как единая система и
вид объектов при визуализации рассчитывается с учетом их взаимного влияния;
 Caustics (Блики) позволяет создавать световые пятна, отбрасываемые одним
объектом на другой в результате отражения или преломления луча света;
80





Soft ray-traced shadows (Формирование мягких теней бегущим лучом) дает
возможность генерировать мягкие тени от локального освещения;
Vector motion blur (Векторное размытие по движению) позволяет создавать
высококачественные, основанные на трехмерной графике размытия по движению;
Depth of field (Глубина резкости) имитирует реальный объектив камеры;
Обеспечиваются наиболее простые способы для написания программ для
построения теней и ретуши;
Высококачественный сетевой рендеринг поддерживается практически всеми
существующими аппаратными средствами.
Параметры и настройка Mental Ray в среде 3ds Max
Для подключения Mental Ray в качестве используемого визуализатора, необходимо
выбрать его из списка доступных в разворачивающейся панели Assign Renderer вкладки
Common диалогового окна Render Scene (Rendering – Renderer – Common - Assign
Renderer).
Рис. 4.19. Выбор визуализатора
Здесь, нажав кнопку справа от надписи Production, можно выбрать и установить разные
визуализаторы для получения финального результата (в нашем случае — Mental Ray), а
также для редактора материалов (кнопка справа от надписи Material Editor) и для создания
81
теней (кнопка справа от надписи Active Shade). При нажатии кнопки Save as Defaults
визуализатор Mental Ray будет установлен по умолчанию.
Больше Вам не потребуется дополнительно устанавливать какие-либо параметры Mental
Ray, поскольку они автоматически активизируются в редакторе материалов Material
Editor, в категории источников света Lights и свойствах объекта и их не нужно будет
обновлять.
Также есть несколько элементов управления средства Mental Ray во вкладке Mental Ray
диалогового окна Preference Settings меню Customize. Установив флажок Enable Mental
Ray Extensions, Вы активизируете расширения Mental Ray, позволяющие редактировать
дополнительные параметры этого средства (например, затенения, о которых будет
рассказано далее).
Рис. 4.20. Настройки Mental Ray
При использовании Scanline Renderer визуализация выполняется построчно, а при
использовании средства Mental Ray визуализируемое изображение разбивается на
отдельные блоки, увидеть которые можно, установив флажок Show Brackets on Current
Buckets (или показать скобки для текущих визуализируемых блоков), и в результате в
процессе рендеринга вокруг текущего визуализируемого блока будут отображаться белые
скобки. Поскольку при использовании Mental Ray визуализация может выполняться по
сети или с помощью компьютера с несколькими процессорами, то в таком случае Вы
будете наблюдать картину, при которой будет отображаться множество белых скобок.
Параметр Show Visual Final gather Progress (показать процесс визуализации) означает, что
процесс рендеринга начнется с отображения грубого приближения итога изуализируемой
82
сцены, то есть Вы сможете получить представление о сцене задолго до полного
завершения процесса визуализации.
Установленный Флажок Clear Frame Window before Rendering (очистить окно перед
визуализацией) позволяет очистить окно просмотра результатов визуализации.
В разделе Messages (сообщения) указываются следующие параметры сообщений, которые
могут отображаться на экране во время визуализации средствами Mental Ray, а именно:
 Open Message Window on Error— отображать сообщения при появлении ошибок;
 Show/Log Progress Messages — показать/записать информационные сообщения;
 Log Debug Messages (To file) — записать отладочные сообщения в файл;
 Write Messages To File — сохранить сообщения в файле.
Материалы и карты Mental Ray.
После активации визуализатора Mental Ray в редакторе материалов появляются
дополнительные материалы и карты. Именно их использование позволит получить
проявление всех эффектов визуализатора.
Материалы Arch&Design.
Материалы Arch&Design являются специализированными материалами визуализатора
Mental Ray и предназначены специально для архитекторов. Их применение полезно их
при создании различных объектов, моделей и поверхностей, используемых в архитектуре.
Все эти материалы основаны на физических свойствах, характерных для окружающей
среды с глобальным освещением.
Ниже перечислены материалы Arch&Design,определенные и доступные в
разворачивающейся панели Templates (шаблоны):
 Appearance & Attributes (внешний вид и свойства):
 Matte Finish — матовая отделка
 Pearl Finish — перламутровая отделка
 Glossy Finish — глянцевая отделка
 Finishes (отделка):
 Satin Varnished Wood — атласное лакированное дерево
 Glossy Varnished Wood — глянцевое лакированное дерево
 Rough Concrete — необработанный бетон
 Polished Concrete — полированный бетон
 Glazed ceramic — глазурованная керамика
 Glazed ceramic Tiles — глазурованная керамическая плитка
 Glossy Plastic — блестящий пластик
 Matte Plastic — матовый пластик
 Masonry — кладка
 Rubber — резина
 Leather — кожа
 Transparent Materials:
 Glass (Thin Geometry) — стекло (тонкое)
 Glass (Solid Geometry) — стекло (прочное)
 Glass (Physical) — стекло (физическое)
 Frosted Glass — матированное стекло
 Translucent Plastic Film — прозрачная пластиковая пленка
 Water, reflective surface — вода, отражающая поверхность.
 Metal:
83





Chrome — хром
Brushed metal — обработанный метал
Satined metal — матированный метал
Copper — медь
Patterned copper — узорчатая медь
Рис. 4.21. Материалы Arch&Design Mental Ray
Для каждого шаблона предусмотрено несколько разворачивающихся панелей с полным
набором карт и многочисленными стандартными параметрами: Diffuse — диффузный,
Reflection — отражение, Refraction — преломление , Translucency — светопроницаемость,
Anisotropy — анизотропия, Fresnel reflection — отражение линзы Френеля, bumps —
неровность и Self-Illuminations — самосвечение.
В разворачивающейся панели Special Effects (специальные эффекты), есть два
специальных параметра, которые усиливают реализм:
84


Параметр Ambient Occlusion (учет окружающих предметов) позволяет учитывать
наличие препятствий на пути света. Области, частично или полностью закрытые,
оказываются в тени, а области открытые освещаются сильнее. Параметр Samples
означает количество выборок/лучей, а Max Distance — максимальное расстояние, с
их помощью можно контролировать контраст изображения.
Параметр Round Corners (закругления углов) полезен для имитации сглаживания
освещения на ребре объекта, но без изменения его геометрии. Таким образом,
создается реалистичный сглаженный край объекта, но без дополнительных
многоугольников, вычисление которых требовало бы дополнительных расходов.
Рис. 4.22. Имитации сглаживания
Визуализация при помощи командной строки в 3ds max.
В данном разделе рассматриваются методы и технические приемы визуализации
изображений, описаны методика рендера в командной строке из программ 3d
моделирования, на примере 3ds max, а также визуализация в автономной версии рендера
Mental Ray Standalone и аппаратная визуализация в нем.
Для начала ответим себе на вопрос, в чем преимущества визуализации из командной
строки, которая может показаться несколько неудобной по сравнению с привычным
рендером в системах создания и редактирования трѐхмерной графики и анимации, в
частности 3ds max.
Визуализация при помощи командной строки открывает пользователям возможность
пакетной визуализации, то есть последовательного просчета группы файлов. Например,
вам нужно визуализировать сцену. Прежде чем нажимать кнопку Render
(Визуализировать), необходимо будет указать в настройках программы основные
параметры: размер изображения, имя сохраняемого файла и т. д. Теперь представьте, что
вам понадобилось визуализировать 100 сцен подряд. Каждую сцену вам придется
открывать в программе и указывать настройки визуализации. Конечно, это будет очень
долго и трудоемко.
Также очевидное преимущество заключается в том, что с использованием командной
строки существенно экономятся системные ресурсы, поскольку не загружается интерфейс
программы. Это по понятным причинам ускоряет процесс рендера.
85
Итак, для доступа к командной строке в системах на базе Windows достаточно выбрать
пункт Run (Выполнить) из меню Start (Пуск). В итоге появится приглашение для ввода
выполняемых программ. Введите cmd в текстовой строке и щелкните на кнопке ОК,
чтобы выполнить введенную команду.
Окно, которое должно высветиться, приведено на рис.6.0.
Далее нам следует ввести команду, которая позволит перейти к каталогу с основным
приложением, в данном случае 3ds max. Это можно сделать с помощью команды
приведенной ниже. Это позволит нам выбирать команду визуализация, без добавления
адреса к ней. Поскольку копирование в командной строке не работает, то это весьма
удобно.
chdir "C:\Program Files\Autodesk\3ds max 2009\"
(Замечание: в данной команде использован адрес корневой папки 3ds max по умолчанию,
если у вас установлена программа по другому адресу, укажите этот адрес).
Далее введем команду:
3dsmaxcmd -?
Ключ -? выводит списка опций для визуализации из командной строки. Перед вами
предстанет информация как на рис. 6.0.
Рис. 4.23. Список опций визуализации из командной строки.
Вы увидите список опций который мы можем придать рендеру, который вы можете
прочесть и выбрать нужное вам. Для примера приведем команду и опишем ее свойства.
3dsmaxcmd –v:1 –outputName:
“scenes\2.max”
scenes\1.jpg
–w 800 –h 600
Ключ –v:1 – уровень подробности вывода сообщений о ходе визуализации (значение
может принимать от 0 до 5). Параметр –outputName: указывает нам адрес файла в который
86
запишется полученное изображение. Соответственно следующие параметры - это
размеры данного изображения. А в конце указан адрес файла, который мы будем
визуализировать. Обращаю ваше внимание, что адрес указан относительно корневой
папки, в которую мы перешли командой chdir. Вы можете задать не относительный, а
абсолютный адрес, если вам это удобней. Например “E:\3d works\scenes\2.max” . После
применение команды и рендера вы должны увидеть следующие сообщения:
Рис. 4.24. Успешное выполнение просчета рендера
Теперь когда мы рассмотрели рендер в командной строке из 3ds max мы можем перейти к
изучению Mental Ray StandAlone, в котором единственной возможностью рендера,
является визуализация из командной строки.
Визуализация в Mental Ray StandAlone.
Mental ray — профессиональная система рендеринга и визуализации изображений,
разработанная компанией mental images (Германия). Является дочерней компанией
NVIDIA Corporation.
Mental ray лучше всего интегрирован с Softimage XSI (с 1996 года, тогда Softimage
назывался Sumatra), есть также интеграции с Autodesk Maya (c 2002), Autodesk 3ds Max (c
1999), Houdini, SolidWorks. Это мощный инструмент визуализации, поддерживающий
сегментную визуализацию, подобно механизму сопровождающей визуализации,
реализованному в Maya, возможно отдельно считать по пасам, окклюзию, тени,
отражения, впрочем этим сейчас обзавелись практически все системы рендера, рендер по
пасам имеет V-Ray, finalRender, RenderMan и др.
Помимо интегрированных в данные продукты mental ray имеет standalone версию. В чем
преимущество этой версии, перед более привычными нам продуктов входящих в 3d
пакеты на подобие 3ds max или Maya. Тем более очевидный недостаток этой версии на
лицо: неудобство пользования. Во-первых, интерфейс как таковой отсутствует, рендер
выполняется функциями из командной строки. Во-вторых, standalone платная программа,
т.е. помимо приобретение пакета 3d моделирования, в который уже встроен mental ray, вы
должны будете приобрести и эту версию. Этот недостаток скорее важен для фирм,
которые вынуждены использовать лицензионный софт.
87
Итак, преимущества:
По сути Mental Ray Stand Alone это рендер в чистом виде без примесей, т.е. рендер не
зависящий от 3D пакета и работающий полностью автономно. Он имеет ряд достоинств
перед интегрированным решением:
 StandAlone версия гораздо более устойчивая. Как показывает практика, в
большинстве случаев, то, что не может отрендерить интегрированная версия
прекрасно рендерит StandAlone.
 StandAlone версия при худшем раскладе не "валит" 3d пакет.
 StandAlone предоставляет гораздо большую гибкость использования и больше
возможностей.
Например нововведения в новой версии Mental Ray часто бывают не доступны в 3D
пакете, не говоря уже о тех возможностях которые просто не реализованы в 3D пакете, но
доступны в самом рендере.
Итак, попробуем визуализировать сцену с помощью StandAlone версии.
Mental ray обладает собственным языком описания трехмерных сцен. Прежде чем сцена
или анимация смогут быть визуализированы, они должны быть представлены языковыми
конструкциями, понятными для него. Такое описание необходимо всегда, выполняется ли
рендер встроенным в пакет трехмерного моделирования mental ray или же его
независимой версией.
В 3D пакетах описание - перевод возложено на специальную подпрограмму - транслятор и
опирается на библиотеку дополнительных шейдеров, являющихся, по сути, описанием
конструкций пакета моделирования на языке mental ray. Другими словами, каждый из
элементов, которым оперирует пакет - геометрические объекты, камеры, источники света,
материалы, окружение, типы освещения, динамика, анимация, спецэффекты, все имеют
соответствующий шейдер, описывающий их возможности и свойства понятным для
mental ray образом.
Подборка таких шейдеров индивидуальна и образует библиотеку, без которой совместная
работа данной программы моделирования и mental ray просто невозможна.
Дополнительные шейдеры хранятся в специальных файлах, имеющих в Windows
расширение dll. Например, для 3ds max 7.x такой файл - 3dsmax7.dll, а для Maya mayabase.dll. Процесс перевода, или трансляции сцен для рендера происходит "на лету" и
при обычных условиях совершенно незаметен. В рамках программы трехмерного
моделирования мы всегда имеем дело с конечным результатом в виде готового
просчитанного изображения или анимации.
Тем не менее, трансляция сцены может быть записана в файл с расширением .mi и такую
возможность предоставляют все трехмерные пакеты со встроенным mental ray. Выполнив
экспорт сцены, можно получить доступ к ее описанию и редактированию этого описания в
каком-либо текстовом редакторе. Редактировать сам .mi файл мы пока не будем, а просто
получим его экспортом из 3ds max. Для этого зайдем в свойства рендера (кнопкой f10)
выберем визуализатор mental ray вместо рендера по умолчанию, и перейдем во вкладку
Processing. В той вкладке под разделом export to mi файл мы можем указать адрес и
название mi файла. Ниже представлен скриншот этого окна рендера.
88
Рис. 4.25. Экспорт mi файла.
Далее будут представлены два метода рендера полученного нами файла. Первый это
рендер из командной строки, а второй из bat файла. Рендер из командной строки
аналогичен по методике рендеру показанному выше для 3ds max. Однако, есть различия в
опциях.
Рассмотрим процесс использования mental ray из командной строки. Перейдем сначала в
командной строке, благодаря команде chdir, к корневой папке содержащей mental ray
StandAlone. У меня это C:\Program Files\Autodesk\mrstand3.8.1-adsk2011\bin.
Далее введем строчку:
ray -v on -x on -imgpipe 1 scene_1.mi | imf_disp –
Ray – это команда рендера. Далее следует ряд опций -v on -x on - необходимы нам для
описания -imgpipe 1 – носит необязательный характер. Эта опция выводит нам окно в
котором происходит рендер, это удобно, чтобы следить за рендером воочию.
89
Рис. 4.26. Рендер из mi файла.
Более простой способ, позволяющий постоянно не набирать команды, это использования
bat файла. Все предельно просто, нам надо создать bat файл вот с таким содержанием:
"C:\Program Files\Autodesk\mrstand3.8.1-adsk2011\bin\ray.exe" -v on
-x on E:\3D\nirs\scene_1.mi
Где первый адрес, это адрес ray.exe файла из корневой папки mental ray, а второй это
адрес mi файла.
Рис. 4.27. Протокол визуализации
Теперь, научившись визуализировать из командной строки и получив основы работы в
mental ray standalone, мы можем перейти к аппаратной визуализации.
90
Аппаратная визуализация
Одна из главных задач визуализатора – это уменьшение времени рендера изображения до
минимума. И далее, мы попытаемся с вами уменьшить время рендера простой сцены
средствами аппаратной визуализации, подключив видеокарту к процессу рендера.
Сначала немного о том, что это такое аппаратная визуализация.
Графические процессоры (ГП) постоянно совершенствуются, а вместе с ними
расширяются возможности для ускорения визуализации с помощью графического, а не
центрального процессора. Самое значительное усовершенствование технологии
графических процессоров непосредственно связано с ускорением визуализации на
нескольких разных уровнях и повсеместно наблюдается в виде усиленной аппаратной
поддержки в ряде средств визуализации и основных приложений. Подобная интеграция
чаще всего связана с просмотром и применением аппаратных шейдеров для таких
аппаратных платформ, как игровые механизмы, а не с ускорением программной
визуализации. Примером такой интеграции может служить расширенная поддержка
разработки и применения шейдеров, работающих в реальном масштабе времени, во всех
упоминаемых основных приложениях. Так, в XSI допускается просмотр, правка и
выявление неисправностей шейдеров, работающих в реальном масштабе времени с
поддержкой Cg (Cg означает С-подобный язык программирования для графики), OpenGL
и DirectX, совершенно независимо от любого программного средства визуализации.
Такие термины, как Cg, DirectX и OpenGL, могут быть не совсем знакомы художникам, не
работающим с машинной графикой, предназначенной для воспроизведения в реальном
масштабе времени, поскольку это совершенно иная область. Главное отличие аппаратной
визуализации от программной заключается в самом подходе к визуализации. При
аппаратной визуализации выполняется поочередная обработка многоугольников без
обращения к информации, хранящейся в базе данных сцены. Основное назначение
графического процессора состоит в том, чтобы как можно быстрее заполнить буфер
кадров, обеспечив тем самым визуализацию в реальном масштабе времени. А назначение
аппаратной визуализации — как можно быстрее пропустить вершины через графический
процессор на стадиях обработки вершин и фрагментов (подробнее об этом далее в разделе
"Программируемые графические процессоры и деревья шейдеров") и заполнить буфер
кадров с учетом заданного разрешения, как это, например, происходит в играх реального
времени. При программной визуализации разрешение не играет существенной роли, и
теоретически обработка может выполняться с любым разрешением в течение данного
промежутка времени при надлежащей подготовке к визуализации даже если требуется
визуализировать сначала отдельные участки сцены, а затем объединить их на стадии
компоновки. Еще одно отличие заключается в том, что программа может анализировать
каждый пиксель на уровне субпикселей, обеспечивая улучшенное сглаживание и
интерполяцию шейдера. Следовательно, существенное отличие обоих методов
заключается в подходе к самой визуализации: если программный метод позволяет точнее
формировать визуализируемое изображение поочередными выборками независимо от
разрешения, то аппаратный метод с самого начала учитывает разрешение, совершенно не
принимая во внимание саму сцену и как можно быстрее заполняя пиксели, исходя из
заданного разрешения. Одним из недостатков аппаратной визуализации для
развлекательных приложений является ее зависимость от разрешения: визуализация не
может быть выполнена с разрешением, превышающим возможности системной
видеоплаты.
В связи с тем что аппаратная визуализация практически малопригодна для большинства
пользователей основных приложений с встроенной поддержкой mental ray (и это станет
91
ясно из дальнейшего), в последующих разделах этот метод рассматривается лишь в самых
общих чертах.
Графические процессоры предназначены для того, чтобы максимально ускорить и
повысить гибкость преобразований вершин, после которых следует сборка примитивов и
растрирование, в результате чего образуются вершины, освещенные, затененные и
помещенные в конкретном пространстве пикселей, а все неиспользуемые вершины
удаляются. Способность графического процессора решать подобные задачи в реальном
масштабе времени дает ему некоторые преимущества над центральным процессором. В
действительности, графический процессор способен обрабатывать сотни миллионов
многоугольников в секунду. В итоге центральный процессор освобождается от этих
обязанностей, а система в целом работает более эффективно, распределяя задачи между
центральным и графическим процессорами. Очевидно, что преимущества современных
графических процессоров могут быть использованы во время визуализации без потери
качества. Именно этой цели и служит ускорение средствами OpenGL, обеспечивающее
заметное повышение производительности системы. Это означает, что графическому
процессору поручается задача преобразования вершин, с которой он чаще всего
справляется намного быстрее, чем центральный процессор. В свою очередь, центральному
процессору поручается задача обработки шейдеров, чтобы обеспечить требуемое
качество, поскольку возможности графического процессора в отношении обработки
шейдеров на данный момент весьма ограничены.
Итак, теперь когда мы познакомились с аппаратной визуализацией, мы можем
попробовать подсоединить графический процессор для рендера сцены, заданной mi
файлом.
Для этого необходимо открыть mi файл в текстовом редакторе и найти там следующий
фрагмент:
Options
"SceneOptions|SceneOptions"
"finalgather mode" "automatic"
"finalgather points" 50
"globillum merge" 0.000000
shadow on
trace on
scanline on
вот такой отрывок, тут заданы различные свойства рендера, в частности как он будет
рендериться, программно или аппаратно. По умолчанию стоит программный рендер,(trace
on и scanline on, включены). Скопируем наш файл и поменяем в нем значения параметров
trace и scanline на off и добавим параметр hardware on, т.е. эта часть mi файла будет
выглядеть вот так:
options "SceneOptions|SceneOptions"
"finalgather mode" "automatic"
"finalgather points" 50
"globillum merge" 0.000000
shadow on
trace off
scanline off
hardware on.
92
А теперь давайте сравним время рендера (оно выведется нам при описании рендера в
конце) для первого и второго файла, а также загрузку процессора и оперативной памяти.
В данном случае использовался один bat файл с изменением адреса mi файла. Для
слежения за загрузкой оперативной памяти и процессора используем специальный гаджет
Windows 7. Для начала замерим начальные условия, до рендера. Обращаю ваше внимание
на то, что первое значение под RAM это сколько осталось, т.е. чем меньше это значение,
тем больше загружена оперативная память.
Рис. 4.28. Начальные условия
Теперь проведем рендер первого mi файла, с программной визуализацией.
И для второго.
Рис. 4.29. Первый файл
93
Рис. 4.30. Второй файл
Перед нами весьма солидный выигрыш. При повторении рендера несколько раз различие
во времени получались порядка 7-9 сотых секунды, что составляет от 7 до 10%. На мой
взгляд, это весьма солидно. Значение загрузки оперативной памяти и процессора,
менялись, но все время было больше у первого. Однако не всегда различие было таким
солидным как на рисунке. Тем не менее, столь хороший результат, можно объяснить
содержанием mi файла, т.е. самой сценой. В данной сцене было достаточно полигонов и
один источник света, дополнительных настроек визуализации для повышения качества не
было вообще. Итоговый рендер представлен на рис. 4.31.
Рис. 4.31. Итоговый рендер
Поскольку графический процессор быстрее справляется с геометрией, а в этой сцене,
помимо нее мало чего другого было, то он дает хороший результат.
94
Из этого можно сделать вывод, что если в вашей сцене много сложной геометрии и
огромное число полигонов, то можно использовать аппаратную визуализацию для
ускорения работы.
4.5.2. V-ray
V-Ray – плагин для визуализации (rendering). Плагин – это дополнение, которое добавляет
функции к программе. На данный момент существую версии V-Ray для следующих
программ: 3D Studio Max, Maya и Rhinoceros 3D. V-Ray позволяет создавать
фотореалистичное изображение с оптимальной скоростью визуализации. V-Ray создается
компанией Сhaosgroup (http://www.chaosgroup.com/). (Рис. 6.0.)
Рис. 4.32. Сайт компании Сhaosgroup.
Компания Chaos Group Ltd была основана в 1997, главным образом предоставляющая
услуги в области трехмерного моделирования и анимации. После 5 летней работы над
разными проектами появилась необходимость в продукте, который по крайней мере
частично преодолеет ограничения аппаратных средств и программного обеспечения,
существующие в то время на международном рынке визуализации.
После периода интенсивного экспериментирования и исследования, команда
профессиональных программистов разработала средство визуализации V-Ray. Опыт
команды дизайнеров,
способности команды программистов, обратная связь,
предоставляемая пользователями, сформировало V-Ray в то, чем он является сегодня –
революционный продукт для визуализации.
Рынок трехмерного моделирования, визуальных эффектов и ПО для визуализации
интенсивно и динамично развивается. Компания Chaos Group Ltd стала занимать одно из
95
лидирующих мест в гонке за более лучшее и более быстрое ПО, предназначенное для
индустрии развлечения и визуализации.
Изображения, сделанные средствами V-Ray.
Рис. 4.33. Изображение, сделанное средствами V-Ray. Кухня.
Рис. 4.34. Изображение, сделанное средствами V-Ray. Квартира-студия.
Рис. 4.35. Изображение, сделанное средствами V-Ray. Автомобиль Mercedes.
96
Рис. 4.36. Изображение, сделанное средствами V-Ray. Автомобиль Mini Cooper.
Основные принципы
Задача любого визуализатора является вычисление освещенности и цвета всех точек
трехмерной сцены. Вычислительные методы компьютерной графики начали
разрабатываться давно, и развиваются до сих пор. Получилась даже так, что придумали
определенный алгоритм давно и только сейчас им начали активно пользоваться
разработчики. Современные визуализаторы позволяют добиться фотореалистичных
изображений.
Первая компонента освещенности объектов – расчет освещенности от источников света,
которые находятся в прямой видимости. То есть объект и источник света можно
соединить прямой линией. Это позволяет рассчитать алгоритм Фонга (Phong)[11].
Алгоритм позволил сгладить цвета поверхности объектов и вычислять зеркальную
подсветку для них. Существую модификации этого алгоритма – это алгоритм Ламберта
(Lambert), Блинна (Blinn), Торрента (Torrent), Варда (Ward) и другие. Эти алгоритмы
являются основными для вычисления прямой освещенности.
Вторая компонента освещенности объектов определяется зеркальным отражением от
окружения и прозрачностью самого объекта. Для ее вычисления был разработан метод
трассировки лучей – ray tracing method[12]. Этот метод отслеживает траектории лучей
света, начиная от камеры, до первой поверхности пересечения и затем – в зависимости от
прозрачности или отражающих свойств поверхности, определяется направление
дальнейшего распространения луча. Метод трассировки лучей от камеры впервые
позволил учесть в расчетах освещенности объекта его окружение. Одним из недостатков
классического метода трассировки лучей является «жесткость» получаемого изображения
– излишняя четкость контуров, теней, цветов (рис. 4.37).
97
Рис. 4.37. Изображение, сделанное стандартным визуализатором ScanLine.
Поэтому в дальнейшем была разработана модификация, известная как distribution ray
tracing (DRT)[13]. Суть DRT в том, что при каждом пересечении трассируемого луча с
поверхностями вдоль его траектории, из каждой точки пересечения строится не один, а
несколько лучей. Этот процесс несколько напоминает цепную реакцию. Такой подход
позволил рассчитывать размытые отражения и преломления (известные также как
туманные (fuzzy), смазанные (blurry) или глянцевые (glossy) отражения и преломления),
но за счет огромного увеличения объема расчетов. Модель DRT реализована в свойствах
отражений и преломлений материалов Vray при помощи параметра Glossy.
Третья компонента освещенности объекта рассчитывает многократные диффузные
(цветовые) вторичные и последующие отражения света окружающими объектами. Самым
первым способом расчета вторичной диффузной освещенности был radiosity (метод
излучательности), который используется до сих пор. Но из-за большого количества
недостатков уступил место двум другим способам расчета – методу расчета с
использованием алгоритма Монте-Карло (Monte Carlo) [14] и методу фотонных карт
(Photon Map) [15].
Метод фотонных карт создает для каждой поверхности объекта сцены базу данных, в
которой хранится информация о столкновениях «фотонов» с поверхностью – координаты
столкновения, направление и энергия фотона. Под фотоном понимается порция энергии
освещения, распространяющейся в некотором направлении от данного источника света.
Плотность фотонной карты используется в дальнейших расчетах для оценки
освещенности точки в результате диффузного рассеяния света на поверхностях
окружения. Все визуализаторы, использующие метод фотонных карт, выполняют расчет
освещенности за два прохода. На первом проходе выполняется трассировка фотонов от
источников света до поверхностей, и создаются фотонные карты для них. На втором
проходе выполняется обратная трассировка лучей от камеры, а фотонные карты
используются для расчета диффузной освещенности точек пересечения лучей обратной
трассировки с поверхностями. Главные преимущества фотонных карт – скорость и
корректность расчетов. Недостатки связаны с большими требованиями к оперативной
памяти и трудностями в обработке стыков, углов и границ поверхностей.
98
Метод расчета с использованием алгоритма Монте-Карло позволяет вычислить значение
интеграла как сумму небольшого количества значений подынтегральных функций,
выбранных случайным образом. Фактически, весь математический аппарат метода с
использованием алгоритма Монте-Карло представляет собой правила определения выбора
таких значений, поскольку от этого зависит точность и скорость нахождения решений
интегралов. Выбранные для расчета интеграла значения подынтегральных функций часто
называют сэмплами (samples). В настоящее время метод с использованием алгоритма
Монте-Карло является стандартом для визуализаторов трехмерной компьютерной
графики и используется очень широко – практически во всех ведущих пакетах. Тем не
менее, этот метод обладает серьезным недостатком – медленной сходимостью решений.
На практике это означает, что для увеличения качества расчета освещенности, например,
в два раза потребуется вчетверо увеличить объем вычислений (количество сэмплов).
Недостаток качества проявляется при визуализации как «шум» – видимые на изображении
световые пятна, зернистость и визуальные артефакты.
Четвертая компонента освещенности занимается специальным случаем освещенности –
рассчитывает световые эффекты, возникающие в результате фокусировки из-за
преломлений или отражений лучей света в некоторой области поверхности. Эти эффекты
получили название эффекты каустики освещения. Примером может служить линза,
фокусирующая солнечный свет на поверхности объекта. Расчет эффектов каустики
освещения может быть выполнен методом фотонных карт, но при этом требуется
локальная фотонная карта очень высокой плотности. Поэтому такие фотонные карты
создаются отдельно при возникновении необходимости.
Итак современный уровень развития вычислительных методов компьютерной графики
позволяет рассчитывать освещенность произвольной точки трехмерной сцены как сумму
четырех компонент: прямой освещенности, зеркальных преломлений и отражений,
вторичных диффузных отражений и эффектов каустики освещения.
Для совершенно точного расчета всего света, падающего на данную точку поверхности,
требуется просуммировать лучи света, приходящие в нее со всех направлений. Это
приводит к необходимости интегрирования освещенности по полусфере, окружающей
точку, если она принадлежит непрозрачной поверхности, или – по сфере, если
поверхность является еще и прозрачной. Для построения освещенности в компьютерной
графике используются функции, описывающие все четыре компоненты освещения –
функции источников света, функции свойств зеркального отражения/преломления
поверхности и функции диффузного отражения поверхности. Последние два вида
функций часто объединяют в одну, получившую название BRDF – Bidirectional
Reflectance/Refractance Distribution Function (двунаправленная функция распределения
отражения/преломления) [16].
Программное ядро V-Ray построено на методе фотонных карт и на методе, который
использует алгоритм Монте-Карло. Для первого диффузного отражения (луч света от
источника падает на поверхность, отражается и попадает в точку, освещенность которой
рассчитывается) в V-Ray используется метод, с использование алгоритма Монте-Карло.
Для всех диффузных отражений, начиная со второго (луч света дважды или более
отражается от других поверхностей, прежде чем достигает расчетной точки), может
использоваться метод, с использование алгоритма Монте-Карло, метод фотонных карт и
метод кэширования света. В терминологии V-Ray первое диффузное отражение
обозначается как Primary bounces (первичные отскоки), вторичные и последующие
отражения – Secondary bounces (вторичные отскоки). Такой подход довольно рационален,
99
поскольку известно, что основную часть диффузной освещенности точки формирует
именно второе отражение. Вклад остальных отражений невелик вследствие очень
быстрого затухания интенсивности диффузных отражений с увеличением их количества.
Таким образом, предложенное в V-Ray сочетание методов обеспечивает точность и более
высокую скорость расчетов, по сравнению с конкурирующими визуализаторами.
Возможности V-Ray
1. Архитектура
a. Объединенная система осуществления выборки, основанная на выборки
Schlick
b. Сетевая визуализация
c. Эффективная система тонировщиков, оптимизированная для ray-tracing
2. Геометрия
a. Эффективная обработка геометрии
b. Возможность создания геометрии
c. Возможность загрузки геометрии из файлов
d. Карты смещения (Displacement mapping)
e. Осуществление выборки изображения (Image sampling)
f. Различные методы осуществления выборки
g. Антиалиасинг (antialiasing) всей сцены
h. Прогрессивная трассировка пути
i. Поддержка дополнительных элементов визуализации
3. Освещение
a. Приближенные к физически точным глобальные решения для освещения
b. Различные алгоритмы глобального освещения (Global Illumination):
трассировка пути, кэш освещенности, карты фотона, световой кэш.
c. Глобальное освещение многократного использования для ускоренной
визуализации анимации.
d. Приближенные к физически точным рассеивающие источники света.
4. Шейдеры
a. Передовые материалы
b. Расплывчатые отражения/преломления
c. Приближенные к физически точным блики
d. Подповерхностное рассеивание
5. Эффекты камеры
a. Глубина резкости (DOF)
b. Размытость изображения, вызванное движением (motion blur)
6. Дополнения
a. Эффект мультипликации
b. Генератор ворсистости
c. Поддержка визуализации в текстуру
d. Кадровый буфер
Подключение плагина V-Ray в 3Ds MAX
Чтобы подключить плагин, нужно выбрать его в качестве активного визуализатора.
Из меню выбираем Rendering - Render… В диалоговом окне в свертке Assign Renderer
нажмите на кнопку …. (Рис. 6.0. 7). Из появившегося списка нужно выбрать – V-Ray Adv
1.50.SP1. (Рис. 6.0. 8).
Теперь V-Ray подключен, переходим к его настройкам.
100
Рис. 4.38. Подключение V-Ray.
Рис. 4.39. Выбор визуализатора V-Ray.
Плагин подключен, переходим к его настройкам.
Настройки V-Ray
В диалоговом окне Render появилось 3 закладки: V-Ray, Indirect Illumination, Settings.
Рассмотрим каждую из них.
V-Ray
V-Ray:: Authorization (Рис. 4.40).
101
Рис. 4.40. Настройки V-Ray:: Authorization
Информация о сервере лицензии.
About V-Ray (Рис. 4.41).
Рис. 4.41. Окно About V-Ray
Информация о версии V-Ray и об авторских прав.
V-Ray:: Frame Buffer
102
Рис. 4.42. Настройки V-Ray:: Frame Buffer.
Это виртуальный буфер кадра V-Ray (рис. 4.42) в дополнение к стандартному буферу 3ds
max. Буфер кадра V-Ray имеет дополнительные возможности:
1. Возможность просмотреть все элементы визуализации в одном окне и быстро
переключаться между ними.
2. Записывает изображение в 32 битном формате.
3. Позволяет делать простейшая корректировка цвета визуализированного
изображения.
4. Возможность управлением последовательности визуализации челноков (bucket).
V-Ray:: Global switches
Рис. 4.43. Настройки V-Ray:: Global switches.
Глобальные опции, которые позволяют настраивать различные аспекты визуализатора
глобально (рис. 4.43).
Здесь разделы геометрия, освещение, материалы, глобально освещение, Raytracing,
совместимость. Данные настройки позволяют выключить/отключить параметры для более
быстрой визуализации, скорее всего при черновой визуализации.
103
V-Ray:: Image Samper (Antialiasing)
Рис. 4.44. Настройки V-Ray:: Image Samper (Antialiasing).
Антиалиасинг – один из способов борьбы с нежелательным искажением контура.
В V-Ray, image sampler имеет отношение к алгоритму для взятия образцов пикселей, для
последующий их фильтрации.
V-Ray предоставляет несколько алгоритмов для взятия образцов изображения:
Fixed rate, Adaptive QMC и Adaptive subdivision. В зависимости от выбранного типа взятия
образцов – появляется сверток с соответствующим названием, где приведены настройки
(Рис. 6.0. 13).
Antialiasing Filter (Фильтры антиалиасинга) – здесь выбираются фильтры для сглаживания
изображения.
V-Ray:: Environment
Рис. 4.45. Настройки V-Ray:: Environment.
Здесь можно указать цвет или карту, которые будут использоваться во время просчета
глобального освещения (GI) и преломления/отражения (рис. 4.45).
V-Ray:: Color mapping
104
Рис. 4.46. Настройки V-Ray:: Color mapping.
Color mapping (Распределение цвета) - используется для преобразования цветов в
финальном изображении (рис. 4.46).
На практике: с помощью изменения типа распределения цвета, можно бороться с
засвеченными участками изображения.
V-Ray:: Camera
Рис. 4.47. Настройки V-Ray:: Camera.
Настройки управляют способом проецирования объектов сцены на финальное
изображение (рис. 4.47). Можно выбрать тип камеры и установить параметры, настроить
глубину резкости (DOF), смазывания в движении (Motion Blur).
Indirect Illumination
V-Ray:: Indirect Illumination (GI)
105
Рис. 4.48. Настройки V-Ray:: Indirect Illumination (GI).
V-Ray позволяет рассчитать глобальное освещение различными методами. Разница между
ними состоит в компромиссе между качеством и скоростью.
Во вкладке Indirect Illumination (GI) (рис. 4.48) указывается алгоритмы расчета для
первычних и вторичных отскоков световых лучей. А именно: Irradiance map, Brute force,
Photon map, Light cache.
Рис. 4.49. Настройки V-Ray:: Irradiance map и Brute force.
Brute force (Грубая сила) – это самый просто подход (рис. 4.49). Глобальное освещение
рассчитывается независимо от каждой точки поверхности, путем прослеживания лучей в
106
разных направлениях. Лучи исходят из полусфер, образованных из точки на поверхности
плоскости объекта.
Irradiance map (Карта освещенности) – этот подход основан на кэшировании
освещенности (Рис. 6.0. 18). Основная идея заключается в том, чтобы рассчитывать
освещенность лишь в некоторых точках сцены, а значения остальных точек подогнать
(интерполировать).
Photon map (Карта фотонов) – этот метод основан на слежении за частицами,
которые испускаются источниками света и отражаются от объектов сцены.
Light cache (Кэш света) – эта техника для приблизительного расчета глобального
освещения в сцене. Алгоритм похож на алгоритм Карт Фотонов, но без ограничений.
В зависимости от выбранных алгоритмов появляются свертки настройки алгоритмов с их
названиями соответственно.
V-Ray:: Brute force
V-Ray:: Irradiance map
V-Ray:: Photon map
V-Ray:: Light cache
V-Ray:: Caustics
Рис. 4.50. Настройки V-Ray:: Caustics.
V-Ray поддерживает эффект каустики (рис. 4.50). Каустика – оптическое изображение,
которое формирует отраженный/преломленный свет. В этом свертке соответственно
находятся настройки каустики.
Settings
V-Ray:: DMC Sampler
107
Рис. 4.51. Настройки V-Ray:: DMC Sampler.
Самый важный сверток из всех (рис. 4.52). Здесь можно настроить V-Ray так, чтобы
визуализировать предварительное изображение за пару секунд, а можно просчитывать
финальную картинку высокого качества несколько часов. Этот сверток влияет на image
sampler (антиалиасинг) и контролирует качество всего в V-Ray. Контролируя параметры,
которые здесь расположены, влияют на глобальное освещения, антиалиасинг, тени,
размытые отражения/преломления.
V-Ray:: Default displacement
Этот раздел позволяет управлять смещением объектов с материалом смещения (рис. 4.52).
Рис. 4.52. Настройки V-Ray:: Default displacement.
V-Ray:: System
В этой секции расположены системные настройки V-Ray (рис. 4.53).
108
Рис. 4.53. Настройки V-Ray:: System.
Начальные настройки V-Ray и создание материалов
Создание простой сцены
Создадим три различных по масштабу объекта Teapot (Чайник) и применим модификатор
Shell, для создания толщины. Разместим их на объекте Plane (Плоскость).
Назначим стандартные материалы на чайники, с различными цветами. На плоскость
назначим стандартный материал; в слоте Diffuse назначим Checker. Готовая сцена –
(Scenes/Scene_0.max).
Визуализируем стандартным визуализатором – Default Scanline Renderer (рис. 4.54).
109
Рис. 4.54. Изображение, сделанное стандартным визуализатором ScanLine.
Далее визуализируем изображения с помощью V-Ray.
Черновые настройки
Активизируем визуализатор V-Ray.
В Global switches отключаем стандартные источники освещения (Default lights), которые в
3DS MAX появляются автоматически при создании новой сцены (рис. 4.55).
Рис. 4.55. Настройки V-Ray:: Global switches.
В разделе Environment включаем (On) GI Environment override и Reflection/Refraction
environment override и выставляем белый цвет (рис. 4.56).
110
Рис. 4.56. Настройки V-Ray:: Environment.
В разделе разделе Indirect Illumination включаем глобальное освещение – On. На
первичном отскоке фотонов (Primary bounces) – оставляем алгоритм Irradiance map. На
вторичном отскоке фотонов (Secondary bounces) – оставляем алгоритм Brute force.
В настройках Irradiance map первый раздел - список пре-установок. Из этого списка
выбирается комплект настроек, которое влияет на качество будущего изображения. Т.к.
нам нужны черновые настройки, выбираем Very Low (Очень низкое). Также HSph.
Subdives – выбираем 20, меньшее количество полусфер для прочета первичных отскоков.
Также включим опцию Show Calc.Phase – чтобы видеть как V-Ray просчитывает
освещение (рис. 4.57).
Рис. 4.57. Настройки V-Ray:: Indirect Illumination (GI).
Результат просчета сцены представлен на рис. 4.58.
111
Рис. 4.58. Изображение полученное с примененными настройками V-Ray.
Сравним результаты визуализации (рис. 4.59).
Рис. 4.59. Сравнение изображений полученное средствами V-Ray и ScanLine.
Изображение с использованием V-Ray выглядит привлекательнее. Разница в том, что в VRay – включено Глобальное Освещение (GI). А в Default Scanline Renderer – глобальное
освещение можно реализовать лишь с помощью дополнительных плагинов – Radiosity и
Light Tracer.
112
Создание простых материалов (пластик, стекло, хром)
Рассмотрим как создавать материалы в V-Ray.
Зададим тип материала – VrayMaterial (VrayMtl) (Рис. 6.0. 29). Это специальный материал,
входящий в состав в V-Ray. Позволяет создавать реалистичные материалы, уменьшить
время визуализации, удобно и быстро управлять параметрами отражения и преломления.
Рис. 4.60. Окно выбора материала. Окно настройки VrayMtl.
Рассмотрим основные настройки материала (рис. 4.60).
В свитке Basic parameters настройки материала разделены на следующие группы:
 Diffuse (Рассеиваемый цвет) - цвет рассеиваемый материалом.
 Reflection (Отражение) – настройка отражения в материале.
 Refraction (Преломление)– настройка преломления в материале.
113

Translucency (Полупрозрачность) – настройка света, который распространяется
под поверхностью материала.
Пластик
Создадим материал для центрального чайника. Цвет Diffuse поставим красный.
Рассмотрим группу параметров Reflection. Reflect – черный цвет означает что нет
отражения, белый – абсолютное отражение (зеракло). Поставим значение 35. (Hue, Sat –
поставьте на 0 и регулируйте только один параметр –Value – 35). Визуализируйте
изображение и вы увидите, что в чайнике появились отражения: носик и часть крышки
этого же чайника, два других чайника и плоскость, на которой он стоит (рис. 4.61).
Рис. 4.61. Изображение полученное с примененными материалами V-Ray.
Параметр Refl.Glossiness (Глянцевость) – управляет резкостью отражения. Чем меньше
значение параметра, тем сильнее размыто отражение, то есть поверхность становиться
глянцевой. Поставим значение – 0,85. После визуализации изображения можно заметить,
что отражение стало нечетким, размытым. Получился пластиковый или керамический
материал (рис. 4.62).
114
Рис. 4.62. Изображение полученное с примененными материалами V-Ray.
Стекло
Создадим материал для ближнего чайника. Цвет Diffuse поставим зеленый.
В поле Reflection – опция Fresnel Reflections (Отражение по Френелю) – это когда сила
отражения зависит от угла, под которым смотришь на поверхность. Чем острее угол, тем
сильнее отражение. Пример такого отражение – стекло. Как раз этот материал мы сейчас и
сделаем. Включаем эту опцию. А цвет Reflect – ставим белый, иначе мы рискуем вообще
не заметить отражения.
Поле Refraction – параметры преломления материала.
Refract – черный цвет означает что нет преломления и материал полностью непрозрачный,
белый – абсолютное преломление (стекло). Поставим соответственно значение 255.
Визуализируйте изображение и вы увидите, что некогда зеленый чайник стал стеклянным
(рис. 4.63).
115
Рис. 4.63. Изображение полученное с примененными материалами V-Ray.
Если все же нужно сделать стекло зелено – то для этого существует эффект фоггинга
(Fogging).
Fog Color (Цвет тумана)- цвет, котором будем затонировано преломление. Поставим
зеленый (рис. 4.64).
Рис. 4.64. Изображение полученное с примененными материалами V-Ray.
Если получается слишком насыщенный цвет, то нужно отрегулировать параметр Fog
Multiplier (Множитель тумана) – это сила эффекта.
116
Если поставить Fog Color – (R=162 G=214 B=203), а Fog Multiplier = 0,1 получится вполен
реалистичное обычное стекло (Рис. 6.0. 35).
Рис. 4.65. Изображение полученное с примененными материалами V-Ray.
Металл хром
И, наконец, создадим материал для третьего чайника. Сделаем его металлическим.
Цвет Diffuse поставим черный.
В поле Reflection – цвет Reflect – ставим почти белый (R=245 G=245 B=245). Поставим
Refl.Glossiness = 0,85 и получим чайник из ныне очень популярного материала – хрома
(рис. 4.65).
117
Рис. 4.65. Изображение полученное с примененными материалами V-Ray.
Изменим цвет Reflect – ставим желтый (R=250 G=200 B=110). Визуализируйте картинку –
получили чайник из золота (рис. 4.66). Готовая сцена с материалами–
(Scenes/Scene_1.max).
Рис. 4.66. Изображение полученное с примененными материалами V-Ray.
118
Каустика
Каустика (Caustics) — световые пятна, возникающие в пространстве при освещении
объектов с высокими отражающими и преломляющими характеристиками. Эффекты,
основанные на вторичном (отраженном или преломленном) свете, называются
каустическими эффектами.
В V-Ray есть поддержка эффекта каустики. Чтобы получить этот эффекта необходим
настроить сцену определенным образом.
Создадим простую сцену. Сделаем стакан при помощи сплайна и примененным к нему
модификатором Lathe. Создадим плоскость и разместим на ней стакан. Поставим
источник света Target Spot и направим его таким образом, чтобы свет проходил через
стакан. Создадим камеру и расположим ее под некоторым углом к направлению
источника света (рис. 4.67).
Рис. 4.67. Создание сцены.
Создадим материалы VrayMtl для объектов. Для плоскости изменим только цвет –
поставим белый.
Для стакана создадим зеленое стекло (рис. 4.68):
Цвет Diffuse– черный
Цвет Reflect – белый
Fresnel Freflections
Цвет Refract – белый
Fog color – зеленый (R=176 G=199 B=127)
Fog Multiplier – 0.1
119
Рис. 4.68. Настройка материала стекло
Настройки визуализатора
Настроим V-Ray таким же образом, как и в предыдущей сцене.
Закладка Renderer
В свитке V-Ray:: Global switches отключаем стандартные источники освещения (Default
lights).
В разделе V-Ray:: Environment включаем GI Environment (skylight) override (On) и
Reflection/refraction environment override (On) и выставляем белый цвет.
В разделе V-Ray:: Indirect Illumination (GI) включаем глобальное освещение – On.
В свитке V-Ray:: Irradiance map в разделе Built-in presets из списка предустановок Current
preset выбираем Very Low (Очень низкое). В разделе Basic parameters параметр HSph.
subdivs – задаем 20. Также включим опцию Show Calc.Phase.
Визуализируйте картинку (рис. 4.69).
120
Рис. 4.69. Изображение, полученное при визуализации V-Ray.
Теперь необходимо подключить каустику.
Нажмем правой кнопкой на Target Spot и вызовем V-Ray Properties (рис. 4.50).
Рис. 4.50. Настройка источника света.
Нужно включить опцию Generate caustics – это означает, что источник света генерирует
фотоны для каустики. Caustic subdives – количество подразделений для создания карты
фотонов, поставим побольше для лучшего качества – 4500.
Далее в настройках V-Ray нужно включить и настроить просчет каустики (рис. 4.51).
121
Рис. 4.51. Настройка каустики.
On – включим сам эффект.
Multiplier – множитель эффекта. Чтобы увидеть эффект, необходимо ставить большие
значения – 3500.
Search dist – радиус размытия каустики в единицах сцены. Измеряется в единицах сцены.
Установим – 7.
Max photons – максимальное количество фотонов, больше которого V-Ray не анализирует.
Поставим побольше – 80.
Max density – параметр для ограничения размера фотонной карты. Чем больше значение –
тем меньше карта. Мы поставим здесь – 0,5.
Визуализируйте картинку (Рис. 6.0. 42).
Рис. 4.52. Изображение, полученное при визуализации V-Ray. Эффект каустики
122
Здесь можно наблюдать эффект каустики. Световые пятна, которые появились на
плоскости – называется эффект рефрактивной каустики – т.к. они образованы от света,
прошедшего через преломляющую среду (стеклянный стакан). Световые пятна, которые
появились на стакане – называется эффект рефлективной каустики – т.к. они образованы
от света, отраженного от поверхности (стеклянный стакан).
Готовая сцена с материалами и настроенным эффектом каустики – (Scenes/Scene_2.max).
Источники света V-Ray
В V-Ray есть свои источники света: VrayLight, VraySun, также существует специальный
материал VrayLightMtl.
VrayLight
Находится по вкладке Create – Lights из списка нужно выбрать Vray.
Бывает 3 типа VrayLight: Plane, Sphere, Dome (рис. 4.53). Plane (Плоскость) – источник
света имеет форму плоского прямоугольника, Sphere (Сфера)– форма сферы, Dome
(Купол) – действует как объект SkyLight в стандартных источниках света, свет исходит из
под купола расположенного над источником света.
Рис. 4.53. Типы источника света VrayLight.
Вот описание некоторых настроек (рис. 4.54):
 Multiplier – мощность источника.
 Color – цвет источника света.
 Size – размер источника света.
123



Invisible – управляет видимостью источника света при визуализации.
Affect Specular – управляет видимостью источника света в отражающих объектах.
Sampling – Subdives – подразбиение источника света, определяющее качество
теней. Чем больше значения, тем качественнее тени и тем дольше визуализация.
Рис. 4.54. Настройки VrayLight.
VrayLightMtl
VrayLightMtl – это материал V-Ray, который используется для создания самосветящихся
объектов. Аналог стандартного материала Self-Illumination, но материал V-Ray
обеспечивает более быстрая визуализация и позволяет использовать текстурную карту в
качестве источника света (рис. 4.55).
124
Рис. 4.55. Настройки VrayLightMtl.
Color – цвет самосветящегося материала. Рядом цифры – умножает значение цвета.
None – сюда можно загрузить текстурную карту, которая будет источником света.
Opacity – сюда загружается карта прозрачности.
Emit light on back side – если выбрать опцию, объект будет светить с обратной стороны.
Например это можно применить, когда необходимо показать галогеновые лампы. Корпус
лампы сделан из нескольких Box, с примененным модификатором Editable Spline. Сами
лампы – обычные Cylinder.
Готовая сцена – (Scenes/Scene_3.max).
Рис. 4.56. Галогеновые лампы сделанные при помощи VrayLightMtl.
4.5.3. Maxwell Render
Визуализатор Maxwell Render позволяет пользователям создавать точные и реалистичные
изображения. Maxwell Render является признанной системой высококачественного
рендеринга и с успехом используется в архитектурной визуализации, дизайне продукции,
ювелирных изделий, производство фильмов, научных исследованиях.
125
Рис. 4.57. Сцены, визуализированные средствами Maxwell Render
Maxwell Render является рендерингом, который принимает моделей и сцены, созданные в
3D CAD и приложений. Некоторые из этих приложений непосредственно
поддерживаются с помощью Maxwell Render плагин, другие могут быть использованы в
сочетании с Maxwell Render за счет импорта геометрии в Максвелла Studio, входящего в
состав программного обеспечения.
При помощи Maxwell Render можно добиться таких дже резльтатов как и в V-ray, а может
быть и лучше. Только приимущество первого визулизатора в том, что он проще в
освоении
Рис. 4.58. Архитектурная визуализация средствами Maxwell Render
Главной особенностью Maxwell Render’a является функция Multi light, которая позволяет
изменять освещение в сцене не пересчитывая всю сцену, что не возможно сделать в V-ray.
Это спасает положение, когда у вас в сцене более трѐх миллионов полигонов, и много
источников света.
126
Рис. 4.59. Визуализация интерьера средствами Maxwell Render
Ссылки и литература
http://3ddd.ru/modules/phpBB2/viewtopic.php?t=3644&start=0&postdays=0&postorder=asc&hi
ghlight=
http://www.render.ru/books/show_book.php?book_id=467&start=2
4.5.4. Yaf(a)Ray
Yafaray - программа визуализации, использующая метод трассировки лучей c открытым
исходным кодом. Для описания сцен используется язык XML. YafaRay использует
основанное на приближениях метода Монте-Карло глобальное освещение для создания
реалистично-освещѐнных визуализаций 3D сцен. Yafaray имеет модульную структуру,
основанную на ядре и других связанных с ним элементах рендеринга: загрузчике сцены,
источниках освещения и шейдерах. Вместе с API это позволяет разрабатывать плагины
рендеринга для использования Yafaray из любой программы или 3D приложения. В
список поддерживаемых программ входят: Blender, Wings 3D и Aztec. На рис. 4.60
приведены примеры сцен, визуализированные средствами Yafaray.
Yafaray использует метод трассировки лучей
при котором пиксели конечного
изображения строятся исходя из результатов вычисления путей светового луча в
трѐхмерной сцене. Такая методика подразумевает попытку воспроизвести реальное
поведение света в пространстве и его воздействие на среды и поверхности, такие как:
отражения и преломления, каустики и непрямое освещение.
127
Рис. 4.60. Визуализация средствами Yafaray
Список литературы
1. Агуров А.В. C#. Сборник рецептов. – СПб.: БХВ-Петербург, 2007. – 432 с.: ил.
2. Павловская Т.А. С# Программирование на языке высокого уровня. Учебний для
вузов – СПб.: Питер, 2009. – 432 с.: ил.
3. Поршнев С.В. MATLAB 7. Основы работы и программирования. Учебник. – М.:
Бином. Лаборатория знаний, 2010. – 319 с.
4. Потапов А.С. Распознавание образов и машинное восприятие. Общий подход на
основе принципа минимальной длины описания — СПб.: Политехника, 2007 .—
547, [2] с.: ил .
5. Прахов А.А. Blender. 3D-моделирование и анимация. Руководство для начинающих
— СПб.: БХВ-Петербург, 2009 .— V, 266 с.: ил.+ 1 электрон. опт. диск (CD-ROM) .
6. Системы компьютерного зрения: реализация в библиотеке OpenCV: учебнометодическое пособие / А. С. Потапов и др.— СПб.: СПбГУ ИТМО, 2011.
7. Тозик, Вячеслав Трофимович. 3ds Max 9. Трехмерное моделирование и анимация
на примерах / В. Т. Тозик, А. В. Меженин, К. А. Звягин .— СПб.: БХВ-Петербург,
2008.
8. Фисенко В.Т. Компьютерная обработка и распознавание изображений : учебное
пособие:— СПб.: СПбГУ ИТМО, 2008 .— 192, [3] с.: ил
9. Гонсалес, Рафаэл. Цифровая обработка изображений в среде MATLAB / Р.
Гонсалес, Р. Вудс, С. Л. Эддинс; пер. с англ. В. В. Чепыжова .— М.: Техносфера,
2006 .
10. Есенин, Сергей Анатольевич. DirectX и Delphi: разработка графических и
мультимедийных приложений / С. А. Есенин .— СПб.: БХВ-Петербург, 2006.
11. Поршнев, Сергей Владимирович. MATLAB 7. Основы работы и
программирования: учебник: доп. УМО вузов по университетскому
политехническому образованию в качестве учебного пособия для студентов
высших учебных заведений, обучающихся по направлению 654600 "Информатика
и вычислительная техника" / С. В. Поршнев .— М.: Бином, 2006.
12. Херн, Дональд. Компьютерная графика и стандарт OpenGL / Д. Херн, М. П.
Бейкер.— М.: Издательский дом "Вильямс", 2005.
13. Эйнджел, Эдвард. Интерактивная компьютерная графика. Вводный курс на базе
OpenGL / 2-е изд. — М. : Издательский дом "Вильямс", 2001.
14. Сравнение алгоритмов выделения лиц http://dic.academic.ru/dic.nsf/ruwiki/686603
15. Вежневец В., Дегтярева А. Обнаружение и локализация лица на изображении
http://masters.donntu.edu.ua/2005/kita/kompanets/library/int5.htm
128
16. Face Detection: Henry Chang and Ulises Robles http://www-csstudents.stanford.edu/~robles/ee368/main.html
17. OpenCV – Википедия. – URL: http://ru.wikipedia.org/wiki/OpenCV
18. Main Page - Emgu CV: OpenCV in .NET (C#, VB, C++ and more). – URL:
http://www.emgu.com/wiki/index.php/Main_Page
19. Face Detection: Henry Chang and Ulises Robles. – URL: http://www-csstudents.stanford.edu/~robles/ee368/main.html
20. Лекции МГУ. – URL:
http://www.compvision.ru/index.php/%D0%9B%D0%B5%D0%BA%D1%86%D0%B8
%D0%B8_%D0%9C%D0%93%D0%A3
21. www.cse.iitk.ac.in/users/vision/.../OReilly%20Learning%20OpenCV.pdf
22. Welcome to the homepage of Computer Vision and Video Processing SIG , IIT Kanpur.
– URL: http://www.cse.iitk.ac.in/users/vision/
129
Download