libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

enc_photon_noise_test.cc (1850B)


      1 // Copyright (c) the JPEG XL Project Authors. All rights reserved.
      2 //
      3 // Use of this source code is governed by a BSD-style
      4 // license that can be found in the LICENSE file.
      5 
      6 #include "lib/jxl/enc_photon_noise.h"
      7 
      8 #include "lib/jxl/test_utils.h"
      9 #include "lib/jxl/testing.h"
     10 
     11 namespace jxl {
     12 namespace {
     13 
     14 using ::testing::FloatNear;
     15 using ::testing::Pointwise;
     16 
     17 MATCHER(AreApproximatelyEqual, "") {
     18   constexpr float kTolerance = 1e-6;
     19   const float actual = std::get<0>(arg);
     20   const float expected = std::get<1>(arg);
     21   return testing::ExplainMatchResult(FloatNear(expected, kTolerance), actual,
     22                                      result_listener);
     23 }
     24 
     25 TEST(EncPhotonNoiseTest, LUTs) {
     26   EXPECT_THAT(
     27       SimulatePhotonNoise(/*xsize=*/6000, /*ysize=*/4000, /*iso=*/100).lut,
     28       Pointwise(AreApproximatelyEqual(),
     29                 {0.00259652, 0.0139648, 0.00681551, 0.00632582, 0.00694917,
     30                  0.00803922, 0.00934574, 0.0107607}));
     31   EXPECT_THAT(
     32       SimulatePhotonNoise(/*xsize=*/6000, /*ysize=*/4000, /*iso=*/800).lut,
     33       Pointwise(AreApproximatelyEqual(),
     34                 {0.02077220, 0.0420923, 0.01820690, 0.01439020, 0.01293670,
     35                  0.01254030, 0.01277390, 0.0134161}));
     36   EXPECT_THAT(
     37       SimulatePhotonNoise(/*xsize=*/6000, /*ysize=*/4000, /*iso=*/6400).lut,
     38       Pointwise(AreApproximatelyEqual(),
     39                 {0.1661770, 0.1691120, 0.05309080, 0.03963960, 0.03357410,
     40                  0.03001650, 0.02776740, 0.0263478}));
     41 
     42   // Lower when measured on a per-pixel basis as there are fewer of them.
     43   EXPECT_THAT(
     44       SimulatePhotonNoise(/*xsize=*/4000, /*ysize=*/3000, /*iso=*/6400).lut,
     45       Pointwise(AreApproximatelyEqual(),
     46                 {0.0830886, 0.1008720, 0.0367748, 0.0280305, 0.0240236,
     47                  0.0218040, 0.0205771, 0.0200058}));
     48 }
     49 
     50 }  // namespace
     51 }  // namespace jxl