
- •Комп’ютерна графіка
- •Лабораторна робота № 9 простий алгоритм заповнення з запалом
- •9.1 Простий алгоритм заповнення з запалом і стеком
- •9.2 Простий алгоритм заповнення
- •Приклад 9.1. Простий алгоритм заповнення з запалом
- •Приклад 9.2. Алгоритм заповнення з запалом для багатокутника з діркою
- •9.3 Порядковий алгоритм заповнення з запалом
- •9.4 Алгоритм порядкового заповнення з запалом
- •9.5 Порядковий алгоритм заповнення з запалом
- •Приклад 9.3. Порядковий алгоритм заповнення з запалом
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Комп’ютерна графіка
Методичні вказівки
до виконання лабораторної роботи № 9
Простий алгоритм заповнення з запалом
для студентів бакалаврського рівня підготовки спеціальності
«Комп‘ютерні науки» та «Видавничо-поліграфічна справа»
Затверджено на засіданні кафедри
Інформаційні технології видавничої справи
Протокол № 5-11/12 від 23 грудня 2011 р.
Львів – 2012
Простий алгоритм заповнення з запалом: Методичні вказівки до лабораторної роботи № 9 з курсу “Комп’ютерна графіка” для студентів «Видавничо-поліграфічна справа» (шифр - 0927) та “Комп‘ютерні науки” (шифр - 0804) / Укл.: О.Я. Різник - Львів: Видавництво Національного університету “Львівська політехніка”, 2012 - 11 с.
Укладач: Різник О.Я., к.т.н., доц.
Відповідальний за випуск: Різник О. Я., к. т. н., доц.
Рецензент: Рашкевич Ю.М., д.т.н., проф.
Лабораторна робота № 9 простий алгоритм заповнення з запалом
Мета роботи: Освоїти алгоритм заповнення гранично-визначеної області
ТЕОРЕТИЧНІ ВІДОМОСТІ
Вступ
Використовуючи стек, можна розробити простий алгоритм заповнення гранично-визначеної області. Стек - це просто масив чи інша структура даних, в яку можна послідовно поміщати значення і з якої їх можна послідовно виймати. Коли нові значення додаються чи поміщаються в стек, всі інші значення опускаються вниз на один рівень. Коли значення виймаються чи видаляються із стека, інші значення спливають чи піднімаються нагору на один рівень. Такий стек називається стеком прямої дії чи стеком з порядком обслуговування “першим прийшов, останнім вийшов” (FILO). Простий алгоритм заповнення з запалом можна представити в наступному вигляді:
9.1 Простий алгоритм заповнення з запалом і стеком
Помістити затравочний піксел у стек
Поки стек не порожній
Витягти піксел зі стека
Привласнити пікселу необхідне значення
Для кожного із сусідніх до біжучого 4-зв’язних пікселів перевірити: чи є він граничним пікселом чи не привласнене пікселу необхідне значення. Проігнорувати піксел у кожнім з цих двох випадків. В іншому випадку помістити піксел у стек.
Алгоритм можна модифікувати для 8-зв’язних областей, якщо переглядати 8-связні піксели, а не тільки 4-зв’язні. Наведемо більш формальний виклад алгоритму, у якому передбачається існування затравочного піксела і гранично-визначеної області.
9.2 Простий алгоритм заповнення
Запал (х, у) видає затравочний піксел
Push - процедура, що поміщає піксел у стек
Pop - процедура, що витягає піксел зі стека
Піксел (х, у) = Запал (х, у)
Ініціалізуємо стек
Push Піксел (х, у)
While (стек не порожній)
Вибираємо піксел зі стека
Pop Піксел (х, у)
If Піксел(х, у)<>Нове_значення then
Піксел(х, у)=Нове_значення
End if
Перевіримо, чи треба поміщати сусідні піксели в стек
If (Піксел(х+1, у)<>Нове_значення and
Піксел(х+1, у)<>Гран_значення) Then
Push Піксел(х+1, у)
If (Піксел(х, у+1)<>Нове_значення and
Піксел(х, у+1)<>Гран_значення) Then
Push Піксел(х, у+1)
If (Піксел(х-1, у)<>Нове_значення and
Піксел(х-1, у)<>Гран_значення) Then
Push Піксел(х-1, у)
If (Піксел(х, у-1)<>Нове_значення and
Піксел(х, у-1)<>Гран_значення) Then
Push Піксел(х, у-1)
End if
End while
В алгоритмі перевіряються і поміщаються в стек 4-зв’язні піксели, починаючи з правого від поточного піксела. Напрямок обходу пікселів - проти годинникової стрілки.