JPEG Bilder die 2te



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



  • Enno schrieb:

    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?

    Zum Dekomprimieren musst du im Prinzip die Schritte vom Komprimieren in umgekehrter Reihenfolge durchführen. Das ist dir schon klar, oder? Weil du das so schön mit dem Punkt "Bild laden" abgespeist hast. Bis du an die endgültigen Pixel vom Bild kommst, hast du noch einiges zu tun.

    Ich würde mich ehrlich gesagt auch erst einmal an etwas leichterem versuchen, z.B. einem BMP -> PPM - Konverter (inklusiver Unterstützung von selten genutzten Features wie RLE und Bitmasken). Wenn du das fertig hast, dann sollten die Basics und Bitfummelei sitzen und damit bist du dann auch in der Lage, die Sache mit JPEG etwas souveräner anzugehen.



  • [quote="Enno"]

    Raderfindungspädagoge schrieb:

    Das ist nett das du mir helfen willst aber ich würde das gerne lernen.

    Ja eben, mir gehts auch darum, dass du genau das lernst, was du lernen willst. Wenn jemand lernen will, den Mount Everest zu besteigen, würde ich ihm auch raten, sich an kleineren Bergen zu üben, deren Höhe immer weiter zu steigern, bis er so trainiert ist, dass er den großen auch packt. Aber gut, mach halt mal. 😉



  • Bei JPEG ist das Problem halt auch, dass extrem viele Zwischenschritte notwendig sind, die du nur schwer einzeln validieren kannst. Am Schluss setzt du alle Komponenten zusammen, und sehrwahrscheinlich funktioniert nicht alles auf Anhieb.

    Hier zu debuggen und mögliche Fehler zu finden braucht nicht nur wahnsinnig viel Zeit, sondern kann auch sehr frustrierend sein (du hast schon so viel Zeit in die Implementierung gesteckt, und nun funktioniert nichts, und du weisst nicht wo anfangen zu suchen). Daher ist es sinnvoller, wenn du versucht, Teilprobleme zu lösen und dir sicher sein kannst, dass diese funktionieren. Dann kannst du später alles zusammensetzen.

    Sogar als erfahrener Programmierer kann man nicht davon ausgehen, dass man bei der Implementierung direkt alles 100% richtig macht. Debugging nimmt man bei solchen Sachen in Kauf. Wenn aber die Erfahrung im Bezug auf Fehlersuche fehlt, weil ein JPEG-Encoder das erste Projekt ist, kann es ganz schön schwierig werden.

    Enno, ich will dich nicht demotivieren, sondern dich vor Demotivation bewahren 😉


Anmelden zum Antworten