Forum: PC-Programmierung schnelle Bilddatenkompression gesucht


von sid (Gast)


Lesenswert?

Hallo, ich suche eine leistungsfähige Library (C/C++) welche Bilddaten 
(VGA-Auflösung, grayscale) in weniger als 5ms pro Bild komprimieren 
kann.
Kann mir hier jemand einen Tip geben? Kann auch verlustbehaftete 
Kompression sein, allerdings sollte die Kompression dem Originalbild 
wenig Rauschen zufügen. (zB.: ähnlich JPEG mit hoher 
Qualitätseinstellung)

(Hintergrund: ich muss mehrere tausend Bilder im RAM zur 
Weiterverarbeitung halten, da wäre eine Kompression sinnvoll. Allerdings 
habe ich ein relativ enges Zeitfenster.)

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Auf einem 1 Mhz 286er oder wie?

Also ohne Angabe der Rahmenbedingungen ist die angabe "weniger als 5ms" 
arg unbrauchbar. Hast du den schon verschiedene Standardverfahren 
ausprobiert?
Das begrenzende wird eher die I/O Performance sein, wieso überhaupt 
alles manuell im RAM halten und nicht vieleicht über MemoryMapped File 
oder sowas?

von Volker Z. (vza)


Lesenswert?

1. Du hast nicht gesagt auf welcher Maschine es laufen soll. So kann 
keiner sagen ob der Algorhitmus es in 5ms schaft. Es wird sich aber auch 
keiner die mühe machen es extra für Dich aus zuprobieren.
2. Als Faustformel kann man sagen: Je stärke die Kompression, desto 
länger dauert sie!

Also Welche Kompression brauchst du?

Ansonsten ist http://de.wikipedia.org/wiki/Bildkompression immer ein 
guter einstieg in eine Thematik.

von Karl H. (kbuchegg)


Lesenswert?

Auch wichtig:
Was ist auf den Bildern drauf?

Je nach Bildtyp kann ein ziemlich simples Run Length Encoding schon 
Wunder wirken (viele gleichartige Pixel hintereinander).

von Klaus W. (mfgkw)


Lesenswert?


von Sid V. (sidvic)


Lesenswert?

So hab mich mal angemeldet. Danke für eure Antworten. Die Image 
Magick-Library sieht vielversprechend aus!

Also der Rechner ist ein "normaler" Desktop PC (3.0GHz DualCore,4GB 
RAM,sehr gute GraKa, Win32).
Die I/O Leistung ist mehr als ausreichend. (Anbindung der Kamera über 
GigabitEthernet)Ein unkomprimiertes Bild capturen (nicht speichern!) 
dauert weniger als 1ms. Sorry das diese Angaben noch fehlten..

Die Bilder sind Graustufenaufnahmen von bewegten Objekten (max. 200fps).
RLE ist da kein guter Ansatz. Die Bilder sind zwar meistens wenig 
verrauscht haben allerdings kaum Bereiche in denen RLE greift.

Was ich bisher versucht habe:
Speichern als JPG,TIFF,PNG in einen Stream. JPG und PNG sind zu 
langsam.TIFF ist zwar schnell aber gar nicht/kaum komprimiert.

Dann hab ich noch verschiedene allgemeine Kompressionsalgorithmen 
probiert:
Huffman - ausreichend schnell, Kompressionsrate nicht so toll
fastLZ,quickLZ - auch ausreichend  schnell, Kompressionsrate nicht so 
toll

ich werd mal die ImageMagick-Library probieren.

von Εrnst B. (ernst)


Lesenswert?

> ... sehr gute GraKa ...
Das wär doch ein Ansatz, wenn du die Bilder schnell genug in die Karte 
kriegst, die komprimiert dir das nebenbei weg, ohne ins Schwitzen zu 
kommen.
Evtl. lassen sich sogar fertige Texturkompressions-Funktionen aus 
DirectX verwenden.

von JojoS (Gast)


Lesenswert?

für Graustufen Bilder eignet sich der Intel-Indeo (Ligos) Codec sehr 
gut. Der wandelt die Bilder auch nicht in 24Bit RGB um wie es einige 
andere Codecs machen. Der Indeo 5.1 hat eine 'Quickcompress' Option mit 
der die Umwandlung sehr schnell geht. Auch wenn er für Motion gedacht 
ist kann man damit gut einzelne Bilder komprimieren. Nervig ist nur 
dieser Lizenzkrieg, für XP sollte die Liz. vom mitinstallierten nicht 
mehr gelten aber MS hat den doch nachliefern müssen weil der auch von 
vielen Spielen genutzt wurde. Ob er jetzt ab Vista noch drin ist weiss 
ich nicht. Intel hatte den Codec an Ligos abgegeben und es gab ein Setup 
von Ligos um den nachträglich zu instalieren. Und die 'Quick Compress' 
war wichtig wenn die SW 24x7h läuft, ohne Quick ist der Codec nach 
einigen Stunden abgestürzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.