Distanztransformation

Ähnliche Dokumente
EVC Repetitorium Blender

Prüfung der VO Grundlagen der digitalen Bildverarbeitung Kropatsch

1. Filterung im Ortsbereich 1.1 Grundbegriffe 1.2 Lineare Filter 1.3 Nicht-Lineare Filter 1.4 Separabele Filter 1.

Bildverarbeitung Herbstsemester

Prüfung der VO Grundlagen der digitalen Bildverarbeitung Kropatsch

Prüfung Grundlagen der digitalen Bildbearbeitung

Digitale Bildverarbeitung (DBV)

Morphologische Filter

Filter Transformationen (Blender) INSTITUTE OF COMPUTER GRAPHICS AND ALGORITHMS

Computergrafik 2: Morphologische Operationen

6. Texterkennung in Videos Videoanalyse

Distributed Algorithms. Image and Video Processing

Lösungscode Die markierten Zeilen, jeweils die Einerstelle der zugehörigen Zahl, - für Leerfelder.

Graphische Datenverarbeitung und Bildverarbeitung

Filter. Industrielle Bildverarbeitung, Vorlesung No M. O. Franz

Lösbarkeit linearer Gleichungssysteme

Tag der Mathematik 2016

32. Essener Mathematikwettbewerb 2016/2017

Einführung in die medizinische Bildverarbeitung WS 12/13

1 Goldener Schnitt Pascalsches Dreieck Der Binomische Lehrsatz ( ) ß mit a multipliziert. ( a+ b) 4 = a 3 +3a 2 b+3ab 2 + b 3

Computergrafik 2: Übung 9. Morphologische Operationen

Mischungsverhältnisse: Nehmen wir an, es stehen zwei Substanzen (zum Beispiel Flüssigkeiten) mit spezifischen Gewicht a = 2 kg/l bzw.

2 Lineare Gleichungssysteme

Mischungsverhältnisse: Nehmen wir an, es stehen zwei Substanzen (zum Beispiel Flüssigkeiten) mit spezifischen Gewicht a = 2 kg/l bzw.

Unter dem Symbol n! (gelesen n Fakultät) versteht man das Produkt der natürlichen Zahlen von 1 bis n.

Lineare Algebra 1. Roger Burkhardt

Digitale Bildverarbeitung Einheit 9 Morphologische Operationen

Digitale Bildverarbeitung Einheit 9 Morphologische Operationen

Bildverbesserung. Frequenz-, Punkt- und Maskenoperationen. Backfrieder-Hagenberg

Aufgaben Klassenstufe 5

Kursarbeit Nr.1 LK Mathematik NAME :

Kurs über Lineare Gleichungssysteme. PD Dr. Karin Halupczok

Universität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen

LU Grundlagen der digitalen Bildverarbeitung Abgabe 2. Gruppe 25 peter holzkorn andreas bretschneider martin tintel

Hauptklausur zur Vorlesung Bildverarbeitung WS 2002/2003

Aufgaben zu Anwendungen zur Vektorrechnung

Modul Digitale Bildverarbeitung SS16 Bestandteile der Lehrveranstaltung und Prüfung: Vorlesungen Übungsserien Praktika (ImageJ) bis Mai 2016 Projekt

Lösungen Klasse 11 A B. Figur 1

Aufgaben zu Anwendungen zur Vektorrechnung

Basistext Determinanten

Morphologische BV. Morphological Image Processing. M. Thaler, TG208 Bildverarbeitung ZHAW, BV HS17, M. Thaler.

Beispiele 1. Gegeben ist das lineare System. x+4y +3z = 1 2x+5y +9z = 14 x 3y 2z = 5. Die erweiterte Matrix ist

Algebra 4.

Blockmatrizen. Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 :

Matrizen. Spezialfälle. Eine m nmatrix ist ein rechteckiges Zahlenschema mit. m Zeilen und n Spalten der Form. A = (a ij ) =

Was bisher geschah. digitale Bilder: Funktion B : pos col Matrix B col pos. Punktoperationen f : col 1 col 2

Städtewettbewerb Frühjahr 2009

D-MAVT Lineare Algebra I HS 2017 Prof. Dr. N. Hungerbühler. Lösungen Serie 10

Klausur Informatik B April Teil I: Informatik 3

Mathematik I Prüfung für den Übertritt aus der 8. Klasse

Musterlösungen Blatt Mathematischer Vorkurs. Sommersemester Dr. O. Zobay. Matrizen

Lösungen zu Ungerade Muster in Pyramiden. Muster: Die Summe der ungeraden Zahlen (in jeder Teilpyramide) ist stets eine Quadratzahl.

Signalverarbeitung g für audiovisuelle Kommunikation

Lineare Algebra 1. Roger Burkhardt

Selbsteinschätzungstest Auswertung und Lösung

Das Gauß-Jordan-Verfahren zur Lösung von Lineargleichungssystemen

Beispiele 1. Gegeben sei das lineare Gleichungssystem mit erweiterter Matrix (A

Segmentierung. Vorlesung FH-Hagenberg SEM

6.1.2 Bem.: Für Vierecke ist der Begriff Innenwinkel im allgemeinen nicht sinnvoll. Skizze.

3 Lineare Gleichungen

Ermitteln Sie die Koordinaten des Schnittpunktes dieser beiden Geraden und erklären Sie Ihre Vorgehensweise!

1 Definition. 2 Besondere Typen. 2.1 Vektoren und transponieren A = 2.2 Quadratische Matrix. 2.3 Diagonalmatrix. 2.

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt Semester ARBEITSBLATT 13 EBENE KOORDINATENGEOMETRIE DER ORTSVEKTOR

Struktur des menschlichen Auges. Bildgebende Verfahren in der Medizin und medizinische Bildverarbeitung Bildverbesserung 2 / 99

9. Vorarlberger Mathematik Miniolympiade

B =(b1,1. + b 1,2. + b 1,3 1,3. + b 2,4 + b 3,1. + b 2,2. + b 2,3. + b 3,2. + b 3,3

Digitale Bildverarbeitung Einheit 8 Lineare Filterung

3 Matrizenrechnung. 3. November

12 Übungen zu Gauß-Algorithmus

Gruber I Neumann. Erfolg in VERA-8. Vergleichsarbeit Mathematik Klasse 8 Gymnasium

Basiswissen Matrizen

Mathematik. Matur-Aufgaben Stefan Dahinden. 26. Juni 2007

Runde 3. Gemischte Runde (95 Minuten)

Lineare Algebra 1. Roger Burkhardt

FH Gießen-Friedberg, FB 06 (MNI) Skript 8 Mathematik 1 für KMUB 5./7. November 2008 Prof. Dr. H.-R. Metz. Matrizen 1. a m1 a m2 a m3 a mn

BEISPIELAUFGABEN ZUM ONLINE-KURS MATHEMATIK-ÜBUNGEN - MATRIZEN - MULTIPLIKATION

Übersicht der Vorlesung

Vektorobjekte auf der Formebene zeichnen. Form-Werkzeug wählen und über die Optionsleiste die Formeigenschaften festlegen

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

HM II Tutorium 5. Lucas Kunz. 22. Mai 2018

Graphen. Definitionen

6.1.2 Bem.: Für Vierecke ist der Begriff Innenwinkel im allgemeinen nicht sinnvoll. Skizze.

05. Lineare Gleichungssysteme

Mathematik Aufnahmeprüfung 2017

Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren.

Featurebasierte 3D Modellierung

Rechner. Verlauf ansehen. Ausdruck teilen. Graph Gleichungen. OXY Seite öffnen. SCI/ENG Schreibweise. Eigene Gleichung zuweisen

Effizienter Planaritätstest Vorlesung am

8.2 Invertierbare Matrizen

Digitale Bildverarbeitung Einheit 9 Morphologische Operationen

Transkript:

1 Inhaltsverzeichnis Distanztransformation... 2 Vorwärtslauf... 2 Rückwärtslauf... 2 Weitere Masken... 2 Morphologie... 3 Erosion... 3 Dilatation... 3 Co-ocurrence Matrix... 3 Filteroperation... 5 Randbehandlung... 5 Glättungsfilter... 6 Box/ Mittelwertfilter (Tiefpassfilter)... 6 Binomialfilter (gewichtete Mittelung)... 6 Medianfilter... 6 Freeman Chain Code... 7 Jordan sches Kurventheorem... 7 RAG und Split and Merge... 8 RAG... 8 Dualer Graph... 8 Pyramide... 9 Laplace Pyramide... 9 Waveletpyramide... 10 Region Growing... 11 Integral Image und Predictive Code... 12 B-Matix... 12 I-Matrix... 12 B-Matrix -1 +1... 12 Array Grammatik... 13 Beispiel: Rechtwinkeliges Dreieck, mit einem rechten Winkel in der linken unteren Ecke!... 13 Beispiel: Aufgestelltes Quadrat!... 13 Beispiel: Freeman Chain Code zum letzten Beispiel, also Umfang.... 14 Beispiel: Rechteck mit Seitenverhältnis 1:2... 15

2 Distanztransformation Zu Beginn ist alles gefüllt mit 1 und unendlich (leeres Kastl). Vorwärtslauf Links oben wird gestartet. Das rote Feld im Raster ist das, das als erstes berechnet wird. Dabei wird der Nuller von der Maske über das neu zu berechnende Pixel gelegt. Der blaue Pixel vom Raster wird mit dem blauen Einser der Maske addiert. Dasselbe geschieht mit dem lila Feld und dem lila Einser. Raster Bildecke 0 0 0 Maske 1 0 1 0 Summe blau = 1 Summe lila = 1 => Die kleinste Summe ist 1, das neue Pixel in rot ist 1. Achtung: blau und lila ändern nicht die Werte die Summe werden nur für das neue Pixel benötigt! => 0 0 0 0 1 0 Rückwärtslauf Genauso, nur von rechts unten starten. Wenn der Pixel vom roten Pixel schon kleiner ist als die Summe, die raus kommt, wird der kleinere, alte Pixel genommen. Maske 0 1 1 Wenn der Pixel vom roten schon kleiner ist, als die Summe, die raus kommt, wird der kleinere, alte Pixel genommen. Weitere Masken d4 d8 = Schachbrettdistanz d23 vorwärts 1 1 1 1 3 2 3 1 0 1 0 2 0 rückwärts 0 1 0 1 0 2 1 1 1 1 3 2 3

3 Morphologie Morphologische Bildverarbeitung: durch Erosion und Dilatation => Öffnung, Schließung, morphologische Glättung. Weil nur 1&0 was nicht 0 ist, ist 1. S Strukturelement, auf die erste Matrix anwenden in 2. eintragen. Erosion Objekt wird kleiner. Passt S vollständig => Bezugspixel stehen lassen (gehört zur erodierten Menge), sonst Referenzpixel aus Region entfernen. Dilatation Strukturelement auf Region legen, schaun, ob Bezugspixel 0 oder 1 ist, also auf dem Objekt liegt, oder nicht. 0 => Nachbarschaft um S erweitern 1 => nicht erweitern Co-ocurrence Matrix delta (1,0) = 1 Kasterl in x-richtung, 0 in y-richtung In einer immer quadratischen Matrix wird eingetragen, wie oft die Ziffern in gegebener Stellung zu finden sind. Methode der Texturanalyse. Gibt an, wie oft in einem Bild 2 Grauwerte (2 Symbole, 2 Ziffern, ) in bestimmter Anordnung (delta) in Nachbarschaft auftreten. Beispiel: 0 1 2 0 0, 1, 2 ist hier kein Index, sondern die Grauwerte. 1 C (1, 0) heißt, dass die Anzahl der Kombinationen von 2 Grauwerten 2 horizontal nebeneinander 0 0 0 1 2 Es gibt 3 Grauwerte (0, 1, 2) 3x3 Co-occurence Matrix 1 1 0 1 1 => berechne die drei C (k, l) 2 2 1 0 0 k = Abstand horizontal 0 0 1 0 1 l = Abstand vertikal a b 0 0 1. Wir suchen alle 0-0 Paare, die horizontal nebeneinander liegen. => 0 1 2 0, 1, 2 der linke Grauwert 0 4 3 0, 1, 2 der rechte Grauwert 1 2 a b 2. Wir suchen alle 1-0 Paare, die horizontal nebeneinander liegen. 1 0 usw.

Dasselbe geht auch mit vertikalen Paaren mit k=0, l=1 4

5 Filteroperation Mit Faltung Filter möglich (Hoch- und Tiefpassfilter) Lineare Faltung berechnet Werte des Ausgangsbildes aus rechteckiger Umgebung des Eingangsbildes. Zeilen und Spalten der Matrix sind in der Bildverarbeitung immer kleiner als das Eingangsbildes. Anwendung: für jeden Pixel Bestimmung des neuen Wertes als Summe der Produkte der Faltungsmatrix (Maske) im Bild. Bsp: Vorgehen: Eingabebild B Faltungsmatrix F Ausgabebild 0 1 0 1 1 3 1 2 1 1 0 1 0 9 6 7 0 2 2 2 0 * 1 1 1 = 6 10 5 0 1 2 0 0 0 1 0 5 5 4 4 0 0 0 0 0 1 0 1 Pixel der Multiplikation mit Faltungsmatrix berechnen 3 1 2 1 0 2 2 2 0 1 => *F 0*0 + 1*1 + 0*0 + 3*1 + 1*1 + 2*1 + 0*0 + 2*1 + 2*0 = 9 9 6 Manchmal wird das Bild dadurch kleiner, es gibt aber auch andere 6 10 Möglichkeiten Randbehandlung Ignorieren => Bild wird dann mit jeder Faltung kleiner Auffüllen mit Nullen => starke Randeffekte Auffüllen mit Randwerten (Neumannsche Randbedingung, 1.Ableitung = 0) Zirkuläre Fortsetzung (Bild als periodische Struktur, wenns rechts aus ist, einfach links weiterlesen, selbiges mit oben und unten)

6 Glättungsfilter um Störungen zu reduzieren, Kanten verwischen, Bild wird unscharf Box/ Mittelwertfilter (Tiefpassfilter) 1/9 1/9 1/9 3x3 Matrix => Faltungsmatrix 1/9 1/9 1/9 1/9 1/9 1/9 5x5 Matrix => lauter 1/25 Verstärkt tiefe Ortsfrequenzen, unterdrückt hohe kleine Grauwertspitzen Binomialfilter (gewichtete Mittelung) Filterwerte aus Binomialkoeffizienten 1 2 1 1 3x3: 2 4 2 1 1 1 2 1 3 1 2 1 1 3 3 1 1 4 6 4 1 5 1 4 6 4 1 4 16 24 16 4 1 4 6 4 5x5: 6 24 36 24 6 innen: 4 4 16 24 16 4 6 4*6 1 4 6 4 1 Medianfilter Jedes Pixel ersetzt durch Median der Nachbarschaft. Zuerst der Größe nach ordnen, dann die Mitte der Reihe wählen. Rechnung: n*m/2, bei einem geraden Zähler +1 => Ausreißer haben keinen Einfluss => keine neuen Grauwerte => keine Kantenglättung, obwohl Störungen weg sind => schlecht bei Schrift, weil dünne, gerade Linien schnell weg sind

7 Freeman Chain Code Bild muss aus Chaincode erstellt werden. Raster und Startpunkt sind vorgegeben. Zur Beschreibung der Konturen/ des Randes einer Region. Eine Folge von Punkten in 8er- Nachbarschaft kann durch Angabe des Startpixels, gefolgt von den Codes, die den Ort des folgenden Pixels relativ zum vorhergehenden Pixel angeben. Crack-Codes Freeman Chain Ruli Chain Code 1 3 2 1 L I R 2 0 4 0 3 5 6 7 U 1, 0, 1, 0, 0, 0, 3, 3, 3, 1, 0, 0, 0, 6, 6, 6, RLRIIIRIIIRIIRILIR 3, 2, 2, 2, 1, 1, 2, 2 4, 4, 2, 2, 4, 4 Zeigt nicht auf Pixel, Bei folgendem Code wird Rand der äußeren Kanten der sondern gibt die Richtung mittels einer Zahl von 0 bis Randpixel, immer in Blickrichtung, der äußeren Kante der 7 angegeben, wo der wie wenn man an der Pfeilspitze sitzt Randpixel an. nächste Pixel liegt. und immer geradeaus schaut. Ein Weg ist eine Folge benachbarter Pixel. Wenn alle Pixel durch einen Weg verbunden sind, ist die Region zusammenhängend. 4-zusammenhängend: Pixel mit einer gemeinsamen Kante 8-zusammenhängend: Pixel mit einem gemeinsamen Punkt => Zn(R) ist die Zusammenhangskomponente Z einer Region R mit der Nachbarschaft N (4 oder 8) 4er-Nachbarschaft 8er-Nachbarschaft Zusammenhanfkomponenten Pixel mit gemeinsamen Pixel mit gemeinsamen Kanten Kanten und Ecken Jordan sches Kurventheorem Geschlossene Kurve erzeugt kleine Mengen (Zusammenhangskomponenten) alles innerhalb der Kurve = Objekt Graphik s. Skript Wohlgeformt? Wenn in Freeman Chaincode eine 45 Grad Schräge Kante (Schachbrettmuster) vorkommt, dann ist das Bild NICHT wohlgeformt.

8 RAG und Split and Merge 1. Startregion ist das ganze Bild 2. Split: Zerlege ALLE inhomogenen Regionen in Teilregionen 3. Merge: Vereinige benachbarte Regionen, wenn sie ähnlich/gleich sind 4. Iteriere Split und Merge bis keine Änderung mehr auftritt Homogen ist eine Region, wenn alle Pixel denselben Wert haben. Alle schwarz, alle weiß, 2 1. Ist die Reihe inhomogen? Nein, also splitten. 1 2. Splitten der Region in 4 Teilregionen. 3 6 4 Split 1 Region in 4 Teilregionen: 1 4 1 7 5 3. Sind Teilregionen homogen? Ja, eine (links oben). 3 weitere Teilregionen aber nicht. Kann man die homogene mit einer anderen mergen? Nein, weil es keine zweite ähnliche gibt. 4. Teile die übrigen 3 Teilregionen in je 4 Teile Split 3 Regionen in je 4 Teilregionen: 3 12 2 5. Sind die Teilregionen homogen? Ja, jetzt 7 insgesamt. Kann man diese mit benachbarten mergen? Ja. 3 Merge 1 mit 6; 2 mit 3, 4, 5: von 7 homogenen Regionen 3 a b Über bleiben 3 Regionen: a, b und c c Region adjacency = angrenzende Region. Wenn 2 Regionen durch 1 oder mehrere Pixel verbunden sind, sind sie angrenzend. RAG Durch RAG kann man angeben, welche Regionen angrenzend sind. Regionen entsprechen Knoten, Kanten dazu geben an, welche Regionen zueinander adjazent (also angrenzend) sind. zu oben: a b Kanten a-b, a-c, je diese 2 Regionen sind benachbart. b-c nicht, haben keine angrenzenden Pixel c Dualer Graph Für jede gebildete Fläche wird ein Knoten angenommen. Kanten werden so gezogen, dass immer Flächen, die sich in mindestens einer Pixelkante berühren, benachbart sind.

9 Pyramide in Ebenen aufgebaute Pyramiden. Man fasst aus untersten 4 Pixel zusammen, berechnet Durchschnitt => nächsthöhere Ebene, die auf ¼ der vorhergehenden Ebene reduziert ist, den Wert des zusammengefassten Pixels. Bsp: Ausgangsmatrix 3 5 3 4 5 1 4 1 (3+5+3+1)/4 = 3 3 1 4 1 2 8 2 9 Die 3 in der nächsten Ebene links oben eintragen usw. 5 1 3 5 1 1 3 1 2 8 3 1 1 1 4 8 6 5 2 1 1 3 1 1 1 4 3 2 3 1 1 5 2 2 1 1 1 4 3 3 1 3 1 1 2 1 3 3 3 3 4 4 4 3 1 4 4 2 2 2 2 1 2 3 3,25 3,25 2,25 2,25 2,75 Laplace Pyramide Wi = min {Mi, 6-Mi } Es werden die einzelnen Ziffern der Matrikelnummer von 6 abgezogen. Dann werden diese verglichen mit den eigentlichen Ziffern der Matrikelnummer und der kleinere Wert davon genommen. Dadruch liegen alle Werte von Wi zwischen 0 und 2. Zuerst trag in die gekennzeichneten Pixel der noch leeren Matrizen die berechneten Werte ein. Die anderen Pixel musst du berechnen. Ein Pixel wird berechnet, indem man von den 4 Pixel aus der Region, die dieses Pixel bilden, den Durchschnitt berechnet. Also: a b (a+b+c+d)/4 c d w1 2 3 4 w5 6 w7 w7 aufblasen: 2 2 2 Die dann minus der w5/w6 Matrix von P = 2 2 P abgezogen ergibt die 2x2 Matrix von L gleich Dasselbe passiert mit der 4x4 Matrix: Zuerst wird die w5/w6 Matrix von P aufgeblasen und von der die w1/w2/w3/w4 (4x4 Matrix von P) L = abgezogen. Das ergibt dann die 4x4-Matrix von L. Achtung: Meist sind zu Beginn bestimmte Pixel vorgegeben, welche Werte die haben müssen. Die dürfen dann natürlich nicht verändert werden.

10 Waveletpyramide 1. In I0 wie verlangt Ziffern eingtragen. 2. Immer von 2 Werte nebeneinander den Mittelwert berechnen. 3. Die Differenzen ausrechnen von den Werten, die diesen Mittelwert berechnet haben, zu eben diesem. Und zwar erster der beiden Werte minus dem Mittelwert, oder Mittelwert minus des zweiten der beiden, die den Mittelwert gebildet haben. 4. In der nächsten Zeile dasselbe berechnen mit der Hälfte, die durch die Mittelwerte entstanden sind. Dadurch wird die Wurscht in jedem Schritt halbiert. Achtung: Die Mittelwerte im nächsten I in die Hälfte eintragen, unter der I0*H steht, die Differenzwerte auf die Hälfte, unter der I0*G steht.

11 Region Growing Saatpixel/ Saatregion Start markiere alle Nachbarpixel der Saatregion N N N N alle Nachbarpixel, die denselben Wert (0 oder 1) wie das Saatpixel haben, N N sind ebenfalls Teil der Region und werden der Region hinzugefügt. f = false, das Pixel wird nicht mehr näher betrachtet, da es nicht zur Region hinzugefügt worden ist. t = zur Region zugehörig. N N N N markierte Nachbarpixel N N f t t N N t t t N N N N N f t t f f f t t f f t t t t Vergleiche neu markierte N mit den Regionspixeln und nimm die Nachbarpixel mit denselben Werten zur Region hinzu usw. bis zum Endergebnis! f f f f f f t t f f t t f f f f t t f f f t t t t f

12 Integral Image und Predictive Code B-Matix 1er einfüllen, so wie es die Angabe vorschreibt I-Matrix Es wird immer ein Viereck von der Ecke links oben gezogen bis inklusive des Pixel, das man ausrechnen will. Alles, was drinnen liegt, wird addiert und in das Pixel im rechten unteren Pixel des aufgezogenen Vierecks geschrieben. Dadurch wird die I-Matrix nach unten rechts hin von den Werten her ansteigend. Wenn der Rand nicht anders vorgegeben ist, am besten einen 0-Abschluss wählen (geht am schnellsten). Bsp: 0 1 0 1 0 0 0 1 1 2 2 1 0 0 0 0 => => 1 2 2 3 3 0 0 0 0 1 2 1 2 2 3 4 B-Matrix -1 +1 Integral Image soll mit einem linearen Prädiktor mit den Koeffizienten +1 B überzogen werden (Der Prädiktor wird wie eine Maske einer Faltung angewendet). Die drei Pixel, die nicht B sind, multipliziert man mit denen, die in der B-Matrix darunter liegen und addiert dann die Ergebnisse. Was raus kommt, schreibt man in das Pixel, das an der Stelle des B liegt. Danach werden mittels Lauflängencodierung die Spalten aufgeschrieben. Achtung: Es wird die Differenz der Werte der B-Matrix zur I-Matrix verlangt! Achtung: Einfacher ist es, wenn in der B-Matrix gleich die Pixel markiert werden, die zur I-Matrix anders sind. Es geht dann schneller, den Lauflängencode zu schreiben. Achtung: Hinweis darauf aufschreiben, dass wir erst ein Flag (eigentlich!) gesetzt wird und Sinn macht, wenn es mehr als 3 Zeichen in Folge sind.

13 Array Grammatik Bei der Zuweisung einer Grammatik zu einem Hilbert-Scan empfiehlt es sich, rechts neben jede Grammatikzeile das Zeichen zu zeichnen, das sich daraus ergibt. Definition G = (N, T, #, P, {(v0, S)}) N Nichtterminale/Metasymbole T Terminale (1er) # leeres Pixel, Null, halt noch leeres Blatt P Produktionsmenge (Regeln) v0 Startvektor S Startvektor Beispiel: Rechtwinkeliges Dreieck, mit einem rechten Winkel in der linken unteren Ecke! G = ({S, 0}, {1}, #, P, S) # S 0 1 0 1 P: p1: S # 1 0 p2: S 1 p3: # # p4: 1 # 1 0 Ableitung: S S S S S 1 0 1 1 p1 S p1 1 0 p3 1 0 p4 1 1 p1 1 1 p4 1 1 0 p2 S 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 p3 1 1 0 p4 1 1 1 p3 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 Beispiel: Aufgestelltes Quadrat! G = ({S, 0}, {1}, #, P, S) 0 0 0 # 1 # 1 1 1 P: p1: S 1 1 1 p2: 1 1 p3: # 1 # 1 1 1 1 1 1 1 1 1 1 1 1 p4: # 1 1 1 1 p5: 1 # 1 1 1 p6: 0 1 1 1 1 1

14 Ableitung: 0 0 1 1 0 1 p1 0 p2 1 p3 1 1 1 p2 1 1 1 S 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 p3 1 1 1 1 1 p4 1 1 1 1 1 p5 1 1 1 1 1 p2 1 1 1 1 1 p3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 p4 1 1 1 1 1 p4 1 1 1 1 1 p5 1 1 1 1 1 1 1 p5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 p5 1 1 1 1 1 1 1 p6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Beispiel: Freeman Chain Code zum letzten Beispiel, also Umfang. 2 3 1 4 0 G = ({A, B, C, D, E, R, S, T}, {1, 3, 5, 7}, #, P, S) 5 7 6

15 P: p1: S TRE p2: R RR p3: TE # p4: R ABCD p5: BA AB P6: CA AC p7: DA AD p8: CB BC p9: DB BD p10: DC CD P11: AE E1 p12: BE E3 p13: CE E5 p14: DE E7 Ableitung: p1 p4 p14 p13 p12 S TRE TABCDE TABCE7 TABE57 p11 p3 TAE357 TE1357 #1357 => p1 p2 p4 p7 p9 S TRE TRRE TABCDABCDE TABCADBCDE TABCABDCDE p10 p6 p8 p5 p14 TABCABCDDE TABACBCDDE TABABCCDDE TAABBCCDDE p14 p13/12/11/3 TAABBCCDE7 TAABBCCE77 #11335577 => Beispiel: Rechteck mit Seitenverhältnis 1:2 G = ({S, 0}, {1}, #, P, S) 0 1 1 1 1 # 1 1 P: p1: S 0 0 p2: 0 1 1 p3: # 1 1 1 p4: 1 1 p5: 0 1 p1 p2 0 1 0 1 p2 0 1 0 1 p3 0 1 0 1 p4 S 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 p2 0 1 0 1 p3 0 1 0 1 p3 0 1 0 1 p4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 p4 0 1 1 1 0 1 1 1 p5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1