Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab9.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
228.86 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

Комп’ютерна графіка

Методичні вказівки

до виконання лабораторної роботи № 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-зв’язні піксели, починаючи з правого від поточного піксела. Напрямок обходу пікселів - проти годинникової стрілки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]