AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Streifen in Bitmap finden
Thema durchsuchen
Ansicht
Themen-Optionen

Streifen in Bitmap finden

Ein Thema von ari-rakete · begonnen am 11. Aug 2009 · letzter Beitrag vom 11. Aug 2009
Antwort Antwort
ari-rakete

Registriert seit: 10. Aug 2009
1 Beiträge
 
#1

Streifen in Bitmap finden

  Alt 11. Aug 2009, 18:22
Hallo Leute,

ich bin in Delphi ein Neueinsteiger und muss jetzt ein Programm entwickeln wo ich nicht weiter komme , was folgende Aufgaben hat:


Ich suche Anregungen um meine Streifen (haben unterschiedliche Grauwerte, die ich mit einem entsprechenden Programm in einen bestimmten Wert umwandeln kann) in einen Bitmap zu ermitteln und zu charakterisieren...

- die Streifen (orderschiedliche Anzahl je nach Bild) sollen als Rechtecke in ein Bitmap gefunden werden
quasie der höchsten, die breitesten und tiefsten Punkte sollen Maßstab für das Rechteck haben
_____
|..xxx..|
|xxx...|
|..xx..|
|xxxxx|
-------
x:=Pixel
Probleme sind:
- die Streifen können sich überlagern oder unterbrochen sein, obwohl sie
zusammen sind; sie können unterschiedlich breit und lang sein (siehe Bild)

- wenn ich ein Pixel nach Spalte und später Zeile abfrage, muss das erste Pixel nicht das Höchste, Breiteste oder tiefste eines Rechteckes sein
- Pixel müssen so zusammen gehören, dass sie oberhalb oder unterhalb des Pixels ist.

- wenn das Programm alles durchläuft soll es feststellen ob der Pixel schon sich in einem Rechteck
befindet;
wenn nein soll er es als neues Rechteck speichern (quasi in ein Array mit laufender Nummer)
--> Ständig aktualisieren

- als weiteres sollen die Rechtecke markiert und gespeichert werden (mit ihren Koordinaten), damit
ich es später mit einen Kreuzkorrelationsprogramm mit dem anderen Bild (das zeitgleich in der
gleichen Ebene aufgenommen wurde) vergleichen werden kann um später die 3
Richtungskoordinaten im Raum zu errechnen und es in 3D darstellen kann

ich habe es schon mit Schleifen probiert, aber meine Variante ist nicht die beste mit 4 Schleifen...

Kann mir jemand Tipps geben, wie ich es umsetzen kann?!

Danke.

Ariane

Code:

type
coordinate = record
x:Integer;
y: Integer;
end;
type
rechteck = record
linksOben = coordinate;
rechtsoben = coordinate;
linksUnten = coordinate;
rechtsUnten = coordinate;
end;
TForm1 = class(TForm)
    BildLaden: TButton;
    Image1: TImage;
    RechteckSuchen: TButton;
    Image2: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    Memo1: TMemo;
    NeuesBildSpeichern: TButton;
    procedure BildLadenClick(Sender: TObject);
    procedure SpeichernNeuesBildClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    x,y,r,g,b:Integer;
    Bildname: String;
    Verzeichnis: String;
    Bildauswahl: String;
    Bitmap: TBitmap;
    Procedure BildpunkteFinden;

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{--}
function TForm1.BildpunkteFinden(bitmap: TBitmap): TBItmap;


type
    PCardinalArray= ^TCardinalArray;
    TCardinalArray= array[0..MaxInt shr 3-1] of Cardinal;


Var
   x,y:Integer;
   a,b:Integer; //überschreiben//
   v:Array of coordinate;
   ScanLine:PCardinalArray;
    rechteck:rechteck

begin
SetLength(v,100);
     for y:=0 to Bitmap.Height-1 do
      begin
           ScanLine:= Bitmap.ScanLine[y];
           for x:=0 to Bitmap.Width-1 do
           if ScanLine[x]>=250 then //Grauwert später über einen Scroll bestimmen bzw. einstellen//
            begin
                rechteck.linksoben.x:=x;
      rechteck.linksoben.y:=y;
      for a:=x to Bitmap.Width-1 do
      begin
      Inc(a); //wird um eins hochgezählt
      if ScanLine[a]>=250 then
      begin
         rechteck.rechtsoben.x:=a;
         rechteck.rechtsoben.y:=y;
      else
         begin
            break;
         end;
      
             
      end;
            end;
      end;
end;

{--}
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Streifen in Bitmap finden

  Alt 11. Aug 2009, 18:35
Such dir da was aus: http://de.wikipedia.org/wiki/Kantenerkennung
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Streifen in Bitmap finden

  Alt 11. Aug 2009, 19:09
.. und hier findest Du eine Implemetierung des Sobel-Operators.

Grüße
Klaus
Klaus
  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 23:35 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