Digitale Bildverarbeitung in C++ thema Kompression
-
Hallo zusammen,
ich muss ein Programm schreiben, welches ich mit verschiedene Verfahren z.B. LZW oder Huffman oder RLE Bitmap dateien kompremieren kann.
Dazu muss ich das aber erstmal alles verstehen. Gibt es tutoriels die sich mit Bitmapverarbeitung für C++ ausernandersetzten? Wie lese ich ein Bitmap aus? Wie kann ich aus einer Bitmapgraphic Pixelinformationen auslesen? Wie schneide ich z.b. ein Bild kleiner?Das sind so grundlegende Dinge, die ich erstmal können muss.
Für jede Hilfe bin ich dankbarmfg Juan
-
Warum so speziell auf C++ fixiert? Das ist doch in jeder Sprache in etwa gleich.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ìch muss das Programm in C++ im Borland Builder schreiben...
Gibts denn jetzt irgendwo ein tutoriel?Wo finde ich am besten Algorithmen RLE, LZW, HUFFMAN usw?
danke im vorraus

-
Über google.de
-
Die verschiedenen Kompressionsalgorithmen kannst du dir eigentlich alle über Wikipedia aneignen. Ansonsten gibts auch so Seiten wie datacompression.info.
-
Zum einlesen kannst du die DevIL verwenden, oder eine andere geeignete Library.
http://openil.sourceforge.net/
Wenn du das alles selbst Programmieren möchtest auch fein, is halt viel mehr Arbeit, und du wirst in kurzer Zeit kaum mehr hinbekommen als eine BMP Reader für nicht komprimierte Formate.Nach dem auslesen hast du dann üblicherweise ein paar Infos über das Bild, wie z.B. Breite, Höhe, Farbtiefe, Format, und eben einen Zeiger auf die eigentlichen Bilddaten. Die liegen dann normalerweise als BYTE Array vor. Die bedeutung der einzelnen Bytes hängt dabei dann vom Format ab, bei RGB24 hast du pro Pixel ein Byte für Rot, eines für Grün und eines für Blau, und dann kommt der nächste Pixel. Am Ende der Zeile wird dann oft der Offset noch auf 2 oder 4 Byte aufgerundet, und dann fängt die nächste Zeile an. Eigentlich ganz einfach.
Davon ausgehend kannst du dann deinen Writer schreiben der in einem komprimierten Format speichert. Und gleich vorweg: für Fotos bzw. fotorealistische Bilder kannst du RLE/LZW/Huffman *alleine* vergessen, du musst das Bild immer irgendwie "vor-filtern", und erst diese "gefilterten" Daten dann komprimieren. z.B. einfach immer den Unterschied zum nächsten Pixel speichern statt der eigentlichen Wert - dann bekommst du Verteilungen die du mittels Huffman oder einem arithmetischen Coder ein wenig komprimieren kannst.
-
hast dir ja viel vorgenommen, dafür das du keine Ahnung hast.
-
danke für die schnelle Antworten...Klar bin ich noch nicht fit in BILDVERABREITUNG...aber ich muss mich halt fit machen. Ist halt Studium.
Gibt irgendwo vorgefertigte Algorithmen, die ich einfach in meinem
Programm implementieren kann?Juan
-
... aber ich muss mich halt fit machen ... Gibt irgendwo vorgefertigte Algorithmen, die ich einfach in meinem Programm implementieren kann?

-