LCOV - code coverage report
Current view: top level - elsa/generators - NoiseGenerators.cpp (source / functions) Hit Total Coverage
Test: coverage-all.lcov Lines: 23 23 100.0 %
Date: 2024-05-16 04:22:26 Functions: 6 6 100.0 %

          Line data    Source code
       1             : #include "NoiseGenerators.h"
       2             : 
       3             : namespace elsa
       4             : {
       5             :     template <typename data_t>
       6             :     DataContainer<data_t> NoNoiseGenerator::operator()(const DataContainer<data_t>& dc) const
       7           2 :     {
       8           2 :         return dc;
       9           2 :     }
      10             : 
      11             :     template <typename data_t>
      12             :     DataContainer<data_t> GaussianNoiseGenerator::operator()(const DataContainer<data_t>& dc) const
      13           2 :     {
      14             :         // Define random generator with Gaussian distribution
      15           2 :         std::random_device randDevice{};
      16           2 :         std::default_random_engine generator{randDevice()};
      17           2 :         std::normal_distribution<data_t> dist(_mean, _stddev);
      18             : 
      19           2 :         auto newDc = dc;
      20             : 
      21        2050 :         for (int i = 0; i < dc.getSize(); ++i) {
      22        2048 :             newDc[i] += dist(generator);
      23        2048 :         }
      24           2 :         return newDc;
      25           2 :     }
      26             : 
      27             :     template <typename data_t>
      28             :     DataContainer<data_t> PoissonNoiseGenerator::operator()(const DataContainer<data_t>& dc) const
      29           2 :     {
      30             :         // Define random generator with Gaussian distribution
      31           2 :         std::random_device randDevice{};
      32           2 :         std::default_random_engine generator{randDevice()};
      33           2 :         std::exponential_distribution<data_t> dist(_mean);
      34             : 
      35           2 :         auto newDc = dc;
      36             : 
      37        2050 :         for (int i = 0; i < dc.getSize(); ++i) {
      38        2048 :             newDc[i] += dist(generator);
      39        2048 :         }
      40           2 :         return newDc;
      41           2 :     }
      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