AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Videoanalyse (ähnlich wie Lichtschranke)

Videoanalyse (ähnlich wie Lichtschranke)

Ein Thema von Ilmug3 · begonnen am 19. Dez 2015 · letzter Beitrag vom 4. Jan 2016
Antwort Antwort
hathor
(Gast)

n/a Beiträge
 
#1

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 19. Dez 2015, 21:24
Da war ein m verlorengegangen.
Übrigens:
Bei Dir ist ein e verlorengegangen.
  Mit Zitat antworten Zitat
Ilmug3

Registriert seit: 19. Apr 2015
7 Beiträge
 
#2

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 19. Dez 2015, 22:29
Danke für den Hinweis.
Erste Versuche habe ich jetzt schon gemacht.
Bildvergleich mit Scanline gibt gute Ergebnisse. Danke für den Tipp.
Meine Überlegung war weiterhin, einen kleinen Ausschnitt (30*30 Pixel) vom Desktop in die Anwendung zu kopieren
und dort mit dem hinterlegten Bild des Ausschnitts ohne Auto zu vergleichen.

Ich habe mich aus Faulheit für den Desktop entschieden. Dann muss ich mich nicht mit irgend welchen Videosstreams in Delphi rumschlagen,
sondern lasse den Stream im Browser anzeigen und kopiere es von dort in die Delphianwendung. Verschieben, darf man dann das Browserfenster natürlich nicht mehr.

Bedient habe ich mich bei diesen Codezeilen
_______________________________________
function GetScreenShot: TBitmap;
var
Desktop: HDC;
begin
Result := TBitmap.Create;
Desktop := GetDC(0);
try
try
Result.PixelFormat := pf32bit;
Result.Width := Screen.Width;
Result.Height := Screen.Height;
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
Result.Modified := True;
finally
ReleaseDC(0, Desktop);
end;
except
Result.Free;
Result := nil;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Bitmap := GetScreenShot;
end;
_______________________________

Leider scheint die Prozedur denn Speicher nicht ordentlich aufzuräumen,
denn nach einigen Sekunden (Scannrate 100ms) gehen mir die Ressourcen aus.
Die Probleme tauchen immer dort auf, wo man sie nicht vermutet
Ich muss vielleicht noch etwas mit FreeAndNil arbeiten.
Das werde ich morgen testen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 20. Dez 2015, 04:26
Leider scheint die Prozedur denn Speicher nicht ordentlich aufzuräumen,
denn nach einigen Sekunden (Scannrate 100ms) gehen mir die Ressourcen aus.
Das ist einer der fiesen Fälle, wo eine Funktion eine Instanz als Result zurück gibt. Es gibt hier in der DP ein paar Diskussionen dazu, die sich damit befassen wer denn in so einem Fall nun für das Aufräumen dieser Instanz zuständig ist. Um den Code von GetScreenShot() nicht anfassen zu müssen, schlage ich folgende Lösung vor:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
begin
  bmp := GetScreenShot;
  if Assigned(bmp) then
  begin
    try
      Image1.Picture.Bitmap.Assign(bmp);
    finally
      bmp.Free;
    end;
  end;
end;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Ilmug3

Registriert seit: 19. Apr 2015
7 Beiträge
 
#5

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 20. Dez 2015, 08:44
Danke Medium.
Du hast meinen Sonntag gerettet.
Das Aufräumen mit deinen Code funktioniert hervorragend.
Der Rest ist jetzt noch die übliche Fleißarbeit (hoffe und befürchte ich).

Beim nächsten unvorhergesehenen Problem melde ich mich
  Mit Zitat antworten Zitat
Ilmug3

Registriert seit: 19. Apr 2015
7 Beiträge
 
#6

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 22. Dez 2015, 12:42
Tja - so einfach wie Hänschen sich das vorstellt, ist es nicht.

Wenn das ganze auf dem Desktop läuft, sieht es wunderbar aus.
Da ist ja auch die Anzeige statisch und der Unterschied zwischen dem Referenzbild und dem beobachteten Bild ist bei 0%. Wenn sich etwas bewegt, schnellt der Wert sofort auf 50-100%.

Bei der Betrachtung eines Streams der Webcam hab ich schon im Normalfall eine Differenz bei 50-60% der Pixel (Bildrauschen). Wenn sich dann etwas durch den Erfassungsbereich bewegt, steigt der Wert um gerade mal 2-3%.

Schlimmer noch ist die grottige Framerate der Webcam. Schnelle Objekte springen manchmal direkt über den Erfassungsbereich hinweg ohne eine Reaktion auszulösen.
Ich glaube, ich gehe nochmals in die Planungsphase.

Aber Danke für die Tipps.
Dazugelernt habe ich in jedem Fall.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 22. Dez 2015, 19:16
Tja - so einfach wie Hänschen sich das vorstellt, ist es nicht.
Eine der wichtigsten, universellen Weisheiten

Zitat:
Bei der Betrachtung eines Streams der Webcam hab ich schon im Normalfall eine Differenz bei 50-60% der Pixel (Bildrauschen). Wenn sich dann etwas durch den Erfassungsbereich bewegt, steigt der Wert um gerade mal 2-3%.
Ein erster möglicher Schritt wäre es, das Bild von der Cam zunächst durch einen milden Gauss-Filter zu jagen um alles ein wenig geschmeidiger zu machen.

Zitat:
Schlimmer noch ist die grottige Framerate der Webcam. Schnelle Objekte springen manchmal direkt über den Erfassungsbereich hinweg ohne eine Reaktion auszulösen.
Das ist leider ein weit größeres Problem, und ließe sich vermutlich nur mit einer besseren Cam (bzw. schnellerem Übertragungsweg, je nach dem was dir die Framerate versaut) zufriedenstellend lösen.

Nicht ganz unwichtig ist auch, wie du Farbunterschiede errechnest. Es kann z.B. schon hilfreich sein statt im RGB z.B. im YCC Farbraum zu arbeiten, da man dort mal damit spielen kann, ob eher Farb- oder eher Helligkeitsunterschiede zu gewichten sind.

Wie machst du das mit dem Referenzbild eigentlich? Weil da kommen dann ja noch so lustige Sachen wie Tageszeitabhängige Beleuchtung mit rein, vor allem abends auch die Lichtkegel der Autos, oder gar Straßenlaternen die zu einer komplett anderen Farbwiedergabe führen als Sonnenlicht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (22. Dez 2015 um 19:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 22. Dez 2015, 20:00
Zitat:
Bei der Betrachtung eines Streams der Webcam hab ich schon im Normalfall eine Differenz bei 50-60% der Pixel (Bildrauschen). Wenn sich dann etwas durch den Erfassungsbereich bewegt, steigt der Wert um gerade mal 2-3%.
Ein erster möglicher Schritt wäre es, das Bild von der Cam zunächst durch einen milden Gauss-Filter zu jagen um alles ein wenig geschmeidiger zu machen.
Um die 2-3% wegzuglätten

Du hast nicht erläutert, wie du den Vergleich nun machst. Zählst du die Pixel die nicht genau gleich sind? Das klingt definitiv nicht robust genug.

Abgesehen von der schlechten Framerate kannst du probieren, an der Kamera den Helligkeitsausgleich ausschalten und den Autofokus ausmachen.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 3. Jan 2016, 13:00
Schlimmer noch ist die grottige Framerate der Webcam. ...
Die Framerate ist in der Regel von der Auflösung abhängig. Kleinere Auflösung höhere Framerate. Eventuell zwei Kameras verwenden. Eine mit geringerer Framerate, welche auch einen geringeren Erfassungsbereich haben kann, für die Erkennung der ersten Bewegung und die zweite macht dann zwei Bilder für die Auswertung.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: Videoanalyse (ähnlich wie Lichtschranke)

  Alt 4. Jan 2016, 01:41
Die Framerate kam ins Spiel, weil der TE beiläufig geäussert hatte dass sie so schlecht ist, dass ihm teilweise ganze Autos in voller Länge durch den Erfassungsbereich "hüpfen". Das muss Hardwareseitig (bzw. Netzwerkseitig) behoben werden. Nicht dran aufhängen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:48 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-2025 by Thomas Breitkreuz