LCOV - code coverage report
Current view: top level - generators - NoiseGenerators.cpp (source / functions) Hit Total Coverage
Test: test_coverage.info.cleaned Lines: 0 20 0.0 %
Date: 2022-08-04 03:43:28 Functions: 0 6 0.0 %

          Line data    Source code
       1             : #include "NoiseGenerators.h"
       2             : 
       3             : namespace elsa
       4             : {
       5             :     template <typename data_t>
       6           0 :     DataContainer<data_t> NoNoiseGenerator::operator()(const DataContainer<data_t>& dc) const
       7             :     {
       8           0 :         return dc;
       9             :     }
      10             : 
      11             :     template <typename data_t>
      12           0 :     DataContainer<data_t> GaussianNoiseGenerator::operator()(const DataContainer<data_t>& dc) const
      13             :     {
      14             :         // Define random generator with Gaussian distribution
      15           0 :         std::random_device randDevice{};
      16           0 :         std::default_random_engine generator{randDevice()};
      17           0 :         std::normal_distribution<data_t> dist(_mean, _stddev);
      18             : 
      19           0 :         auto newDc = dc;
      20             : 
      21           0 :         for (int i = 0; i < dc.getSize(); ++i) {
      22           0 :             newDc[i] += dist(generator);
      23             :         }
      24           0 :         return newDc;
      25           0 :     }
      26             : 
      27             :     template <typename data_t>
      28           0 :     DataContainer<data_t> PoissonNoiseGenerator::operator()(const DataContainer<data_t>& dc) const
      29             :     {
      30             :         // Define random generator with Gaussian distribution
      31           0 :         std::random_device randDevice{};
      32           0 :         std::default_random_engine generator{randDevice()};
      33           0 :         std::exponential_distribution<data_t> dist(_mean);
      34             : 
      35           0 :         auto newDc = dc;
      36             : 
      37           0 :         for (int i = 0; i < dc.getSize(); ++i) {
      38           0 :             newDc[i] += dist(generator);
      39             :         }
      40           0 :         return newDc;
      41           0 :     }
      42             : 
      43             :     // Explicit template instantiations
      44             :     template DataContainer<float>
      45             :         NoNoiseGenerator::operator()<float>(const DataContainer<float>&) const;
      46             :     template DataContainer<double>
      47             :         NoNoiseGenerator::operator()<double>(const DataContainer<double>&) const;
      48             : 
      49             :     template DataContainer<float>
      50             :         GaussianNoiseGenerator::operator()<float>(const DataContainer<float>&) const;
      51             :     template DataContainer<double>
      52             :         GaussianNoiseGenerator::operator()<double>(const DataContainer<double>&) const;
      53             : 
      54             :     template DataContainer<float>
      55             :         PoissonNoiseGenerator::operator()<float>(const DataContainer<float>&) const;
      56             :     template DataContainer<double>
      57             :         PoissonNoiseGenerator::operator()<double>(const DataContainer<double>&) const;
      58             : 
      59             : } // namespace elsa

Generated by: LCOV version 1.14