Diskussion:High Dynamic Range Image

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Wikipedia-logo-v2.svg Dieser Artikel war am 11. April 2011 der Artikel des Tages.

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, und unterschreibe deinen Beitrag bitte mit oder --~~~~.

Hinweise

Automatische Archivierung
Auf dieser Seite werden Abschnitte montags automatisch archiviert, deren jüngster Beitrag mehr als 50 Tage zurückliegt und die mindestens einen signierten Beitrag enthalten. Um die Diskussionsseite nicht komplett zu leeren, verbleiben mindestens 3 Abschnitte.
Archivübersicht Archiv
Wie wird ein Archiv angelegt?

Warum schreitet hier niemand ein?[Quelltext bearbeiten]

Die Zahlenangaben in diesem Artikel sind durch keinerlei Belege oder Quellen hinterlegt! Zudem erscheinen sie höchst zweifelhaft. Da ist z.B. von Datenformaten die Rede, die Bereiche von mehr als 70 Größenordnungen überdecken. Was sollte man damit anfangen? Wie sollte man das Darstellen? Etwa mit Ausdrucken oder mit einem Monitor dessen Hintergrundbeleuchtung aus 10^68 Lichtbogen-Lampen besteht?

Solche Artikel bilden die Grundlage für den schlechten Ruf von Wikipedia! (nicht signierter Beitrag von 91.6.80.193 (Diskussion) 17:40, 23. Okt. 2015 (CEST))

Hier hat jemand fast nichts begriffen:
  • Wikipedia beschreibt, was diese Dateiformate als maximale Dynamik abspeichern können. Wenn es 5000 Größenordnungen sind, haben dort 5000 Größenordnungen (16000 Blendenstufen) zu stehen.
  • Ein Dateiformat ist gut designt, wenn man in der Praxis keine Rücksicht auf Beschränkungen nehmen muss. Es ist eine gute Idee, das unter allen Umständen niemals die minimal mögliche Helligkeit des Formats unterschritten wird und niemals die maximal mögliche Helligkeit überschritten wird. Hubble beginnt bei etwa 3·10−16 cd/m², Bogenlampen gehen bis etwa 1010 cd/m². Das sind 26 Größenordnungen. Das ist nicht mehr so weit von den 76 Größenordnungen von einfach genauen Gleitkommaformaten entfernt. Das Gleitkommaformat mit halber Genauigkeit ist schon überfordert (kann keine Helligkeiten oberhalb von 65000 cd/m² abspeichern).
  • Ein Teil der Formate sind an Datentypen gekoppelt, die vom aktuellen CPUs/GPUs unterstützt oder relativ gut unterstützt werden. Daraus ergeben sich 80 Größenordnungen (256 Blendenstufen), da float einen 8 bit Exponenten hat bzw. separat abgespeicherte Exponenten als Byte abgespeichert werden und damit 8 bit breit sind.
--2003:78:8D13:F300:C1C7:8A94:D8C8:4557 14:11, 8. Aug. 2017 (CEST)

Defekte Weblinks[Quelltext bearbeiten]

GiftBot (Diskussion) 04:12, 3. Dez. 2015 (CET)

Code für Berechnung der Perceptual Quantizer (PQ) EOTF von SMPTE ST-2084 sowie der Barten-Contrast-Sensitivity-Function[Quelltext 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)