1 / 101

Digitalgeometrie mit Anwendungen zur Bildanalyse und Computergrafik

Digitalgeometrie mit Anwendungen zur Bildanalyse und Computergrafik. W. Kovalevski University of Applied Sciences Berlin www.kovalevsky.de. Inhalt.

kenley
Download Presentation

Digitalgeometrie mit Anwendungen zur Bildanalyse und Computergrafik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Digitalgeometriemit Anwendungen zur Bildanalyseund Computergrafik W. Kovalevski University of Applied Sciences Berlin www.kovalevsky.de

  2. Inhalt Einführung in dieTopologie der lokal endlichen Räume1. Warum ist Topologie wichtig für die Bildanalyse?2. Warum können wir nicht die klassische allgemeine Topologie nutzen?3. Nachbarschaftsstrukturen als Behelfslösung.4. Lokal endliche Räume.5. Dimension der Raumelemente.6. Zellenkomplexe. 7. Zusammenhang und Begrenzungen von Regionen. 8. Kartesische Komplexe und kombinatorische Koordinaten. 9. Datenstrukturen.Einige einfache Algorithmen1. Verfolgung von Begrenzungen. Verallgemeinerung für den nD-Raum 2. Füllen des Inneren einer geschlossenen Kurve. 3. Markierung der Komponenten.

  3. Inhalt 2 Geraden in einem 2D-Raum (digitale Strecken)1. Halbräume und konvexe Mengen.2. Definition einer digitalen Strecke (digital straight segment, DSS). 3. Digitale Strecken und Kollinearität. 4. Erkennung der DSS während der Verfolgung einer Kurve. 5. Sparsame Codierung von DSS-Folgen. 6. Dünne und dicke DSS. 7. Anwendungen der DSS.Fortgeschrittene Algorithmen der Digitalgeometrie 1. Digitale Kreisbögen; Definition und Erkennung. 2. Digitale Ebenenstücke im 3D-Raum. 3. Erzeugung der konvexen Hülle eines 3D-Objekts. 4. Methoden der Verfolgung und Codierung von Oberflächen im 3D-Raum. 5. Füllen des Inneren von Oberflächen im 3D-Raum. 6. Rekonstruktion von "farbigen" Bildern im nD-Raum. 7. Skelette in 2D und 3D.

  4. Inhalt 3 Anwendungen der Zellenkomlexe in der Computergrafik1. Klassifikation der digitalen Kurven.2. Zeichnen einer Kurve durch die Verfolgung ihrer Gleichung. 3. Subpixel-Daten und Antialiasing vom Standpunkt der Komplexe.Resümee 1. Einige offene Probleme. 2. Schlussfolgerung.

  5. Vorlesung 1:Einführung in die Topologie der lokal endlichen Räume

  6. Warum ist Topologie wichtig für die Bildanalyse? Man braucht folgende Begriffe: - zusammenhängende Mengen - Begrenzung einer Teilmenge - benachbarte Teilmengen - das Innere und das Äußere, usw. All das sind topologische Begriffe.

  7. Warum ist Topologie wichtig für die Bildanalyse? (Fortsetzung) Man braucht in der Bildanalyse und in der Computergrafik die Begriffe der zusammenhängenden Mengen, der Begrenzung einer Teilmenge, der benachbarte Teilmengen, des Inneren und des Äußeren, usw. All das sind topologische Begriffe. Topologie kann als die Geometrie auf einer Gummischicht betrachtet werden: Alle genannten Eigenschaften von Zeichnungen auf einer Gummischicht bleiben erhalten, wenn man die Schicht verzieht, ohne sie zu zerreißen. Genauer gesagt, topologische Eigenschaften sind invariant unter stetigen Transformationen des Raumes.

  8. Warum kann man die klassische allgemeine Topologie nicht benutzen? Die allgemeine Topologie betrachtet Räume, in welchen selbst die kleinste Umgebung eines Punktes unendlich viele andere Punkte enthält. Dies wird im Folgenden bewiesen. Es ist offensichtlich, dass solch ein Raum (und sogar sein kleinster Teil) nicht im Computer dargestellt werden kann. Deswegen braucht man die Topologie der sogenannten lokal endlichen Räume, in welchen die Umgebung eines Elements auch endlich viele andere Elemente enthalten kann.

  9. T0 T1 T2 Symbolische Darstellung der Trennungsaxiome Drei Versionen der Trennungseigenschaften von Räumen In einem zusammenhängenden T2-Raum muss jede Umgebung eines Punktes andere Punkte enthalten. Dabei soll es für beliebige zwei Punkte Umgebungen geben, die sich nicht überschneiden. Wenn eine Umgebung U(a) des Punktes a den Punkt b enthält, dann soll es auch eine kleinere Umgebung von a geben, die b nicht enthält. Sie enthält aber andere als a Punkte. Um diese von a zu trennen, wird eine kleinere Umgebung benötigt usw. ohne Ende. Daraus folgt, dass eine beliebig kleine Umgebung eines Punktes in T2 und in T1 unendlich viele Punkte enthaltenmuss. Weder ein T1- noch ein T2-Raum (oder die kleinste Teilmenge eines solchen Raumes) kann im Computer explizit dargestellt werden. Es bleiben nur die T0-Räume

  10. Eine Behelfslösung In den Jahren nach 1970 hat Azriel Rosenfeld die 4- und die 8-Nachbarschaft der Pixel in einem digitalisierten Bild vorgeschlagen. Er hat den Begriff eines m-Wegs als eine Folge von m-benachbarten Pixeln definiert, wobei m gleich 4 oder 8 ist. Er hat auch den m-Zusammenhang eingeführt: Eine Teilmenge S von Pixeln ist m-zusammenhängend, wenn sie für beliebige zwei Pixels aus S einen m-Weg von einem Pixel zum anderen enthält.

  11. Die m-Nachbarschaft in 2D digitalen Bildern Die allgemein bekannte Jordansche Eigenschaft einer einfachen geschlossenen Kurve: Die Kurve unterteilt den Rest der Ebene in genau zwei Komponenten. Eine einfache 4-Kurve macht drei Komponenten Eine einfache 8-Kurve macht eine Komponente Die “gemischte” (8, 4)-Nachbarschaft ist nur für binäre Bilder anwendbar.

  12. Das Zusammenhangs-Paradoxon der m-Nachbarschaft Unter der 4-Nachbarschaft sind sowohl die grüne als auch die rote Teilmenge nicht zusammenhängend. Unter der 8-Nachbarschaft sind beide zusammenhängend und das ist paradox. Ein widerspruchsfreier Zusammenhang kann definiert werden, wenn man die Zugehörigkeit des Punktes zu einer der Teilmengen angibt.

  13. Das Zusammenhangs-Paradoxon der m-Nachbarschaft (Fortsetzung) Der Begriff des m-Zusammenhangs hat sich als widerspruchsvoll erwiesen: Es ist bekannt (als das Jordansche Theorem), dass eine einfache geschlossene Kurve den Rest der Ebene in genau zwei zusammenhängende Teile (Komponenten) unterteilt. Eine einfache geschlossene Kurve unter der m-Nachbarschaft ist eine Folge von Pixeln, wobei jedes Pixel mit genau zwei Pixeln m-benachbart ist. Es existieren aber unter der 4-Nachbarschaft einfache geschlossene Kurven, welche den Rest der Ebene in mehr als zwei Komponenten zerlegen. Unter der 8-Nachbarschaft unterteilt eine einfache geschlossene Kurve die Ebene gar nicht. Wenn man vier Pixel betrachtet, die alle eine gemeinsame Ecke haben, sieht man das Zusammenhangs-Paradoxon wieder: Unter der 4-Nachbarschaft ist keines der “Diagonal-Paare” der Pixel zusammenhängend; unter der 8-Nachbarschaft sind sie beide zusammenhängend. Dabei schneidet ein 8-Weg den anderen solchen Weg ohne dass sie gemeinsame Elemente haben, und das ist ein topologisches Paradoxon.

  14. Das Zusammenhangs-Paradoxon der m-Nachbarschaft (Fortsetzung 2) Rosenfeld hat vorgeschlagen, “gemischte” Nachbarschaften zu betrachten: Die 8-Nachbarschaft für den Vordergrund des Bildes und die 4-Nachbarschaft für den Hintergrund oder umgekehrt. Dieser Vorschlag hat das Zusammenhangs-Paradoxon für Binärbilder beseitigt, aber es bleibt für Bilder mit mehr als zwei Werten (Farbbilder). Außerdem definiert die (m, n)-Nachbarschaft keine Topologie des Raumes, sondern eine “Topologie” von konkreten Teilmengen des Raumes: Sie ändert sich, wenn die Teilmengen sich ändern. Die Lösung des Paradoxons besteht darin, dass man außer Pixel auch Raumelemente anderer Arten betrachtet, nämlich die Punkte und die Cracks. (Ein Crack ist eine kurze Strecke zwischen zwei benachbarten Pixeln). Die Zugehörigkeit des Punktes zu einer der Teilmengen in dem Beispiel mit zwei diagonalen Pixelpaaren bestimmt den Zusammenhang der Paare widerspruchsfrei.

  15. Beispiele der Begrenzung unter der (m, n)-Nachbarschaft Die m-Begrenzung einer Teilmenge T ist die Menge der Elemente (von T ), welche m-Nachbarn im Komplement von T haben Die 4-Begrenzung ist nicht 4-zusammenhängend Die 8-Begrenzung ist keine einfache Kurve Die 4-Begrenzung einer Teilmengeunterscheidet sich von der ihres Komplements! Wenn man "von T" in der obigen Definition löscht, dann wird die Begrenzung dick.

  16. Begrenzungen unter der (m, n)-Nachbarschaft Die Begrenzung ist einer der für die Anwendungen wichtigsten topologischen Begriffe. Die Begrenzung (oder Frontier) einer Teilmenge T des Raumes S ist die Menge aller Raumelemente, deren jede Umgebung sowohl Elemente von T als auch von ihrem Komplement S–T enthält. In der Topologie der stetigen Räume besteht die Begrenzung einer Teilmenge der Ebene aus einer oder mehreren geschlossenen Kurven. Sie ist dünn, d.h. ihr Flächeninhalt ist gleich Null. Die Begrenzung ist die gleiche für die Teilmenge T und für ihr Komplement S–T, weil die obige Definition symmetrisch bezüglich T und S–T ist Wenn man die Umgebung eines Pixels P als die Menge der mit Pm-benachbarter Pixel (einschließlich P) betrachtet, dann wird die Begrenzung zu einem dicken Streifen zwei Pixel breit. Wenn man aber die Definition so ändert, dass die Begrenzung von T nur Pixel von T enthält, dann bekommt man zwei verschiedene Begrenzungen: Die Begrenzung von T unterscheidet sich von der Begrenzung des Komplements S–T. Dies ist auch ein topologisches Paradoxon.

  17. WiderspruchsfreieBegrenzungen Die Lösung dieses Problems besteht darin, dass man Umgebungen benutzt, welche auf einer antisymmetrischen binären Relation basieren: Wenn das Raumelement a zu der kleinsten Umgebung des Elements b gehört, dann gehört bnicht zu der kleinsten Umgebung von a. Es folgt aus dieser Antisymmetrie, dass ein solcher topologischer Raum Elemente mit verschiedenen kleinsten Umgebungen enthalten soll. Es sind dann Raumelemente verschiedener Arten.

  18. Lokal endliche Räume

  19. a b Lokal endliche Räume (LER) Definition: Eine nicht leere Menge S heißt ein lokal endlicher Raum, wenn jedem Element e von S bestimmte endliche Mengen von S als die Umgebungen von e zugewiesen sind. Der Autor hat in "Axiomatic Digital Topology", JMIV, v. 26, 2006, bewiesen, dass ein LER genau dann bestimmte für die Anwendungen wichtige Eigenschaften hat, wenn die Umgebungen folgende Bedingungen erfüllen: 1. Jedes Element a eines LER hat seine kleinste Umgebung SON(a). 2. Wenn aSON(b), dann bSON(a). 3. Die Relation aSON(b) ist transitiv. Ein LER ist ein klassischer T0-Raum. Ein LER versehen mit Dimensionen seiner Elemente heißt ein abstrakter Zellenkomplex.

  20. 2-dimensional nicht kartesisch 2-dimensional kartesisch 3-dimensional Weitere Definitionen Definition AC: Ein abstrakter Zellenkomplex C=(E, B, dim) ist eine Menge E abstrakter Elemente (Zellen) versehen mit einer antisymmetrischen, irreflexiven und transitiven binären Relation BEE, genannt Berandungsrelation, und mit einer Dimensionsfunktion dim:E I aus E in die Menge I der nicht negativen ganzen Zahlen, so dass dim(e')<dim(e") für alle Paare (e',e")B. Wenn (a, b)B dann schreibt man a<b oder man sagt, die Zelle a berandet die Zelle b. Solche Zellen heißen inzident zu einander. Beispiele von AC-Komplexen:

  21. Offene Teilmengen Ein digitalisiertes Bild wird als ein 2-dimensionaler Komplex betrachtet. Er enthält Zellen von drei Arten: Es sind Zellen der Dimensionen von 0 bis 2. Die 2-dimensionalen Zellen, oder 2-Zellen, sind die Pixel, die 1-Zellen nennt man Cracks und die 0-Zellen sind die Punkte. Ein Crack kann ein Pixel beranden, aber nicht umgekehrt. Ein Punkt kann sowohl einen Crack als auch ein Pixel beranden Definition OP: Eine Teilmenge OT von Zellen eines Teilkomplexes T eines Komplexes K heißt offen in T, wenn sie alle Zellen von T enthält, die von Zellen aus OT berandet werden. Eine n-Zelle zn eines n-dimensionalen Komplexes K n, auch Grundzelle genannt, ist eine offene Teilmenge von K n, weil zn keine Zellen von K n berandet. Definition SON: Die kleinste Teilmenge der Menge S , welche eine vorgegebene Zelle z von S enthält und offen in S ist, heißt die kleinste Umgebung (smallest (open) neighborhood) von z relativ zu S und wird mit SON(z, S) bezeichnet. Die SON eines Pixels ist das Pixel selbst. SONs von anderen Zellen sind auf einer der folgenden Folien dargestellt.

  22. e f p v Dimension von Zellen Die Dimension der Zellen stellt die Halbordnung dar, welche der Berandungsrelation entspricht. Man bezeichne die Folge a<b< ... <m von Zellen eines Komplexes K, wobei jede Zelle der Folge die nächste berandet, als Berandungsweg von a nach m in K. Die Anzahl der Zellen in der Folge minus eins heißt die Länge des Berandungswegs. Definition DZ: (Dimension einer Zelle) Die Dimension dim(z) einer Zelle z eines Komplexes K ist die Länge des längsten Berandungswegs in K, der mit z endet. Die Zeichnung zeigt einen Komplex und die Berandungsrelation seiner Zellen. Es gibt keinen Berandungsweg, der zur Zelle p führt; also ist ihre Dimension 0. Einer der längsten Wege, der zur Zelle v führt, ist (p, e, f, v). Seine Länge ist 3; demzufolge ist dim(v)=3. Die Dimension des Raumes ist die größte Dimension seiner Zellen.

  23. Die Begrenzung einer Teilmenge (grau) ist eine nicht zusammenhängende Menge abgeschlossener Punkte , was nur für einen ein-dimensionalen Raum charakteristisch ist. 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 Die Dimension der Zellen ist wichtig Nichtbeachtung der Dimension kann zu Fehlern führen. Es ist z.B. möglich, eine Topologie auf der Menge Znso zu definieren, dass ein Punkt mit einem ungeraden Wert von x1+...+xn (Quadrate in der Zeichnung) als offen und ein mit einem geraden Wert von x1+...+xn (Kreise) als abgeschlossen betrachtet wird.Das ist aber ein ein-dimensionaler Raum, der nicht zu der n-dimensionalen Menge Zn passt.

  24. Abschlüsse Abschlüsse und kleinste Umgebungen von Zellen

  25. Die rote Menge ist zusammenhängend, die blaue - nicht. Zusammenhang Ein Inzidenzweg ist eine Folge von paarweise inzidenten Zellen. Eine Menge M ist zusammenhängend genau dann, wenn für beliebige zwei ihrer Zellen ein Inzidenzweg in M existiert, der diese Zellen enthält. Die Zugehörigkeit der Zellen niederer Dimensionen wird entweder explizit oder mit Hilfe einer pauschalen Regel angegeben. So kann man z.B. sagen, "alle 0-Zellen gehören zu der roten Menge".

  26. Topologische Begrenzung einer Teilmenge Rote Linien zeigen die topologische Begrenzung (Frontier) des grau-schwarzen Komplexes. Definition: Die Begrenzung Fr(T, K) einer Teilmenge TK ist die Menge aller Zellen zK, deren kleinste Umgebungen SON(z,K) Zellen sowohl aus T, als auch aus dem Komplement K–T enthält. Die Begrenzung enthält keine Grundzellen (d.h. keine n-Zellen in einem n-Raum; keine Pixels in dem 2D-Raum).

  27. Offene Begrenzung einer Teilmenge Blaue Linien und Quadrate zeigen die offene Begrenzung des grau-schwarzen Komplexes. Sie enthält keine 0-Zellen. Definition: Die offene Begrenzung Op(T, K) einer Teilmenge T von K ist die Menge aller Zellen zK, deren Abschlüsse Cl(z, K) Zellen sowohl aus T als auch aus dem Komplement K–T enthalten

  28. Kartesische Komplexe und kombinatorische Koordinaten Ein kartesischer (a) und ein allgemeiner (b) Komplex. P ist eine 0-Zelle (ein Punkt), C1 und C2 sind 1-Zellen (ein horizontaler und ein vertikaler Crack), F ist eine 2-Zelle (ein Pixel).

  29. Kartesische Komplexe (Fortsetzung) Definition: Ein n-dimensionaler kartesischer Komplex K ist ein abstrakter Zellenkomplex, wobei die Menge seiner Zellen ein kartesisches Produkt der Mengen der Zellen von n eindimensionalen Komplexen Xi, i=1, 2, ..., n; ist. Die Dimension einer Zelle A=(a1, a2, ..., an) ist gleich der Summe der Dimensionen ihrer Komponenten a1, a2, ..., an. Die Berandungsrelation von K wird wie folgt definiert: Die Zelle A=(a1, a2, ..., an) berandet die Zelle B=(b 1, b2, ..., bn) genau dann, wenn für alle i, i=1, 2, ..., n; die Komponente ai die Komponente bi entgweder berandet oder mit ihr identisch ist. Dabei muss die Dimension von A kleiner als die von B sein. Diese Definition wird einfacher, wenn man die Relation „Seite von“ benutzt: Eine Zelle A heißt Seite der Zelle B genau dann, wenn A entweder die Zelle B berandet oder mit B identisch ist. Im letzteren Fall heißt A eine uneigentliche Seite der Zelle B. In dem kartesischen Komplex K ist die Zelle A=(a1, a2, ..., an) eine Seite der Zelle B=(b 1, b2, ..., bn) genau dann, wenn jedes ai für i=1, 2, ..., n; eine Seite von bi ist.

  30. Datenstrukturen

  31. Datenstrukturen Standard-Gitter geeignet zum Speichern von Bildern Kombinatorisches Gitter geeignet für geometrische Berechnungen Beide Gitter sollen gleichzeitig benutzt werden; der Übergang vom einem zum anderen ist einfach: xs=int(xk /2);ys=int(yk /2).

  32. F2 P3 P2 P1 F4 F3 F1 P4 K5 K4 K3 K2 K1 S K6 Bekannte Datenstrukturen • Run-length code • Crack code • n-G-map • Boundary representation Körper Körper Boundary representation

  33. M1 P M4 1 L R 4 2 L R 3 Liste der Verzweigungs- 1 L 1 P punkte (0-Blöcke) L 4 6 L 5 P 3 Marke Linien N SON - - 3 , + , P L L L 1 1 3 4 R 3 P R0 - 3 + , , + P L L L 2 2 1 2 5 M 5 - - 3 + , , P L L L 3 2 3 6 - 3 + , , + P L L L 4 4 5 6 M M L 2 3 2 Liste der Regionen (2-Blöcke): Liste der Linien (1-Blöcke) Liste der Regionen: Ind Pst Pend Rr Rl Start Ende L P P R R M M 1 1 2 0 1 1 1 L P P R R M M 2 2 3 0 3 2 3 L P P R R M M 3 3 1 0 2 4 4 - - L P P R R 4 1 4 1 2 Geometrische 2D-Blockzellenliste R 0 Metrik L P P R R M M 5 4 2 1 3 5 5 - - L P P R R 6 3 4 2 3

  34. Theorie der 3D-Blockzellenliste Theorem: Die Umgebung SON*(ck, Mn) einer k-Zelle ck mit 0kn1 einer n-Mannigfaltigkeit Mn ist В-isomorph zu einer (nk1)-dimensionalen Sphäre, wenn ck nicht zum Rand M n von Mn gehört. Die Menge Cl*(ck, M n) ist dann В-isomorph zu einer (k1)-dimensionalen Sphäre. Die Umgebung SON* einer 0-Zelle und die zu ihr B-isomorphe topologische Sphäre

  35. Planare Darstellung einer 2-Sphäre Für jeden zu einer 2-Sphäre B-isomorphen Komplex existiert eine planare Darstellung, d.h. er kann in der Ebene gezeichnet werden. Eine der Zellen soll dabei als die äußere Region dargestellt werden. Beispiel: Die Oberfläche eines Oktaeders kann als eine planare Karte gezeichnet werden

  36. 3D-Zellenliste 2 Körper V2 V1 P1 L2 F2 F5 F1 L1 F2 F5 L2 Entlang L2 F1 P5 P2 P4 P3 Liste der Körper (ähnlich der Liste der Punkte)

  37. Vorlesung 2:Einige einfache Algorithmen

  38. Regel für die Koordinatenzuweisung (4, 7) yk=6 5 4 3 2 (5, 7) (4, 6) xk = 2 3 4 5 6 7 8 Die Benutzung dieser Regel ermöglicht die Arbeit mit Zellen niederer Dimensionen im Standardgitter. xs=xk/2; ys=yk/2;

  39. Start Vordergrund Neg= (x+1, y-1) dir 3 P=(x, y) Pos= (x+1, y+1) positive für Computergrafik X 2 0 1 Verfolgung einer Begrenzung in binären 2D-Bildern Y Vier Richtungen von Cracks und die zwei Pixel Pos und Neg, die getestet werden sollen (Koordinatensystem der Computergrafik) Pseudo-code P.X=Start.X; P.Y=Start.Y; direction=1; // ”P” ist der laufende Punkt do { Pos=P+Positive[direction]; // ”Pos” ist das positive Pixel Neg=P+Negative[direction]; // ”Neg” ist das negative Pixel if (image[Pos/2]==foreground) // Pos/2 ist im Standardgitter direction=(direction+1) MOD 4; // positive Wendung else if (image[Neg/2]==background) // Neg/2 ist im Standardgitter direction=(direction+3) MOD 4; // negative Wendung P=P+step[direction]; // ein Schritt in die neue Richtung } while( P.X!=Start.X || P.Y!=Start.Y);

  40. Das Suchen positive für Computergrafik Suchen des Startpunktes für die Verfolgung Das Objekt des Vordergrunds bleibt auf der negativen Seite Um eine mehrfache Verfolgung zu vermeiden, sollen die bereits besuchten senkrechten Cracks markiert werden. Der Algorithmus ist etwas einfacher, wenn er nur an Übergängen vom Hintergrund zum Vordergrund starten soll.

  41. Verfolgung einer Begrenzung in binären 2D-Bildern Um den Startpunkt für die Verfolgung zu finden, muss das Bild Zeile für Zeile durchsucht werden. Wenn ein Vordergrundpixel unmittelbar nach einem Hintergrundpixel gefunden wurde, ist ein nach unten gerichteter Begrenzungscrack C gefunden. Der Startpunkt ist dann sein oberer Endpunkt. Die Verfolgung läuft in kombinatorischen Koordinaten. Der Algorithmus geht von einem Begrenzungspunkt zum nächsten entlang den Begrenzungscracks. Um den nächsten Begrenzungscrack zu erkennen, testet der Algorithmus zwei Pixel “Pos” und “Neg”, die vor dem aktualen Crack liegen. Der Algorithmus berechnet die Koordinaten dieser Pixel indem er die 2D-Vektoren “Positive[direction]” und “Negative[direction]” zum Vektor “P” des aktuellen Punktes addiert. Die Vektoren sind als kleine Felder von Konstanten definiert. Dann holt der Algorithmus die Grauwerte (oder Farben) aus den Pixeln des vorliegenden Bildes, indem er vorher die kombinatorischen Koordinaten von “Pos” und “Neg” zu Standardkoordinaten transformiert. Dies wird einfach durch eine Integer-Division durch 2 gemacht. Die Richtung des nächsten Cracks wird abhängig von den Werten von "Pos" und "Neg" bestimmt und durch eine Addition von 1 oder 3 modulo 4 zur aktuellen Richtung berechnet. Dann macht der aktuelle Punkt „P“ einen Schritt in der neuen Richtung. Der Prozess endet, wenn der Startpunkt wieder erreicht ist.

  42. Code von “Trace” in C++ // Schritt vom Punkt zum positiven Pixel: CPoint ToPos[4]={CPoint(1,1),CPoint(-1,1),CPoint(-1,-1)CPoint(1,-1)}; // Schritt vom Punkt zum negativenPixel: CPoint ToNeg[4]={CPoint(1,-1),CPoint(1,1),CPoint(-1,1)CPoint(-1,-1)}; // Schritt zum nächsten Punkt: CPoint Step[4]={CPoint(2,0),CPoint(0,2),CPoint(-2,0),CPoint(0,-2}; int Value(BYTE *img, int NX, int NY, CPoint P) { if(P.x>=0 && P.x<2*NX && P.y>=0 && P.y<2*NY) return img[P.y/2*NX+P.x/2]; return 0; // Die Funktion gibt den Wert der Zelle P zurück, falls P im Bild ist } int Label(BYTE *img, int NX, int NY, CPoint C)// Markierung eines Cracks { int Dimension=(C.x & 1)+(C.y & 1); if (Dimension!=1) { printf("Label: (%d,%d) is no crack. Stop\n",C.x,C.y); return -1; } img[C.y/2*NX+C.x/2]|=VERT; // Markierung eines Bits, z.B. VERT=1. return 1; }

  43. Code von “Trace” in C++ (Fortsetzung) C++ ohne MFC hat keine Klasse “CPoint”, deren Objekte als 2D-Vektoren mit Addition benutzt werden können. Wenn man eine “Konsole” benutzt, kann man die Klasse CPoint mit den Operatoren "+" und "!=" selbst definieren. Sonst muss man die Addition von Vektoren Komponente für Komponente machen. Dann soll man auch "BYTE" als "unsigned char" definieren. int Trace(BYTE *img, int NX, int NY, CPoint Start) { int cnt=0, rv, dir=1; iPoint P(Start); // laufender Punkt do { CPoint Pos=P+ToPos[dir]; // Pos und Neg sind Pixel CPoint Neg=P+ToNeg[dir]; int ValPos=Value(img, NX, NY, Pos); // Wert von img[Pos] int ValNeg=Value(img, NX, NY, Neg); // Wert von img[Neg] if (ValPos>0) dir=(dir+1)%4; // positive Wendung elseif (ValNeg==0) dir=(dir+3)%4; // negative Wendung CPoint C(P.x,P.y+1); // Crack unterhalb von P if (dir==1) rv=Label(img,NX,NY,C); if (rv<0) { printf(”Error at C=(%d,%d)\n",C.x,C.y); return -1; } P=P+Step[dir]; cnt++; } while(P!=Start) && cnt<1000); // Absicherung gegen tote Schleife return cnt; }

  44. Step Norm Out Cn–1 Cn–2 Inn color 2D-Schicht a b Verfolgung von Begrenzungen in nD-Bildern Der oben beschriebene Algorithmus hat einen Nachteil: Der Inhalt der Hilfsfelder ToPos[4], ToNeg[4] und Step[4] ist für die Verfolgung in einem 2D-Raum festgelegt. Man kann aber den Algorithmus so umgestalten, dass er ganz ohne diese Felder auskommt. Dadurch wird er für die Verfolgung von Begrenzungen in Räumen beliebiger Dimension und bei beliebiger Orientierung der Koordinatenachsen ohne jegliche Änderung anwendbar. Bei Dimensionen größer als 2 wird dann die Begrenzung in einer 2D-Schicht verfolgt.

  45. Parameter und Variablen des universellen Algorithmus Der Algorithmus bekommt als Parameter ein n-dimensionales Bild “image”. Es kann sowohl binär als auch "farbig" sein. Er bekommt außerdem die Vektoren Start, Norm und Step. Komponenten von Start sind die kombinatorischen Koordinaten einer (n–1)-dimensionalen Zelle in der Begrenzung einer n-dimensionalen Teilmenge S, deren Grundzellen den Wert “color” haben. Dieser Wert ist auch ein Parameter des Algorithmus. Die Zellen des Komplements von S können beliebige andere Werte haben. Der Algorithmus betrachtet die Grundzellen mit dem Wert color als Vordergrund und die anderen als Hintergrund. Am Anfang der Verfolgung wird der laufende Vektor Cn_1 (der auf eine (n1)-dimensionale Begrenzungszelle zeigt) gleich Start gesetzt. Der Einheitsvektor Norm ist die Außennormale von Cn_1 und der Einheitsvektor Step geht von Cn_1 zu einer (n–2)-dimensionalen Zelle, die mit Cn_1 inzident ist.

  46. Pseudo-Code von "TraceUni" void TraceUni(iVect Start, iVect Norm, iVect Step, int color, char image[]) { iVect Cn_1=Start, Cn_2, Ctest, Inn, Out, StepNew; do { Cn_2=Cn_1+Step; // Schritt zu der (n-2)-Zelle Cn_2 Ctest=Cn_2+Step; // Schritt zu der mit Cn_2 komplanaren (n-1)-Zelle Inn=Ctest-Norm; Out=Ctest+Norm; // zwei mit Ctest inzidenten Grundzellen // Die Werte von Inn und Out prüfen und die nächste Begrenzungszelle bestimmen: if (image[Out]==color && (image[Inn]==color || Cn_2InObject==TRUE) ) { Cn_1=Cn_2+Norm; StepNew=Norm; // Schritt zu der nächsten (n-1)-Zelle Norm=-Step; Step=StepNew; } // Cn_2InObject ist "wahr", wenn die Zelle Cn_2 zum Vordergrund gehört else if (image[Inn]!=color && (image[Out]!=color || Cn_2InObject==FALSE) ) { Cn_1=Cn_2-Norm; StepNew=-Norm; // Schritt zu der nächsten (n-1)-Zelle Norm=Step; Step=StepNew; } else Cn_2=Ctest; // Schritt zu der nächsten (n-1)-Zelle } while((Cn_1==Start)==FALSE ); // hält an, wenn Start wieder erreicht ist } // end TraceUni.

  47. Füllen des Inneren einer (n-1)-Mannigfaltigkeit(getestet für n=2,3,4) Um zu prüfen, ob eine n-Zelle P eines nD-Raumes im Inneren einer (n1)-dimensionalen Mannigfaltigkeit M liegt, genügt es, die Schnittstellen von M mit einem Strahl zu zählen, der von P bis zum Rand des Raumes geht, und die Parität zu prüfen. Das Zählen ist nur dann einfach, wenn der Raum ein Zellenkomplex ist. Sonst ist es schwer, zwischen einem Schnitt und einer Berührung zu unterscheiden: Der Pseudocode: Wähle eine Koordinatenachse A des Kartesischen Raumes, z.B. die X-Achse. Markiere alle (n1)-Zellen von M, deren Normale parallel zu A ist. for ( jede Zeile R parallel zu A ) { fill=FALSE; for ( jede n-Zelle Z in der Zeile R ) { if ( die erste (n1)-Seite von Z markiert ) fill = NOT fill; if ( fill==TRUE ) Z = Vordergrund; else Z = Hintergrund; } } Kein Problem in einem Komplex:

  48. Füllen des Inneren einer (n-1)-Mannigfaltigkeit Wenn eine Kurve als Folge von Pixeln vorliegt, dann ist es unmöglich, anhand einer einzigen Zeile zwischen einem Schnitt und einer Berührung zu unterscheiden. In der Tat, man sieht, dass jeweils die dritte Zeile in den zwei oberen Zeichnungen identisch ist. Für die Entscheidung müssen drei nacheinander folgende Zeilen untersucht werden. Aber, wenn man das Bild als einen Komplex darstellt, dann ist die Kurve eine Folge von abwechselnden 0- und 1-Zellen. Jetzt wird das obige Problem einfach, weil ein Strahl, der aus Pixeln und senkrechten 1-Zellen besteht, eine Kurve nur an einer 1-Zelle schneiden kann. Eine Berührung ist unmöglich. Vor dem Füllen sollen alle senkrechten 1-Zellen der Kurve, oder alle (n–1)-dimensionalen Zellen der Mannigfaltigkeit, die zu einer ausgewählten Koordinatenachse A orthogonal sind, in dem zu füllenden Bild markiert werden. Der Algorithmus durchläuft das Bild Zeile für Zeile parallel zu A. Am Anfang jeder Zeile wird fill=FALSE gesetzt. Jedesmal, wenn eine markierte Zelle vorkommt, wird fill invertiert: fill=NOT fill. Wenn fill wahr ist, wird die nächste Grundzelle mit dem Wert des Vordergrunds markiert, sonst mit dem des Hintergrunds.

  49. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 1 2 3 4 16 1 2 3 3 ? 14 14 14 1 2 2 ? 12 12 12 1 1 ? 10 10 14 12 10 Markierung der Komponenten in einem n-dimensionalen Raum Der Raum ist als ein n-dimensionales Feld S dargestellt. Die Indizes entsprechen den Koordinaten. Jedes Element von S enthält eine ”Farbe". Nach der Markierung soll jedes Element die Marke der Komponente bekommen, zu der es gehört (in einem anderen Feld L). Der naive Zugang: im Worstcase NY³/2 Änderungen Optimale Lösung: im Worstcase NX/2 Änderungen

  50. Markierung der Komponenten (Fortsetzung) Gegeben sei ein segmentiertes nD-Bild. Das Problem besteht im Finden der maximalen zusammenhängenden Teilmengen, wobei jede Teilmenge Grundzellen einer einzigen Farbe enthält. Das sind die Komponenten. Dann soll man die Komponenten nummerieren und jedem Element des Bildes die Nummer seiner Komponente zuweisen. Diese Nummern sollen in einem zusätzlichen Feld L gespeichert werden. Das Bild soll eine relativ kleine Anzahl von Farben enthalten. Sonst kann es passieren, dass z.B. jedes Pixel eines Farbbildes eine Komponente ist. Der naive Zugang besteht im Abtasten des Bildes Zeile für Zeile und im Zuweisen jedem Element (z.B. Pixel), welches mit keinem bereits besuchten Element der gleichen Farbe benachbart ist, der nächsten nicht benutzten Marke. Wenn das aktuelle Element E besuchte Elemente der gleichen Farbe in seiner unmittelbaren Umgebung hat und diese unterschiedliche Marken haben, dann bekommt E die kleinste dieser Marken. Alle in der Umgebung von E betrachteten Marken werden auch durch diese kleinste Marke im ganzen Bild ersetz. Diese Änderung kann im Worstcase (bei n=2) bis zu NY²/2 Pixel betreffen, wobei NY die Höhe des Bildes ist. Die Gesamtanzahl der Änderungen kann dann gleich NY³/2 werden.

More Related