Hallo
Ich habe ein Problem seit Tagen.
Ich müsste ermitteln welche blaue Linie sich rechts oder links von der schwarzen Hauptlinie befindet.
Abstand Zwischen den blauen und schwarzen Linie ist bekannt.
Denkrichtung der schwarzen Linie ist immer vom Kreis zum Endpunkt der Linie.
Wie macht man sowas?
Mfg
Gerry
Was kriegt der, der diese Frage versteht?
Hast du ein Bild oder Geradengleichungen? Das macht einen fundamentalen Unterschied.
Wozu braucht man den Abstand?
Es sind auf beiden Seiten Linien, was soll man hier tun?
Was ist wenn die Linien horizontal verlaufen und es kein links&rechts gibt?
Guten Morgen,
wenn sich deine Frage auf ein Bild bezieht, dann könnten folgende Google Matches möglicherweise helfen:
AForge.Net:
Detecting straight lines in an image
Das könnte auch eine Lösung werden:
OCR Line Detection
Berichte doch bitte über den Status wie du weiter kommst, finde ich interessant! Ich habe eventuell bald etwas ähnliches zu erledigen, ich soll eingescannte Line-Charts in "Rohdaten" transformieren, damit diese in einer Datenbank abgelegt und gesucht werden können. Das wird sicher spannend, da die Dokumente teileweise >20 Jahre sind.
Gruß
Christoph
Hi Gerry100,
mit ein bißchen Vektorrechnung kannst du die Positionen der blauen Linien berechnen. Angenommen, du hast eine schwarze Linie mit dem Anfangspunkt A und dem Endpunkt B, dann kannst du den Richtungsvektor D der Linie folgendermaßen berechnen:
D = Normalize(B - A)
Daraus kannst du dann die beiden Vektoren berechnen, die von der Linie aus nach rechts und links zeigen:
RightVector = new Vector(D.Y, -D.X)
LeftVector = new Vector(-D.Y, D.X)
Die Abstände der blauen Linien sind gegeben, daher kannst du die Anfangs- und Endpunkte der blauen Linien berechnen:
A1 = A + (distanceRight * RightVector)
B1 = B + (distanceRight * RightVector)
bzw.
A2 = A + (distanceLeft * LeftVector)
B2 = B + (distanceLeft * LeftVector)
Jetzt kannst du die Anfangs- und Endpunkte der vorhandenen Linien mit den berechneten Punkten vergleichen, um die existierenden blauen Linien zu finden. Dazu solltest du eine bestimmte Toleranz mit einbeziehen, da durch die Berechnung u.U. Ungenauigkeiten verursacht werden.
Da mir allerdings auch nicht klar ist, was du eigentlich als Ausgangsdaten vorliegen hast, brauchst du ggf. weitere Schritte, um an die Positionen der Linien zu kommen. Liegt dir bspw. nur ein Bitmap mit den Linien vor, mußt du vorher Bilderkennungs-Algorithmen verwenden, um die Linien zu extrahieren.
Weeks of programming can save you hours of planning