mikrocontroller.net

Forum: PC-Programmierung schnelle Bilddatenkompression gesucht


Autor: sid (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Sid V. (sidvic)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.