AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Lineare Steigung eines schwarzen Balkens in einer BMP finden
Thema durchsuchen
Ansicht
Themen-Optionen

Lineare Steigung eines schwarzen Balkens in einer BMP finden

Ein Thema von Alex_ITA01 · begonnen am 19. Sep 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Lineare Steigung eines schwarzen Balkens in einer BMP finden

  Alt 19. Sep 2007, 09:51
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
Angehängte Grafiken
Dateityp: bmp waagerecht_103.bmp (281,3 KB, 35x aufgerufen)
Dateityp: bmp linear_336.bmp (281,3 KB, 37x aufgerufen)
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi

  Alt 19. Sep 2007, 10:35
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.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#3

Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi

  Alt 19. Sep 2007, 10:40
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
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi

  Alt 19. Sep 2007, 10:46
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:
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
Hier wäre der Versatz 2 zu 6 also 3%


//Edit: ... huch, wo kommen die beiden neuen Beiträge her ? Kein roter Kasten...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#5

Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi

  Alt 19. Sep 2007, 11:12
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
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#6

Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi

  Alt 19. Sep 2007, 13:14
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
Angehängte Dateien
Dateityp: zip linie_709.zip (4,1 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#7

Re: Lineare Steigung eines schwarzen Balkens in einer BMP fi

  Alt 19. Sep 2007, 14:16
Danke schön!
Werde es mir schnellstmöglich angucken.
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz