Grafika 2D. Podstawowe operacje rastrowe. opracowanie: Jacek Kęsik



Podobne dokumenty
WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Standardowe tolerancje wymiarowe

Bazy danych. Andrzej Łachwa, UJ, /15

XIII KONKURS MATEMATYCZNY

MATEMATYKA 4 INSTYTUT MEDICUS FUNKCJA KWADRATOWA. Kurs przygotowawczy na studia medyczne. Rok szkolny 2010/2011. tel

NUMER IDENTYFIKATORA:

Podstawowe działania w rachunku macierzowym

Harmonogramowanie projektów Zarządzanie czasem

SERI A 93 S E RI A 93 O FLUSH GRID WITHOUT EDGE TAB

K P K P R K P R D K P R D W

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

EGZAMIN MATURALNY Z MATEMATYKI

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

SPRAWDZIANY Z MATEMATYKI

Zadania. SiOD Cwiczenie 1 ;

Kurs wyrównawczy dla kandydatów i studentów UTP

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

2.Prawo zachowania masy

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1

Arkusz maturalny treningowy nr 7. W zadaniach 1. do 20. wybierz i zaznacz na karcie odpowiedzi poprawną odpowiedź.

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 6, strona 1. Format JPEG

RZECZPOSPOLITA POLSKA. Prezydent Miasta na Prawach Powiatu Zarząd Powiatu. wszystkie

Czas pracy 170 minut

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Ćwiczenie nr 8 Elementy uzupełniające

Warunki Oferty PrOmOcyjnej usługi z ulgą

Technologie Informacyjne

Warszawa, dnia 11 marca 2016 r. Poz. 327 ROZPORZĄDZENIE. z dnia 7 marca 2016 r.

Grafika 2D. Rasteryzacja elementów wektorowych. opracowanie: Jacek Kęsik

Archiwum Prac Dyplomowych

Ogólna charakterystyka kontraktów terminowych

ZASADY WYPEŁNIANIA ANKIETY 2. ZATRUDNIENIE NA CZĘŚĆ ETATU LUB PRZEZ CZĘŚĆ OKRESU OCENY

KSIĘGA ZNAKU TOTORU S.C.

NACZYNIE WZBIORCZE INSTRUKCJA OBSŁUGI INSTRUKCJA INSTALOWANIA

D TYMCZASOWE NAWIERZCHNIE Z ELEMENTÓW PREFABRYKOWANYCH

Promocja i identyfikacja wizualna projektów współfinansowanych ze środków Europejskiego Funduszu Społecznego

Analiza wyników egzaminu gimnazjalnego. Test matematyczno-przyrodniczy matematyka. Test GM-M1-122,

Czy zdążyłbyś w czasie, w jakim potrzebuje światło słoneczne, aby dotrzeć do Saturna, oglądnąć polski hit kinowy: Nad życie Anny Pluteckiej-Mesjasz?

1.Rysowanie wałka. Dostosowanie paska narzędzi Tworzenie nowego wałka. Uniwersytet Technologiczno Przyrodniczy w Bydgoszczy

D wysokościowych

Podstawowe pojęcia: Populacja. Populacja skończona zawiera skończoną liczbę jednostek statystycznych

Matematyka z plusemdla szkoły ponadgimnazjalnej WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE TRZECIEJ LICEUM. KATEGORIA B Uczeń rozumie:

Umowa o pracę zawarta na czas nieokreślony

Nowe funkcjonalności

7. OPRACOWYWANIE DANYCH I PROWADZENIE OBLICZEŃ powtórka

PREFABRYKOWANE STUDNIE OPUSZCZANE Z ŻELBETU ŚREDNICACH NOMINALNYCH DN1500, DN2000, DN2500, DN3200 wg EN 1917 i DIN V

PL B1. BSC DRUKARNIA OPAKOWAŃ SPÓŁKA AKCYJNA, Poznań, PL BUP 03/08. ARKADIUSZ CZYSZ, Poznań, PL

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

'()(*+,-./01(23/*4*567/8/23/*98:)2(!."/+)012+3$%-4#"4"$5012#-4#"4-6017%*,4.!"#$!"#%&"!!!"#$%&"#'()%*+,-+

POWIATOWY URZĄD PRACY

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Kurs z matematyki - zadania

EGZAMIN MATURALNY Z MATEMATYKI

PRZYK ADOWY ARKUSZ EGZAMINACYJNY Z MATEMATYKI

WZORU UŻYTKOWEGO EGZEMPLARZ ARCHIWALNY. d2)opis OCHRONNY. (19) PL (n) Centralny Instytut Ochrony Pracy, Warszawa, PL

1. Poziome znaki drogowe

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE PIERWSZEJ GIMNAZJUM

EGZAMIN MATURALNY Z MATEMATYKI CZERWIEC 2012 POZIOM PODSTAWOWY. Czas pracy: 170 minut. Liczba punktów do uzyskania: 50 WPISUJE ZDAJĄCY

PRZYK ADOWY ARKUSZ EGZAMINACYJNY Z MATEMATYKI

KLASA 3 GIMNAZJUM. 1. LICZBY I WYRAŻENIA ALGEBRAICZNE (26 h) 1. Lekcja organizacyjna System dziesiątkowy System rzymski 5-6

Na podstawie art.4 ust.1 i art.20 lit. l) Statutu Walne Zebranie Stowarzyszenia uchwala niniejszy Regulamin Zarządu.

SZCZEGÓŁOWA SPECYFIKACJA TECHNICZNA

Systemy mikroprocesorowe - projekt

Metoda LBL (ang. Layer by Layer, pol. Warstwa Po Warstwie). Jest ona metodą najprostszą.

Wojewódzki Konkurs Przedmiotowy z Matematyki dla uczniów gimnazjów województwa śląskiego w roku szkolnym 2012/2013

Bioinformatyka Laboratorium, 30h. Michał Bereta

PRÓBNY EGZAMIN MATURALNY Z MATEMATYKI

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

1. Rozwiązać układ równań { x 2 = 2y 1

Wojewódzki Konkurs Przedmiotowy z Matematyki dla uczniów gimnazjów województwa śląskiego w roku szkolnym 2013/2014

Lekcja 173, 174. Temat: Silniki indukcyjne i pierścieniowe.

Implant ślimakowy wszczepiany jest w ślimak ucha wewnętrznego (przeczytaj artykuł Budowa ucha

Projekty uchwał dla Zwyczajnego Walnego Zgromadzenia

KONKURSY MATEMATYCZNE. Treść zadań

PAKIET MathCad - Część III

INSTRUKCJA Panel administracyjny

Regulamin Zarządu Pogórzańskiego Stowarzyszenia Rozwoju

Objaśnienia wartości, przyjętych do Projektu Wieloletniej Prognozy Finansowej Gminy Golina na lata

TECHNOLOGICZNOŚĆ WYPRASEK

SPECYFIKACJA TECHNICZNA D GEODEZYJNA OBSŁUGA BUDOWY

Grupa bezpieczeństwa kotła KSG / KSG mini

Wskazówki dotyczące przygotowania danych do wydruku suplementu

KLASYFIKACJI I BUDOWY STATKÓW MORSKICH

Kod pracy. Po udzieleniu odpowiedzi do zadań 1 20, wypełnij tabelkę

PL B1. POLITECHNIKA LUBELSKA, Lublin, PL BUP 14/14

DE-WZP JJ.3 Warszawa,

WYMAGANIA EDUKACYJNE SPOSOBY SPRAWDZANIA POSTĘPÓW UCZNIÓW WARUNKI I TRYB UZYSKANIA WYŻSZEJ NIŻ PRZEWIDYWANA OCENY ŚRÓDROCZNEJ I ROCZNEJ

ARKUSZ PRÓBNEJ MATURY Z OPERONEM MATEMATYKA

Edycja geometrii w Solid Edge ST

ZAPYTANIE OFERTOWE. Nazwa zamówienia: Wykonanie usług geodezyjnych podziały nieruchomości

Moduł 2/3 Projekt procesu technologicznego obróbki przedmiotu typu bryła obrotowa

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

MATERIAŁY DIAGNOSTYCZNE Z MATEMATYKI

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z MATEMATYKI W KLASACH IV-VI

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

Elementy typografii. Technologia Informacyjna Lekcja 22

Rozbudowa domu przedpogrzebowego na cmentarzu komunalnym w Bierutowie. Specyfikacja techniczna wykonania i odbioru robót budowlanych - Okna i drzwi

Transkrypt:

Grafika 2D Podstawowe operacje rastrowe opracowanie: Jacek Kęsik

Wykład obejmuje operacje rastrowe związane z wyświetleniem kształtów o ciągłych krawędziach za pomocą skończenie gęstej siatki pikseli

Rysowanie odcinków Rysowanie okręgów Antyaliasing Wypełnianie obszarów Obcinanie

Rysowanie odcinków Odcinek przedstawiony rastrowo będzie miał wygląd podobny do poniższego

Rysowanie odcinków Odcinek opisany jest za pomocą pozycji punktów początku i końca odcinka Pozycje te zapisane są wg. układu współrzędnych (najczęściej odpowiadającego wartościami ilościom pikseli obrazu) Np. Odcinek (2,5),(10,8) Znając te współrzędne można wyznaczyć równanie prostej, na której ten odcinek leży. y=mx+b m współczynnik nachylenia prostej = tg kąta nachylenia do osi x.

Rysowanie odcinków Znając równanie prostej można zbudować naiwny algorytm rysowania odcinka: Dla wszystkich wartości x (pikseli) od początku do końca odcinka Wyznacz y[i] dla x[i] z równania prostej (1 mnożenie, 1 dodawanie) Znajdź najbliższą y[i] wartość całkowitą yc[i] (1 zaokrąglenie) Zaznacz piksel (x[i],yc[i]) Algorytm ten działa poprawnie dla odcinków o nachyleniu od 0 do 45 stopni Dla odcinków o nachyleniu od 45 do 90 stopni należy podążać wzdłuż osi y.

Rysowanie odcinków Algorytm naiwny można poprawić korzystając z faktu, że nachylenie odcinka jest stałe. Wtedy przy przesuwaniu wartości x o 1, różnica między kolejnymi wartościami y jest stała i wynosi y=m (0<m<1) Kolejne wartości y można obliczyć ze wzoru y[i+1] = y[i]+ y Oszczędność: 1 mnożenie Algorytm taki nosi nazwę: Digital Differential Analyzer (DDA) Algorytm ten działa poprawnie dla odcinków o nachyleniu od 0 do 45 stopni, stąd 0<m<1

Rysowanie odcinków Algorytm może być stosowany dla linii w dowolnym oktancie układu współrzędnych, pod warunkiem modyfikacji kierunku i znaku przesunięcia.

Rysowanie odcinków Algorytm wyznaczania odcinka wykorzystujący jedynie obliczenia stałopozycyjne został zaproponowany przez Bresenhama w 1965r. Algorytm ten, tak samo jak poprzednie ogranicza się do jednego oktantu układu współrzędnych. Wykorzystuje on zależność miedzy poprzednim i kolejnym pikselem, mówiącą że wartość y następnego piksela będzie taka sama lub o 1 większa.

Rysowanie odcinków Algorytm Bresenhama Dla odcinka (xp,yp),(xk,yk) kryterium wyboru między pikselami jest znak parametru p[i] (-1 < p[i] < 1), którego początkowa wartość wynosi p[1]=2 y - x gdzie x= xk xp i y= yk yp Dla p[i]<0 wybierany jest piksel (x[i+1],y[i]) a kryterium p[i+1] = p[i] + 2 y Dla p[i]>=0 wybierany jest piksel (x[i+1],y[i+1]) a kryterium p[i+1] = p[i] + 2 y - 2 x Tylko 1 dodawanie całkowitoliczbowe w 1 kroku

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 0 Zaczynamy od (x[1],y[1]) 4 3 2 1 1 2 3 4 5 6 7

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 1 p[1]=0 to (x[2],y[2]) p[2]=0 6 = -6 4 3 2 1 1 2 3 4 5 6 7

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 2 p[2]= -6 to (x[3],y[2]) p[3]= -6 + 6 = 0 4 3 2 1 1 2 3 4 5 6 7

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 3 p[3]= 0 to (x[4],y[3]) p[4]= 0-6 = -6 4 3 2 1 1 2 3 4 5 6 7

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 4 p[4]= -6 to (x[5],y[3]) p[5]= -6 + 6 = 0 4 3 2 1 1 2 3 4 5 6 7

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 5 p[5]= 0 to (x[6],y[4]) p[6]= 0-6 = -6 4 3 2 1 1 2 3 4 5 6 7

Rysowanie odcinków Algorytm Bresenhama - przykład Dla odcinka (1,1),(7,4) Wartości początkowe x= 7 1 = 6 y= 4 1 = 3 A= 2 y = 6 B = 2 y - 2 x = -6 p[1]= 2*3 6 = 0 Krok 6 p[6]= -6 to (x[7],y[4]) x[7] -> Koniec 4 3 2 1 1 2 3 4 5 6 7

Rysowanie okręgów Równanie okręgu x 2 y 2 r 2 Bezpośrednie wyznaczanie z równania kosztowne obliczeniowo Korzystając z zasady symetryczności można wyznaczyć punkty tylko w 1 oktancie koła

Rysowanie okręgów Algorytm Bresenhama Dla koła w 1 oktancie zachodzi zależność analogiczna jak dla odcinka. Wartość y kolejnego piksela będzie równa wartości obecnej lub o 1 mniejszej. Kryterium wyboru jest to czy punkt środkowy znajduje się wewnątrz x 2 y 2 r 0 czy na zewnątrz koła 2 x 2 y 2 r 2 0

Rysowanie okręgów Algorytm Bresenhama Dla 1 oktantu koła (0,r),(x,y) - takie że x=y, kryterium wyboru między pikselami jest znak parametru p[i], którego początkowa wartość wynosi p[1]=5/4 - r Dla p[i]<0 wybierany jest piksel (x[i+1],y[i]) a kryterium p[i+1] = p[i] + 2 x[i+1] + 1 Dla p[i]>=0 wybierany jest piksel (x[i+1],y[i+1]) a kryterium p[i+1] = p[i] + 2 x[i+1] + 1 2y[i+1] Kroki są powtarzane tak długo jak pozycja x > pozycja y Pozostałe 7 pikseli powiązanych wyznaczane jest na podstawie wybranego Tylko operacje całkowitoliczbowe w 1 kroku

Rysowanie okręgów Algorytm Bresenhama dla okręgów - przykład Dla okręgu o środku (0,0) i r=5 5 4 3 2 1 0-1 -2 Krok 0 Zaczynamy od (x[0],y[5]) -3-4 -5-5 -4-3 -2-1 0 1 2 3 4 5

Rysowanie okręgów Algorytm Bresenhama dla okręgów - przykład Dla okręgu o środku (0,0) i r=5 p[0]= 5/4-5 = -3,75 < 0 5 4 3 2 1 0-1 Krok 1 Kolejny piksel (x[1],y[5]) p[1]= -3,75 +2+1=-0,75-2 -3-4 -5-5 -4-3 -2-1 0 1 2 3 4 5

Rysowanie okręgów Algorytm Bresenhama dla okręgów - przykład Dla okręgu o środku (0,0) i r=5 5 4 3 p[1]= -0,75 < 0 2 1 0-1 Krok 2 Kolejny piksel (x[2],y[5]) p[2]= -0,75 +4+1=4,25-2 -3-4 -5-5 -4-3 -2-1 0 1 2 3 4 5

Rysowanie okręgów Algorytm Bresenhama dla okręgów - przykład Dla okręgu o środku (0,0) i r=5 5 4 3 p[2]= 4,25 > 0 2 1 0-1 Krok 3 Kolejny piksel (x[3],y[4]) STOP -2-3 -4-5 -5-4 -3-2 -1 0 1 2 3 4 5

Grubość linii Grubość linii tworzącej rysunek może być większa od 1 piksela Konieczne jest wyznaczenie zbioru pikseli składających się na linię Wyznaczenie pikseli dla linii poziomych i pionowych nie stanowi problemu

Grubość linii Wyznaczenie pikseli dla linii ukośnych wiąże się z niepewnością, które piksele powinny zawierać się w linii Jeśli wybrane zostaną tylko piksele zawierające się w obszarze, nastąpi optyczne wyszczuplenie linii. Najczęściej kompensacja przez dodanie pikseli bliskich wybranej grubości linii fizyczne pogrubienie linii Linia o nachyleniu od 0 do 45 st. wyznaczanie pikseli w osi y Linia o nachyleniu od 45 do 90 st. wyznaczanie pikseli w osi x

Grubość linii Ustalanie pikseli dla linii grubej nie będącej prostym odcinkiem wiąże się z przechodzeniem miedzy osią x i y bardziej złożony algorytm Prostszym rozwiązaniem jest zastępowanie każdego piksela linii obszarem o określonym kształcie np. prostokąt

Rysowanie linii - Aliasing Specyfika budowy rastra powoduje różne wyświetlanie linii w zależności od jej kąta pochylenia. Głównym efektem jest powstawanie schodkowości linii innych niż wielokrotność 90 - Aliasing. Jej widoczność zależy od rozdzielczości i wielkości ekranu. Nie istnieje metoda eliminacji aliasingu Schodkowość jest największa dla linii pod kątem 45 (Schodek co piksel) Powoduje to optyczne zmniejszenie grubości linii

Rysowanie linii - Antyaliasing Aliasing można optycznie zamaskować rozmywając krawędzie linii Metoda ta nazywa się Antyaliasing Zamiast ostrego rozgraniczenia miedzy kolorem linii/krawędzi i kolorem tła wprowadza się kolory pośrednie pomiędzy tymi dwoma Dla linii 1 pikselowej generowanie linii zostało zmodyfikowane Jeżeli rzeczywista linia leży odpowiednio daleko od najbliższego piksela, wybierane są piksele po obu stronach linii, każdy z intensywnością koloru zależną od odległości do linii rzeczywistej Suma intensywności jest równa intensywności koloru linii

Rysowanie linii - Antyaliasing W przypadku grubszych linii i innych obiektów antyaliasing stosowany jest do ich krawędzi.

Rysowanie linii - Antyaliasing Kolory pośrednie dla krawędzi zależą od koloru tła. Zastosowanie prostego antyaliasingu dla krawędzi obiektu przemieszczanego (animowanego) może spowodować efekt Halo w chwili przesunięcia obiektu na tło o innym kolorze Efektu Halo można uniknąć stosując antyaliasing wykorzystujący stopnie przeźroczystości zamiast poziomów jasności

Wypełnianie obszarów Podstawowa cecha: Wypełnić możemy obszar zamknięty (czyli jaki?) Obszary zamknięte mogą być definiowane (ograniczane) rastrowo (zbiór pikseli tworzących krawędź) lub wektorowo (zbiór odcinków o wspólnych wierzchołkach)

Wypełnianie obszarów Obszary zamknięte rastrowe (zbiór pikseli) Specyfika tworzenia linii rastrowych powoduje podział na dwa rodzaje obszarów zamkniętych Czterospójny Obszar jest cztero-spójny (ang. four-way connected region), jeśli zawarte w nim piksele posiadają ten sam kolor oraz do każdego z nich można dotrzeć przechodząc po pikselach tego obszaru w 4 podstawowych kierunkach. A wypełnienie gradientowe?

Wypełnianie obszarów Obszary zamknięte rastrowe (zbiór pikseli tworzących krawędź) Specyfika tworzenia linii rastrowych powoduje podział na dwa rodzaje obszarów zamkniętych Ośmiospójny Obszar jest ośmio-spójny (ang. eight-way connected region), jeśli zawarte w nim piksele posiadają ten sam kolor oraz do każdego z nich można dotrzeć przechodząc po pikselach tego obszaru w 8 podstawowych kierunkach.

Wypełnianie obszarów Obszary zamknięte rastrowe (zbiór pikseli tworzących krawędź) Analogicznie krawędź rastrowa może być cztero lub ośmiospójna

Wypełnianie obszarów Sposób wypełnienia wypełnienie konturowe (boundary fill) Obszar posiada jednokolorowy kontur Wnętrze obszaru jest wypełnione dowolnymi kolorami innymi niż kolor konturu

Wypełnianie obszarów Sposób wypełnienia wypełnienie powodziowe/pożar prerii (flood fill) Obszar jest wypełniony jednym kolorem Otoczenie obszaru wielokolorowe (kolory inne niż kolor obszaru)

Wypełnianie obszarów Metoda wypełniania pożar prerii 1. Wybierany jest piksel startowy (wewnątrz obszaru wypełnienia) i umieszczany na stosie. 2. Dla wszystkich pikseli spójnych do danego piksela (cztero lub ośmio) testowany jest warunek - piksel jest tego samego koloru co startowy (w. powodziowe) lub - piksel jest innego koloru niż kolor krawędzi (w. krawędziowe) 3. Wszystkie piksele spełniające warunek, oznaczane są jako nowe piksele startowe (umieszczane na stosie) 4. Obecny piksel kolorowany jest nowym kolorem oraz usuwany ze stosu 5. Dla wszystkich pikseli na stosie wykonywane są punkty 2 do 4, tak długo jak stos zawiera jakieś piksele.

Wypełnianie obszarów Metoda wypełniania pożar prerii algorytm czterospójny Wypełnione: Stos: Testowane: 0 px 1 px 4 px

Wypełnianie obszarów Metoda wypełniania pożar prerii algorytm czterospójny Wypełnione: Stos: Testowane: 1 px 4 px 16 px

Wypełnianie obszarów Metoda wypełniania pożar prerii algorytm czterospójny Wypełnione: Stos: 5 px 7 px Testowane: 49 px!! (w tym 11 nowych ) i następne kroki

Wypełnianie obszarów Metoda wypełniania pożar prerii algorytm ośmiospójny krawędziowy Wypełnione: Stos: Testowane: 0 px 1 px 8 px

Wypełnianie obszarów Metoda wypełniania pożar prerii algorytm ośmiospójny krawędziowy Wypełnione: Stos: 1 px 8 px Testowane: 72 px!!

Wypełnianie obszarów Metoda wypełniania pożar prerii algorytm ośmiospójny krawędziowy Wypełnione: Stos: Testowane: 9 px 6 px 54 px Wypełnianie ośmiospójne przecieka przez krawędź ośmiospójną

Wypełnianie obszarów Metoda wypełniania pożar prerii Główna wada: Ogromna nadmiarowość testów kolorów pikseli - Ten sam piksel może być sprawdzany nawet ośmiokrotnie

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Algorytm ten wykorzystuje pojęcie segmentów: Ciągów pikseli mających tą samą cechę Segment jest opisywany 3 wartościami: współrzędne x, y początku, oraz długość segmentu 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 (2,2,6) (3,4,3) (3,9,1) (8,6,2)

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Etapy 1. Wybierany jest punkt wewnątrz obszaru 2. Dla punktu wyznaczany jest maksymalny segment, kolorowany i zapisany na stosie

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Etapy 3. Dla pierwszego piksela w segmencie sprawdzane są piksele poniżej i powyżej 4. Jeżeli sprawdzony piksel należy do obszaru, wyznaczany jest segment, do którego należy, kolorowany i zapisany na stosie

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Etapy 5. Algorytm przesuwa się wzdłuż segmentu bazowego o odległość równą wyznaczonemu przyległemu segmentowi + 1. Testowany jest kolejny przyległy piksel. Jeżeli sprawdzony piksel należy do obszaru, wykonywane są zadania z punktu 4

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Etapy 5. Algorytm przesuwa się wzdłuż segmentu bazowego o odległość równą wyznaczonemu przyległemu segmentowi + 1. Testowany jest kolejny przyległy piksel. Jeżeli sprawdzony piksel należy do obszaru, wykonywane są zadania z punktu 4 0 + 1 = 1

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Etapy 5. Algorytm przesuwa się wzdłuż segmentu bazowego o odległość równą wyznaczonemu przyległemu segmentowi + 1. (Jeżeli wykroczono poza koniec segmentu bazowego, algorytm kończy sprawdzanie po tej stronie.) Testowany jest kolejny przyległy piksel. Jeżeli sprawdzony piksel należy do obszaru, wykonywane są zadania z punktu 4 0 + 1 = 1

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Etapy 5. Algorytm przesuwa się wzdłuż segmentu bazowego o odległość równą wyznaczonemu przyległemu segmentowi + 1. Testowany jest kolejny przyległy piksel. Jeżeli sprawdzony piksel należy do obszaru, wykonywane są zadania z punktu 4

Wypełnianie obszarów Metoda wypełniania algorytm Smitha Jeżeli wykroczono poza koniec segmentu bazowego po obu stronach, bazowy segment jest usuwany ze stosu. Algorytm kontynuuje działanie od p.2 z kolejnym segmentem ze stosu

Wypełnianie obszarów Metoda wypełniania wielokątów Wielokąt jest opisywany za pomocą zbioru odcinków o początkach i końcach określanych współrzędnymi pikselowymi Dla skrócenia zapisu możliwe jest tworzenie łamanej składającej się z kilku odcinków. Zapisywana jest za pomocą ciągu liczb gdzie 1 jest ilością odcinków a następne parami współrzędnych tworzących łamaną (bez powtórzeń wierzchołków) Np. 4, 1,2, 4,4, 5,8, 17,3

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Metoda ta polega na szukaniu przecięć odcinków wielokąta z poziomymi liniami odpowiadającymi kolejnym rzędom pikseli. Algorytm zakłada, że linia pozioma przetnie wielokąt parzystą ilość razy. Dla każdej pary współrzędnych przecięć (zaokrąglonych do pikseli) zamalowywany jest odcinek pomiędzy nimi.

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Najprostsza wersja algorytmu skanowania liniami poziomymi miałaby postać: 1. wyznacz ymin i ymax z listy krawędzi wielokąta 2. Dla y = ymin; ymax; y++ wykonuj kroki 3-5 3. Wyznacz X - zbiór współrzędnych x punktów przecięcia krawędzi z listy z linią skanującą y 4. Posortuj rosnąco zbiór X 5. Dla kolejnych par punktów ze zbioru X narysuj odcinki na wysokości y. 6. Koniec Ale

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Przypadki szczególne Wielokąt posiada odcinek poziomy - nieokreślona ilość przecięć z linią skanującą spowoduje błędne działanie algorytmu. Rozwiązanie: Eliminacja odcinków poziomych (ta sama wartość y początku i końca) z listy. -> Efekt uboczny: wypełnienie nie obejmuje krawędzi poziomej

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Przypadki szczególne Natrafienie linii skanującej na końce odcinków Może (ale nie musi) spowodować błędne działanie algorytmu

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Przypadki szczególne Natrafienie linii skanującej na końce odcinków Trzy możliwości: - oba odcinki są powyżej linii skanującej - oba odcinki są poniżej linii skanującej - jeden odcinek jest powyżej linii skanującej a drugi poniżej

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Przypadki szczególne Natrafienie linii skanującej na końce odcinków -jeden odcinek jest powyżej linii skanującej a drugi poniżej Efekt: dodatkowy odcinek lub nieparzysta ilość współrzędnych odcinków

Efekt uboczny 1: optymalizacja algorytmu Efekt uboczny 2: możliwa utrata niektórych pikseli wypełnienia Podstawowe operacje rastrowe Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Przypadki szczególne Natrafienie linii skanującej na końce odcinków -jeden odcinek jest powyżej linii skanującej a drugi poniżej Rozwiązanie: Linie skanujące przemieszczają się w jednym kierunku. Eliminowanie z listy odcinków stykających się z linią, takich które leżą powyżej linii.

Wypełnianie obszarów Metoda wypełniania wielokątów skanowanie liniami poziomymi Obliczanie przecięcia linii z odcinkiem Kolejne wykorzystanie algorytmu przyrostowego: - odcinek ma współrzędne (x1,y1, x2,y2) - współrzędna ys linii skanującej wzrasta o 1 - Jeżeli ys=y1 to współrzędna xp przecięcia = x1 Dla każdej kolejnej wartości ys aż do ys=y2, xp przecięcia można wyliczyć ze wzoru: xp(y+1)=xp(y)+dx gdzie dx=(x2-x1)/(y2-y1)

Obcinanie Obcinanie ma miejsce w sytuacji gdy obraz nie mieści się na ekranie / w oknie wyświetlania. Sensowną i często niezbędną praktyką jest usunięcie elementów obrazu leżących poza obszarem wyświetlania Obcięcie obrazu rastrowego jest sprawą trywialną. Sytuacja komplikuje się gdy obraz zawiera obiekty zdefiniowane wektorowo a algorytm ma wybrać tylko te obiekty i ich części, które znajdują się w oknie wyświetlania

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Jednym z najbardziej rozpowszechnionych algorytmów obcinania odcinków jest algorytm Cohena-Sutherlanda. Bazuje on na podziale obrazu na 9 części i przypisaniu im odpowiednich kodów bitowych 1001 1000 1010 0001 0000 0010 Okno wyświetlania / pole obcinania 0101 0100 0110

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Kody poszczególnych pól dobrane zostały w określony sposób Dwie pierwsze cyfry definiują wiersz (10xx, 00xx, 01xx) dwie kolejne kolumnę pola (xx01, xx00, xx10) Końce odcinków przyjmują kody pól, w których leżą. 1xxx 1001 1000 1010 0001 0000 0010 0101 0100 0110 xxx1

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Odcinki mogą być usytuowane różnie względem pola obcinania A. Odcinek leży po jednej stronie poza obszarem obcinania. B. Odcinek leży ukośnie poza obszarem obcinania C. Odcinek leży jednym końcem w obszarze obcinania D. Odcinek przechodzi przez obszar obcinania E. Odcinek zawiera się w obszarze obcinania 1001 1000 1010 B A E 0001 0000 0010 C D 0101 0100 0110

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Procedura wykonuje dwa przebiegi, w jednym przebiegu: Korzystając z prostych testów można rozpoznać odcinki typu E - Kod obu końców odcinka = 0000 Oraz odcinki typu A - Bitowy iloczyn logiczny kodów obu końców odcinka będzie > 0 A 1001 1010 = 1000 B 0001 1000 = 0000 C 0000 0010 = 0000 itd.. A 1001 1000 1010 B E 0001 0000 0010 C D 0101 0100 0110 Oba rodzaje odcinków można wyeliminować z dalszego sprawdzania

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Pozostałe odcinki musza być poddane procedurze obcinania. 1. Wybierany jest punkt końca o kodzie różnym od 0000 1001 1000 1010 B 0001 0000 0010 C D 0101 0100 0110

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Pozostałe odcinki musza być poddane procedurze obcinania. 1. Wybierany jest punkt końca o kodzie różnym od 0000 2. W zależności od kodu punktu wybierana jest linia obcinania (0010). 1001 1000 1010 B 0001 0000 0010 C D 0101 0100 0110 xk

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Pozostałe odcinki musza być poddane procedurze obcinania. 1. Wybierany jest punkt końca o kodzie różnym od 0000 2. W zależności od kodu punktu wybierana jest linia obcinania (0010) 3. Znajdowany jest punkt przecięcia odcinka z linią y' y 1 y 2 x' x y k 1 x x k 2 x x 1 1 (x2,y2) (x1,y1) xk

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Pozostałe odcinki musza być poddane procedurze obcinania. 1. Wybierany jest punkt końca o kodzie różnym od 0000 2. W zależności od kodu punktu wybierana jest linia obcinania (0010) 3. Znajdowany jest punkt przecięcia odcinka z linią 4. Nowy punkt przyjmowany jest za koniec odcinka, obliczany jest nowy kod tego końca. 1001 1000 1010 B 0001 0000 0010 D C 0101 0100 0110 xk

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Pozostałe odcinki musza być poddane procedurze obcinania. 1. Wybierany jest punkt końca o kodzie różnym od 0000 2. W zależności od kodu punktu wybierana jest linia obcinania (0010) 3. Znajdowany jest punkt przecięcia odcinka z linią 4. Nowy punkt przyjmowany jest za koniec odcinka, obliczany jest nowy kod tego końca. 1001 1000 1010 B 0001 0000 0010 D C 0101 0100 0110 Analogicznie dla wszystkich pozostałych odcinków

Obcinanie Algorytm obcinania odcinków Cohena-Sutherlanda Drugi przebieg eliminuje w początkowej fazie odcinki typu B i C Dla procedury obcinania pozostają odcinki typu D. 1001 1000 1010 0001 0000 0010 D 0101 0100 0110

Obcinanie Algorytm obcinania wieloboków Sutherlanda-Hodgmana W przypadku wieloboków mamy do czynienia z listą odcinków tworzących zamknięty obszar (często wypełniony). Obcięcie wiąże się więc nie tylko z usunięciem bądź skróceniem odpowiednich odcinków ale również z uzupełnieniem krawędzi wieloboku aby nadal tworzył obszar zamknięty. Algorytm Sutherlanda-Hodgmana wykorzystuje zapis wieloboku w postaci listy punktów wierzchołków wieloboku. Przetwarza on zbiór P(p1,p2,,pn) w zbiór Q(q1,q2,,qm) gdzie n nie musi być równe m

Obcinanie Algorytm obcinania wieloboków Sutherlanda-Hodgmana Wielobok może być w jednej z 4 pozycji w stosunku do obszaru obcinania. Pierwsze 3 pozycje nie stanowią problemu.

Obcinanie Algorytm obcinania wieloboków Sutherlanda-Hodgmana Kłopotliwa jest sytuacja 4 gdy wielokąt zawiera się częściowo o obszarze obcinania. Algorytm wykonuje 4 przebiegi po wierzchołkach, zawsze w tą samą stronę. Za każdym przebiegiem brana jest pod uwagę jedna z linii obcinania. w3 w2 w1

Obcinanie Algorytm obcinania wieloboków Sutherlanda-Hodgmana Wierzchołek znajdujący się po wewnętrznej stronie linii obcinania jest przepisywany do nowego zbioru. Wierzchołek znajdujący się po zewnętrznej stronie jest usuwany. Testowane jest również to czy poprzedni wierzchołek znajduje się po tej samej stronie linii. Jeżeli nie, wyliczany jest punkt przecięcia odcinka z linią i dodawany do zbioru w3 w4 Nw1 w2

Obcinanie Algorytm obcinania wieloboków Sutherlanda-Hodgmana Cztery przebiegi algorytmu są wykonywane dla czterech linii obcinania

Obcinanie Algorytm obcinania wieloboków Sutherlanda-Hodgmana Szczególnym przypadkiem obcinania jest sytuacja gdy obcinany obiekt jest wielokątem wklęsłym. W takim przypadku algorytm może wytworzyć zdegenerowany obiekt pochodny, zawierający kilka obszarów połączonych liniami.