- •Лекция 1
- •1.1. Области, связанные с обработкой изображения
- •1.2. Изображение и его машинное представление
- •1.3. Описание сцены и его машинное представление
- •Представление поверхностных моделей.
- •Лекция 2
- •Лекция 2,3
- •Лекция 4,5 Преобразования на плоскости и в пространстве
- •Лекция 6-7-8 Элементы вычислительной геометрии на плоскости.
- •Отсечение отрезка на плоскости
- •Алгоритм Сазерленда-Коэна
- •Отсечение полигона выпуклым окном
- •Плоскость
- •Полигон
- •Лекция 9-10-11-12 Удаление невидимых линий и поверхностей
- •Лекция 13 Наложение текстур
- •Лекция 14 Освещение
- •Лекция 15 Устранение лестничного эффекта (Antialiasing)
- •Лекция 16 Дискретизация изображений
- •Палитры и оптимизация палитр.
- •Метод квантования цветов медианным сечением.
- •Лекция 17,18 Форматы растровых файлов
- •Сжатие графической информации
- •Типы изображений.
- •Требования к алгоритмам компрессии.
- •Критерии сравнения алгоритмов.
- •Алгоритмы архивации без потерь.
- •Лекция 19 Классы изображений и переходы между ними
- •Сегментация изображений
- •Построение контура
- •Построение скелета (остова) области
- •Сегментация кривых
- •Интерполирование
- •Заливка областей
- •Сглаживание
- •Лекция 20 Распознавание образов Понятие образа
- •Проблема обучения распознаванию образов
- •Геометрический и структурный подходы.
- •Гипотеза компактности
- •Самообучение.
- •Перцептроны
- •Р Классы (образы) аспознавание графических образов
- •Лекция 21 Аппроксимация кривых и поверхностей сплайнами
- •Сплайн-функции одной переменной
- •Кривые Безье
- •Где nk(t) – функциональные весовые множители.
- •Рациональные в-сплайновые поверхности
- •Лекция 22 Устройства ввода и вывода графической информации
- •Мониторы
- •Принтеры
- •Графопостроители
- •Сканеры
- •Планшеты и указатели
- •Графические акселераторы
- •Лекция 23 Архитектура графических систем
1.3. Описание сцены и его машинное представление
Сцена – набор объектов (в т.ч. источников света) которые нужно отобразить (или которые получаются при распознавании).
Сцена состоит из примитивов. В случае плоской сцены в качестве примитивов выступают точки, отрезки прямых и дуги кривых (например, окружности), символы, растровые массивы. Из этих базовых примитивов можно создавать более сложные, такие как ломаные. В пространстве основные примитивы это выпуклые полигоны и полиэдры (многоугольники и многогранники).
Модель – это представление некоторых необязательно всех свойств объекта, либо конкретно существующего, либо абстрактного и его особенностей. Компоненты геометрической модели
1. Пространственное расположение и форма – геометрия объекта и некоторые атрибуты цвет, текстура.
2. Топология (связность с другим объектом).
Существуют два основных способа задания геометрии моделей:
1. Конструктивное (Constructive solid geometry or CSG) .
2. Граничное либо поверхностное (Boundary representation or Brep). Тела задаются поверхностями, которые ограничены.
Представление CSG моделей .
С таким подразбиением можно проводить набор операций:
а) пересечение;
б) объединение;
в) вычитание;
К CSG можно отнести воксельное задание геометрии. Voxel –элемент объема по аналогии с pixel. Когда объем, в котором находится модель, разбивается на кубики, для каждого кубика определяется его положение относительно модели (внутри, снаружи или на поверхности) и свойства материала (цвет, прозрачность и т.д.).
Представление поверхностных моделей.
Поверхностное представление связанно с необходимостью задания всех поверхностей, ограничивающих данное тело. В данном случае то, что находится внутри тела, мы считаем вакуумом и рассматриваем лишь поверхность, так как при визуальном представлении человек видит внешнюю часть, а не внутреннее содержание объекта. В частности можно считать, что свет распространяется в воздухе беспрепятственно, достигает поверхности, и на поверхности происходят интересующие нас явления.
Поверхности можно задавать аналитическим способом (цилиндрические, сферические поверхности), но их класс ограничен и поэтому данного способа недостаточно для описания форм более сложных объектов. В силу этих причин используются полигональные сетки, т. е. для объектов, имеющих гладкую, непрерывную поверхность, можно построить полигональную модель, аппроксимируя поверхность с помощью многоугольников. Таким образом, полигональная сетка представляет собой совокупность ребер, вершин и многоугольников. В свою очередь, ребра определяются двумя вершинами, многоугольник – замкнутой последовательностью ребер, и поэтому данное представление (вершины, ребра, грани) не является независимым.
Лекция 2
Использование графических интерфейсов.
Существует множество графических интерфейсов, будет рассмотрена общая схема работа с ними и некоторые из них.
Схема работы приложения:
-
Инициализация графического интерфейса
-
Работа с графическим интерфейсом (подготовительные действия, построение изображения, завершающие действия)
-
Освобождение графического интерфейса
Инициализация графического интерфейса – это переключение в графический режим из текстового (для DOS) (BC:initgraph, VESA: mov ah,4Fh, int 10h), создание окна (для Windows), создание буфера для формирования изображения (BackBuffer, страницы видеопамяти), получение адреса буфера изображения, размеров окна и формата пикселов (размеров скан-линии), инициализация дополнительных интерфейсов (DDraw, D3D, OPENGL).
Освобождение графического интерфейса – это освобождение дополнительных интерфейсов (DDraw, D3D, OPENGL), удаление буфера для формирования изображения, переключение обратно в текстовый режим (для DOS) (BC:closegraph), удаление окна (для Windows).
Подготовительные действия – это очистка BackBuffer-а, его блокирование (Lock) для записи (DDraw), подготовка 3D-интерфейсов.
Завершающие действия – это разблокирование BackBuffer-а, выполнение 3D-интерфейсов, копирование BackBuffer-а на экран.
Функции GUI:
//Инициализация графического интерфейса -
int driver = EGA; int mode = EGAHI; int res;
initgraph ( &driver, &mode, "" );
if ( ( res = graphresult () ) != grOk )
{ printf("\nGraphics error: %s\n", grapherrormsg ( res) ); exit ( 1 ); }
for ( int frame = 0;; frame++ )
{
setactivepage ( frame &1 ); // переключение страниц
setvisualpage (1 – (frame &1) );
clearviewport (); // очистка
line(frame% getmaxx (),0, getmaxx (),getmaxy ()); // размеры окна
if ( kbhit () ) { getch (); break; }
}
// Завершающие действия
closegraph ();
Для WinAPI (application programming interface) – свои функции рисования. Например, чтобы нарисовать линию нужно вызвать две функции MoveToEx и LineTo.
Нужно отметить, что точка 0,0 обычно находится в верхнем левом углу окна.
Работа с видеобуфером.
Видеобуфер – область памяти (либо системного ОЗУ, либо на видеокарте), в которой хранится информация о цвете пикселей. На пиксель как правило отводится определенное количество бит (называемое BPP) например для BPP = 16 для режима 565. Пиксели хранятся построчно, но размер строки (BPL) не всегда равен BPP*Width/8, поэтому он обычно получается отдельно при инициализации. Доступ к пикселу (x,y) по формуле Addr+y* BPL+x*(BPP/8). В примерах есть функция writePixel, устанавливает пиксел с заданными координатами в заданный цвет.