From 32c7b943bf53d2795fca01967b9bec4dc9470f8a Mon Sep 17 00:00:00 2001 From: Haohua-Lyu Date: Wed, 20 Apr 2022 01:36:33 -0700 Subject: [PATCH] Compute lambda_shot and lambda_read --- src/merge.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/merge.cpp b/src/merge.cpp index c937d8a..b2fe07a 100644 --- a/src/merge.cpp +++ b/src/merge.cpp @@ -91,4 +91,23 @@ std::pair merge::getNoiseParams( int ISO, \ return std::make_pair(lambda_shot, lambda_read); } +std::pair merge::getNoiseParams( int ISO, \ + int white_level, \ + double black_level ) +{ + // Set ISO to 100 if not positive + ISO = ISO <= 0 ? 100 : ISO; + + // Calculate shot noise and read noise parameters w.r.t ISO 100 + double lambda_shot_p = ISO / 100.0f * baseline_lambda_shot; + double lambda_read_p = (ISO / 100.0f) * (ISO / 100.0f) * baseline_lambda_read; + + // Rescale shot and read noise to normal range + double lambda_shot = lambda_shot_p * (white_level - black_level); + double lambda_read = lambda_read_p * (white_level - black_level) * (white_level - black_level); + + // return pair + return std::make_pair(lambda_shot, lambda_read); +} + } // namespace hdrplus