JPEG Bilder die 2te



  • Hey so nach vielem lesen und wichtigen Tipps im ersten Thread (Hier) mach ich mal einen neuen auf.
    Ich wollte hier einmal mein Wissen zusammenfassen und auch gleich fragen dazu stellen.
    Meine Aufgabe ist es JPEG Bilder zu komprimieren. D.h. diese werden von mir geholt , komprimiert und dann kann man sich diese angucken. Also hier mal mein Plan:

    Bild laden
    DCT
    Quantisierung
    Entropie Encoder
    Lauflängenkodierung
    Huffman

    So weit so gut. Die Vorgänge von den einzelnen Schritten habe ich verstanden.

    Problem hab ich beim Anfang. Wie schaff ich es, wenn ich das Bild geladen hab (meinetwegen in einem Vektor oder in einem Filestream), das Bild in 8x8 Blöcke zu zerteilen und eine DCT durch zu führen? Das bereitet mir grade am meisten Schwierigkeiten. Ohne das kann ich auch irgendwie nicht weiter machen. Ok Huffman hab ich im Prinzip schon aber alles andere kann ich dann irgendwie ja noch nicht machen.
    Danke schon mal für Hilfe.
    Und ja es ist ein schweres Thema und ich bin Anfänger aber ich kämpf mich da durch.



  • Warum willst selbst eine schlechte Lösung entwickeln, obwohl es schon gute gibt?



  • Weil ich die nicht verwenden kann? falls du sowas wie CImg oder Magic++ meinst.

    Was ist den auch so schlimm dadran wenn ich es selbst machen will? Da lern ich auf jedenfalls ziemlich gut was dran.

    EDIT:
    http://www.hackerfactor.com/blog/index.php?/archives/260-JPEG-Bitstream-Bytes.html

    So soll das ja laufen allerdings wie komm ich 1. an die RGB ran udn 2. wie bekomm ich 8x8 PIXEL Blöcke???



  • Enno schrieb:

    Weil ich die nicht verwenden kann? falls du sowas wie CImg oder Magic++ meinst.

    Was ist den auch so schlimm dadran wenn ich es selbst machen will? Da lern ich auf jedenfalls ziemlich gut was dran.

    EDIT:
    http://www.hackerfactor.com/blog/index.php?/archives/260-JPEG-Bitstream-Bytes.html

    So soll das ja laufen allerdings wie komm ich 1. an die RGB ran udn 2. wie bekomm ich 8x8 PIXEL Blöcke???

    Deine Frage ist viel zu allgemein. Dafür müsstest du bereits wissen, wie du die Daten speichern willst (in einer Matrix) und wie diese aufgebaut ist. Dann ist es auch super einfach an 8x8-Submatrizen ranzukommen.

    Warum nicht opencv nehmen? Die speichern das auch intern als Matrix (wie jede Image Library 😃 )Bilder laden, glätten was auch immer, speichern anschauen



  • Enno schrieb:

    Weil ich die nicht verwenden kann? falls du sowas wie CImg oder Magic++ meinst.

    Kannst du nicht oder willst du nicht?

    Enno schrieb:

    Was ist den auch so schlimm dadran wenn ich es selbst machen will? Da lern ich auf jedenfalls ziemlich gut was dran.

    Daran ist nicht schlimm. Deine Fragen machen nur auf mich nur den Eindruck, dass du mit anderen Projekten mehr Spaß hättest und mehr pro investierter Zeit lernen würdest.
    Du könntest zb. zuerst mal eine Bibliothek benutzen, um Bilder zu laden und zu speichern und erstmal nur das Skalieren selbst machen.



  • Beantwortet ihm doch seine Frage, er hängt dort schon einige Zeit dran und zieht das durch. Den Ehrgeiz kann man ihm auch mal belohnen durch ordentliche Antworten



  • Rad2.0 schrieb:

    Deine Frage ist viel zu allgemein. Dafür müsstest du bereits wissen, wie du die Daten speichern willst (in einer Matrix) und wie diese aufgebaut ist. Dann ist es auch super einfach an 8x8-Submatrizen ranzukommen.

    Das soll jetzt heißen ich lade mir mein JPEG in eine Matrix? Ich bin da irgendwie ein wenig verwirrt weil überall steht das man 8xx8 Pixel Blöcke bauen soll aber ich hab kein Plan wie man in C++ an Pixel kommt.

    Rad2.0 schrieb:

    Warum nicht opencv nehmen? Die speichern das auch intern als Matrix (wie jede Image Library 😃 )Bilder laden, glätten was auch immer, speichern anschauen

    Hab ich ja schon erwähnt. Nein will ich nicht nehmen.

    Radneuerfindenlasser schrieb:

    Kannst du nicht oder willst du nicht?

    Beides.

    Radneuerfindenlasser schrieb:

    Daran ist nicht schlimm. Deine Fragen machen nur auf mich nur den Eindruck, dass du mit anderen Projekten mehr Spaß hättest und mehr pro investierter Zeit lernen würdest.

    Mich interessiert das ganze Projekt und ich bin da auch schon eine ganze Zeit dran(Siehe ersten Thread erstell Datum). Ich hab da schon genug Spaß mach dir keine sorge. 😉

    Skym0sh0 schrieb:

    Beantwortet ihm doch seine Frage, er hängt dort schon einige Zeit dran und zieht das durch. Den Ehrgeiz kann man ihm auch mal belohnen durch ordentliche Antworten

    Ich danke dir. 🙂



  • Skym0sh0 schrieb:

    Beantwortet ihm doch seine Frage, er hängt dort schon einige Zeit dran und zieht das durch. Den Ehrgeiz kann man ihm auch mal belohnen durch ordentliche Antworten

    Aber da paßt was ganz gewaltig nicht. Wenn er eine Matrix nicht in kleine Matzizen zerlegen kann, hängt es ganz unten. Sollen wir wirklich hier gemeinsam jede einzelne Zeile durchkauen, bis er

    Bild laden
    DCT
    Quantisierung
    Entropie Encoder
    Lauflängenkodierung
    Huffman

    hat? Nee. Der steht komplett vor einer Wand. Die ist unerklimmbar.

    Deswegen soll er die Reihenfolge auf jeden Fall ändern.

    Hello World
    Buch
    Noch ein Buch
    Lauflängenkodierung für ASCII-Dateien
    Huffman ebenso
    TGA zoomen

    und dann sehen wir mal weiter. Das geht am Ende sogar schneller, als wenn er so lange gegen die Wand läuft, bis er zufällig durchtunnelt.



  • for (int i=0; i<8; ++i){
      for (int u=0; u<8; ++u){
        matrix[i][u];
      }
    }
    

    Und wenn ich das jetzt hier richtig raus gelesen habe dann kann ich mein JPEG einfach in eine ich sag mal überMartix[][] packen und dadraus 8x8Submatrix[][] bauen.



  • Ja von Prinzip her schon, ist an sich auch ganz einfach.
    Du müsstest dich dann halt mal in vector und die ganzen STL Container anschauen



  • Enno schrieb:

    Radneuerfindenlasser schrieb:

    Kannst du nicht oder willst du nicht?

    Beides.

    Kannst du nur nicht, weil du nicht willst, oder könntest du auch nicht, selbst wenn du wollen würdest?



  • Enno will das ganze als Übung betrachten, soweit ich das richtig in Erinnerung habe.

    Und mal unter unseren beiden 4 Augen: Ne Lib einbinden und in nem 2 Zeiler ein Bild laden, das kann jeder... (auch wenn manche Libs echt mies sind, beim Einbinden)

    Also gebt Jungen Hilfe anstatt ihn dauernd zu demotivieren.



  • Radneuerfindungsforscher schrieb:

    Kannst du nur nicht, weil du nicht willst, oder könntest du auch nicht, selbst wenn du wollen würdest?

    Uff! Warum hackst du so unbedingt nach? Tut das den wirklich zu Sache warum und wieso und weshalb ich das mache?
    Ich möchte das gerne lernen es ist ein verdammt spannendes Thema!

    Skym0sh0 schrieb:

    Ja von Prinzip her schon, ist an sich auch ganz einfach.
    Du müsstest dich dann halt mal in vector und die ganzen STL Container anschauen

    Ok danke. Damit kann ich weiter machen. 😃
    Trotzdem hab ich eine weitere frage:
    Man schaue sich das hier an: Hier
    Da hat man ja nun mehrere Frames und einmal das Full JPEG. Ich Decodiere also am besten von jedem SOI bis EOI und das für jeden Frame und einmal für das Full JPEG richtig?

    Skym0sh0 schrieb:

    Enno will das ganze als Übung betrachten, soweit ich das richtig in Erinnerung habe.

    Und mal unter unseren beiden 4 Augen: Ne Lib einbinden und in nem 2 Zeiler ein Bild laden, das kann jeder... (auch wenn manche Libs echt mies sind, beim Einbinden)

    Also gebt Jungen Hilfe anstatt ihn dauernd zu demotivieren.

    Danke!! ❤



  • Was möchtest du denn jetzt erreichen? Im ersten Post redest du von Komprimieren und jetzt vom JPEG-Decodieren.
    Wenn du ein Bild als JPEG speichern möchtest, nimmst du als Quellformat sinnigerweise etwas einfaches wie BMP oder PPM.



  • Athar schrieb:

    Was möchtest du denn jetzt erreichen? Im ersten Post redest du von Komprimieren und jetzt vom JPEG-Decodieren.
    Wenn du ein Bild als JPEG speichern möchtest, nimmst du als Quellformat sinnigerweise etwas einfaches wie BMP oder PPM.

    Ich will JPEGs Decodieren und Encodieren? Das ist doch komprimieren?



  • Das Encodieren ist Komprimieren. Decodieren ist der umgekehrte Fall, und da extrahierst du.

    Nagelt mich aber nicht drauf fest, ich verwechsel die beiden Worte auch immer mit ihren Bedeutungen...



  • Enno schrieb:

    Radneuerfindungsforscher schrieb:

    Kannst du nur nicht, weil du nicht willst, oder könntest du auch nicht, selbst wenn du wollen würdest?

    Uff! Warum hackst du so unbedingt nach?

    Ich hacke nach, weil wenn du nicht kannst, ist es egal, ob du nicht willst. Und wenn du nicht willst, brauchst du nicht sagen, dass du nicht kannst, weil es ja schon reicht, dass du nicht willst, damit du nicht machst. Dafür brauchst du kein "kann nicht" vorschieben. 😉

    Enno schrieb:

    Tut das den wirklich zu Sache warum und wieso und weshalb ich das mache?
    Ich möchte das gerne lernen es ist ein verdammt spannendes Thema!

    Das finde ich (und vermutlich auch alle anderen hier) ja auch toll. Man lernt an Projekten. Aber ich denke halt, dass du effizienter lernen würdest, wenn du zb so lernen würdest wie volkard vorgeschlagen hat. Auch wenn es vielleicht nicht so rüberkommt, aber ich will dich nicht ärgern, sondern tatsächlich nur helfen. 🙂
    Aber gut, wenn das jetzt nicht fruchtet, lass ich es halt. Ich geh davon aus, dass du es im Laufe deines Projekts noch selbst merken wirst.



  • Wie gesagt, er hängt da schon seit Anfang Januar dran und macht gut Fortschritte.

    Mindestens jedenfalls was das JPG Verfahren angeht 😉



  • Schön. Und ich denke, dass er anders noch bessere Fortschritte machen könnte. Aber OK, das kann ich halt nicht belegen, also schaun wir mal. 🙂



  • Raderfindungspädagoge schrieb:

    Schön. Und ich denke, dass er anders noch bessere Fortschritte machen könnte. Aber OK, das kann ich halt nicht belegen, also schaun wir mal. 🙂

    Das ist nett das du mir helfen willst aber ich würde das gerne lernen. Klar gibt es bessere Wege. Das sehe ich ein aber kann man mir den nicht einfach damit helfen? Wenn ihr mir nicht dabei helfen wollte, ist das auch ok aber dann müsst ihr mir hier nicht die ganze Zeit erzählen das ich anders besser lernen würde.


Anmelden zum Antworten