Diskussion:High Dynamic Range Image

Letzter Kommentar: vor 1 Monat von 172.84.82.95 in Abschnitt Total veraltet
Diese Diskussionsseite dient dazu, Verbesserungen am Artikel „High Dynamic Range Image“ zu besprechen. Persönliche Betrachtungen zum Thema gehören nicht hierher. Für allgemeine Wissensfragen gibt es die Auskunft.

Füge neue Diskussionsthemen unten an:

Klicke auf Abschnitt hinzufügen, um ein neues Diskussionsthema zu beginnen.
Archiv
Wie wird ein Archiv angelegt?

Code für Berechnung der Perceptual Quantizer (PQ) EOTF von SMPTE ST-2084 sowie der Barten-Contrast-Sensitivity-Function Bearbeiten

Es steckt ein bißchen Aufwand dahinter, das zum Laufen zu bekommen, da die Beschreibung nur abgetippt und selten vollständig sind. Hinzu kommen Einheitenfehler, da es sich um Zahlengleichungen handelt ... Es wäre schön, wenn solches Wissen einfach in der WP hinterlegt werden könnte, weil es das wirkliche Basiswissen ist.

namespace BartenContrastSensitivityFunction 
{
    // Modell des Auges, abgetippt und durch!
    const double k      = 3.0;
    const double sigma0 = 0.5000/60;// arc grad
    const double Cab    = 0.0800/60;// arc grad/mm
    const double T      = 0.1;      // sec
    const double Xmax   = 12;       // arc grad
    const double Nmax   = 15;       // cycles
    const double eta    = 0.03;
    const double Phi0   = 3e-8;     // sec deg²
    const double u0     = 7;        // cycles/grad
    const double p      = 1.285e6;  // photonen / sec / grad² / Td

    const double sigma (const double d)
    {
        return sqrt (sigma0 * sigma0 + Cab * Cab * d * d);
    }
    const double d (const double L, const double X0)
    {
        return 5 - 3 * ::tanh (0.4 * log (L*X0*X0/40/40));
    }
    const double E (const double d, const double L)
    {
        return 3.1415926 * d*d / 4 * L * (1 - ::pow(d/9.7,2) - ::pow(d/12.4,4));
    }
    const double Mopt (const double u, const double d)
    {
        const double s = sigma (d);
        return ::exp (-2*3.1415926*3.1415926*s*s*u*u);
    }
    // Reziproke der min. sichtbare Modulation bei Helligkeit L und Ortsfrequenz u
    const double CSF (const double L, const double u) 
    {
        const double X0 = 13.0/u;
        const double _d = d(L, X0);
        const double Above = Mopt(u, _d) / k;
        const double Below = 2/T *(1/X0/X0 + 1/Xmax/Xmax + u*u/Nmax/Nmax) * (1/eta/p/E(_d,L) + Phi0 / (1-exp(-u*u/u0/u0)));
        return Above / ::sqrt(Below);       // Rückgabewert 100 = 1% Modulation sichtbar
    }
    // Reziproke der min. sichtbare Modulation bei Helligkeit L, optimale Ortsfrequenz
    const double CSFmax (const double L) 
    {
        double retmax = 0.0;
        for (int i = -2000; i <= 2000; i++)
        {
            const double C = CSF (L, ::pow(10, 0.001*i));
            if (C > retmax) retmax = C;
        }
        return retmax;
    }
    // SMPTE-definierte EOTF, N = 0...1 = 0...4095 bei 12 bit, Rückgabe 0...1 = 0...10000 cd/m²
    const double EOTF (const double N)
    {
        const double  m1  = 1305.0 / 8192;
        const double  m2  = 2523.0 /   32;
        const double  rm1 = 8192 / 1305.0;
        const double  rm2 =   32 / 2523.0;
        const double  c1  = 3424.0 / 4096;
        const double  c2  = 2413.0 /  128;
        const double  c3  =  299.0 /   16;

        return ::pow ( (::pow(N,rm2) - c1) / (c2 - c3*::pow(N,rm2) ), rm1);
    }

    void CalTable ()
    {
        double M = 10000;                   // maximale Helligkeit für den größten Wert in cd/m²
        double mod = 1;

        for (int i = 4095; i >= 0; i--)     // Helligkeitswerte 0...4095
        {
            for (int j = 0; j < 4; j++)     // bestimme iterativ die Modulationstiefe für den Wert zwischen L_i und L_i-1
            {
                const double x = 0.6621 / BartenContrastSensitivityFunction::CSFmax (M/sqrt(mod));
                mod = (1+x)/(1-x);   
            }
            ::printf ("%4u %16.9f %16.9f (%7.3f)\n", 
                i,                                                         // Helligkeitsindex
                M,                                                         // Helligkeit aus BartenContrastSensitivityFunction
                10000 * BartenContrastSensitivityFunction::EOTF(i/4095.0), // Helligkeit nach SMPTE ST-2084
                100*(mod-1));                                              // erkennbare Modulationstiefe 
            M /= mod;
        }
    }
}

--2003:78:8D13:F300:C1C7:8A94:D8C8:4557 14:27, 8. Aug. 2017 (CEST)Beantworten

Header Bearbeiten

Hallo Beobachter, Frage zum Header-Bild. Ich verstehe die Aussage. Angesichts der surrealen Wirkung die mit HDRs erzeugt werden, sollte dort ein Bild stehen, das sich von einer realistischen, natürlichen Fotografie untetscheidet. Eine Nachtaufnahme ist wenig hilfreich. Hat jemand Alternativen vorzuschlagen? Überlegt mal mit Blick auf den Fundus... --Guido Radig (Diskussion) 21:01, 19. Dez. 2019 (CET)Beantworten

Total veraltet Bearbeiten

Jedes Pups-Handy macht mittlerweile HDR-Aufnahmen, die die im Artikel genannten Kameras, die 2008 >50.000 USD gekostet haben sollen, in nichts nachstehen.~~---- --172.84.82.95 01:29, 3. Apr. 2024 (CEST)Beantworten