www.wikidata.de-de.nina.az
Die Rasterung von Linien ist eine elementare Aufgabe der Computergrafik bei der eine Linie auf das Punktraster einer Rastergrafik oder eines Raster Grafikgerats gezeichnet gerastert wird Dazu werden diejenigen Punkte oder Pixel eingefarbt die die ideale Strecke moglichst gut annahern Grundlegende Algorithmen rastern Linien nur einfarbig Eine bessere Darstellung mit mehreren Farbabstufungen ergibt sich bei fortgeschrittenen Verfahren die Antialiasing Kantenglattung unterstutzen Da in der Computergrafik auch komplexere geometrische Figuren wie Polygone und beliebige Kurven haufig aus Liniensegmenten zusammengesetzt werden bildet das Rastern von Linien gleichzeitig die Ausgangsbasis fur deren Rasterung Eine weitere Anwendung bei der oft besonders viele Linien gezeichnet werden mussen ist die Darstellung von Drahtgittermodellen Zwei gerasterte Linien Die eingefarbten Pixel sind als Kreise dargestellt Oben einfarbige Rasterung unten Gupta Sproull Antialiasing die ideale Linie wird hier als Flache betrachtet Inhaltsverzeichnis 1 Einfarbige Rasterung 1 1 Einfache Methoden 1 2 Verallgemeinerung auf beliebige Richtungen 1 3 Bresenham Algorithmus 1 4 Pixelreihen 1 5 N Schritt Verfahren 1 6 Bidirektionale Rasterung 1 7 Sonstige Techniken 1 8 Eigenschaften und Vergleich 1 9 Probleme 2 Antialiasing 2 1 Methode von Gupta und Sproull 2 2 Methode von Wu 2 3 Sonstige Techniken 3 Besondere Optimierungen 3 1 Naherungsverfahren 3 2 Parallelisierung 4 Verwandte Probleme 5 Siehe auch 6 Literatur 7 Weblinks 8 EinzelnachweiseEinfarbige Rasterung BearbeitenBei der einfarbigen Rasterung werden Linien mit einer einzigen Vordergrundfarbe auf einen Hintergrund gezeichnet Sie eignet sich fur Gerate mit monochromer Darstellung zum Beispiel Laserdrucker Die Anfangs und Endpunkte der zu rasternden Linie werden ublicherweise in ganzzahligen Koordinaten angegeben das heisst sie liegen direkt auf den Punkten des Rasters Deshalb werden die meisten Methoden nur fur derartige Anfangs und Endpunkte formuliert Zur Rasterung dicker Linien gibt es mehrere Moglichkeiten die auch fur andere Kurven geeignet sind siehe dazu den Artikel Rasterung Einfache Methoden Bearbeiten nbsp Naive Methode der Rasterung mittels RundungDie einfachste Moglichkeit der Rasterung ist die direkte Umsetzung der Gleichung die die Linie definiert Wenn xa ya der Anfangs und xe ye der Endpunkt der Linie ist so erfullen die Punkte auf der Linie die Geradengleichung y m x x a y a displaystyle y m x x a y a nbsp wobei m D y D x y e y a x e x a displaystyle textstyle m frac Delta y Delta x frac y e y a x e x a nbsp die Steigung ist Die Linie wird gezeichnet indem in einer Schleife fur jedes x displaystyle x nbsp von x a displaystyle x a nbsp bis x e displaystyle x e nbsp der entsprechende y displaystyle y nbsp Wert gemass dieser Formel berechnet und auf die nachstliegende Ganzzahl gerundet wird Das Pixel x y wird dann eingefarbt Dieses Verfahren ist unnotig langsam da innerhalb der Schleife eine Multiplikation ausgefuhrt wird die auf den meisten Computern wesentlich mehr Rechenzeit als eine Addition oder Subtraktion erfordert Eine schnellere Methode ergibt sich durch die Betrachtung der Differenz zwischen zwei aufeinanderfolgenden Schritten y i 1 y i displaystyle y i 1 y i nbsp m x i 1 x a y a m x i x a y a displaystyle m x i 1 x a y a m x i x a y a nbsp m x i 1 x i displaystyle m x i 1 x i nbsp m displaystyle m nbsp Demnach genugt es mit xa ya zu starten und bei jedem Schleifendurchlauf y displaystyle y nbsp um m displaystyle m nbsp zu erhohen Dieses Verfahren wird auch als Digital Differential Analyzer DDA bezeichnet Da die Rundung von y displaystyle y nbsp zur nachsten Ganzzahl dem Abrunden von y 0 5 displaystyle y 0 5 nbsp entspricht lasst sich auch eine zusatzliche Kontrollvariable verwenden die mit 0 5 initialisiert wird und zu der bei jedem Schleifendurchlauf m displaystyle m nbsp addiert wird Jedes Mal wenn die Kontrollvariable den Wert 1 0 erreicht oder ubersteigt wird y displaystyle y nbsp um 1 erhoht und von der Kontrollvariable 1 0 abgezogen Dadurch ist keine Rundung mehr notig Diese Methode kann so umformuliert werden dass sie nur schnellere Ganzzahl Operationen verwendet und sich elegant in Assemblersprache implementieren lasst 1 Dennoch ist weiterhin eine langsame Division D y D x displaystyle Delta y Delta x nbsp zu Beginn notig die bei kurzen Linien nicht durch die schnelle Schleife aufgewogen werden kann Verallgemeinerung auf beliebige Richtungen Bearbeiten nbsp Rasterung beliebiger Linien durch Nutzung von Symmetrieeigenschaften Der zulassige Bereich des Originalverfahrens ist farbig dargestellt durch die drei Anderungen am Algorithmus werden auch die anderen Bereiche erschlossen Die soeben beschriebenen Verfahren funktionieren nur bei Liniensteigungen zwischen 0 und 1 was einem Winkel von 0 bis 45 zur Horizontalen entspricht Bei anderen Steigungen wird die Linie nicht oder falsch gezeichnet Es genugt jedoch einen Algorithmus nur fur Steigungen zwischen 0 und 1 zu beschreiben da andere Linien durch die Nutzung von Symmetrien korrekt dargestellt werden konnen Dies geschieht durch folgende drei Veranderungen Es wird zwischen zwei Fallen unterschieden je nachdem ob D x gt D y displaystyle Delta x gt Delta y nbsp betragsmassig oder umgekehrt Im ersten Fall wird die Schleife wie bisher uber x displaystyle x nbsp durchlaufen und im Schleifenrumpf y displaystyle y nbsp berechnet ansonsten wird sie uber y displaystyle y nbsp durchlaufen und x displaystyle x nbsp berechnet Innerhalb des Schleifenrumpfs wird y displaystyle y nbsp bzw x displaystyle x nbsp nicht um 1 erhoht sondern es wird abhangig vom Vorzeichen von D y displaystyle Delta y nbsp bzw D x displaystyle Delta x nbsp der Wert 1 oder 1 addiert Falls D x lt 0 displaystyle Delta x lt 0 nbsp bzw D y lt 0 displaystyle Delta y lt 0 nbsp so muss die Schleife ruckwarts durchlaufen werden Fur m wird der Betrag der Steigung verwendet m D y D x displaystyle m left frac Delta y Delta x right nbsp Durch die Anwendung dieser Verallgemeinerungen kann zur besseren Ubersicht die folgende Tabelle erstellt werden Quadrant m lt 1 sonst m gt 1 Richtung1 x y y1 m i x x1 i my von links unten nach rechts oben2 x y y1 m i x x1 i my von rechts unten nach links oben3 x y y1 m i x x1 i my von rechts oben nach links unten4 x y y1 m i x x1 i my von links oben nach rechts untenWobei i fur m lt 1 Werte zwischen 0 und D x displaystyle Delta x nbsp und fur m gt 1 Werte zwischen 0 und D y displaystyle Delta y nbsp annimmt Linien die parallel zur X oder Y Achse sind werden von dieser Tabelle ebenfalls abgedeckt und mussen nicht gesondert betrachtet werden Die angegebene Richtung bezieht sich auf die nebenstehende Grafik unter der Annahme dass x nach rechts grosser wird und y nach oben wachst x1 und y1 sind dabei die Koordinaten des Startpunktes einer Linie und x2 und y2 die Koordinaten des Endpunktes Ferner kann nur durch die Veranderung des Vorzeichens folgender Pseudocode erstellt werden der alle acht beschriebenen Falle abdeckt signX 1 signY 1 if x1 gt x2 signX 1 if y1 gt y2 signY 1 if m lt 1 for i 0 i lt deltaX i drawPixel ceil x1 i signX ceil y1 i m signY else for i 0 i lt deltaY i drawPixel ceil x1 i m signX ceil y1 i signY Wobei ceil eine Funktion zum Aufrunden ist und drawPixel eine beliebige Funktion zum Setzen eines Pixels sein kann Bresenham Algorithmus Bearbeiten Die altesten veroffentlichten Algorithmen zum Rastern von Linien stammen aus den fruhen 1960er Jahren Sie dienten der Steuerung von Digitalplottern bei denen sich der Stift nur in festen Abstanden horizontal vertikal oder diagonal auf einem Raster bewegen konnte Dazu gehorte auch der 1963 von Jack Bresenham prasentierte Bresenham Algorithmus der nur Ganzzahl Berechnungen verwendet 2 Pitteway gab eine aquivalente Herleitung dieses Algorithmus an die gegenuber Bresenhams eher geometrischen Formulierung den Vorteil hat dass sie auch auf andere Kurven als Linien angewendet werden kann 3 Der resultierende Algorithmus manchmal Midpoint Algorithmus genannt ist genau der gleiche wie in Bresenhams Veroffentlichung nbsp Wahl des nachsten Pixels beim Bresenham AlgorithmusDie Idee des Bresenham Algorithmus besteht darin bei jedem Schritt zwischen den beiden Pixeln zu wahlen die rechts ostlich und rechts oben nordostlich vom zuletzt gezeichneten Pixel liegen Es wird dasjenige Pixel gewahlt das naher an der idealen Linie liegt Dazu betrachtet man in der Midpoint Formulierung den Mittelpunkt M displaystyle M nbsp zwischen den Pixeln O displaystyle O nbsp und N O displaystyle NO nbsp befindet sich M displaystyle M nbsp uber der idealen Linie so liegt O displaystyle O nbsp naher ansonsten N O displaystyle NO nbsp Um die Position von M displaystyle M nbsp gegenuber der Linie zu bestimmen wird eine andere Form der Geradengleichung verwendet F x y a x b y c D y x D x y c 0 displaystyle F x y ax by c Delta y cdot x Delta x cdot y c 0 nbsp F x y ist 0 fur Punkte auf der Linie positiv fur Punkte unterhalb und negativ fur Punkte oberhalb der Linie Wenn in diese Gleichung die Koordinaten von M displaystyle M nbsp eingesetzt werden so erhalt man den Wert d i F x i 1 y i 1 2 D y x i 1 D x y i 1 2 c displaystyle textstyle d i F x i 1 y i frac 1 2 Delta y x i 1 Delta x y i frac 1 2 c nbsp Je nach Vorzeichen dieser Kontrollvariable d i displaystyle d i nbsp wird das Pixel O displaystyle O nbsp oder N O displaystyle NO nbsp gewahlt Um einen effizienten Algorithmus zu erhalten wird die Kontrollvariable inkrementell berechnet also schrittweise erhoht Ihre Anderung zwischen zwei aufeinanderfolgenden Schritten hangt davon ab ob Pixel O displaystyle O nbsp oder N O displaystyle NO nbsp gewahlt wurde Fur jeden dieser Falle betrachtet man die Differenz zwischen dem Wert der Kontrollvariable beim ubernachsten und beim nachsten Pixel D O d i 1 d i F x i 2 y i 1 2 d i D y D N O d i 1 d i F x i 2 y i 3 2 d i D y D x displaystyle begin aligned textstyle Delta O amp textstyle d i 1 d i F x i 2 y i frac 1 2 d i Delta y textstyle Delta NO amp textstyle d i 1 d i F x i 2 y i frac 3 2 d i Delta y Delta x end aligned nbsp Bei jedem Schritt wird die Kontrollvariable je nach gewahltem Pixel um D O displaystyle Delta O nbsp oder D N O displaystyle Delta NO nbsp erhoht Ist d i 0 displaystyle d i leq 0 nbsp so liegt M displaystyle M nbsp oberhalb der Geraden weshalb O displaystyle O nbsp gewahlt wird ansonsten N O displaystyle NO nbsp Der Anfangswert der Kontrollvariable d displaystyle d nbsp lasst sich ebenfalls effizient berechnen wenn F x a y a 0 displaystyle F x a y a 0 nbsp der Startpunkt der Linie also genau auf einem Pixel liegt d 0 F x a 1 y a 1 2 D y x a D x y a c F x a y a 0 D y D x 2 D y D x 2 displaystyle textstyle d 0 F left x a 1 y a frac 1 2 right underbrace Delta y cdot x a Delta x cdot y a c F x a y a 0 Delta y frac Delta x 2 Delta y frac Delta x 2 nbsp Um die Division durch 2 zu beseitigen werden alle Werte der Kontrollvariable verdoppelt das entscheidende Vorzeichen bleibt dabei erhalten Damit lasst sich der Bresenham Algorithmus fur Linien mit einer Steigung zwischen 0 und 1 in nachfolgendem Pseudocode ausdrucken Der Algorithmus benotigt nur Additionen innerhalb der Schleife die einfachen Multiplikationen ausserhalb der Schleife lassen sich ebenfalls durch eine Addition realisieren nbsp Veranderung der Kontrollvariable beim Bresenham Algorithmusd 2 Dy Dx DO 2 Dy DNO 2 Dy Dx y ya Pixel xa ya einfarben Fur jedes x von xa 1 bis xe Wenn d 0 d d DO ansonsten d d DNO y y 1 Pixel x y einfarbenEine andere Interpretation des Algorithmus geht von der Feststellung aus dass die gerasterte Linie m D x D y displaystyle m Delta x Delta y nbsp Horizontal und n D y displaystyle n Delta y nbsp Diagonalschritte enthalt Um diese beiden Schritttypen zu mischen wird bei jedem Schritt entweder m displaystyle m nbsp von der Kontrollvariable abgezogen oder n displaystyle n nbsp addiert Es wird der entsprechende Schritttyp ausgefuhrt bei dem der resultierende Betrag der Kontrollvariable geringer ist Dies wird auch aus obiger Grafik deutlich bei der die Kontrollvariable stets so nahe wie moglich an der Nullachse liegt Thompson beschrieb einen Algorithmus nach dieser Formulierung 1964 auf die Wahl des korrekten Anfangswerts der Kontrollvariable ging er allerdings nicht ein 4 Noch vor Bresenham hatte Fred Stockton 1963 einen Algorithmus zur Rasterung von Linien veroffentlicht der ebenfalls nur Ganzzahl Berechnungen verwendet aber unnotig kompliziert ist 5 Linien deren Endpunkte mit nicht ganzzahligen Koordinaten angegeben werden lassen sich ebenfalls mit dem Bresenham Algorithmus rastern Hierzu muss der Anfangswert der Kontrollvariable gemass ihrer ursprunglichen Definition berechnet werden pauschale Vereinfachungen sind nicht moglich Der restliche Algorithmus bleibt gultig Pixelreihen Bearbeiten Obwohl der Bresenham Algorithmus recht effizient ist zeichnet er nur ein Pixel pro Schleifendurchlauf und benotigt dazu eine Addition Eine Methode die alle Pixel einer Reihe das heisst Pixel mit gleicher y Koordinate auf einmal zeichnet wurde zum ersten Mal von Reggiori entwickelt 6 Reihen mit nur einem Pixel wurden dabei gesondert behandelt Spater stellte Bresenham einen allgemeineren Algorithmus vor der ohne Tests fur diesen Spezialfall auskam 7 Bei Bresenhams Pixelreihen Algorithmus wird nicht x displaystyle x nbsp schrittweise erhoht sondern y displaystyle y nbsp Fur jedes y displaystyle y nbsp wird das Ende der aktuellen Reihe berechnet Das geschieht durch Betrachtung der Punkte in denen die ideale Linie eine durch den Mittelpunkt zwischen zwei vertikal benachbarten Pixeln verlaufende Horizontale schneidet Das Ende der Pixelreihe ist der abgerundete Wert der x Koordinate dieses Schnittpunkts nbsp Die Endpunkt Koordinaten der Pixelreihen lassen sich auch inkrementell berechnen Da hier bei bestimmten Steigungen einige Punkte falsch berechnet werden konnen nutzt der Algorithmus eine Symmetrie zur Geraden der Steigung aus In der innersten Schleife von Bresenhams neuem Algorithmus sind keine Additionen erforderlich denn alle Pixel einer Reihe werden auf einmal eingefarbt Allerdings ist eine Division zur Initialisierung erforderlich Fung ersetzte sie durch ein Suchverfahren und nahm einige weitere Optimierungen vor 8 N Schritt Verfahren Bearbeiten nbsp Die vier moglichen Pixelmuster beim DoppelschrittverfahrenEine andere erstmals von Wu und Rokne vorgestellte Moglichkeit der Rasterung besteht darin Schritte von mehreren Pixeln entlang der x Achse zu machen und alle dazwischen liegenden Pixel der Linie auf einmal einzufarben 9 Dazu wird zwischen den verschiedenen moglichen Pixelmustern ausgewahlt Bresenhams Algorithmus kann als Spezialfall dieser Methode angesehen werden bei dem nur Schritte von je einem Pixel gemacht werden und bei dem nur zwischen zwei Mustern Pixel rechts oder rechts oben gewahlt wird Um zwischen den beim Doppelschrittverfahren vier moglichen Mustern unterscheiden zu konnen wird zunachst die letzte Pixelspalte des Musters betrachtet Befindet sich das zu rasternde Pixel unten oder oben lasst sich trivial auf das Muster 1 beziehungsweise 4 schliessen Befindet sich das Pixel hingegen in der Mitte so ist ein zusatzlicher Test der mittleren Spalte notig um zwischen den Mustern 2 und 3 wahlen zu konnen Diese Tests werden dadurch vereinfacht dass bei einer Steigung m Muster 4 und bei m Muster 1 nicht auftreten kann Ahnlich wie beim Bresenham Algorithmus lasst sich auch beim Doppelschrittverfahren die Kontrollvariable fur die Tests inkrementell berechnen Im Endeffekt kommt der Algorithmus nur mit Additionen und einer einfachen Multiplikation die sich mit einer schnellen Bitverschiebung realisieren lasst aus Es wurden auch Algorithmen fur Dreifach und Vierfachschritte entwickelt die nach dem gleichen Prinzip arbeiten aber erheblich komplizierter und langer sind 10 11 Ein anderer Vierfachschritt Algorithmus verwendet eine etwas abweichende Formulierung die systematisch die Bedingungen untersucht unter denen ein bestimmtes Muster auftritt und die sich auf beliebig viele Schritte verallgemeinern lasst 12 Bidirektionale Rasterung Bearbeiten nbsp Oben Eine mit dem Bresenham Algorithmus von links nach rechts gerasterte Linie unten bidirektionale Rasterung Die hohlen Kreise geben die Pixel an die eingefarbt werden wenn bei d 0 das andere Pixel gewahlt wird Um die Geschwindigkeit der Rasterung weiter zu erhohen liegt es nahe die Linie bidirektional also gleichzeitig vom Anfangs und vom Endpunkt aus bis zum Mittelpunkt zu zeichnen Hierbei lauft die Schleife nur uber eine Halfte der Linie bei jedem Schritt werden die beiden beteiligten Pixel auf jeder Seite der Linie eingefarbt Sowohl der Bresenham Algorithmus als auch andere Verfahren lassen sich so umandern 13 Dabei muss aber beachtet werden dass die mit den normalen Methoden gerasterte Linie nicht unbedingt in sich punktsymmetrisch ist Das liegt daran dass es bei der Rasterung uneindeutige Situationen gibt in denen die ideale Linie genau durch den Mittelpunkt zweier vertikal benachbarter Pixel verlauft zwischen denen beliebig gewahlt werden kann Der oben aufgefuhrte Bresenham Algorithmus zum Beispiel wahlt in solchen Fallen d 0 displaystyle d 0 nbsp immer das Pixel mit kleinerer y Koordinate aus Beim Zeichnen von rechts nach links hingegen wird bedingt durch die Nutzung der Symmetrie das Pixel mit grosserer y Koordinate ausgewahlt Wenn die Linie bidirektional oder von rechts nach links gezeichnet wird kann sich daher das Erscheinungsbild gegenuber dem normalen Algorithmus andern sofern nicht separat auf die uneindeutigen Falle getestet wird Sonstige Techniken Bearbeiten PeriodizitatEs lasst sich beweisen dass sich die Werte der Kontrollvariable beim Bresenham Algorithmus a mal wiederholen wobei a der grosste gemeinsame Teiler von D x displaystyle Delta x nbsp und D y displaystyle Delta y nbsp ist 13 Das bedeutet dass die Werte der Kontrollvariable nur fur einen Teil der Linie berechnet werden mussen und dann auf die anderen Teile angewandt werden konnen Hierzu muss allerdings der ggT berechnet werden Diese Methode lasst sich auch mit der bidirektionalen Rasterung kombinieren nbsp Pixelreihen erster zweiter und dritter OrdnungHierarchische PixelreihenDie Lange der Pixelreihen in einer gerasterten Linie folgt einem bestimmten Muster Rosenfeld bewies dass die Lange aller Pixelreihen ausser moglicherweise der ersten und der letzten hochstens um ein Pixel abweicht 14 Er stellte ausserdem fest dass die Folge der Pixelreihen selbst diese Struktur aufweist ebenso wie die Folge dieser Folgen und so weiter Gerasterte Linien sind also hierarchisch aus Reihen n ter Ordnung aufgebaut die jeweils nur bestimmte Langen annehmen konnen Stephenson beschrieb praktikable Algorithmen die eine Linie ausgehend von Reihen beliebig hoher Ordnung zeichnen konnen sowie einen rekursiven Algorithmus der von der Reihe hochstmoglicher Ordnung ausgeht 15 Dadurch wird sowohl der Bresenham Algorithmus als auch der Pixelreihen Algorithmus verallgemeinert Der Algorithmus fur Reihen nullter Ordnung bei dem die Pixelreihen ignoriert werden entspricht dem gewohnlichen Bresenham Algorithmus Strukturelle AlgorithmenEs wurden noch weitere Algorithmen zur Rasterung vorgeschlagen die aber nicht inkrementell arbeiten sondern sich die strukturellen Eigenschaften der gerasterten Linien direkt zunutze machen Sie basieren auf Uberlegungen aus der Bildverarbeitung oder digitalen Geometrie und erreichen in der Praxis nicht die Geschwindigkeit der herkommlichen Methoden da sie Zeichenketten manipulieren oder andere langsame Operationen erfordern Brons Algorithmus etwa reprasentiert die gerasterte Linie durch eine Zeichenkette aus Nullen und Einsen wobei 0 fur einen Horizontal und 1 fur einen Diagonalschritt steht 16 Der Algorithmus geht von einer Zeichenkette aus die eine erste Annaherung an die Linie darstellt fasst Folgen von Nullen und Einsen zusammen und verteilt sie gleichmassig Der gleiche Prozess wird auf die resultierende Folge angewandt Das wiederholt sich so lange bis keine Verbesserung mehr erzielt werden kann Die so gerasterte Linie ist allerdings nicht optimal um die gleiche Linie wie beim Bresenham Algorithmus zu erhalten sind zusatzliche Anpassungen notig Eigenschaften und Vergleich Bearbeiten Obwohl zahlreiche Algorithmen entdeckt wurden die weniger komplex als der Bresenham Algorithmus sind ist deren praktischer Geschwindigkeitsvorteil gering Das liegt daran dass die Befehle zum Einfarben von Pixeln auf heutiger Hardware verglichen mit der Ausfuhrung des Rasteralgorithmus selbst sehr langsam sind Einige Grafikkarten stellen jedoch etwas schnellere Funktionen zum Einfarben mehrerer Pixel auf einmal bereit etwa die rectwrite Funktion auf SGI Systemen Dies ist von Vorteil fur Pixelreihen Algorithmen die so eine Reihe schnell auf einmal zeichnen konnen Die Ausfuhrungsgeschwindigkeit der verschiedenen Algorithmen hangt von der Lange der zu rasternden Linie ab Algorithmen deren innere Schleife schnell ist die aber viel Zeit zur Initialisierung benotigen konnen nur bei langen Linien einen Geschwindigkeitsvorteil verbuchen Es wurde daher vorgeschlagen in Abhangigkeit von der Lange der Linie den jeweils effizientesten Algorithmus zu wahlen 8 Eine statistische Analyse der Linienlangen in verschiedenen Anwendungen wie der Darstellung von Drahtgittermodellen Kurvensegmenten und Schriftzeichen kam zu dem Ergebnis dass knapp drei Viertel aller gerasterten Linien weniger als zehn Pixel lang waren 17 Demnach lohnt es sich fur den Spezialfall der kurzen Linien zu optimieren Algorithmen die eher bei der Rasterung langer Linien vorteilhaft sind eignen sich besser fur Ausgabegerate mit hoherer Auflosung als Bildschirme und damit im Durchschnitt langeren Linien etwa Laserdrucker Bei manchen Algorithmen hangt die Geschwindigkeit ausserdem von der Steigung der Linie ab Pixelreihen Algorithmen zum Beispiel sind weniger effizient bei diagonalen Linien da hier nur ein Pixel pro Reihe gezeichnet werden kann Ein anderer Faktor bei der Wahl eines Algorithmus ist die Programmlange Hersteller von Grafikprozessoren die die Rasterung direkt auf Hardwareniveau implementieren und daher Platz sparen mussen bevorzugen kurze Algorithmen wie den Bresenham Algorithmus Bei Softwareimplementierungen ist dieser Faktor weniger kritisch Probleme Bearbeiten nbsp Unterschiedliche Helligkeiten je nach SteigungAlle Algorithmen zur einfarbigen Rasterung konnen in bestimmten Situationen Probleme verursachen Unterschiedliche HelligkeitBeim Rastern von Linien gleicher Lange aber unterschiedlicher Steigung wird nicht unbedingt die gleiche Anzahl von Pixeln eingefarbt Im nebenstehenden Beispiel ist die diagonale Linie langer als die waagrechte dennoch werden in beiden Fallen die gleiche Anzahl von Pixeln eingefarbt Dies fuhrt dazu dass beide Linien auf dem Ausgabegerat unterschiedlich hell erscheinen Bei monochromen Geraten kann dieses Problem nicht umgangen werden LinienstileDie Nutzung der Symmetrie zum Rastern von Linien mit beliebigem Anfangs und Endpunkt kann unerwunschte Effekte verursachen falls bestimmte Linienstile verwendet werden Wenn gestrichelte oder gepunktete Linien gezeichnet werden sollen so fangt das jeweilige Muster beim Anfangspunkt der Linie an Solche Linien werden anders gezeichnet wenn Anfangs und Endpunkt vertauscht werden Sofern die Striche eines Linienstils durch eine bestimmte Anzahl einzufarbender Pixel definiert sind variiert ausserdem die tatsachliche Strichlange je nach Steigung ClippingDas Clipping ist eine Operation die die Rasterung auf einen bestimmten meist rechteckigen Bereich einschrankt Dies geschieht indem vor der Rasterung die Anfangs und Endpunkte der zu rasternden Linie zu den Kanten des rechteckigen Bereichs hin verschoben werden sofern sie herausragen Im Allgemeinen fuhrt das dazu dass die Koordinaten dieser Punkte nicht mehr ganzzahlig sind Wenn diese Koordinaten dennoch gerundet werden ergibt sich eine Linie mit anderer Steigung und damit moglicherweise auch anderem Erscheinungsbild Um dies zu vermeiden sind zusatzliche Tests nach dem Clipping notig Der Bresenham Algorithmus kann auch mit einem Clipping Algorithmus kombiniert werden 18 Antialiasing BearbeitenDas grosste Problem bei einfarbig gerasterten Linien ist ihr im Allgemeinen treppenartiges Aussehen auch Treppeneffekt genannt Auf Grafikgeraten die zur Darstellung mehrerer Helligkeitsstufen fahig sind kann diesem Effekt durch Antialiasing entgegengewirkt werden Hierbei wird die zu rasternde Linie ublicherweise nicht mehr als eindimensionale Strecke sondern als zweidimensionale Form im einfachsten Fall als Rechteck mit gewunschter Dicke betrachtet Fur die Rasterung mussen die Farbwerte der Pixel die in der Nahe des Rechtecks liegen ermittelt werden Methode von Gupta und Sproull Bearbeiten nbsp Illustration des kegelformigen Glattungskerns Die Intensitat des Pixels ist proportional zum Volumen V Beim Antialiasing lasst sich der Farbwert eines Pixels ermitteln indem ein so genannter Glattungskern oder Rekonstruktionsfilter uber das Pixel gelegt wird Gupta und Sproull schlugen als Glattungskern einen Kegel mit einem Radius von einem Pixel vor 19 Der Farbwert des Pixels ist proportional zum Volumen des Kegelteils der die zu rasternde Linie hier also das zu rasternde Rechteck uberlappt Dieses Volumen wiederum hangt von der Distanz D displaystyle D nbsp zwischen der Mittellinie des Rechtecks und dem Pixel ab nbsp Die drei moglichen Pixel die bei einer Liniendicke von einem Pixel eingefarbt werdenDer Gupta Sproull Algorithmus basiert auf dem Bresenham Algorithmus berechnet aber zusatzlich D displaystyle D nbsp fur jedes der Pixel deren Glattungskern die Linie uberlappt Bei einer Linienstarke von einem Pixel sind dies maximal drei Pixel pro Spalte Aus Effizienzgrunden werden die Distanzen nicht exakt berechnet sondern nur 24 mogliche Distanzen betrachtet Die Intensitatswerte die diesen Distanzen entsprechen wurden im Voraus berechnet und in einer Tabelle Lookup Tabelle gespeichert sodass sie schnell abgerufen werden konnen Die Linienenden mussen gesondert behandelt werden da hier mehr als drei Pixel insgesamt bis zu sechs beteiligt sind Die Intensitaten dieser Pixel hangen von der Steigung der Linie ab Sie werden fur einige Steigungen im Voraus berechnet und auch hier wieder in einer Tabelle gespeichert Es sind auch andere Formen fur die Linienenden denkbar zum Beispiel abgerundete Endpunkte die Intensitaten der beteiligten Pixel andern sich dementsprechend Der Gupta Sproull Algorithmus eignet sich fur Linien mit beliebiger Linienstarke wobei sich allerdings auch die Lookup Tabelle andert Bei einer Linienstarke grosser als einem Pixel muss beachtet werden dass moglicherweise die Glattungskerne von mehr als drei Pixeln die Linie uberlappen Ein Problem des Gupta Sproull Algorithmus ist dass gerasterte Linien oftmals an verschiedenen Stellen unterschiedlich hell zu sein scheinen Dieses seilartige Aussehen ist vor allem auf die Unzulanglichkeit des Kegels als Glattungskern zuruckzufuhren 20 Eine optimierte Variante des Gupta Sproull Algorithmus kann wie folgt in Pseudocode notiert werden DrawLineChen x1 y1 x2 y2 x x1 y y1 dx x2 x1 dy y2 y1 d 2 dy dx discriminator D 0 Euklidischer Abstand des Punkts x y von der Linie mit Vorzeichen length sqrt dx dx dy dy Euklidischer Abstand zwischen den Punkten x1 y1 und x2 y2 sin dx length cos dy length while x lt x2 IntensifyPixel x y 1 D cos IntensifyPixel x y D IntensifyPixel x y 1 D cos x x 1 if d lt 0 D D sin d d 2 dy else D D sin cos d d 2 dy dx y y 1 Die Funktion IntensifyPixel x y r verwendet eine radiale Linientransformation und setzt die Intensitat des Pixel x y mit dem Wert eines kubischen Polynoms das vom Abstand r des Pixels von der Linie abhangt 21 Methode von Wu Bearbeiten nbsp Berechnung der Intensitaten beim Wu AntialiasingWu wahlte einen anderen Ansatz fur das Antialiasing der nicht auf der Nutzung eines bestimmten Glattungskerns sondern auf einem Fehlermass basiert 22 Die Methode ist in der Grundform nur auf ideale unendlich dunne Linien anwendbar Beim Bresenham Algorithmus wird versucht eine Annaherung an die ideale Linie zu erreichen indem der Fehler also der Abstand zwischen der idealen Linie und zwei moglichen Pixeln minimiert wird Wu schlug ein anderes Fehlermass vor das auf beliebige Kurven anwendbar ist Der Fehler im Sinne dieses Fehlermasses lasst sich vollstandig beseitigen sofern beliebige Farbwerte zugelassen werden Dazu mussen die beiden Pixel die direkt uber und unter der idealen Linie liegen Farbwerte proportional zur vertikalen Distanz zur idealen Linie annehmen Fur Linien gab Wu einen besonders schnellen Algorithmus an Dank trickreicher Ganzzahl Operationen benotigt er nur eine Kontrollvariable die schrittweise verandert wird und sowohl die Position der zwei beteiligten Spaltenpixel als auch deren Intensitat bestimmt Sonstige Techniken Bearbeiten nbsp Verschiedene Antialiasing Methoden am Beispiel eines CAD Drahtgittermodells Von links nach rechts Kein Antialiasing Bresenham Gupta Sproull ungewichtete Flachenabtastung und Wu Eine andere Moglichkeit des Antialiasing ist die ungewichtete Flachenabtastung unweighted area sampling Hierbei entspricht der Farbwert eines Pixels dem Flachenanteil der Linie innerhalb eines Quadrats von einem Pixel Kantenlange um das betreffende Pixel der Glattungskern ist in diesem Fall also ein Wurfel Fur diese Methode sind schnelle Algorithmen entwickelt worden 23 Nachteilig an der ungewichteten Flachenabtastung ist das verschwommene Erscheinungsbild der Linien Wie auch bei der einfarbigen Rasterung kann die Struktur der Pixelreihen dazu genutzt werden die Geschwindigkeit der Rasterung zu erhohen 24 Neben den speziell fur Linien optimierten Antialiasing Verfahren konnen auch allgemeine Verfahren genutzt werden etwa Whitteds Methode bei der eine hochaufgeloste Rastergrafik als Pinsel entlang der Linie bewegt wird 25 Besondere Optimierungen BearbeitenDie Rasterung von Linien lasst sich durch Naherungsverfahren Nutzung von oder direkte Implementierung in Hardware sowie Parallelisierung noch effizienter gestalten Dies ist erforderlich wenn eine sehr grosse Zahl von Linien in Echtzeit gerastert werden muss Naherungsverfahren Bearbeiten Boyer und Bourdin stellten ein Naherungsverfahren vor das immer die direkt unter der idealen Linie liegenden Pixel einfarbt 26 Eine derartig gerasterte Line verfugt uber einige besondere Eigenschaften die ausgenutzt werden konnen So etwa sind in diesem Fall nicht nur die Bresenham Kontrollvariable sondern auch die Linienabschnitte periodisch Zusammen mit weiteren Optimierungen ergibt sich ein Algorithmus der insbesondere bei langeren Linien erheblich schneller als die prazisen Verfahren ist Eine Qualitatsverschlechterung ist bei Linien mit sehr geringer Steigung feststellbar Parallelisierung Bearbeiten Eine einfache Methode zur Parallelisierung der einfarbigen Rasterung lasst verschiedene Algorithmen parallel laufen die jeweils etwas verschoben mehrere Pixel in bestimmten Abstanden zeichnen 27 Eine andere Moglichkeit besteht darin die Linie in mehrere ungefahr gleich grosse Teile aufzuteilen die jeweils einem Prozessor zur Rasterung zugewiesen werden 28 Jeder Teil wird mit Hilfe des Bresenham Algorithmus gerendert das Hauptproblem ist die Berechnung der korrekten Anfangswerte der Variablen Weiterhin ist es moglich mehrere Prozessoren die Endpunkt Koordinaten der Reihen bei Bresenhams Pixelreihen Algorithmus berechnen zu lassen 29 Auch fur massiv parallel arbeitende Vektorrechner mit uber 1000 Prozessoren wurden Algorithmen vorgestellt 30 Jedes Pixel der Rastergrafik wird dabei einem Prozessor zugewiesen der entscheidet ob dieses Pixel eingefarbt werden soll oder nicht Um die langsamen Speicherzugriffe bei der Rasterung zu beschleunigen wurden spezielle Speicherarchitekturen entwickelt etwa solche bei denen der Speicher in Zellen unterteilt wird in denen unabhangig voneinander ein Teil der Linie gezeichnet werden kann 31 Auch die Rasterung mit Antialiasing kann durch Hardware unterstutzt werden 32 Verwandte Probleme Bearbeiten nbsp 4 verbundene Rasterung Die zusatzlich zur 8 verbundenen Rasterung ausgewahlten Quadrate sind schraffiert dargestellt Linien konnen nicht nur wie normalerweise ublich 8 verbunden sondern auch 4 verbunden 4 connected gerastert werden Das bedeutet dass keine Diagonal sondern nur noch Horizontal und Vertikalschritte erlaubt sind Wenn man sich das Punktraster in Quadrate unterteilt denkt so werden hierbei alle Quadrate die von der Linie uberlappt werden ausgewahlt Eine Verallgemeinerung dieser Technik auf drei Dimensionen findet bei Voxelgittern einer Beschleunigungstechnik des Raytracing Verwendung Sie dient der Bestimmung der Voxel durch die ein Strahl beim Raytracing wandert Bei gerasterten Linien sind die diagonalen Pixelschritte moglichst gleichmassig verteilt Algorithmen zum Rastern von Linien lassen sich daher auch dazu verwenden Punkte mit ganzzahligen Koordinaten gleichmassig in einem bestimmten Intervall zu verteilen 33 Mogliche Anwendungen sind die lineare Interpolation oder das Downsampling in der Signalverarbeitung Weitere Parallelen ergeben sich zum Euklidischen Algorithmus sowie Farey Reihen und einigen anderen mathematischen Konstrukten 34 Siehe auch BearbeitenBresenham Algorithmus Rasterung von Kreisen Rasterung von PolygonenLiteratur BearbeitenJames D Foley u a Computer Graphics Principles and Practice in C Addison Wesley Reading Massachusetts 1995 ISBN 978 0 201 84840 3 Behandelt den Bresenham Algorithmus Probleme bei der Rasterung sowie Gupta Sproull Antialiasing Weblinks BearbeitenRosetta Code Bitmap Bresenham s line algorithm www javatpoint com Bresenham s Line Algorithm GeeksforGeeks Bresenham s Line Generation Algorithm National Institute of Standards and Technology U S Department of Commerce Bresenham s algorithm Alois Zingl Vienna Austria The Beauty of Bresenham s Algorithm Eine einfache Implementierung zum Zeichnen von Linien Kreisen Ellipsen und Bezierkurven Alois Zingl Vienna Austria Rasterizing curves Web Application in JavaScript Rasterung von Linien Kreisen Ellipsen Uni Magdeburg Institut fur Simulation und Graphik Java Applet zum Nachvollziehen des Bresenham Algorithmus Project Line Statistics George Mason University Computer Graphics Lab Untersuchung zur Verteilung von Linienlangen und steigungen englisch Einzelnachweise Bearbeiten Siehe Beispielcode in http www crbond com papers newline pdf 250 kB Algorithm for computer control of a digital plotter IBM Systems Journal 4 1 1965 25 30 ISSN 0018 8670 PDF 220 kB Bereits im August 1963 als Vortrag auf der ACM National Conference in Denver prasentiert Mike L V Pitteway Algorithm for Drawing Ellipses or Hyperbolae with a Digital Plotter The Computer Journal 10 3 November 1967 282 289 ISSN 0010 4620 J R Thompson Correspondence Straight lines and graph plotters The Computer Journal 7 3 August 1964 227 Fred G Stockton Algorithm 162 XYmove plotting Communications of the ACM 6 4 April 1963 161 ISSN 0001 0782 Giovanni B Reggiori Digital computer transformations for irregular line drawings Technical Report 403 22 New York University New York April 1972 Jack E Bresenham u a Run length slices for incremental lines IBM Technical Disclosure Bulletin 22 8B 1980 3744 3747 ISSN 0018 8689 a b Khun Yee Fung A Run Length Slice Line Drawing Algorithm without Division Operations Computer Graphics Forum 11 3 1992 267 277 ISSN 0167 7055 Xiaolin Wu Jon G Rokne Double step incremental generation of lines and circles Computer Vision Graphics and Image Processing 37 3 March 1987 331 344 ISSN 0734 189X Phil Graham S Sitharama Iyengar Double and triple step incremental generation of lines In ACM CSC 93 Proceedings 384 389 ACM Press Indianapolis 1993 ISBN 0 89791 558 5 Paul Bao Jon G Rokne Quadruple step line generation Computers amp Graphics 13 4 1989 461 469 ISSN 0097 8493 Graeme W Gill N Step Incremental Straight Line Algorithms IEEE Computer Graphics and Applications 14 3 May 1994 66 72 ISSN 0272 1716 a b Giulio Casciola Basic concepts to accelerate line algorithms Computers amp Graphics 12 3 4 1988 489 502 Azriel Rosenfeld Digital Straight Line Segments IEEE Transactions on Computers C 23 12 December 1974 1264 1269 ISSN 0018 9340 Peter Stephenson The Structure of the Digitised Line with Applications to Line Drawing and Ray Tracing in Computer Graphics PhD Thesis James Cook University of North Queensland Australia 1998 Online Memento vom 5 September 2007 im Internet Archive Reyer Brons Linguistic Methods for the Description of a Straight Line on a Grid Computer Graphics and Image Processing 3 1974 48 62 ISSN 0146 664X Jim X Chen The Analysis and Statistics of Line Distribution IEEE Computer Graphics and Applications 22 6 November December 2002 100 107 Yevgeny P Kuzmin Bresenham s Line Generation Algorithm with Built in Clipping Computer Graphics Forum 14 5 1995 275 280 Satish Gupta Robert F Sproull Filtering edges for gray scale displays In ACM SIGGRAPH 81 Proceedings 1 5 ACM Press Dallas 1981 ISBN 0 89791 045 1 A R Forrest Antialiasing in practice In R A Earnshaw Hrsg Fundamental Algorithms for Computer Graphics NATO ASI Series F 17 113 134 Springer Berlin 1985 ISBN 3 540 13920 6 Jan Wassenberg Fraunhofer Institute of Optronics System Technologies and Image Exploitation Fast High Quality Line Antialiasing by Prefiltering with an Optimal Cubic Polynomial Xiaolin Wu An efficient antialiasing technique In ACM SIGGRAPH 91 Proceedings 143 152 ACM Press New York 1991 ISBN 0 89791 436 8 Siehe etwa Vincent Boyer Jean Jacques Bourdin Discrete Analysis for Antialiased Lines Short Presentation Eurographics 2000 PDF 230 kB Nicholas A Diakopoulos Peter D Stephenson Anti Aliased Lines Using Run Masks Computer Graphics Forum 24 2 June 2005 165 172 Turner Whitted Anti aliased line drawing using brush extrusion In ACM SIGGRAPH 83 Proceedings 151 156 ACM Press Detroit 1983 ISBN 0 89791 109 1 Vincent Boyer Jean Jacques Bourdin Fast Lines a Span by Span Method Computer Graphics Forum 18 3 1999 377 384 PDF 400 kB Robert F Sproull Using program transformations to derive line drawing algorithms ACM Transactions on Graphics 1 4 October 1982 259 273 ISSN 0730 0301 William E Wright Parallelization of Bresenham s line and circle algorithms IEEE Computer Graphics and Applications 10 5 September 1990 60 67 Ivo Povazan Tomas Hruz Parallel Line a Unified Solution In WSCG 97 Proceedings 60 67 University of West Bohemia Pilsen 1997 ISBN 80 7082306 2 Online Alex T Pang Line drawing algorithms for parallel machines IEEE Computer Graphics and Applications 10 5 September 1990 54 59 Siehe etwa Pere Mares Marti Antonio B Martinez Velasco Memory architecture for parallel line drawing based on nonincremental algorithm In Euromicro 2000 Proceedings Vol 1 266 273 IEEE Computer Society Press Los Alamitos 2000 ISBN 0 7695 0780 8 Siehe etwa Robert McNamara u a Prefiltered Antialiased Lines Using Half Plane Distance Functions In HWWS 2000 Proceedings 77 85 ACM Press New York 2000 ISBN 1 58113 257 3 Chengfu Yao Jon G Rokne An integral linear interpolation approach to the design of incremental line algorithms Journal of Computational and Applied Mathematics 102 1 February 1999 3 19 ISSN 0377 0427 Mitchell A Harris Edward M Reingold Line drawing leap years and Euclid ACM Computing Surveys 36 1 March 2004 68 80 ISSN 0360 0300 PDF 270 kB Memento vom 16 Dezember 2006 im Internet Archive nbsp Dieser Artikel wurde am 4 Mai 2007 in dieser Version in die Liste der exzellenten Artikel aufgenommen Abgerufen von https de wikipedia org w index php title Rasterung von Linien amp oldid 238740674