AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objektverfolgung

Ein Thema von Funk · begonnen am 25. Feb 2006 · letzter Beitrag vom 27. Mär 2006
Antwort Antwort
Seite 2 von 2     12   
Funk

Registriert seit: 25. Feb 2006
11 Beiträge
 
#11

Re: Objektverfolgung

  Alt 18. Mär 2006, 16:38
Hallo,
habe jetzt ein kleines Programm geschrieben, wo ich mein Bild in 4 Flächen aufteile und jeweils von der Fläche den mittleren Grauwert errechne. Doch ich bekomme nicht die gewünschte Werte heraus.
Delphi-Quellcode:
procedure TForm1.GrauwertClick(Sender: TObject);
var
a,b,c,d,x,y,Grauwert1,Grauwert2,Grauwert3,Grauwert4:integer;
G: PByteArray;
begin
Grauwert1:=0; Grauwert2:=0; Grauwert3:=0; Grauwert4:=0;
a:=TestImage.Picture.Bitmap.Width;
b:=TestImage.Picture.Bitmap.Height;
c:= round(TestImage.Picture.Bitmap.Width/2);
d:= round(TestImage.Picture.Bitmap.Height/2);

 for y := 0 to d do
  begin
     G := TestImage.Picture.Bitmap.ScanLine[y];
     for x := 0 to c do
    begin
      Grauwert1:=Grauwert1+G[x];
    end;
     for x := c to a -1 do
    begin
      Grauwert2:=Grauwert2+G[x];
    end;
 end;
 for y := d to b-1 do
  begin
  G := TestImage.Picture.Bitmap.ScanLine[y];
     for x := 0 to c do
    begin
      Grauwert3:=Grauwert3 + G[x];
    end;
     for x:= c +1 to a -1 do
    begin
      Grauwert4:=Grauwert4+G[x];
    end;
 end;
  Form1.Label1.Caption:=floattostr(Grauwert1 div (d * c));
  Form1.Label2.Caption:=floattostr(Grauwert2 div (d * c));
  Form1.Label3.Caption:=floattostr(Grauwert3 div (d * c));
  Form1.Label4.Caption:=floattostr(Grauwert4 div (d * c));
end;
Bekomme nur ein richtiges Ergebnis, wenn das Objekt unten-links oder oben-Links positioniert ist.
Sobald das Objkt nach rechts verschoben wird bekomme ich falsche Werte!
Was mache ich falsch?
Meine Idee ist das ich die Veränderungen des mittleren Grauwerts der einzelnen Flächen vergleiche, und somit Auswertungen treffe.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Objektverfolgung

  Alt 18. Mär 2006, 16:51
Kannst du mir zwei geeignete Bilddateien zur Verfügung stellen?

Grüße vom marabu
  Mit Zitat antworten Zitat
Funk

Registriert seit: 25. Feb 2006
11 Beiträge
 
#13

Re: Objektverfolgung

  Alt 19. Mär 2006, 00:49
Hier die gewünschten Bilder!
Angehängte Grafiken
Dateityp: bmp 4_154.bmp (297,1 KB, 115x aufgerufen)
Dateityp: bmp 3_134.bmp (297,1 KB, 97x aufgerufen)
Dateityp: bmp 2_214.bmp (297,1 KB, 89x aufgerufen)
  Mit Zitat antworten Zitat
Funk

Registriert seit: 25. Feb 2006
11 Beiträge
 
#14

Re: Objektverfolgung

  Alt 26. Mär 2006, 01:45
Hallo,
da ich mit ScanLine falsche Ergebnisse bekomme, habe ich das ganze jetzt mit Canvas.Pixel gemacht. Doch das ist mir etwas zu langsam. Ich beobachte schon nicht das ganze Bild, sondern einen Bereich im Zentrum.
Gibt es da eine andere Möglichkeit? Nur jeden zweiten Pixel auslesen???(immer noch zu langsam!!!)

Gruss
Funk
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Objektverfolgung

  Alt 26. Mär 2006, 01:49
Die Hier im Forum suchenGraphics32-Bibliothek sollte da auf jeden Fall Abhilfe schaffen, das ist die höchstopimierte (hochoptimierteste? am höchsten optimierte?) Graphikbibliothek, die ich kenne
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Objektverfolgung

  Alt 26. Mär 2006, 11:14
Scanline sollte eigentlich keine falschen Werte zurück liefern da es ja direkt einen Pointer auf den Speicher zurück liefert. Der fehler sollte also in der Art der Verwendung von Scanline liegen. Poste einfach mal wie du mit Scanline versuchst auf das Bild zu zugreifen und vielleicht findet sich der Fehler. Ich vermute das du dich mit einer falschen Pixelgröße von Pixel zu Pixel hangelst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: Objektverfolgung

  Alt 26. Mär 2006, 12:38
Hallo Funk,

habe dich ein wenig aus dem Auge verloren. Im Anhang findest du eine kleine Demo, die den ersten Teil meiner Vorgehensweise aus Beitrag #10 implementiert.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip dip_424.zip (2,9 KB, 56x aufgerufen)
  Mit Zitat antworten Zitat
Funk

Registriert seit: 25. Feb 2006
11 Beiträge
 
#18

Re: Objektverfolgung

  Alt 27. Mär 2006, 21:57
Hallo marabu,

erstmal vielen Dank für das Programm! In meine Quellenangabe schreibe ich dann "marabu"!

Zitat:
...aus dem du dann das bounding rectangle für das observierte Objekt berechnen kannst. Der Schnittpunkt der Diagonalen könnte der Zielpunkt für die Neuausrichtung des Objektivs sein
So wie ich es verstehe, das dunkelste Rechteck(in meinem Fall) wird dann ins Zentrum positioniert! Oder was hast du damit gemeint?

Gruß Funk
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#19

Re: Objektverfolgung

  Alt 27. Mär 2006, 22:37
Eine Zentralpositionierung ist eine gute Idee, wenn das "Objekt" langsam im Vergleich mit der Stellgeschwindigkeit der beiden Schrittmotoren ist. Wenn nicht, dann wird eventuell ein wenig künstliche Intelligenz gefragt sein.

Gute Nacht

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:43 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