Discussion:
Suche "Fraktale Dimension" einer geschlossenen Kontur
(zu alt für eine Antwort)
Edzard Egberts
2018-02-08 15:47:58 UTC
Permalink
Ich suche einen Kennwert, der mir angibt, wie "verwinkelt" eine
geschlossene Kontur ist, also etwas wie (Fläche der Kontur) / (Länge der
Kontur), das sollte aber größeninvariant sein:

Die einfachste Kontur wäre ein Kreis, wenn ich da aber (pi*r*r)/(2*pi*r)
-> r/2 bestimme, sieht man sofort, dass meine Kennzahl vom Radius und
nicht von der Form abhängig wäre. Ich suche aber einen Wert, der mir
z.B. für den Kreis 1 angibt, für ein Quadrat 2, für einen Stern 3 und
für irgend ein Gekrakel etwas wie 100 angibt (alle Zahlen nur nur
Verdeutlichung rein aus der Luft gegriffen).

Fällt hier jemand etwas dazu ein?

Die "Fraktale Dimension" aus dem Subject ist das sicher nicht, da sich
da die Länge mit dem Maßstab verändert. Damit könnte ich aber nichts
anfangen, ein kleines Quadrat soll den gleichen Wert wie ein großes
Quadrat ergeben und wird bei Vergrößerung nicht komplizierter, wie z.B.
eine Küstenlinie.
Detlef Müller
2018-02-08 17:47:57 UTC
Permalink
Hallo, Edzard
Post by Edzard Egberts
Ich suche einen Kennwert, der mir angibt, wie "verwinkelt" eine
geschlossene Kontur ist, also etwas wie (Fläche der Kontur) / (Länge
Gibt es irgendwelche Vorgaben für das untersuchte Gebilde?

So etwas wie ein durch eine Jordan-Kurve begrenztes Gebiet?
(https://de.wikipedia.org/wiki/Jordan-Kurve)
Post by Edzard Egberts
Die einfachste Kontur wäre ein Kreis, wenn ich da aber
(pi*r*r)/(2*pi*r) -> r/2 bestimme, sieht man sofort, dass meine
Kennzahl vom Radius und nicht von der Form abhängig wäre.
Irgendwie käme mir der Gedanke, die Länge der Randkurve zu
nehmen und mit dem maximalen Durchmesser zu normieren.
Post by Edzard Egberts
Ich suche
aber einen Wert, der mir z.B. für den Kreis 1 angibt,
Das ergäbe dann Pi, etwa 3.1416
Post by Edzard Egberts
für ein Quadrat 2,
Da wäre es 4/sqrt(2), etwa 2.8284

Für ein gleichseitige Dreiecke käme 3 heraus, für gleichschenklige
etwas zwischen 2 (Grundseite gegen 0) und 4 (Grundseite gegen 2r für
die Seitenlänge r).
Post by Edzard Egberts
für einen Stern 3 und für irgend ein Gekrakel etwas wie 100 angibt
(alle Zahlen nur nur Verdeutlichung rein aus der Luft gegriffen).
Mein Konstrukt scheint nicht wirklich das zu sein, was Du suchst,
oder?
Post by Edzard Egberts
Fällt hier jemand etwas dazu ein?
Wie wäre denn Dein Vorschlag, daß der Umfang in Relation
zur umschlossenen Fläche die gesuchte Größe ist?
Die Abhängigkeit vom Maßstab könnte durch normieren mit einer
linear vom Maßstab abhängige Größe, z.B.
eben den Umfang oder die Wurzel aus der Fläche (um Invarianz gegen
Skalierung zu erhalten).

Nach meiner Intuition sollte diese Größe Abweichungen von der
"heiligen Kreislinie" sozusagen "bestrafen".
Post by Edzard Egberts
Die "Fraktale Dimension" aus dem Subject ist das sicher nicht, da
sich da die Länge mit dem Maßstab verändert.
Die Fraktale Dimension ist doch vom Maßstab unabhängig.
Die wäre aber für alle Deine Beispiele 1, was wiederum nicht in
Deinem Sinne zu sein scheint.
Post by Edzard Egberts
Damit könnte ich aber
nichts anfangen, ein kleines Quadrat soll den gleichen Wert wie ein
großes Quadrat ergeben und wird bei Vergrößerung nicht komplizierter,
wie z.B. eine Küstenlinie.
Die Fraktale Dimension x einer Küstenlinie ist nicht vom Maßstab
abhängig.

Sie gibt vielmehr gewissermaßen an, daß sich die Länge, gemessen im
Maßstab 1 beim Übergang zum Maßstab r nach der Formel
l(r) = r^x * l(1)
ändert.

Gruß,
Detlef
--
Dr. Detlef Müller,
http://www.mathe-doktor.de oder http://mathe-doktor.de
Edzard Egberts
2018-02-08 18:25:59 UTC
Permalink
Post by Detlef Müller
Hallo, Edzard
Post by Edzard Egberts
Ich suche einen Kennwert, der mir angibt, wie "verwinkelt" eine
geschlossene Kontur ist, also etwas wie (Fläche der Kontur) / (Länge
Gibt es irgendwelche Vorgaben für das untersuchte Gebilde?
Es handelt sich um Wolken. Ich zerlege ein Graustufenbild in Scheiben
und aus den Scheiben ziehe ich Konturen. Für einzelne "Objekte" ergibt
das einen Baum von geschachtelten Konturen, z.B. einen "Trichter" um die
Sonne, oder Wolken mit Löchern. Eine Mindestfläche der Konturen ist
vorgegeben und ich mache mir Gedanken über den Rand:

Die Konturen möchte ich filtern, also z.B. die Sonnenposition auswerten
nach "hat Zacken" oder "ist runder Fleck". An Datenreduktion habe ich
auch gedacht, also das "Objekt" auf die einfacheren Wolkenränder
beschränken.

Fläche durch Länge bringt eigentlich schon ordentliche Resultate, aber
dann wollte ich für die Konfiguration des Grenzwertes den Wertebereich
nachrechnen und bin auf dieses Skalierungsproblem gestoßen. Die
Auswertung soll sich ja nicht verändern, wenn das Foto mit anderer
Auflösung gemacht wird.

Deine Anregungen sind interessant, da muss ich aber morgen früh noch
einmal drüber nachdenken...
Jens Kallup
2018-02-08 21:11:04 UTC
Permalink
Hallo Edzard,

schauts mal hier:
https://github.com/paule32/keyBase/tree/master/tools

wenn Fragen, dann hier.
Danke

Jens
Edzard Egberts
2018-02-09 07:18:54 UTC
Permalink
Post by Jens Kallup
Hallo Edzard,
https://github.com/paule32/keyBase/tree/master/tools
Nee, kannst Du völlig knicken! Ich arbeite mit der OpenCV, aber Wolken
sind reichlich speziell, z.B. versagen alle Methoden zur
Kantendetektion: ÜBERRASCHUNG - Wolken haben keine Kanten! Bei
Auswertung der Farbkanäle ist das offensichtlich (Visualisierung als
Ratio-Image).

Auch die Hu Moments haben mich zur Verzweiflung getrieben, beim
Konturenvergleich kommen da absolut keine vergleichbaren Werte heraus,
nur Datenmüll. Ich wickele die Konturen jetzt als Graph ab
("parallelisieren"), gebe die Differenzen in eine Standardabweichung und
teile durch den Mittelwert, diese Varianz ist sogar gut genug für die
Auswahl von Konturen zur stereoskopischen Höhenbestimmung.

Die ganze Konturenmethode war ein Verzweiflungsschritt,weil die
Rayleigh-Streuung die Helligkeitsverteilung komplett vermurkst:

Eigentlich müsste man so etwas wie schiefe Kegelschnitte machen, wobei
der Kegel mit der Sonne wandert. Da sind ein paar Meteorologen sogar auf
die Idee gekommen, durch Korrektur mit "Clear Sky" diese
Helligkeitsverteilung einfach abzuziehen. Hört sich toll an, aber sobald
ein Cirrus im Bild ist und das Licht etwas umleitet, ist die ganze
Helligkeitsverteilung im Eimer - funktioniert also nur für ganz
spezielle Wettersituationen.

Quantisierung und Segmentierung habe ich auch durch, erst mit den
Konturen bin ich weiter gekommen, aber noch nicht fertig. Das Problem
besteht darin, dass man bei jedem Schnitt Artefakte rein aus der
Helligkeitsverteilung bekommt und die aussortiert werden müssen. An
dieser Stelle kommt Fläche/Länge ins Spiel, weil Konturen in Gradienten
besonders "zackig" sind.

Ich werde jetzt erst einmal sqrt(Fläche)/Länge versuchen - nachdem ich
mittelprächtig geschlafen habe, bin ich der Meinung, dass mein
Skalierungsproblem an der quadratischen Fläche liegen müsste...
Edzard Egberts
2018-02-09 07:24:03 UTC
Permalink
Post by Edzard Egberts
Ich werde jetzt erst einmal sqrt(Fläche)/Länge versuchen - nachdem ich
mittelprächtig geschlafen habe, bin ich der Meinung, dass mein
Skalierungsproblem an der quadratischen Fläche liegen müsste...
Öhm, das war ja einfach, die Wallung hier hätte ich mir sparen können! :o/

Kreis hat den Wert 0.28, unabhängig vom Radius...
Rainer Rosenthal
2018-02-09 11:49:45 UTC
Permalink
Post by Edzard Egberts
Ich werde jetzt erst einmal sqrt(Fläche)/Länge versuchen - nachdem ich
mittelprächtig geschlafen habe, bin ich der Meinung, dass mein
Skalierungsproblem an der quadratischen Fläche liegen müsste...
Klingt nach einem interessanten Projekt.

Für harmlose Gebilde wie Kreis oder Rechteck ist es eine bekannte
Tatsache, dass die Fläche F quadratisch wächst bei Vergrößerung,
der Umfang U aber linear. Somit ist das Verhältnis V = F/U^2 konstant.

Der Kreis hat maximales V = Pi*r^2 / (2*Pi*r)^2 = 1/a*1/Pi = 0.08.
Das Quadrat hat V = a^2 / (4*a)^2 = 1/4*1/4 = 0.063.
Veränderst Du das Quadrat zum Rechteck, indem Du die Länge a lässt,
aber die Breite als a*x wählst, dann wird V = 1/4*x/(1+x)^2.

Gruß,
Rainer

P.S. Sehe gerade, dass Du nochmal geschrieben hattest.
Das Verhältnis 0.28 kriege ich allerdings nicht heraus :-)
Edzard Egberts
2018-02-09 12:20:23 UTC
Permalink
Post by Rainer Rosenthal
Post by Edzard Egberts
Ich werde jetzt erst einmal sqrt(Fläche)/Länge versuchen - nachdem ich
mittelprächtig geschlafen habe, bin ich der Meinung, dass mein
Skalierungsproblem an der quadratischen Fläche liegen müsste...
Klingt nach einem interessanten Projekt.
Jetzt, wo es funktioniert, macht es Spaß, aber vorher musste ich mir
wochenlang Algorithmen ausdenken und ausprobieren, das war eine Quälerei.
Post by Rainer Rosenthal
Für harmlose Gebilde wie Kreis oder Rechteck ist es eine bekannte
Tatsache, dass die Fläche F quadratisch wächst bei Vergrößerung,
der Umfang U aber linear. Somit ist das Verhältnis V = F/U^2 konstant.
Das Verhältnis 0.28 kriege ich allerdings nicht heraus :-)
Du rechnest ja auch "V = F/U^2", während ich "V = sqrt(F)/U" rechne, das
ist für r zwar auch konstant, ergibt aber andere Werte. Mir erscheint es
irgendwie plausibler, das quadratische Wachstum zu linearisieren, statt
einen zusätzlichen quadratischen Term einzuführen.

Lesen Sie weiter auf narkive:
Loading...