rasterung von zweidimensionalen...
TRANSCRIPT
![Page 1: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/1.jpg)
Rasterung von zweidimensionalen Objekten
Andreas Spillner
Computergrafik, WS 2018/2019
![Page 2: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/2.jpg)
Verortung der Rasterung in der Rendering Pipeline
darzustellende Objekte (z.B. aus Datenbank)
Anordnung der Objekte in einer Szene
Bestimmung des sichtbaren Bereichs der Szene
Berechnung des zweidimensionalen Bildes der Szene
![Page 3: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/3.jpg)
Grundproblem
Kontinuierliche geometrische Objekte müssen durch eineendliche Menge von Pixeln dargestellt werden.
Dabei gibt es oft mehr als nur eine geeignete Darstellung.
![Page 4: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/4.jpg)
Fallunterscheidung
(x0, y0)
(x1, y1)
g(x, y) = (y0 − y1)x+ (x1 − x0)y + x0y1 − x1y0 = 0
x0 ≤ x ≤ x1
y0 ≤ y ≤ y1
y
x
![Page 5: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/5.jpg)
Grundidee
(x0, y0) ??
I Man arbeitet die Spalten von links nach rechts ab.I Man muss in jedem Schritt entscheiden, ob das Pixel in der
gleichen Zeile oder eine Zeile höher gesetzt werden soll.
![Page 6: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/6.jpg)
Der Mittelpunkt-Algorithmus
1 2 3 4 5 6 70 8 1 2 3 4 5 6 70 801234
y
x
1 2 3 4 5 6 70 8
g(3, 1.5) < 0 g(4, 2.5) ≥ 0 g(5, 2.5) ≥ 0
Allgemein: HalbebenentestI Letztes Pixel gesetzt bei Koordinaten (x , y).I Nächstes Pixel bei
I (x + 1, y + 1), falls g(x + 1, y + 0.5) < 0 ist.I (x + 1, y), sonst.
![Page 7: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/7.jpg)
Ein bisschen Tuning
I Die meiste Zeit wir zur Berechnung von g(x + 1, y + 0.5)benötigt.
I Das lässt sich vermeiden, indem man ausnutzt:
g(x + 1, y) = g(x , y) + (y0 − y1)
g(x + 1, y + 1) = g(x , y) + (y0 − y1) + (x1 − x0)
![Page 8: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/8.jpg)
Inkrementelle Version des Mittelpunkt-Algorithmus
y := y0d := g(x0 + 1, y0 + 0.5)for x := x0 to x1 do
Setze Pixel bei (x , y)if d < 0 then
y := y + 1d := d + (y0 − y1) + (x1 − x0)
elsed := d + (y0 − y1)
Etwas unschön ist noch, dass diese Version nicht mitganzzahligen Variablen auskommt.
![Page 9: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/9.jpg)
Inkrementelle Version des Mittelpunkt-Algorithmus
Das lässt sich aber leicht beheben: das Vorzeichen von g(x , y)und 2g(x , y) ist ja gleich:
y := y0d := 2(y0 − y1)(x0 + 1) + (x1 − x0)(2y0 + 1) + 2x0y1 − 2x1y0for x := x0 to x1 do
Setze Pixel bei (x , y)if d < 0 then
y := y + 1d := d + 2(y0 − y1) + 2(x1 − x0)
elsed := d + 2(y0 − y1)
![Page 10: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/10.jpg)
Zusammenfassung zum Mittelpunktalgorithmus
I Der Algorithmus wurde von Pitteway 1967 vorgestellt.I Er lässt sich auch auf andere Kurvenarten (zum Beispiel
Ellipsen) anwenden.I Für Strecken werden beim Mittelpunktalgorithmus die
gleichen Pixel gesetzt wie beim Algorithmus, der 1965 vonBresenham vorgestellt wurde (Bresenham-Algorithmus).
I Der Rechenaufwand ist linear in der Anzahl der gesetztenPixel.
![Page 11: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/11.jpg)
Ausnutzung sich wiederholender Muster
DHDHD
![Page 12: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/12.jpg)
Konstruktion einer geeigneten Folge
Beobachtungen:I Insgesamt braucht man ∆(x) := x1 − x0 Schritte.I Davon sind ∆(y) := y1 − y0 Diagonalschritte.I Die restlichen ∆(x)−∆(y) Schritte sind Horizontalschritte.
Natürlich gibt es eine solche Folge:
H(∆(x)−∆(y))D∆(y)
Aber diese liefert in den meisten Fällen keine brauchbareDarstellung der gegebenen Strecke.
![Page 13: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/13.jpg)
Der Algorithmus von Brons
Wir nehmen an: ∆(x) und ∆(y) sind teilerfremd.
∆(x) = 15
∆(y) = 9
Ansonsten zerlegen wir die Strecke in ggt(∆(x),∆(y))Abschnitte.
![Page 14: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/14.jpg)
Beispiel Anwendung des Algorithmus von Brons
Endpunkte: (x0, y0) = (0,0) und (x1, y1) = (82,34)
1. ∆(x) = 82, ∆(y) = 342. ggt(82,34) = 2, also teilen wir H24D17 auf.3. 24 = 1 · 17 + 7, also teilen wir (HD)10(H2D)7 auf.4. 10 = 1 · 7 + 3, also teilen wir (HDH2D)4((HD)2H2D)3 auf.5. 4 = 1 · 3 + 1, also wird
(HDH2D(HD)2H2D)2((HDH2D)2(HD)2H2D)
ausgegeben.
![Page 15: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/15.jpg)
Zusammenfassung Algorithmus von Brons
I Im Wesentlichen handelt es such um den euklidischenAlgorithmus zur Berechnung des größten gemeinsamenTeilers.
I Bei entsprechend kompakter Speicherung der Ausgabeerreicht man somit theoretisch eine Laufzeit dielogarithmisch in der Anzahl der zu setzenden Pixel ist.
I Praktisch ergeben sich dann aber eine Reihe vonSchwierigkeiten: Wie kommt man z.B. schnell von derkompakt gespeicherten Folge zur gerasterten Strecke?
![Page 16: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/16.jpg)
Pixeldichte einer Strecke
99 = 1 9√
85≈ 0.976 9√
29≈ 0.707
Pixeldichte allgemein:
∆(x)√∆(x)2 + ∆(y)2
![Page 17: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/17.jpg)
Problem unterschiedlicher Pixeldichte
I Eine teilweise Lösung des Problems ist die Verwendungvon verschiedenen Intensitäten für verschiedeneSteigungen.
I Das hat aber auch Nachteile. Zum Beispiel wird dadurchdie Gesamtintensität des Bildes gemindert.
![Page 18: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/18.jpg)
Unterschiedliche Linienstile
Eine sehr einfache Möglichkeit zur Beschreibung vonLinienstilen sind Bitmasken:
1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1
Dabei treten aber ähnliche Probleme auf wie bei derPixeldichte.
![Page 19: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/19.jpg)
Aliasing
Durch das Rastern entstehen manchmal Strukturen, die imbesten Falle einfach unschön aussehen, im schlimmsten FallMuster vorgaukeln, die es im ungerasterten Objekt gar nichtgab.
![Page 20: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/20.jpg)
Antialiasing
Auch diesem Effekt kann man durch Verwendung von Pixelnunterschiedlicher Intensität entgegenwirken.
![Page 21: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/21.jpg)
Antialiasing durch unweighted area sampling
R
pQ(p)
Die Intensität ist proportional dem Flächeninhalt desDurchschnitts von:
I Sampling-Quadrat Q(p) undI Rechteck R, welches die gegebene Strecke umschließt
![Page 22: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/22.jpg)
Heuristik zum unweighted area sampling
I Die Berechnung des exakten Flächeninhalts ist in derPraxis oft zu aufwendig.
I Heuristik: Überziehe Q(p) mit einem Punktegitter undzähle Gitterpunkte in R.
RQ(p)
![Page 23: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/23.jpg)
Zeichnen breiter Linien durch Pixelreplikation
Einfachster Ansatz: Man setzt oberhalb und unterhalb jedesgesetzten Pixels weitere k Pixel.
Dabei hat man auch mit den schon besprochenen ProblemenPixeldichte und Aliasing zu kämpfen.
![Page 24: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/24.jpg)
Weitere Ansätze zum Zeichnen breiter LinienI Verwendung eines Zeichenstifts (Verallgemeinerung der
Pixelreplikation).Die Spitze des Zeichenstifts, insbesondere seine Breite,sind beliebig wählbar.Gesetzt werden alle Pixel, die die Spitze erreicht, wennman sie entlang der gegebenen Strecke führt.
Spitze
I Strecken können auch gleich als auszufüllenden Polygonebetrachtet werden.
![Page 25: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/25.jpg)
Rasterung von Polygonen
Welche Pixel sollen gesetzt werden?
?
?ungerade: Pixel setzen
gerade: Pixel nicht setzen
Verwendung der Odd-Parity-Regel.
![Page 26: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/26.jpg)
Scan-line Algorithmus
I Für jedes Pixel extra festzustellen, ob es gesetzt werdensoll oder nicht, ist zu aufwendig.
I Man arbeitet zeilenweise von links nach rechts und merktsich den gegenwärtigen Zustand (gerade oder ungerade)
![Page 27: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/27.jpg)
Technische Details
I Korrekte Bestimmung und Behandlung der Schnittpunktezwischen scan-line und gegebenem Polygon.
I Aliasing
![Page 28: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/28.jpg)
Spezialfall Dreiecke
Für Dreiecke bietet es sich manchmal an, sogenanntebaryzentrische Koordinaten zu verwenden.
a
b
cp
I Für jeden Punkt p in der Ebene gibt es eindeutigbestimmte α, β, γ ∈ R mit α + β + γ = 1 undp = αa + βb + γc (affine Kombination).
I p liegt liegt im Dreieck mit Ecken a,b, c genau dann, wennα, β, γ alle nicht negativ sind (konvexe Kombination).
![Page 29: Rasterung von zweidimensionalen Objektenweb.hs-merseburg.de/~spillner/lehre/ws2018/computergrafik/foliensatz01.pdf · Aliasing Durch das Rastern entstehen manchmal Strukturen, die](https://reader036.vdocuments.net/reader036/viewer/2022062912/5d547fa588c99375068bdd04/html5/thumbnails/29.jpg)
Einfache Anwendung: Interpolation der Pixelintensität
Jede der Ecken a,b, c hat eine Intensität Ia, Ib, Ic .
for all x dofor all y do
Berechne Koordinaten (α, β, γ) für den Punkt p = (x , y)if (α ≥ 0 and β ≥ 0 and γ ≥ 0) then
Ip := αIa + βIb + γIcSetze das Pixel am Punkt p mit Intensität Ip.
Effizienter: Schleifen nur über (x , y) im kleinstenumschließenden Rechteck (bounding box):