- •Лекция 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 Архитектура графических систем
Лекция 4,5 Преобразования на плоскости и в пространстве
В компьютерной графике все что относится к плоскому случаю принято обозначать 2D (2-dimentional) двумерное, а все что относится к пространственным – 3D.
Аффинные преобразования на плоскости
Affinis – родственный (лат). Потому, что фигуры сохраняются при аффинных преобразованиях.
Предположим, существует некоторая прямолинейная система координат (OXY). Тогда, каждой точке М можно поставить в соответствие пару координат (x,y). Введя другую систему координат O*X*Y*, можно поставить той же точке М другую пару координат (x*,y*). Переход от одной системы к другой:
x*=ax+by+c, с условием |a b|0
y*=dx+ey+f |d e|
Эти формулы можно рассматривать двояко, либо сохраняется точка, и изменяется система координат, либо сохраняется система координат и изменяется точка. В дальнейшем эти формулы будут рассматриваться именно как преобразование точек в заданной системе координат. Причем все рассматриваемые системы будут прямоугольными (формулы позволяют работать и с непрямоугольными).
Нужно отметить, что координаты точки M можно представить в виде вектораиз начала координат с координатами Mx,My.
Тогда преобразование можно записать в векторной форме (это справедливо только для прямоугольной системы координат).
M*=((M-O*)X*,(M-O*)Y*)
, где O*-координаты начала координат второй системы в координатах первой. X*,Y* - орты (направляющие вектора) второй системы координат в координатах первой.
a=(Xx*), b=(Xy*),c=-O*X*
d=(Yx*), e=(Yy*),f=-O*Y*
Это преобразование можно записать и в матричном виде
, или , где вектора считаются в виде матриц вида 12.
Элемент Cij матрицы C=AB есть сумма произведений элементов i-ой строки матрицы A на элементы j-ого столбца матрицы B.
Обратное преобразование – решение системы линейных уравнений, либо использовать обратную матрицу , но для случая, когда система представлена ортами можно проще. С этом случае обратная матрица равна транспонированной.
Аффинное преобразование – геометрическое преобразование плоскости или пространства которое можно получить комбинируя поворот, перенос, зеркальные отражения и масштабирование в направлениях координатных осей.
Поворот (R - rotation). Вокруг начала координат на угол .
x*=x*cos-y*sin
y*=x*sin+y*cos
Растяжение, сжатие вдоль координатных осей (D – dilatation).
x*=k*x
y*=m*y
k>0, m>0
Отражение (M – mirror). Относительно оси абсцисс.
x*=x
y*=-y
Перенос (T – translation).
x*=x+a
y*=y+b
Перенос представить в виде произведений вектора на матрицу нельзя, зато можно в виде суммы векторов.
В курсе аналитической геометрии доказывается, что любое преобразование можно представить как последовательное исполнение (суперпозицию) этих простейших преобразований.
Иногда удобно представлять все преобразования в одной матричной форме, для этого используют однородные координаты.
Однородные координаты
Для точки M с координатами x,y на плоскости, однородными координатами является тройка чисел x1,x2,x3, одновременно неравная нулю и связанная соотношениями x1/x3=x, x2/x3=y. Точке с координатами x,y на плоскости сопоставляется точка xh,y,h,h в однородном пространстве, обычно h=1 (x,y,1).
Общее преобразование точек в однородных координатах можно записать в виде.
А матрицы основных преобразований будут выглядеть следующим образом:
[R] [D] [M] [T]
Комбинация преобразований.
Предположим нужно повернуть точку на угол вокруг некоторой точки A.
Начала переносим точку A в начало координат (-Ax,-Ay). Затем поворот. Затем перенос обратно в точку А. (Ax,Ay). Можно получить единое преобразование [T(-A)][R(a)][T(A)]
Аффинные преобразования в пространстве
В 3D пространстве точка (вектор) представляется тремя координатами (x,y,z), или четырьмя однородными координатами (x,y,z,1).
Следует ввести понятия левая и правая тройка векторов. Три вектора a,b,c образуют правую тройку, если после совмещения начал векторов кратчайший поворот от a к b кажется наблюдателю, смотрящему с конца вектора c идущим против часовой стрелки. Правило правой руки – вектор a совмещается с локтем, вектор b входит в ладонь, вектор c совпадает с большим пальцем. Система координат называется правой, если ее направляющие вектора образуют правую тройку.
Векторное произведение c=ab, с – вектор перпендикулярный обоим векторам, образует с ними правую тройку.
Cx=Ay*Bz-Az*By, Cy=Az*Bx-Ax*Bz, Cz=Ax*By- Ay*Bx
Преобразования остаются те же: вращение (только теперь вокруг трех осей), растяжение, отражение (относительно трех плоскостей), перенос.
Вращение против часовой, если смотреть из начала координат для левой системы координат (для правой – наоборот).
, ,
,
, ,
Например, нужно построить матрицу вращения относительно прямой с направляющим ортом L, проходящей через точку A.
1. Перенос A в начало координат [T(-A)]
2. Совмещение прямой с осью X.
Сначала поворот вокруг оси X
на угол [Rx()], cos=Lz/d, sin=Lx/d, где d=
Если d=0, значит прямая уже совпадает с осью X.
Затем поворот вокруг оси Y на угол [Ry()].
Повернутый вектор равен (Lx,Ly,Lz,1)[Rx]=(Lx,0,d,1).
cos=Lx, sin=d
3. Поворот вокруг оси X на нужный угол [Rx()]
4. Возвращение к оси L [Ry(-)],[Rx(-)]
5. Перенос на точку A [T(A)]
Общая матрицы получится
[T(-A)] [Rx()][Ry()][Rx()][Ry(-)][Rx(-)][T(A)]
Преобразование в систему координат заданную ортами
Если система задана тройкой взаимно перпендикулярных ортов X*,Y*,Z*.
, обратное преобразование – транспонированная матрица [R]T
Проектирование
Проектирование необходимо в первую очередь, для того, чтобы отобразить трехмерные объекты на плоском экране, но существуют и другие применения, например, тени.
Существует два наиболее употребляемых вида проектирования параллельное и центральное (перспективное).
При проектировании объекта на плоскость нужно провести через каждую точку объекта прямую из заданного проектирующего пучка и найти пересечение этой прямой с плоскостью.
При параллельном проектировании пучок состоит из параллельных прямых, при центральном – проходит через некоторую точку.
Параллельные проекции можно разделить на два типа, когда прямые пучка перпендикулярны плоскости проектирования – проекции называют аксонометрическими, а когда нет, косоугольными (такие проекции мы рассматривать не будем).
Таким образом, чтобы получить аксонометрическую параллельную проекцию объекта на экране нужно совместить направление пучка с одной из осей (обычно это Z). Оси X и Y совпадут с осями X,Y на экране, а ось Z – будет направлена вглубь экрана.
Чтобы получить перспективную проекцию точки необходимо поместить точку схода пучка в начало координат, направление на экран (перпендикуляр из точки схода к плоскости проектирования) совместить с осью Z, тогда Xp=X*d/Z, Yp=Y*d/Z, где d - расстояние от начала координат до плоскости проектирования.
Это преобразование можно записать в виде матрицы. ,
тогда
Единственное, в таком преобразовании теряется глубина (z), но можно ее вычислить из последней координаты вектора.
Кроме этих преобразований проектирования необходимо сделать еще несколько, чтобы изображение правильно смотрелось на экране. Во-первых, его нужно растянуть до размеров окна, во-вторых, его нужно зеркально отобразить вокруг оси Х (т.к. ось Y обычно направлена вниз), в-третьих, его нужно перенести в центр окна.
Общая матрица преобразования выглядит следующим образом.
Cx,Cy – координаты центра экрана.
ratio – отношение размера по Y к размеру по X, для разных разрешений экрана разный. Разрешение – количество точек на единицу поверхности, в данном случае единица – весь экран монитора. Экран монитора имеет соотношение горизонтального размера к вертикальному 4/3, поэтому для разрешений с количеством точек по горизонтали и вертикали кратным этому числу ratio=1 (например 640/480). Иначе ratio=(4*sizey)/(3*sizex) (320x200 =0.83).
S – масштабный коэффициент, для параллельной проекции выбирается вручную, для перспективной проекции S равняется единице, но рассчитывается d (расстояние до плоскости проектирования) исходя из поля зрения FOV (field of view). FOV – максимальный угол, который образуют прямые в пучке, угол зрения.
FOV обычно варьируется от 50 до 100, FOV человеческого глаза - 90.
Мировая, модельная и экранная системы координат
Мировая – основная система координат, в которой заданы все объекты сцены.
Модельная – система координат, в которой задана внутренняя структура объектов.
Экранная – система координат наблюдателя, еще ее называют системой координат камеры.
Модель обычно располагают в модельной системе таким образом, что центр системы совпадает либо с геометрическим, либо с центром масс модели, ось X совпадает с направлением вперед, ось Y – вправо, ось Z – вверх.
Модель задается в мировой системе координат координатами центра модели M (вектор) и ориентацией (либо тремя ортами, либо тремя углами крен (X), тангаж (Y), курс (Z), матрица при этом формируется как последовательность поворотов [Rx][Ry][Rz]). Для преобразования из модельных координат нужно сначала повернуть в соответствии с матрицей ориентации [Rm], а затем перенести на [T(M)].
Курс Крен Тангаж
Положение и ориентацию камеры можно задать точно так же, как и положение модели. Но часто, достаточно только направления зрения камеры. Обычно (в реальной жизни) камера не имеет крена, т.е. ось X (вправо) всегда горизонтальна, а плоскость YZ следовательно всегда вертикальна.
Таким образом, если предположить, что ось Z камеры (направление зрения) не вертикальна, то можно найти ось X=Norm(ZUp), где Up(0,0,1) вертикальный вектор (X получится перпендикулярен вертикальному вектору Up, а значит горизонтален). Наконец ось Y=XZ (вверх). Следите за тем, чтобы система оставалась левой.
Чтобы преобразовать точки из мировой системы в экранные необходимо сначала применить перенос [T(-C)], а затем повернуть на транспонированную матрицу ориентации камеры [Rс]T.
Таким образом, для того, чтобы перевести точку из модельных координат в экранные необходимо произвести следующее преобразование [Rm][T(M)][T(-C)] [Rс]T. После таких преобразований ось Z будет направлена вдоль направления зрения и можно делать проектирование.