Forum: Mikrocontroller und Digitale Elektronik Bild-Daten Kompression gesucht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Byte Sparer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe nicht im Internet gesucht da ich nicht weiss mit
welchen Kriterien und Begriffen ich suchen soll. Vielleicht
kann mir jemand helfen und mich drauf stossen.

Ausgangslage:

Durch Kodierung von 8 Pixeln in einem Byte erzeuge ich mir
bereits kompakte Grafiken mit 1 Bit Farbtiefe die ich durch
beliebige Wahl von Vordergrund- und Hintergrundfarbe auf einem
Farbdisplay darstellen kann.

Auf einem 320x240 Display sind das z.B. 76800 Pixels bzw 9600
Bytes. Diese Anzahl Bytes hätte ich gerne noch verlustfrei
komprimiert um Speicherplatz im Flash zu sparen.

Lässt sich da noch was machen ohne den Decodier-Aufwand im
Mikrocontroller groß werden zu lassen? Die Software soll ja
nicht so gross werden dass sie die Platzersparnis der
Grafik(en) auffrisst.

Habe leider keine Erfahrung damit und suche hiermit um Hilfe.

von Dussel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn die Graphik menschenlesbar sein soll, hast du wahrscheinlich lange 
Bereiche gleicher Farbe. Dann kannst du eine Lauflängenkodierung 
ausprobieren.

von Einer (Gast)


Bewertung
1 lesenswert
nicht lesenswert
wenn man vorher noch zeilenweise verXORt kann sich die datenmenge noch 
erheblich verkleinern.

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Schau Dir mal den Fax-Kompressions Algorithmus an.
Ansonsten: Huffmann - obwohl es für Bilder bessere gibt.

von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
Byte Sparer schrieb:
> Durch Kodierung von 8 Pixeln in einem Byte erzeuge ich mir
> bereits kompakte Grafiken mit 1 Bit Farbtiefe
>
> Auf einem 320x240 Display sind das z.B. 76800 Pixels bzw 9600
> Bytes. Diese Anzahl Bytes hätte ich gerne noch verlustfrei
> komprimiert um Speicherplatz im Flash zu sparen.
>
> Lässt sich da noch was machen ohne den Decodier-Aufwand im
> Mikrocontroller groß werden zu lassen?

Was du als "großen Aufwand" für den Decoder bezeichnest, ist natürlich 
Geschmackssache. Meine Empfehlung wäre, ein komprimiertes Bildformat aus 
dem PC-Bereich zu verwenden. Da kriegst du nämlich den Encoder frei 
Haus. Es muß ja nicht gerade DjVu oder PNG sein (obwohl die jeweils 
excellent komprimieren). Aber PCX ist bspw. hinreichend einfach 
aufgebaut und komprimiert ganz annehmbar.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ein ziemlich primitiver, aber daher auch mit wenig Softwareaufwand zu 
implementierender Kompressionsalgorithmus wurde in *.pcx-Graphikdateien 
verwendet.

http://www.fileformat.info/format/pcx/egff.htm

Wenn Du das auf monochrome Bitmaps begrenzt, und auf den Header 
verzichtest (alle Bitmaps haben die gleiche Größe, Farbpalette etc. ist 
entbehrlich), sollte, sofern Deine Bilder kein "digitales Rauschen" 
enthalten, das schon einiges bringen.

von Mampf F. (mampf) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Huffmann Kompression ist keine allzu komplexe Kompression :)

von Blaubär (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Wenn Du das auf monochrome Bitmaps begrenzt

Also sowas?

Yves Klein
Blue Monochrome
1961
https://www.moma.org/collection/works/80103

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Je nach Menge der Bilder koennte man sich auch an einem AT45DB041D, 
einem 512Kx8 Flasch im SO8 Gehause versuchen.

von Falk B. (falk)


Bewertung
1 lesenswert
nicht lesenswert
@Blaubär (Gast)

>Yves Klein
>Blue Monochrome
>1961
>https://www.moma.org/collection/works/80103

Mein Herr, ich glaube nicht, daß moderne Kunst ein Betrug ist. Ich weiß 
es.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Sabberalot W. schrieb:
> Je nach Menge der Bilder koennte man sich auch an einem AT45DB041D,
> einem 512Kx8 Flasch im SO8 Gehause versuchen.

Abgekündigt (EOL) laut Mouser.

Es gibt noch viel größere Flash ICs in SO8 oder vergleichbaren Packages, 
denn die Multi-MB großen PC BIOS (UEFI) werden damit gespeichert. D.h. 
viele MB zu annehmbaren Preisen, allerdings mit 3,3V Betriebsspannung.

Außerdem kann man über MicroSD Sockel nachdenken, dann hätte man GBytes 
Speicherplatz und könnte z.B. Animationen darstellen. Außerdem ließen 
sich darüber Firmware Updates leicht einspielen - einfach SDHC Karte 
wechseln. Die Software gibts mit FATFS praktisch fertich.

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]
  • [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.