JPEG Bilder die 2te



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



  • Nexus schrieb:

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

    Danke! Allerdings hab auch ich schon mal 2-3 Tage nach einem Fehler gesucht. Ich weiß wirklich das ihr alle angst hab meine Motivation wird nach lassen aber das wird sie nicht. 😉
    Ich werde das durch ziehen und wenn irgendwer mir noch jemand hier Tipps, Tricks oder gute Seiten empfehlen möchte immer raus damit. Ansonsten komme ich grade ein bisschen weiter durch das was ihr hier schon erzählt habt.
    Weitere fragen kommen dann wohl mit Code denke ich.



  • So ich hab mal bissel was gebastelt. Das ist jetzt noch nicht viel ich weiß. Ich hab versucht alles zu kommentieren damit ihr versteht was ich da machen will. Geschrieben hab ich das btw in KDI.
    Frage: Hab ich da denk Fehler drin oder sieht das schon mal ganz gut aus?

    start.cpp:

    #include <vector>
    #include <cmath>
    #include <iterator>
    
    #include "start.h"
    /*
     * Constructor
     */
    Start::Start(){
      imgFile = new ImgFile(); //new ImgFile object from imagefile.h
    }
    /*
     * Destructor
     */
    Start::~Start(){
      delete imgFile; //delete imgFile object
    }
    
    /*
     * function to save the image or frame in vector tmp
     */
    void Start::saveImage(){
      do{
        const char* SOI = imgFile->getSOIPos(); //get the start point of image / index[0]
        const char* EOI = imgFile->getEOIPos(); //get the end point of image 
        size_t length = SOI-(EOI+3); //calculate length of image from SOI to EOI... +3 cause ff d9
        decoderBlox(SOI, length); //give decoderBlox function start point and length
      }while(imgFile->nextImage()); //as long as nextImage is true 
    } 
    /*
     * Build 8x8 Matrix to do a iDCT(inverse Discrete Cosine Transformation)
     */
    void Start::decoderBlox(std::vector<char>::iterator SOI, size_t length){
      for(int x = 0; x<length; x++){ //not longer the length 
                                     ///length or length+1?
        for(int i=0; i<8; ++i){ //2 loops to build 8x8 matrix
          for(int j=0; j<8; ++j){
    	blox[i][j] = *SOI + x; //save position in blox
            ++x; //next char
          }//j
        }//i
        doiDCT(); //do a iDCT
      }//x
    }
    

    start.h:

    #include <vector>
    
    #include "../MyStuff/mxpw/src/imagefile.h"
    
    class Start{
    public:
      Start();
      ~Start();
      void saveImage();
      void decoderBlox();
      void clearPOS();
    private:
      ImgFile *imgFile;
      double  blox[8][8];
    };
    


  • Ist das ein Psycho-Test?



  • volkard schrieb:

    Ist das ein Psycho-Test?

    Doch so schlecht?



  • Warum erstellst du imgFile mit new?

    und es heißt "Destruktor", nicht "Dekonstruktor"


Anmelden zum Antworten