Презентация на тему: 5. Растровая графика

Реклама. Продолжение ниже
5. Растровая графика
Алгоритмы растровой графики
Растеризация графических примитивов
Растеризация отрезков
Уравнение отрезка прямой
Простейший алгоритм
Пошаговый алгоритм
Алгоритм Брезенхема
Алгоритм Брезенхема (1-й октант)
Целочисленный алгоритм Брезенхема (1-й октант)
Общий алгоритм Брезенхема
Алгоритм ЦДА
Методы растеризации графических примитивов
Метод оценочной функции
Метод цифровых дифференциальных анализаторов
Лестничный эффект
Устранение лестничного эффекта
Алгоритм Ву
Алгоритм Ву
Алгоритм Ву
Целочисленный алгоритм Ву
Заполнение областей
Построчное сканирование
Заполнение с затравкой
Растеризация сплошных многоугольников
Растеризация сплошных многоугольников
Удаление невидимых линий
Алгоритм Z- буфера
1/28
Средняя оценка: 4.6/5 (всего оценок: 19)
Код скопирован в буфер обмена
Скачать (219 Кб)
Реклама. Продолжение ниже
1

Первый слайд презентации: 5. Растровая графика

Изображение слайда
1/1
2

Слайд 2: Алгоритмы растровой графики

Растеризация графических примитивов. Устранение лестничного эффекта. Заполнение областей. Растеризация сплошных многоугольников. Удаление невидимых линий

Изображение слайда
1/1
3

Слайд 3: Растеризация графических примитивов

Изображение слайда
Изображение для работы со слайдом
1/2
4

Слайд 4: Растеризация отрезков

Простейший алгоритм Пошаговый алгоритм Алгоритм Брезенхема Алгоритм ЦДА

Изображение слайда
1/1
5

Слайд 5: Уравнение отрезка прямой

( x 1, y 1 ), ( x 2, y 2 ) – целочисленные координаты начальной и конечной точек отрезка. y = ax + b – уравнение отрезка прямой. y 1 = ax 1 + b y 2 = ax 2 + b a = ( y 2 – y 1 ) / ( x 2 – x 1 ) b = ( y 1 x 2 – x 1 y 2 ) / ( x 2 – x 1 )

Изображение слайда
1/1
6

Слайд 6: Простейший алгоритм

x = x 1 ; y = y 1 ; while ( x ≤ x 2 ) { PutPixel( x, y ); x = x + 1; y = Round( ax + b ); }

Изображение слайда
1/1
7

Слайд 7: Пошаговый алгоритм

x = x 1 ; y = y 1 ; while ( x ≤ x 2 ) { PutPixel( x, y ); x = x + 1; y = Round( y + a ); }

Изображение слайда
1/1
Реклама. Продолжение ниже
8

Слайд 8: Алгоритм Брезенхема

1- й октант: угловой коэффициент лежит в диапазоне от 0 до 1

Изображение слайда
Изображение для работы со слайдом
1/2
9

Слайд 9: Алгоритм Брезенхема (1-й октант)

x = x 1 ; y = y 1 ; Δ x = x 2 – x 1 ; Δ y = y 2 – y 1 ; e = Δ y / Δ x – 0.5; for ( i = 1; i ≤ Δ x ; i = i + 1) { PutPixel( x, y ); while (e ≥ 0) { y = y + 1; e = e – 1; } x = x + 1; e = e + Δ y / Δ x ; }

Изображение слайда
1/1
10

Слайд 10: Целочисленный алгоритм Брезенхема (1-й октант)

x = x 1 ; y = y 1 ; Δ x = x 2 – x 1 ; Δ y = y 2 – y 1 ; e = 2 * Δ y – Δ x ; for ( i = 1; i ≤ Δ x ; i = i + 1) { PutPixel( x, y ); while (e ≥ 0) { y = y + 1; e = e – 2 * Δ x ; } x = x + 1; e = e + 2 * Δ y ; }

Изображение слайда
1/1
11

Слайд 11: Общий алгоритм Брезенхема

x = x 1 ; y = y 1 ; Δ x = | x 2 – x 1 |; Δ y = | y 2 – y 1 |; s 1 = Sign( x 2 – x 1 ); s 2 = Sign( y 2 – y 1 ); d = 0; if ( Δ y > Δ x ) { Swap( Δ x, Δ y ); d = 1; } e = 2 * Δ y – Δ x ; for ( i = 1; i ≤ Δ x ; i = i + 1) { PutPixel( x, y ); while (e ≥ 0) { if ( d = 1) x = x + s 1 ; else y = y + s 2 ; e = e – 2 * Δ x ; } if ( d = 1) y = y + s 2 ; else x = x + s 1 ; e = e + 2 * Δ y ; }

Изображение слайда
1/1
12

Слайд 12: Алгоритм ЦДА

L = Max(| x 2 – x 1 |, | y 2 – y 1 |); Δ x = ( x 2 – x 1 ) / L ; Δ y = ( y 2 – y 1 ) / L ; x = x 1 + 0.5 * Sign( Δ x ) ; y = y 1 + 0.5 * Sign( Δ y ) ; for ( i = 1; i ≤ L ; i = i + 1) { PutPixel(Round( x ), Round( y )); x = x + Δ x ; y = y + Δ y ; }

Изображение слайда
1/1
13

Слайд 13: Методы растеризации графических примитивов

Метод оценочной функции Метод цифровых дифференциальных анализаторов

Изображение слайда
1/1
14

Слайд 14: Метод оценочной функции

B A F(x,y)>0 F(x,y)=0 F(x,y)<0 X Y x H, y H x K,y K X Y F(x,y) = 0 F(x,y)< 0 F(x,y)> 0

Изображение слайда
1/1
Реклама. Продолжение ниже
15

Слайд 15: Метод цифровых дифференциальных анализаторов

X Y x i +1,y i +1 x i, y i  y i  l i x н,y н  x i

Изображение слайда
1/1
16

Слайд 16: Лестничный эффект

Изображение слайда
Изображение для работы со слайдом
Изображение для работы со слайдом
Изображение для работы со слайдом
1/4
17

Слайд 17: Устранение лестничного эффекта

Выравнивание – каждый пиксел высвечивается с яркостью, пропорциональной площади пиксела, которую занимает отрезок. Изменение разрешения – подготовка изображения высокого разрешения (кратного реальному) с последующим масштабированием и использованием сглаживающего фильтра. Учет наклона отрезка – изменение яркости в зависимости от наклона отрезка (максимум у вертикального отрезка – 1, минимум у горизонтального отрезка – 0.707).

Изображение слайда
1/1
18

Слайд 18: Алгоритм Ву

При рисовании линий обычным образом с каждым шагом по основной оси высвечиваются два пиксела по неосновной оси. Их интенсивность подбирается пропорционально расстоянию от центра пиксела до идеальной линии – чем дальше пиксел, тем меньше его интенсивность. Значения интенсивности двух пикселов дают в сумме 100 %, т.е. интенсивность одного пиксела, точно попавшего на идеальную линию. Горизонтальные, вертикальные и диагональные линии не сглаживаются. Т.о. учитываются особенности человеческой зрительной системы.

Изображение слайда
1/1
19

Слайд 19: Алгоритм Ву

Изображение слайда
Изображение для работы со слайдом
1/2
20

Слайд 20: Алгоритм Ву

Изображение слайда
Изображение для работы со слайдом
1/2
21

Слайд 21: Целочисленный алгоритм Ву

// Координаты концов отрезка - (0, 0) и (a, b), a > 0, b > 0, b < a // plot(x,y,I) закрашивает пиксель (x, y) с интенсивностью I // I0 - максимальная интенсивность (2 ^ m - 1) x0 = 0; x1 = a; y0 = 0; y1 = b; plot(x0,y0,I0); plot(x1,y1,I0); D = 0; d = floor( (b / a) * 2 ^ n + 0.5 ); // меньшее целое while ( x0 < x1 ) { D = D + d; if( произошло переполнение D ) { y0++; y1--; } I1 = D / 2 ^ (n - m); // битовый сдвиг вправо на n - m I2 = двоичное _ дополнение ( I1 ); plot(x0, y0, I1); plot(x0, y0+1, I2); plot(x1, y1, I1); plot(x1, y1-1, I2); x0++; x1--; }

Изображение слайда
1/1
22

Слайд 22: Заполнение областей

Построчное сканирование Заполнение с затравкой

Изображение слайда
Изображение для работы со слайдом
Изображение для работы со слайдом
1/3
23

Слайд 23: Построчное сканирование

Имеется область, граница которой разложена в растр. Внутри задана точка. Заданы значения: a – граничных пикселов, b – внутренних пикселов до заполнения, c – внутренних пикселов после заполнения. Объект заключается в прямоугольную оболочку. Проводится построчное сканирование прямоугольной оболочки: в строке находится пиксел со значением a, затем пиксел, следующий за ним и имеющий значение b, которое меняется на c, и так до тех пор, пока не будет встречен еще один пиксел со значением a, после чего осуществляется переход на следующую строку.

Изображение слайда
1/1
24

Слайд 24: Заполнение с затравкой

Указать затравочный пиксел внутри контура. Поместить затравочный пиксел в стек. Пока стек не пуст: извлечь пиксел из стека; присвоить пикселу требуемое значение; для каждого из соседних четырехсвязных пикселов проверить: Является ли он граничным; Не присвоено ли ему требуемое значение; проигнорировать пиксел в любом из этих двух случаев, иначе поместить пиксел в стек.

Изображение слайда
1/1
25

Слайд 25: Растеризация сплошных многоугольников

Растеризация всех негоризонтальных ребер многоугольника. Все точки помещаются в списки. Для каждой координаты y min, y 2,..., y max сопоставляется список x -координат всех пикселов, закрашенных при растеризации ребер, которые находятся на горизонтали y.

Изображение слайда
1/1
26

Слайд 26: Растеризация сплошных многоугольников

Изображение слайда
Изображение для работы со слайдом
1/2
27

Слайд 27: Удаление невидимых линий

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

Изображение слайда
1/1
28

Последний слайд презентации: 5. Растровая графика: Алгоритм Z- буфера

Заполнить буфер кадра фоновым значением интенсивности или цвета. Заполнить z -буфер минимальным значением z. Преобразовать каждый многоугольник в растровую форму в произвольном порядке. Для каждого пиксела с координатами ( x, y ) в многоугольнике вычислить его глубину z ( x, y ). Сравнить глубину z ( х, у ) со значением a, хранящимся в z -буфере в этой же позиции. Если z ( х,у ) > a, то записать атрибут этого многоугольника (интенсивность, цвет и т. п.) в буфер кадра и заменить значение a в z -буфере на z ( х,у ). В противном случае никаких действий не производить.

Изображение слайда
1/1
Реклама. Продолжение ниже