Beispiel 3

  • Hmm, ich bin verwirrt: imfinfo sagt, der Schwarzwert bei Bild 1 liegt bei 1971. Eine Abfrage mit min(A( : ) sagt, der kleinste auftretende Wert ist 2017. Ich müsste also 2017 auf 1971 abbilden? Der einzige Weg der mir einfällt ist, 46 von allen Elementen abzuziehen? Aber dann ist ja der größte Wert nicht mehr 65 535? Würden Bildwerte UNTER dem Schwarzwert auftreten, ginge es wohl mit max(1971,A), aber so...? :confused:

  • Wie Iliyana bereits geschrieben hat, sind die inkludierten JPEG Bilder ein gute Referenz. Falls du wirklich einen Fehler im Code hast, dann würde ich erst beim BlackLevel nachschauen. Wenn man da etwas falsch macht, werden die Farben in allen nachfolgenden Schritten falsch (meist rötlich).

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

  • Hmm, ich bin verwirrt: imfinfo sagt, der Schwarzwert bei Bild 1 liegt bei 1971. Eine Abfrage mit min(A( : ) sagt, der kleinste auftretende Wert ist 2017. Ich müsste also 2017 auf 1971 abbilden? Der einzige Weg der mir einfällt ist, 46 von allen Elementen abzuziehen? Aber dann ist ja der größte Wert nicht mehr 65 535? Würden Bildwerte UNTER dem Schwarzwert auftreten, ginge es wohl mit max(1971,A), aber so...? :confused:


    Wenn das Photo hell ist, kann die minimale aufgenommene Intensität ruhig höher sein als der Schwarzwert vom Senzor. Die von dir vorgeschlagene Abbildung macht aber etwas anderes als gefragt wird. Es könnte zum Beispiel zu ähnlichen Farbabweichungen führen, wie sie AllesBeimAlten beschreibt :)

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

    Edited 2 times, last by Odo ().

  • Hatte einen kleinen Fehler beim Weißabgleich. Hab etwas falsch multipliziert, jetzt ist es so wie oben erwähnt dass der Weißabgleich eher geringe Änderungen durchführt. Sollte nun so passen. Habe leider nun auch das Problem das bar(histo) (wobei histo das vorhin mit bins und input erstelle histogramm ist) nur 1-2 große Blöcke zeichnet. Wurde hier im Thread nie wirklich erklärt wie man das nun berichtigt. Hilfe, jemand?

  • Wenn das Photo hell ist, kann die minimale aufgenommene Intensität ruhig höher sein als der Schwarzwert vom Senzor. Die von dir vorgeschlagene Abbildung macht aber etwas anderes als gefragt wird. Es könnte zum Beispiel zu ähnlichen Farbabweichungen führen, wie sie AllesBeimAlten beschreibt :)


    Was hab ich denn vorgeschlagen? Das mit dem 46 abziehen? Ja ich weiß, dass das nicht geht. Deshalb frage ich ja.

  • OphiuchuS, was spricht dagegen das BlackLevel aus dem iminfo abzuziehen? Mit getfield() kriegst du es raus. Dann muss man afaik nur noch durch 65535 dividieren um das Bild zu normalisierung und ist good to go!


    /e Oder bin ich hier sehr falsch? Naja das was "BlackLevel" ist, sollte dann letztendlich ja Schwarz also 0 sein. Klang für mich ganz logisch.

  • Division durch 65535 ist dann aber keine Normalisierung mehr! Kein Pixel wird den Wert 1.0 erreichen können.

    Of course I don't see textures as images. Who would?


    Einführung in Visual Computing VU Übungsleiter 2012
    Visualisierung LU Tutor 2005-2007

  • OphiuchuS, was spricht dagegen das BlackLevel aus dem iminfo abzuziehen? Mit getfield() kriegst du es raus. Dann muss man afaik nur noch durch 65535 dividieren um das Bild zu normalisierung und ist good to go!


    /e Oder bin ich hier sehr falsch? Naja das was "BlackLevel" ist, sollte dann letztendlich ja Schwarz also 0 sein. Klang für mich ganz logisch.


    Öhm, das glaube ich nicht. Wenn ich den Blacklevel, also 1971 abziehe, dann habe ich einen Wertebereich von 46 bis 15 564. Und was würde es bringen jetzt durch 65 535 zu dividieren? Meiner Meinung nach nix, weil ich eigentlich Werte zwischen 1971 und 16535 brauche damit das funktioniert.

  • Dein Bild muss doch nicht zwingen "ganz" Schwarz und "ganz" Weiß enthalten oder?


    Wir sollen das Bild in den Wertebereich von 1971 (=Schwarzwert) bis 16535 (=Weißwert) bringen. Unbehandelt vorliegen tut es in dem Bereich 2071 bis 16 535. Was ist also zu tun, damit man auf dieses Ergebnis kommt? Sicherlich nicht 1971 abziehen.

  • Wenn du das Bild nimmst und den Schwarzwert vom Bild und vom "Weißwert" (16535) abziehst hat man doch genau dieses Intervall. Nur sozusagen verschoben. Berücksichtigt man das bei der Division (wie von Odo angemerkt), also man Dividiert auch durch ("Weißwert" - (den abgezogenen) Schwarzwert) sollte das ja korrekt normalisiert sein.


    Hab das Gefühl mein vorheriger Post ist untergegangen: Odo, oder sonst ein Anwensender der Hilfe weiß ...

    Hatte einen kleinen Fehler beim Weißabgleich. Hab etwas falsch multipliziert, jetzt ist es so wie oben erwähnt dass der Weißabgleich eher geringe Änderungen durchführt. Sollte nun so passen. Habe leider nun auch das Problem das bar(histo) (wobei histo das vorhin mit bins und input erstelle histogramm ist) nur 1-2 große Blöcke zeichnet. Wurde hier im Thread nie wirklich erklärt wie man das nun berichtigt. Hilfe, jemand?

  • Wenn du das Bild nimmst und den Schwarzwert vom Bild und vom "Weißwert" (16535) abziehst hat man doch genau dieses Intervall. Nur sozusagen verschoben. Berücksichtigt man das bei der Division (wie von Odo angemerkt), also man Dividiert auch durch ("Weißwert" - (den abgezogenen) Schwarzwert) sollte das ja korrekt normalisiert sein.


    Ehrlich gesagt glaube ich das nicht: denn wenn man das Intervall 2071 - 16 535 hernimmt, hat es die Länge 14 464. Das Intervall 1971 - 16 535 hat die Länge 14 565. Wenn man 1971 von jedem Wert von Intervall 1 abzieht, bleibt die Länge des Intervalls ja erhalten, du hast immer noch das gleiche Intervall, hast es aber verschoben. Aber du willst ja nicht das gleiche Intervall, sondern ein neues, nämlich eines mit der Länge 14 565 ?

  • Man soll ein Intervall erzeugen [BlackLevel,16535]. Existiert auf deinem Bild ein vollkommen schwarzer Pixel so beträgt dessen Wert BlackLevel. Ist ein Pixel vollkommen weiß so beträgt dessen Wert 16535 (Ist in Angabe ja so festgelegt.). Du willst nun Das Bild auf [0,1] abbilden / normalisieren. Wenn du vom ganzen Bild BlackLevel abziehst. Werden alle schwarzen Pixel den Wert 0 haben, und alle weißen den Wert 16535-BlackLevel. Dividierst du das Bild nun durch 16535-BlackLevel so werden alle schwarzen Pixel den Wert 0 beibehalten und alle weißen Pixel (nun 16535-BlackLevel, statt 16535) werden den Wert 1 haben. Alle Werte dazwischen werden passende Zwischenwerte im Intervall einnehmen. Wüsste nicht wie es anders gehen sollte.


    Edith: Meine eingelesen Bilder nehmen nach Odo's Korrekturhinweis vollkommen legitime / plausible Werte vor. Auf den Schneebildern vom "Schlittenrennen" tritt auch öfter der Wert 1.0 vor. Jedoch nie Werte höher als dieser, bzw. negative Werte.


    Edith Zwei: Ist dein niedrigster Wert z.B. BlackLevel+14, tut das afaik nichts zur Sache. Der Wert ist nicht schwarz, sondern einfach sehr dunkel. BlackLevel ist schwarz. Nur das sollte wirklich interessieren.


    Edith nochmals: Dein BlackLevel sagt dir was schwarz ist. Also wirklich schwarz. Nicht nur der dunkelste Wert im Bild, gell? Siehe: http://en.wikipedia.org/wiki/Black_level


  • Hmm, möglicherweise hast du recht...:)

  • Das Problem war, dass AllesBeimAlten nicht das original Muster beim Summieren berücksichtigt hat und deshalb immer periodisch Werte 0 aufgetreten sind. Ich hab noch keine Antwort bekommen, aber es scheint das es die Lösung ist.


    Also war das jetzt richtig, dass es beim "gui_gamma_correction" korrekt ausgesehen hat, bei "gui_white_balance" jedoch noch schachbrettig war? Hab nämlich grad genau dasselbe Problem und weiß nicht ob das so passt...