AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bild mit JEDI ZLib komprimieren

Bild mit JEDI ZLib komprimieren

Ein Thema von ByTheTime · begonnen am 16. Nov 2012 · letzter Beitrag vom 18. Nov 2012
Antwort Antwort
Seite 1 von 2  1 2   
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#1

Bild mit JEDI ZLib komprimieren

  Alt 16. Nov 2012, 22:48
Hallo,
ich würde gerne ein Bild komprimieren, da ich esüber INDY TIdTCPClient als MemoryStream verschicke. Mir fallen 2 Möglichkeiten ein:

1. Mit den CompressionIntercepts der Indy's, leider kenne ich mich damit nicht aus.
2. Oder der ZLib Komponente, der JEDI's.

Als alternative wäre noch die Versionen, mit ZLib, etc. die hier im Forum zu finden sind. Aer was würdet ihr mir empfehlen. Das mit den Indy-Intercepts hört sich vielversprechend an, aber mir geht es im weitetsen Sinn um die Geschwindigkeit und die beste verkleinerung. Dehalb frag ich euch, was am geeignetsten wäre.

Danke,
Lukas
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Bild mit JEDI ZLib komprimieren

  Alt 16. Nov 2012, 22:54
ZLib sollte bei XE2 dabei sein, verwendung von TZCompressionStream gibt einen 3 Zeiler.
Die Frage ist was für Bilder Du verschicken möchtest, wenn es beispielsweise JPG's sind bringt das Zippen eh nichts mehr.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#3

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 10:39
Es sind BMP's und die sind natürlich etwas füllig
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#4

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 13:11
PNG ist bei XE2 auch mit dabei.
- verlustlos
und
- Komprimierung ist gleich eingebaut
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#5

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 17:38
Ja, aber ich bastel an einem Chat via. WebCam. Ich kriege, kommt drauf an wie es gerade "rutscht", ca. 1 Bild pro Sekunde. Kleinere Intervalle habe ich nocht nicht ausprobiert. Ich kreige das Bild als BMP von der Kamera. Es ist ca. 1MB groß, bei einer Auflösung von 640x480. Soll ich es jetzt eurer Meinung nach in PNG komprimieren oder mit ZLib oder doch JPEG? Mir geht es in erster Linie um die Qualität der Kompression und die Geschwindigkeit dieser. Ich möchte erstmal die Bildrate optimieren, bevor ich auf die Qualität des Bildes eingehe.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 17:42
Das klingt als bräuchtest du einen Video-Codec, keinen Bild-codec.
Der Unterschied ist gewaltig, weil erstere viel besser darauf optimiert sind, aufeinanderfolgende Frames stark zu komprimieren.
Das Problem ist, dass gerade die guten Codecs nicht "einfach so" zu haben sind. Du könntest mal gucken ob es VP8 für Delphi gibt.

Geändert von jfheins (17. Nov 2012 um 17:46 Uhr)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#7

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 17:50
Also ich habe mich hier bedient und hier hatte ich mal einen Thread dazu. Dreht sich alles um den DirectX Port hier aus dem Forum. Ich schicke Befehle mit den Sockets, diese starten dann die Cam, bzw. stoppen sie. Also ich denke, dann mangelt es doch eher an der Übertragungsgeschwindigkeit, als am Codec, oder reden wir gearde anneinader vorbei.
Lukas
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#8

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 17:54
Habe hier was gefunden. Keine Ahnung warum das von Google ist, aber ich kann mal reinschauen. Hast recht, die guten Codecs sind teuer! Hier einer für Delphi. Free To Try, aber kostet voll 700$
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 20:50
Ich kreige das Bild als BMP von der Kamera
Nun dann ist ja schon mal geklärt, welche Art vom Komprimierung angewendet werden sollte.
Es verlustlose und verlustbehaftete Komprimierung.
Bei Bildern von einer Webcam greift man ganz klar zur verlustbehafteten Komprimierung weil man damit wesentlich höhere Komprimierungsgrade erreichen kann.
Das heisst in der Praxis JPEG.

Die JEDI ZLib ist nicht das richtige Werkzeug zum Komprimieren von Bildern einer Webcam.
Der nächste Schritt wäre also das Bitmap in ein TJpegImage zu konvertieren (property CompressionQuality auf 30 einstllen) und zu schauen wie gross das JPeg wird.

Geändert von sx2008 (17. Nov 2012 um 20:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#10

AW: Bild mit JEDI ZLib komprimieren

  Alt 17. Nov 2012, 22:09
Man kann auch, wenn man verlustfreie Kompessionsverfahren nutzt, nur Differenzbilder verschicken.

Vollbild machen
komprimieren (PNG, auch Bitmap+ZLib oder so)
verschicken

Bild machen
Differenzbild zum Vorherrigen berechnen
komprimieren
verschicken

Bild machen
Differenzbild zum Vorherrigen berechnen
komprimieren
verschicken

...

alle paar Bilder ein Vollbild schicken, um Übertragungs-/Rechenfehler auszugleichen



So ähnlich machet es auch MPEG, nur daß die es noch mit einer Art JPeg-Komprimierung verbinden (alle paar Frames dann ein Vollbild, weil ja bei JPeg rechenfehler durch die Komprimierung entstehen)

Wenn man da noch die Farbtiefe verringert, kleines Rauschen aus dem Quellbild entfernt und eventuell auch noch andere kleiner Differenzen einfach weglässt, dann kann man die Daten im Differenzbild verringern und somit die Komprimierung verbessern



Im Grundprinzip machen die Videokodecs auch nichts Anderes.

Das "Weglassen" kann man auch noch, wie bei MP3 geziehlt behandeln.
- nicht zufällig alles verkleinern, sondern geziehld sowas weglassen, was das menschliche Auge vermutlich eh nicht sieht/mitbekommt

Und abhängig von der möglichen Datenrate kann man dann auch noch die Bildqualität verringern.
- kommen zu wenige Bilder die Sekunde rüber, wird die Qualli schlechter, bis eine Mindestbildrate erreicht wird und bei "zu vielen" Bildern wird sie wieder besser.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 09:46 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