Bild einlesen / Farbraumtransformation mit C++
-
Hallo zusammen,
ich bin Neuling hier. Habe Grundlegende C Erfahrungen, wenn auch nur auf Kommandozeilenbasis und sehr simple Programme.
Nun folgender Auftrag unserer tollen Profs an der Uni (siehe unten).
Ich wollte dazu mal eure Meinung einholen, wie würdet ihr das Projekt realisieren? Möchte hier in erster Linie keinen Code etc haben, nur irgendwie Tipps welche Bibliotheken oder ähnlich (PNG ist doch komprimiert und nicht einfach so als IfStream oder so einlesbar oder?!) ihr nutzen würdet für das Problem.Wir stehen da nämlich grad sehr vor einem Berg. Haben Visual C++ installiert und naja dann mal gucken
Danke für eure Anregungen etc...Ziel:
Lesen, Schreiben, Konvertieren und Komprimieren von digitalen Bildsignalen mit einer interaktiven BenutzeroberflächeTeilaufgaben:
• Lesen, Anzeigen und Ausgaben von Farbbildern in mindestens folgenden Formaten: PNM, PNG• Bereitstellen einer Schnittstelle für eigene Verarbeitungsmodule (Zugriff auf Daten, d.h. Zeiger auf Bilddaten, Bildparameter, etc.)
• Separate Anzeige der drei Farbkomponenten
• Farbraumtransformationen RGB -> YCbCr, RGB -> YCoCg, RGB -> RCT,
Anzeige der transformierten Komponenten, Implementierung der inversen
Farbraumtransformation, Berechnung und Ausgabe der Entropien der Komponenten• Codierung der Komponenten und Ausgabe, Einlesen und Decodieren
-
PNG ist komprimiert, es gibt allerdings eine offizielle "libPNG", mit der du auf die reinen Pixeldaten zugreifen koennten solltest -- falls nicht, koennen auch viele Grafikbibliotheken das (spontan faellt mir SDL mit SDL_image ein).
Wenn du die reinen Pixeldaten hast, sollte es kein Problem sein, die operationen zu implementieren
Das Thema gehoert aber eher in "Rund um die Programmierung" oder in "Spiele/Grafikprogrammierung"
Vllt. kann dich ja ein Mod verschieben.
-
Ich würde das GUI mit wxWidgets machen. Diese Lib versteht sich auch mit diversen Bildformaten, u.A. auch PNG.
-
Ich kenn solche "Projekte". Der prof setzt sich was in den Kopf und du bist auch im Team das ganze Semster nur am Rotieren und verpfefferst unglaubliche Zeit. Klar ist das sehr sehr lehrreich und auch teils spassig.
Habe Grundlegende C Erfahrungen, wenn auch nur auf Kommandozeilenbasis und sehr simple Programme.
Das beduetet sachen wie Eventhandler etc. sind dir völlig fremd, Klassen, Vererbung, der ganze C++ Kram wohl auch..
Also wenn das ne Teamaufgabe ist und ein andrer wenigstens fundierte Kenntnis der C++ Grundlagen hat: let's go.
Wenn du aber vor dem z.B. wxwidgets Code sitzt und nur Bahnhof verstehst und Wochen brauchst, ganz auf dich allein gestellt, um überhaupt erstmal die Grundlagen (wie Klassen, Vererbung, Polymorphismus) zu verstehen bevor du die Algorithmen überhaupt implementieren kannst... würd ich je nach verfügbarere Zeit die Sache evtl. doch sein lassen. Vor allem hängt da soviel dran: Linkerfehler am laufenden Band, Dokumentation durchstöbern, seltsame bugs die einen Stunden aufhalten.. das übliche halt am Anfang.Also ne Woche mal schaun bevor das Projekt startet wie gut man mit der API vom Interface klar kommt(wxwidgets ist ne gute Wahl) und ob man nen Prototypen einer GUI zum laufen bekommt(ohne Algos/Funktionalität) und natürlich überlegen wieviele Stunden pro Woche dann wohl drauf gingen..
-
Er hat grundlegende Erfahrung in C und ihr wollt dass er sich in eine GUI-API einlernt? o_0 Das ist schlichtweg sinnlos. Ein Commandline-Interface reicht voellig. Dazu irgend was billiges um das Bildformat in Pixeldaten zu zerlegen (wie gesagt, libpng ist fuer PNGs standard) und los gehts. GUI-Lib lernen, GUI basteln und der ganze Schmafu lenkt doch nur von der echten Aufgabe ab und kostet mindestens 2-3 Tage (mind. eine Woche, wenn keine C++ - Erfahrung vorhanden ist).