Einzelnen Beitrag anzeigen

hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Picture unterteilen in kleine Bereiche

  Alt 16. Sep 2020, 20:02
Hallo liebe Community,
PS. der Sinn dahinter ist, dass ich diese 6 Bereiche nachher auf Unterschiede zum vorherigen Bild prüfen will, da ich das jede Sekunde ausführe...
Und später dann nur die Entscheidenen Bereiche speichere.
Das ganze als JPG zu kodieren kostet Zeit und ist in diesem Fall ineffizient.

Wenn es sich um eine eher statische Szene handelt bei der nur einzelne Objekte bewegt werden, die Kameraposition (sofern vorhanden) fest ist bzw. sich nur wenige Pixel von Bild zu Bild verändern, dann hilft der folgende Ansatz:

Speichere das erste Bild bzw. ein Indexbild. Vergleiche das Bild und das darauf folgende Bild Punkt für Punkt miteinander - das kannst Du machen indem Du die Bildpunkte voneinander abziehst - dabei ergibt sich ein Wert von 0 für Bereiche in denen das Urbild und das darauf folgende Bild gleich sind. Unter den genannten Voraussetzungen ist das gesamte Bild 0 bis auf jene Bereiche in denen Bewegung stattfinden. Also meist viele 0

Dieses "Unterschiedsbild" kannst Du mittels Lauflängenkodierung komprimieren und speichern. Diese Art der Kodierung ist sehr effizient und schnell wenn es viele sich wiederholende Bereiche gibt. Dazu könntest Du Bildpunkte bzw. Reihen von Bildpunkten mit Hilfe von zwei Zahlen speichern. Die erste gibt an wie oft der nachfolgend Wert wiederholt wird:

Beispiel:

0000000011115745599000000000000 (30 Bytes) = 0800,0301,0105,0107,0104,0205,0209,1200 (12 Bytes)

Zur Dekodierung nimmst Du das letzte erhaltene Bild und addierst einfach die sich ergebende Unterschiedswerte. Dieses "neue" Bild ist dann gleichzeitig wieder der Ausgangspunkt für den nächsten Dekodiervorgang.

hth HaJoe
  Mit Zitat antworten Zitat