unklares Ergebnis nach Berechnung



  • Hallo,

    ich hab ein kleines Problem mit einer Berechnung.

    Und zwar bin ich dabei, von einem Graustufenbild die Entropie (mittlerer Informationsgehalt der Quelle) zu berechnen. Dazu habe ich zuerst die Auftretenswahrscheinlichkeiten aller Graustufen (0..255) im Bild ermittelt.

    Jetzt scheitert aber die letzte Berechnung und ich denke, das Problem ist nicht die Logik, sondern mangelndes Vermögen meinerseits, den Kram in vernünftiges C++ zu gießen 😉

    Folgender Code:

    double dSum = 0.0;
    for (i = 0; i < 256; i++)
    {
    	dSum += -(dP[i] * (log(dP[i]) / log(2.0)));
    }
    

    Legende:
    dP[] ... Auftretenswahrscheinlichkeiten der Graustufen.
    dSum ... die Summe über alle 256 Zwischenergebnisse, die Entropie also.

    Die Zwischenergebnisse hab ich alle schonmal gecheckt, haut alles soweit hin. Nur beim Endergebnis kommt stets -1.#IO raus (ich hab leider null Ahnung, was das bedeutet - irgendeine Geschichte mit dem Zahlenbereich?). Das Ergebnis sollte jedoch auf jeden Fall positiv, wenn auch nicht sehr groß, sein.

    Kann jemand von Euch erkennen, wo hier das Problem liegt?

    Vielen Dank schonmal!
    JoSsiF



  • Denke mir mal du solltest dir deine Wahrscheinlichkeitswerte ansehen. Sie müssen kleiner 1 sein (schon eine 1 würde dazu führen, dass aus der Addition eine Suptraktion wird, weil sich das Vorzeichen dadurch nicht aufhebt). Negative Wahrscheinlichkeiten wären auch nicht so gut. 😃



  • Hallo,

    kann es sein, dass einer deiner Wahrscheinlichkeitswerte 0 ist?
    log(0) funktioniert nämlich (rein mathematisch) nicht und führt zu nem undefinierten Wert.

    Gruß,
    Amalthea



  • Ich halt's nicht aus, es geht!! Vielen Dank, Amalthea! Hab vor lauter Berechnungen hier schon langsam 'nen Kasper bekommen, und da übersieht man solche Kleinigkeiten schnell mal 😉

    Danke dir auch, Mathias! Wäre eine Möglichkeit gewesen mit den Wahrscheinlichkeiten, aber die haben korrekte Werte 🙂

    Vielen Dank nochmal!

    greez
    JoSsiF


Anmelden zum Antworten