![]() |
Lineare Steigung eines schwarzen Balkens in einer BMP finden
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,
ich habe folgendes Problem. Ich soll in einer BMP ein waagerechten schwarzen Balken erkennen. Dann soll geprüft werden, ob der schwarze Balken mindestens 3 Pixel "hoch" ist. Das kann ich alles. Ist also kein Problem! Jetzt kommts aber... Dieser Balken kann jetzt über die komplette Bildbreite linear ansteigen. Das heißt, er ist nicht mehr ganz waagerecht sondern nach 500 Pixeln (auf die Breite bezogen) steigt er 1 Pixel an und verläuft da weiter waagerecht. Die "Höhe" des Balkens verändert sich auch nach dem Anstieg nicht. Dort sind auch alle 3 Pixel vorhanden (nur eben alles 1 Pixel höher). Wisst ihr, ob es eine Funktion in Delphi gibt, die mir ein linearen Trend ausrechnen kann? Das heißt ich will wissen, ab welcher Spalte (in Pixel) ich nicht mehr waagerecht sondern eben ein Pixel weiter oben und dann wieder waagerecht gucken muss. Ich habe mal zwei Grafiken angehängt. Beide besitzen ein gültigen Balken (in dem Beispiel glaube nur 2 Pixel hoch). Nur das zweite Bild steigt eben minimal an über die Balkenlänge. Ich hoffe ihr versteht mein Problem und könnt mir helfen. MFG Alex |
Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi
Hallo,
lt. Deiner Aussage kannst Du ja den Anfang der Linie in jedem Fall erkennen, egal ob linear ansteigend, oder nicht. Wenn Du nun dieser Linie folgst, bis zu dem Punkt, wo sich der Farbwert ändert, 1. prüfst Du das Pixel oberhalb auf die Ursprungsfarbe und gehst ggf. dort dann waagerecht weiter (Anstieg nach oben) - wenn diese Prüfung fehlschlägt 2. prüfst Du das Pixel unterhalb auf die Ursprungsfarbe und gehst ggf. dort dann waagerecht weiter (Anstieg nach unten). Wenn eine dieser beiden Varianten anschlägt, erhöhst Du einen Zähler - dieser stellt dann die Anzahl der Steigungen dar. Die Höhe wäre dann am Ende = Zähler + 1. Das Prozedere betreibst Du so lange, bis Du weder nach oben, noch nach unten Deine Ursprungsfarbe widerfindest, also sowohl 1. als auch 2. fehlschlagen. Denn dort ist dann die Linie zu ende. Dieses Vorgehen gilt nur für einen Anstieg von einem Pixel! Sollte der Anstieg > 1 Pixel sein, musst Du ggf. in beide Richtungen bis zum Rand Deines Canvas prüfen. |
Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi
Danke erstmal für den Tip.
Werde mir das mal durch den Kopf gehen lassen. Ich habe bei Excel eine Funktion gefunden (RGP) die eine Matrix von Punkten benötigt und dann einen linearen Trend ausgibt. Eventuell gibts sowas ähnliches in Delphi... Viele Grüße Alex |
Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi
Aslo wenn es nur um den Ansieg geht brauchst du ja nur das Bild am Anfang und am Ende scannen,
vorrausgesetzt der Balken ist immer über die gesammte Bilsbreite. Das liest du in ein kleines 2D Array. Dann kannst du prüfen ob a) die Pixel in der Höhe 3 entspricht und b) den Versatz zum anfang errechnen.
Code:
Hier wäre der Versatz 2 zu 6 also 3% :gruebel:
Bildbegin | Bildende
0 0 0 0 0 1 0 1 0 1 0 0 1..............0 1 0 1..............0 0 0 0 0 1 = farbe des Balkens war schwarz / 0 = nix //Edit: ... huch, wo kommen die beiden neuen Beiträge her ? Kein roter Kasten... :gruebel: |
Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi
Leider geht der schwarze Balken nicht über die komplette Bildbreite.
Er verläuft nur ungefähr so, wie in meinen angehängten Beispielen... Gibts denn eine ähnliche Funktion wie bei Excel? Viele Grüße, Alex |
Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ob es eine derartige Funktion gibt, weiss ich nicht. Ich habe ein Beispiel angehängt - so würde ich es machen. Einfach 'Draw' klicken, um die Linie zu zeichnen. Dann 'Check' klicken, und im Memo schauen, wo es einen Anstieg bzw. Abstieg gibt. Mit den Endkoordinaten.Y (Default 98 ) kannst Du rumspielen, um die Steigung zu ändern. Edit: Ich hoffe, Du kommst ohne Kommentare klar. Edit: neue Version des Beispiels hochgeladen |
Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi
Danke schön!
Werde es mir schnellstmöglich angucken. MFG Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz