- •Закраска. (Растровая развертка сплошных областей (ррсо)).
- •Заполнение многоугольников.
- •Простой алгоритм закраски с упорядоченным списком ребер.
- •Алгоритм заполнения по ребрам.
- •Алгоритм заполнения по ребрам с перегородкой.
- •Алгоритм со списком ребер и флагом.
- •Алгоритмы заполнения (закраски) с затравкой.
- •Простой алгоритм закраски с затравкой
- •Построчный алгоритм закраски с затравкой.
- •Отсечение.
- •Двух мерное отсечение.
- •2: Отрезок невидим.
- •3: Переходим к следующему отрезку. Метод Коэна – Сазерленда.
- •Непараметрический способ.
- •Метод предложен Сазерлендом и Спрулом: «Метод разбиения отрезка средней точкой».
- •Отсечение произвольным окном (выпуклым).
- •Отсечение параметрически заданного отрезка прямоугольным регулярным окном (частный случай нерегулярного).
- •Алгоритм Кируса – Бека.
- •Внутреннее и внешнее отсечение.
- •Определение факта выпуклости окна. Метод переносов и поворотов.
- •Разрезание невыпуклого окна.
- •Разбиение невыпуклых многоугольников.
- •Форматы графических файлов.
- •Истинно черно-белые изображения в градациях серого.
- •Цветовые плоскости изображения.
- •Гарантия точности соответствия цветов.
- •Колориметрические стандарты.
Алгоритм со списком ребер и флагом.
Это двух шаговый алгоритм:
Обрисовка контура. Результат: на каждой сканирующей строке образуются пары ограничивающих пикселей.
Закрашивание пикселей, расположенных между ограничивающими пикселями.
Более подробно:
Обрисовка контура. Используется соглашение о середине интервала между сканирующими строками для каждого ребра, пересекающего сканирующие строки. Отметить самый левый пиксель, центр которого лежит справа от пересечения, то есть Х=Хпересечения+0,5.
Заполнение. Для каждой сканирующей строки, пересекающей МУ.
ВНУТРИ=FALSE
FOR Х=0 (левая граница) TO Х=Хmax (правая граница)
IF пиксель в точке Х имеет граничное значение
THEN инвертировать значение переменной ВНУТРИ
IF ВНУТРИ=TRUE
THEN присвоить пикселю в Х значение цвета многоугольника
ELSE присвоить пикселю в Х значение цвета фона
END IF
NEXT X
Р



Результат закраски третей строки:

Алгоритмы заполнения (закраски) с затравкой.

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

Гранично-определенная область (Все пиксели на границе области имеют заданный цвет, ни один пиксель внутри области не может иметь этот цвет).
Алгоритмы заполнения внутренней области называются внутренне заполняющими алгоритмами, а граничные области – гранично заполняющими алгоритмами.
Области заполнения могут быть 4х связными и 8ми связными. Если область 4х связная, то любого пикселя в этой области можно достичь с помощью комбинации возможного движения только в 4х направлениях (←↑→↓). Для 8ми связных областей появляются 4 движения дополнительно (← \ ↑ / → \ ↓ /).
Примеры внутренне – определенных областей:

Простой алгоритм закраски с затравкой
(4х-связный, гранично-определенный).
Используется стек (FILO).
Поместить затравочный пиксель в стек.
Пока стек не пуст:
Извлечь пиксель из стека.
Закрасить пиксель.
Для каждого из соседних к текущему 4х-связных пикселей проверить:
Является ли он граничным пикселей или уже закрашенным? В любом из этих двух случаев проигнорировать пиксель, в противном случае поместить пиксель в стек.
Пример: в примере проверяются и помещаются в стек 4х-связные пиксели, начиная с правого от текущего пикселя против часовой стрелки, то есть порядок→↑←↓.

Недостаток: требуется большой стек (память в виде цеха).
Достоинство: можно закрашивать 4х-связные области любой сложности.
Построчный алгоритм закраски с затравкой.

Также используется стек, но он выглядит следующим образом:
Определяется затравочный пиксель, который заносится в стек и пока стек не пуст, пиксель извлекается из стека.
Пиксель закрашивается, и закрашиваются все пиксели на сканирующей строке влево от текущего пикселя, а потом вправо.
В переменных Хлевое и Хправое запоминаются координаты крайнего левого и крайнего правого пикселей интервала закрашенной строки. В диапазоне Хлевое ≤ Х ≤ Хправое проверяются строки, расположенные непосредственно над и под текущей строкой. Определяется, есть ли на них еще не закрашенные пиксели. Если есть незакрашенные пиксели, то в указанном диапазоне крайний правый пиксель, например в каждом интервале, отмечается как затравочный и помещается в стек.
15.11.02
Лекция 10.
