Linien und Kurven erkennen

flacker

Mitglied
Hallo an alle,

folgendes Problem. Ich habe eine Punktsequenz welche eine beliebige Form widerspiegelt. Jetzt möchte ich aus dieser Punktsequenz gern alle Linien und Kurven herausfiltern.

Was ich bisher habe:
Am Anfang wird die Punktsequenz approximiert mittels Douglas-Peucker Algorithmus. Die so herausgefilterten Punkte werden nun untersucht.
Beispiel für Untersuchung:
Punkt p1 und p2 wurden durch Douglas Peucker herausgefiltert. p1 und p2 bilden eine gerade g1. Nun wird der Abstand jedes Punktes zwischen p1 und p2 zur geraden g1 berechnet. Diese werden alle aufaddiert und durch die Anzahl der Punkt zwischen p1 und p2 geteilt. Überschreitet der so ermittelte Wert eine bestimmte Grenze(die frei gewählt werden kann) nicht, handelt es sich um eine Gerade. Die Grenze ist dabei abhängig von der Länge der Geraden.

Dies ist noch ein Beispiel und ich habe noch anderen Vorgehensweisen probiert, jedoch liefert keine Variante ein zuverlässiges Ergebnis. Ab und zu wird alles richtig erkannt, jedoch wird auch oft etwas falsches erkannt.

Ich hoffe ich konnte das Problem verständlich erläutern. Kennt jemand vielleicht eine alternative Lösung die relativ zuverlässig geraden und Kurven erkennnt. Forschung in Richtung Sketched Recognition haben mich leider nicht weiter gebracht, da dort oft die Geschwindigkeit beim Zeichnen in die Berechnungen integriert werden. Ich habe jedoch nur eine simple Punktsequenz.

Sollten noch Fragen offen sein, werde ich diese natürlich gern beantworten.

MIt freundlichen Grüßen

Markus
 

keram

Aktives Mitglied
du könntest die Dimension jedes Punktes mit seinem Nachbarn vergleichen. Dabei musst du die Differenz der Punkte beachten. Berechnest du nun die Differenz zwischen der Differenz so wirst du ein Muster erkennen.

4 x x x o x x x x x Dif = 1;1
3 x x o x x x x x x Dif = 1;1
2 x o x x x x x x x Dif = 1;1
1 o x x x x x x x x Dif = 0
0 1 2 3 4 5 6 7 8 9

4 x x x x x x o x x Dif 2;1
3 x x x o x x x x x Dif 2;1
2 x o x x x x x x x Dif 1;1
1 o x x x x x x x x Dif 0
0 1 2 3 4 5 6 7 8 9
 

losgehts

Mitglied
Hallo,

ich habe selbst noch nie den Douglas-Peucker-Algo benutzt.
Was ich bisher habe:
Am Anfang wird die Punktsequenz approximiert mittels Douglas-Peucker Algorithmus. Die so herausgefilterten Punkte werden nun untersucht.
Beispiel für Untersuchung:
Punkt p1 und p2 wurden durch Douglas Peucker herausgefiltert. p1 und p2 bilden eine gerade g1. Nun wird der Abstand jedes Punktes zwischen p1 und p2 zur geraden g1 berechnet. Diese werden alle aufaddiert und durch die Anzahl der Punkt zwischen p1 und p2 geteilt. Überschreitet der so ermittelte Wert eine bestimmte Grenze(die frei gewählt werden kann) nicht, handelt es sich um eine Gerade. Die Grenze ist dabei abhängig von der Länge der Geraden.
Wenn du damit den Douglas-Peuker Algo beschreiben möchtest, dann hast du etwas falsch verstanden (sofern ich bei Wikipedia richtig nachgelesen habe):
Um herauszufinden, ob die Gerade eine adäquate Näherung für deine Punktewolke ist, wird bei Wikipedia der größte Abstand eines Punktes aller Punkte zur Geraden als Kriterium verwendet. Du verwendest den Mittelwert der Abstände als Kriterium.

Ich weiß ja nicht, wie deine Punktwolken erzeugt werden, doch wenn es keine Ausreißer gibt, dann wäre in meinen Augen der größte Abstand als Kriterium besser als der Mittelwert der Abstände.

Was meinst du dazu?

Grüße, Ulrich
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
R Warum werden hier nur die grün und orangen Linien ausgegeben und der Rest unten nicht? Java Basics - Anfänger-Themen 5
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
H Grafikaufgabe mit Linien und Kreisen Java Basics - Anfänger-Themen 5
P Per Button, Linien Hinzufügen und bearbeiten Java Basics - Anfänger-Themen 30
P Linien in 2.5D Java Basics - Anfänger-Themen 8
A Blitze mit Linien zeichnen Java Basics - Anfänger-Themen 15
C Graphics2D - DrawRect - Warum Linien teilweise gefüllt? Java Basics - Anfänger-Themen 12
R Kurze Linien alle x-Pixel Java Basics - Anfänger-Themen 2
B systemausgelöstes Uebermalen von Linien Java Basics - Anfänger-Themen 7
S linien Java Basics - Anfänger-Themen 3
N Linien zeichnen Java Basics - Anfänger-Themen 4
A double and add algorithmus für elliptische kurven/ integer binär darstellen Java Basics - Anfänger-Themen 14
P Kurven zeichnen Java Basics - Anfänger-Themen 5
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
B Zusammenhängende Blöcke bei x-gewinnt erkennen? Java Basics - Anfänger-Themen 14
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
Yasemin bahar Muster erkennen Java Basics - Anfänger-Themen 13
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N palindrom erkennen Java Basics - Anfänger-Themen 3
A Figur erkennen, aber Abweichung falsch Java Basics - Anfänger-Themen 2
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
P Eigenschaft eines imperativen Algo (Pseudocode) sofort erkennen Java Basics - Anfänger-Themen 1
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
S Java Großbuchstabe erkennen Java Basics - Anfänger-Themen 5
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
B Unterschiede in einer Liste erkennen Java Basics - Anfänger-Themen 1
O String: Befehl und Wert erkennen. Java Basics - Anfänger-Themen 4
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
J Leerzeichen im Pfad automatisch erkennen Java Basics - Anfänger-Themen 30
M Input/Output Zeilenumbrüche erkennen und beibehalten Java Basics - Anfänger-Themen 4
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
N Erkennen ob Linkshänder Maus Java Basics - Anfänger-Themen 4
L In Javakara Palindrom erkennen. Java Basics - Anfänger-Themen 9
B Tastatureingabe erkennen Java Basics - Anfänger-Themen 8
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
F Blinken oder Dauer ein erkennen Java Basics - Anfänger-Themen 6
T Richtigen Wert erkennen Java Basics - Anfänger-Themen 9
D Klassenmethode: Befehl erkennen, dann int zurückgeben Java Basics - Anfänger-Themen 2
S Laufzeitfehler erkennen Java Basics - Anfänger-Themen 3
T Erste Schritte Methoden anwenden und erkennen Java Basics - Anfänger-Themen 5
D Erste Schritte Array erkennen Java Basics - Anfänger-Themen 4
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6
N Erste Schritte Doppelwerte erkennen Java Basics - Anfänger-Themen 5
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
T Erste Schritte Leerzeile in JAVA erkennen /übergehen Java Basics - Anfänger-Themen 9
S Erkennen ob Zahl durch 500Teilbar ist Java Basics - Anfänger-Themen 21
Java-Insel StringBuilder Zeilenumbrüche erkennen Java Basics - Anfänger-Themen 3
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
X String Sonderzeichen/Zahlen erkennen Java Basics - Anfänger-Themen 3
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
M Betriebssystem erkennen? Java Basics - Anfänger-Themen 12
lumo Collections Array - erkennen von positionsänderungen Java Basics - Anfänger-Themen 5
M Muster erkennen. Idee: Fassade. Java Basics - Anfänger-Themen 3
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
Kukulkan Java-Version (ME, SE) erkennen und darauf reagieren? Java Basics - Anfänger-Themen 35
E Position erkennen und überlappungen feststellen Java Basics - Anfänger-Themen 4
3 Leerzeichen erkennen Java Basics - Anfänger-Themen 3
A Gruppen von Namen erkennen Java Basics - Anfänger-Themen 21
M In Router einloggen und PCs im Netzwerk erkennen Java Basics - Anfänger-Themen 18
M ziffer in zahl erkennen mit boolean Java Basics - Anfänger-Themen 12
D Zahl erkennen Java Basics - Anfänger-Themen 4
T Image Position erkennen Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
S Filelock erkennen Java Basics - Anfänger-Themen 6
A Angeschlossenes Gerät am Com Port erkennen Java Basics - Anfänger-Themen 4
L Zeilenwechselsequenz erkennen aus der Datei heraus Java Basics - Anfänger-Themen 2
S Erkennen der Eingabe Java Basics - Anfänger-Themen 13
G eine straße im kartenspiel erkennen (algorithmus) Java Basics - Anfänger-Themen 4
G Bildinformationan auslesen - OCR - Zahlen erkennen Java Basics - Anfänger-Themen 10
B Properties erkennen, auslesen Java Basics - Anfänger-Themen 7
M in Textfile Strukturen erkennen Java Basics - Anfänger-Themen 5
kulturfenster Teilstring erkennen Java Basics - Anfänger-Themen 5
L Laufwerksauswahl / Laufwerke erkennen Java Basics - Anfänger-Themen 3
B Threadende erkennen Java Basics - Anfänger-Themen 6
E Klassen erkennen in einer Aufgabenstellung Java Basics - Anfänger-Themen 6
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
H Zeilenanzahl eines Strings erkennen Java Basics - Anfänger-Themen 2
S Umlaute und Sonderzeichen erkennen Java Basics - Anfänger-Themen 12
C Erkennen einer gedrückten Taste Java Basics - Anfänger-Themen 6
S CD/DVD-Laufwerke erkennen mit Java Java Basics - Anfänger-Themen 3
R erkennen von Wortende Java Basics - Anfänger-Themen 5
N Veränderungen in JTextArea erkennen Java Basics - Anfänger-Themen 5
K Wortpaare in Texten erkennen Java Basics - Anfänger-Themen 8
C Japanische Zeichen erkennen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben