Ideen für inen einfache, Verlustfreie komprimierung von 1Bit Bitmaps

OP Persönliche Seite #1022399
Lesenswert?

Hallo,
ich brauche ein paar Ideen/Ansätze zur komprimierung eines Bildes.
Dabei gelten folgende Vorgaben: Verlustfrei, möglichst wenig Ram 
verbrauch, wenn möglich 128Byte bis maximal(Schmerzgrenze) 512Byte.

ich will eine S/W-Bild, mit nur einem Bit Tiefe, also Schwarz oder Weiß, 
komprimieren, da ich nicht beliebig viel Speicher zur Verfügung habe.

Zeitverbrauch steht dabei nicht im Vordergrund.

Danke schonmal,
µluxx
Persönliche Seite #1022418
Lesenswert?

Empfängst du die Bilder oder sollen die fest gelagert werden? Wenn ja, 
reicht dir vielleicht auch Progmem. Sonst schaue dir die 
Huffman-Codierung an:
http://www.inf.fh-flensburg.de/lang/algorithmen/code/huffman/huffman.htm

Bringt einiges, wenn die Verteilung der S/W Pixel ungleich ist. Oder 
noch einfacher, wenn du extern einen I2C oder SPI FRAM/EEPROM anschließt 
:)
Persönliche Seite #1022602
Lesenswert?

Stefan Salewski wrote:
> Natürlich macht der Algorithmus für 8-Bit bei monochromen Grafiken nicht
> so viel Sinn, man sollte dann wohl einen passenden verwenden, siehe etwa
>
> http://www.binaryessence.de/dct/de000057.htm

Ja aber da hast du das Problem: es müssen mindestens 8 aufeiandefolgende 
Pixel gleich sein, damit sich das lohnt und man bei ner Rate von 1 ist.
Gerade bei kleinen Bildern (240x64 z.B.) ist das aber sehr schwer.
Vertikal müssen dann immer mind 8 pixel gleich sein, also immer 1/8 der 
Höhe, Vertikal 1/30... Und dann hat man noch immer ein Bild was genauso 
groß ist wie vorher!

Und klar kann man das auch horizontal, vertikal, wasweißich wie quer 
machen, wird dann aber nur für einige Bilder gehen.
Huffman funktiniert (zumindest bei mir) ganz gut, und man muß 
prinzipiell nur ein byte im SRAM halten, wenn man ein Device/Display hat 
wo man die Daten blockweise hintereinander hinschreiben kann.
#1022613
Lesenswert?

Läubi Mail@laeubi.de wrote:

> Ja aber da hast du das Problem: es müssen mindestens 8 aufeiandefolgende
> Pixel gleich sein, damit sich das lohnt und man bei ner Rate von 1 ist.

RLE muss man nicht byteweise durchführen. Als Bitstrom mit 
unterschiedlich langen Codewörtern in Huffman encoding klappt das 
besser. Ist allerdings langsam und braucht etwas mehr Code.

Dummerweise benötigen andere Komprimierer meist deutlich RAM.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren