КОМПЬЮТЕРНАЯ ГРАФИКА (кафедра ФТИ, 3 курс, 6 семестр, 32 часа, диф.зачет) Доцент Виктор Алексеевич Дебелов Программа курса лекций 1. Цели и задачи курса. Широкое определение компьютерной графики (КГ), основные разделы: Иллюстративная КГ (ИКГ), распознавание образов, обработка изображений. Основные задачи ИКГ: методы графического представления данных, алгоритмы, языки КГ, графические программные средства. Графический стандарт ГКС. Сегментированный дисплейный файл, сегмент, примитивы вывода, атрибуты. Примитивы и устройства ввода. Режимы ввода: опрос, запрос, событие. Графические метафайлы. 2. Краткий курс работы в среде Windows Visual C++ 5 или 6. Создание графических приложений с интерфейсом Single Document/View с использованием Graphical Device Interface. Правила сдачи задач по электронной почте. Критерии для выставления оценок за курс. 3. Пиксельные области (ПО): а) 4-связные и 8-связные; б) внутренне определенные ПО, внутренне заполняющие алгоритмы; в) гранично определенные ПО, гранично заполняющие алгоритмы; г) рекурсивный алгоритм, span-алгоритм; д) заполнение шаблоном; е) аффинные преобразования над ПО. Перевод координат: вещественные <-> растровые. ВМР-файл. 4. Задача растеризации алгебраических кривых. Алгоритм Брезенхэма для отрезков. Идея алгоритма Брезенхэма для растеризации окружностей. Многоугольники, определения. Ориентированные многоугольники. Характеристическая функция. Растеризация многоугольников (идея). Простейший алгоритм растеризации треугольника на основе алгоритма Брезенхэма. Клиппирование многоугольников: алгоритм СазерлендаХоджмана. 5. Клиппирование многоугольников: алгоритм Вейлера-Азертона. Пересечение отрезков на основе параметрической формы. Теоретикомножественные операции (ТМО) над многоугольниками. Понятие регуляризованных ТМО, схема алгоритма для регуляризованных объединения, пересечения и разности. Дизеринг. Аппроксимация полутонов: за счет увеличения пространственного разрешения и без увеличения. Матрицы дизеринга. Алгоритм упорядоченного возмущения, алгоритм и рекуррентное соотношение для матриц. Алгоритм ФлойдаСтайнберга. Дизеринг цветных изображений. Перевод цветного изображения в черно-белое. Пересчет на удвоенное разрешение. 6. Визуализация в научных вычислениях (ViSC). Задача "Изолинии". Задача "Векторные поля". "Лица Чернова". 7. Гамма монитора, гамма-коррекция, яркость, контраст. Пересчет (увеличение до 16 бит при промежуточных вычислениях). Антиалиасинг. Основная идея (в пикселе часть объекта мира). Алиасинг анимаций (по времени). Регуляризация функций. Сглаживающий фильтр. Запись ядра (матрицы) бокс-фильтра. По-пиксельные операции. Основные задачи обработки изображений: коррекция изображения, улучшение изображения, структурный анализ. Оператор Робертса, дифференцирование, алгоритм, порог. Что будет, если взять значение порога больше (меньше)? Примеры популярных фильтров: сглаживающий, подчеркивание краев, тиснение, повышение резкости, акварелизация, медианный фильтр. Что делать, если интенсивность получается меньше 0 или больше 255? А что делать если цветные изображения? Для сглаживающих, для дифференцирующих? Композиция изображений, альфа-канал. 8. Визуализация объемных плотностей (ОП). Что такое ОП? Простейшие модели визуализации ОП: функция передачи прозрачностью, функция передачи цветом. Оптическая модель взаимодействия света с ОП (скалярным полем). Только поглощение. Только эмиссия. Поглощение + эмиссия. Случай раздельного назначения параметров поглощения и эмиссии. Случай модели частиц. Формула приближенного вычисления. 9. Элементы вычислительной геометрии (точка, вектор, расстояние на плоскости и в 3Д, ...). Уравнения отрезка на плоскости и в 3Д: деление 1, параметрические. Уравнения луча на плоскости и в 3Д: параметрические, с направляющим вектором. Уравнение прямой на плоскости как линейное уравнение. Нормаль. Расстояние до точки. Функции угла между векторами, лучами, прямыми. Уравнение плоскости в 3Д как линейное уравнение. Нормаль. Расстояние до точки. Кривизна и кручение. Барицентрические координаты (отрезок, треугольник, тетраэдр). Деление единицы. Выпуклая оболочка множества точек. 10. Конструирование кривых с локальной модификацией. Метод Эрмита, метод Безье. Геометрические свойства отрезка кривой Безье. Всплайны. Геометрические свойства В-сплайновой кривой. Сопряжение участков кривых (Эрмит, Безье). Геометрическая и параметрическая непрерывности. 11. Параметрические поверхности. Параметрические линии на поверхностях и касательные к ним. Нормаль к поверхности. Уравнение пути фрезы. Конструирование участков поверхностей. Билинейная функция. Линейчатая поверхность, построенная на опорных кривых. Участок поверхности по методу Кунса. Участок поверхности по методу Эрмита. Участок поверхности по методу Безье. Геометрические свойства. В-сплайны. Сшивка двух участков поверхности. Суперквадрики. 12. Особые случаи параметризации. Поверхности вращения. Другие моделирующие преобразования: скручивание, экструзия и т.п. Морфинг поверхностей. 13. Преобразования. Понятия модельных, видовых, анимационных преобразований. Векторная алгебра, базисы. Линейные и аффинные преобразования. Сдвиг, масштабирование и поворот на плоскости. Матричные записи для линейных. Задача поворота относительно точки (невозможно представить одной матрицей из-за сдвига). Примеры языка PostScript. Однородные координаты и 2Д преобразования. Соглашения о записи вектора: строка / столбец. Запись и применение преобразований. Левосторонняя и правосторонняя СК. Положительное вращение вокруг осей. Однородные координаты и 3Д преобразования. Поворот: углы Эйлера. Преобразование твердого тела. Из чего состоит матрица? Поворот вокруг произвольной оси. Кватернионы. Сферическая интерполяция. 14. Видовое преобразование: перспективное и параллельное проецирование. Пирамида видимости (POV), видимый объем. Матрицы проецирования, вывод. Преобразование видимого объема к полукубу. Алгоритм Z-буфера. Конвейер преобразования координат: модельные СК – мировая СК – СК камеры – полукуб – клиппирование – плоскость изображения – порт вывода. Преобразование координат через базисы. 15. Полигонолизация поверхностей – полигональные сетки. Фактура: текстура, bump mapping. Выборка: Nearest, Linear, MIPMAP. Текстурные системы координат. Покрытия: flat, cylindrical, spherical, chrome. Пример неверного задания сетки куба для текстурирования. 16. Моделирование и имитация природных объектов: рост ботанических деревьев на основе гелиотропизма, моделирование пламени. Обзор курса. КОМПЬЮТЕРНАЯ ГРАФИКА (3 курс, 6 семестр, 32 часа) Программа лабораторных занятий (терм. класс) доцент Виктор Алексеевич Дебелов 1. 2. 3. 4. 5. 6. 7. 8. Задания Task1 (см. файл Task1_03.doc). Освоить программирование в среде VisualStudio 6.0 на языке C++ графических приложений типа Single Document/View. Краткое пособие находится в файлах: Vc_gdi_03.doc, Vc_gdi_03(2).doc, Vc_gdi_03(3).doc, Vc_gdi_03(4).doc. Отработка технологии сдачи задач через электронную почту (см. файл E_mail_TaskRule_03.doc). Разработка – 8 часов. Сдача – 4-я и 5-я учебные недели. PixDom (см. файл TaskPixDom_03.doc). Работа с пиксельными областями, программирование алгоритмов заливки. Разработка – 4 часа. Сдача – конец 6-ой учебной недели. Clip (см. файл TaskClip_03.doc). Программирование алгоритмов клиппирования многоугольников на плоскости. Примечание: эта задача выполняется по алгоритму Сазерленда студентами, имеющими нечетный номер в списке группы, иначе алгоритмом Вейлера. Разработка – 4 часа. Сдача – конец 8-й учебной недели. Izo (см. файл TaskIzo_03.doc). Разработка программы построения изолиний и цветотоновой карты для функции двух переменных. Примечание: эта задача выполняется студентами, имеющим нечетный номер в списке группы. Разработка – 4 часа. Сдача – конец 10-й учебной недели. Vector (см. файл TaskVecPol_03.doc). Разработка программы построения карты векторных полей. Примечание: эта задача выполняется студентом, имеющим четный номер в списке группы. Разработка – 4 часа. Сдача – конец 10-й учебной недели. Fog (см. файл TaskFog_03.doc). Программирование простейших фильтров для полноцветных изображений и алгоритма визуализации объемных плотностей. Разработка – 5 часов. Сдача – конец 13-й учебной недели. Morph (см. файл TaskMorph_03.doc). Программирование морфинга параметрически заданных кривых. Разработка – 3 часа. Сдача – конец 14-й учебной недели. Wire (см. файл TaskWire_03.doc). Изображение функции двух переменных в виде проволочной модели поверхности. Применения преобразований в однородных координатах (модельные преобразования, преобразования камеры, клиппирование по 9. полукубу, преобразование в экранные координаты). Делают те студенты, которые программировали задачу Izo. Разработка – 4 часа. Сдача – конец 16-й учебной недели. ParWire (см. файл TaskParWire_03.doc). Изображение параметрической поверхности в виде проволочной модели поверхности. Применения преобразований в однородных координатах (модельные преобразования, преобразования камеры, клиппирование по полукубу, преобразование в экранные координаты). Делают те студенты, которые программировали задачу Vector. Разработка – 4 часа. Сдача – конец 16-й учебной недели. Оценка на дифференцированном зачете по курсу "Компьютерная графика" выставляется после устного ответа с учетом: предварительных отметок по заданиям 1 – 7; оценки, выставляемой преподавателем за работу в семестре с учетом своевременной сдачи заданий. При проверке программ на всех этапах существенными будут следующие факторы: Своевременность сдачи программ. Все программы сдаются по электронной почте по установленным в курсе правилам. Например, неверная тема письма считается грубейшей ошибкой. Временем предъявления программы считается время отправки письма. Это время должно быть не позднее, чем 24:00 субботы указанной учебной недели. Полнота, недвусмысленность и краткость описания особенностей авторской реализации. Полнота учета требований к программе. Реализация дополнительных эффектов сверх требований. 1. 2. 3. 4. Литература А.В.Фролов, Г.В.Фролов. Графический интерфейс GDI в MS Windows. (Библиотека системного программиста Т. 14) – М.: "ДИАЛОГ-МИФИ", 1994. С. Холзнер. Microsoft Visual C++ 6: учебный курс. С.-Пб: Питер пресс, 1999. http://studentweb.nait.ab.ca/courses/start.asp?table=bcs232 – Introduction to Windows Programming, 1999. И.Ю. Баженова. Visual studio 98. Visual C++ 6.0. Уроки программирования. – М.: ДИАЛОГ-МИФИ, 1999.. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Дж. Фоли, А. вэн Дэм. Основы интерактивной машинной графики. В двух книгах. Пер. с англ.-М.:Мир,1985. А. Фокс, М. Пратт. Вычислительная геометрия. Применение в проектировании и на производстве. Пер. с англ. – М.: Мир, 1982. Д. Роджерс. Алгоритмические основы машинной графики. Пер. с англ. – М.: Мир, 1989. (2-ое издание – 2001 год). А.В. Погорелов. Дифференциальная геометрия. – М.: Наука, 1969. N. Max. Optical Models for Direct Volume Rendering. - IEEE Trans. on Visualization and Comput. Graphics. 1995, v. 1, No.2, pp. 99-108 Visualization and Computer Animation, 1994, v.5, No.1. У. Пратт, "Цифровая обработка изображений ", т. 1, 2, Москва, Мир, 1982. П. Ньюмен, Р. Спрулл, "Основы интерактивной машинной графики", Москва, Мир, 1976 В. Гилой, "Интерактивная машинная графика", Москва, Мир, 1981 Т. Павлидис, "Алгоритмы машинной графики и обработки изображений", Москва, Радио и связь, 1986 Подготовил программу к.ф.-м.н. с.н.с. Дебелов Виктор Алексеевич, в.н.с. лаборатории численного анализа и машинной графики ИВМиМГ СО РАН, доцент кафедры физико-технической информатики ФФ НГУ.