Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie COSH, um das Helligkeitsanpassungsmodell in der Bildverarbeitung zu implementieren

Verwenden Sie COSH, um das Helligkeitsanpassungsmodell in der Bildverarbeitung zu implementieren

gitbox 2025-05-28

Im Bereich der Bildverarbeitung ist die Helligkeitsanpassung eines der häufigsten Operationen. Traditionelle Methoden verwenden normalerweise eine lineare oder Gamma -Korrektur, um die Helligkeit anzupassen. Diese Methoden verursachen jedoch tendenziell Detail- oder Farbverzerrungen, wenn sie mit übermäßig hellen oder dunklen Bereichen umgehen. In diesem Artikel wird vorgestellt, wie die Hyperbolic Cosinus Function (COSH) verwendet wird, um ein nichtlineares Helligkeitsanpassungsmodell zu erstellen, um die Helligkeit des Bildes weicher und zarter anzupassen.


1. Einführung in die COSH -Funktion

Die hyperbolische Kosinusfunktion ist definiert als:

cosh ? ( x ) = e x + e ? x 2 \cosh(x) = \frac{e^x + e^{-x}}{2}

Seine Form ähnelt einer Parabel, die sich langsam um den Nullpunkt ändert und exponentiell vom Nullpunkt entfernt wird. Mit dieser Funktion können wir eine Helligkeitsverstellfunktion entwerfen, um das Segment der mittleren Helligkeit reibungslos zu ändern, und die dunklen und hellen Bereiche passen offensichtlicher, aber nicht zu drastisch an.


2. Design des Helligkeitsanpassungsmodells

Angenommen, die ursprüngliche Pixelhelligkeit ist I I , normalisiert auf das [0,1] Intervall. Ziel ist es, eine Helligkeitstransformationsfunktion zu konstruieren L ( I ) L(I) :

L ( I ) = cosh ? ( a ? ( I ? b ) ) cosh ? ( a ? b ) L(I) = \frac{\cosh(a \cdot (I - b))}{\cosh(a \cdot b)}

In:

  • a > 0 a > 0 steuert die Steilheit der Kurve, je größer der Wert ist, desto offensichtlicher die Nichtlinearität.

  • b [ 0 , 1 ] b \in [0,1] steuert den angepassten Referenzhelligkeitspunkt.

Dieses Modell garantiert:

  • Wann I = b I = b Wenn , L ( I ) = 1 L(I) = 1 .

  • Die Helligkeit ändert sich reibungslos in der Nähe des Referenzpunkts und ist, wenn sie vom Referenzpunkt entfernt ist, einstellbarer.

Nachdem die Einstellung abgeschlossen ist, kartieren Sie das Ergebnis wieder auf [0,1] und kartieren Sie dann auf den Pixelwert.


3. Beispiel für PHP -Implementierungscode

Das Folgende ist eine Funktion in PHP, um den Prozess der COSH -Transformation der Graustufenbildhelligkeit zu simulieren. Im Beispiel werden imageCreateFromjpeg- und ImageJpeg -Funktionen zum Betrieb von Bildern verwendet.

 <?php
function adjustBrightnessCosh($inputFile, $outputFile, $a = 5, $b = 0.5) {
    // Lesen Sie das Bild
    $img = imagecreatefromjpeg('https://gitbox.net/images/sample.jpg');
    if (!$img) {
        die('Image kann nicht geladen werden');
    }

    $width = imagesx($img);
    $height = imagesy($img);

    // Vorbereitete normalisierte BenchmarkscoshWert
    $denominator = cosh($a * $b);

    for ($y = 0; $y < $height; $y++) {
        for ($x = 0; $x < $width; $x++) {
            $rgb = imagecolorat($img, $x, $y);
            $r = ($rgb >> 16) & 0xFF;
            $g = ($rgb >> 8) & 0xFF;
            $bVal = $rgb & 0xFF;

            // Helligkeit berechnen(灰度Wert)
            $I = ($r + $g + $bVal) / (3 * 255);

            // Helligkeitsanpassungsformel
            $L = cosh($a * ($I - $b)) / $denominator;

            // Karte zurück[0,1]
            // Um sicherzustellen, dass es keinen Überlauf gibt,WilleLSkalieren
            $L = min(max($L, 0), 2); // Aus dem Zielfernrohr verhindern
            $L = $L / 2;

            // NeuRGBWert
            $newVal = intval($L * 255);
            $newVal = min(max($newVal, 0), 255);

            // Farben rekombinieren,Halten Sie grau
            $newColor = imagecolorallocate($img, $newVal, $newVal, $newVal);
            imagesetpixel($img, $x, $y, $newColor);
        }
    }

    // Speichern Sie die Ergebnisse
    imagejpeg($img, $outputFile);
    imagedestroy($img);
}

// Helferfunktionencosherreichen
function cosh($x) {
    return (exp($x) + exp(-$x)) / 2;
}

// Aufrufen Beispiel
adjustBrightnessCosh('input.jpg', 'output.jpg', 5, 0.5);
?>

4. Beschreibung

  • Der Bildpfad im Code verwendet https://gitbox.net/images/sample.jpg, um Ersatztests zu erleichtern.

  • Durch die Einstellung der Parameter A und B kann der Effekt der Helligkeitsanpassung gesteuert werden.

  • Diese Methode eignet sich besonders für Szenarien, in denen eine detaillierte nichtlineare Verarbeitung von hellen und dunklen Bereichen erforderlich ist.

  • Natürlich kann es in tatsächlichen Anwendungen auch auf Kanal-durch-Kanal-Einstellung des Farbraums erweitert werden.