![](/user_photo/2706_HbeT2.jpg)
- •Введение
- •1. Машинная графика и обработка изображения с помощью эвм
- •2. Типы графических устройств
- •2.1. Графические дисплеи на запоминающей трубке
- •2.2. Векторные графические дисплеи с регенерацией изображения
- •2.3. Растровые графические дисплеи с регенерацией изображения
- •2.4. Диалоговые устройства
- •3. Основы растровой графики
- •3.1. Алгоритмы вычерчивания отрезков
- •3.2. Цифровой дифференциальный анализатор
- •3.3. Алгоритм Брезенхема
- •3.4. Целочисленный алгоритм Брезенхема
- •3.5. Общий алгоритм Брезенхема
- •3.6. Алгоритм Брезенхема для генерации окружности
- •4. Растровая развертка изображения
- •4.1. Растровая развертка в реальном времени
- •4.2. Групповое кодирование
- •4.3. Клеточное кодирование
- •4.4. Буферы кадра
- •4.5. Изображение отрезков
- •4.6. Изображение литер
- •4.7. Растровая развертка сплошных областей и заполнение многоугольников
- •1 X 8 – внутри многоугольника;
- •1 Х 4 – внутри многоугольника;
- •6 Х 8 – внутри многоугольника;
- •4.8. Простой алгоритм с упорядоченным списком ребер
- •4.9. Алгоритм заполнения по ребрам
- •4.10. Алгоритм со списком ребер и флагом
- •4.11. Алгоритм заполнения с затравкой
- •4.12. Построчный алгоритм заполнения с затравкой
- •4.13. Основные методы устранения ступенчатости
- •4.14. Аппроксимация полутонами
- •5. Отсечение
- •5.1. Двумерное отсечение
- •5.2. Алгоритм отсечения Сазерленда-Коэна
- •5.3. Алгоритм разбиения средней точкой
- •5.4. Обобщение: отсечение двумерного отрезка выпуклым окном
- •5.5. Алгоритм Кируса–Бека
- •5.6. Внутреннее и внешнее отсечение
- •5.7. Определение факта выпуклости многоугольника
- •5.8. Разбиение невыпуклых многоугольников
- •5.9. Трехмерное отсечение
- •5.10. Определение выпуклости трехмерного тела
- •5.11. Отсечение невыпуклых тел
- •5.12. Отсечение многоугольников
- •5.13. Последовательное отсечение многоугольника – алгоритм Сазерленда – Ходжмена
- •5.14. Невыпуклые отсекающие области – алгоритм
- •5.15. Литеры
- •6. Удаление невидимых линий и поверхностей
- •6.1. Алгоритм плавающего горизонта
- •6.2. Алгоритм Робертса
- •6.3. Алгоритм Варнока
- •6.4. Алгоритм Вейлера–Азертона
- •6.5. Алгоритм, использующий z-буфер
- •6.6. Алгоритмы, использующие список приоритетов
- •6.7. Алгоритм построчного сканирования
- •6.8. Алгоритм построчного сканирования, использующий
- •Библиографический список рекомендуемой литературы
- •Оглавление
- •1. Машинная графика и обработка изображения с помощью эвм….……..3
4.9. Алгоритм заполнения по ребрам
Алгоритм с упорядоченным списком ребер очень мощный. Каждый пиксель изображения активизируется только один раз, следовательно, минимизированы операции ввода-вывода. Главный недостаток алгоритма состоит в больших накладных расходах, связанных с поддержкой и сортировкой различных списков. В другом методе растровой развёртки сплошных областей большинство из этих списков устранено. Этот метод называется алгоритмом заполнения по ребрам.
Алгоритм заполнения по ребрам
Для каждой сканирующей строки, пересекающей ребро многоугольника в (X1, Y1), дополнить, т.е. активизировать, подсветить все пиксели, у которых центры лежат справа от (X1, Y1), т.е. для (X1,Y1), X+1/2>X1.
К каждому ребру алгоритм применяется индивидуально, причем, порядок обработки ребер многоугольника не важен.
Наиболее удобно использовать описываемый алгоритм вместе с буфером кадра, что позволяет обрабатывать ребра многоугольника в совершенно произвольном порядке. При обработке каждого ребра, обрабатываются пиксели в буфере кадра, соответствующие пересечению ребра со сканирующей строкой. После завершения обработки всех ребер буфер кадра выводится в порядке сканирования на дисплей.
Главный недостаток – для сложного изображения каждый пиксель может обрабатываться много раз. Следовательно, эффективность алгоритма ограничена скоростью ввода/вывода.
Число обрабатываемых пикселов можно сократить, если ввести так называемую перегородку.
Алгоритм заполнения с перегородкой
Для каждой сканирующей строки, пересекающей ребро многоугольника:
-
если пересечение находится слева от перегородки, то дополнить все пиксели, центры которых лежат справа от пересечения сканирующей строки с ребром и слева от перегородки;
-
если пересечение находится справа от перегородки, то дополнить все пиксели, центры которых расположены слева или на пересечении сканирующей строки с ребром и справа от перегородки.
Обычно перегородка проходит через одну из вершин многоугольника, и снова удобнее всего применять данный алгоритм с буфером кадра. Недостаток – неоднократная активизация части пикселов.
4.10. Алгоритм со списком ребер и флагом
Алгоритм является двухшаговым. Первый шаг состоит в обрисовке контура, в результате чего на каждой сканирующей строке образуются пары ограничивающих пикселей. Второй шаг состоит в заполнении пикселей, расположенных между ограничивающими:
-
обрисовка контура: используя соглашения о середине интервала между сканирующими строками для каждого ребра, пересекающего сканирующую строку, отметить самый левый пиксель, центр которого лежит справа от пересечения; т.е. X+1/2>Xпересечения;
-
заполнение: для каждой сканирующей строки, пересекающей многоугольник:
Внутри = false
for X=0 (левая граница) to X=Xmax (правая граница)
if пиксель в точке X имеет граничное значение
then инвертировать значение переменной Внутри
if Внутри = true
then присвоить пикселю в X значение цвета многоугольника
else
присвоить пикселю в X значение цвета фона
end if
next X
В данном алгоритме каждый пиксель обрабатывается только один раз, так что затраты на ввод/вывод значительно меньше, чем в алгоритме со списком ребер или алгоритме с перегородкой.