polaroid-pp

Schlieren and contour plot tool
git clone https://git.0xfab.ch/polaroid-pp.git
Log | Files | Refs | Submodules | README | LICENSE

NormalizerCartridge.h (1404B)


      1 // File       : NormalizerCartridge.h
      2 // Date       : Thu Apr 28 09:32:20 2016
      3 // Author     : Fabian Wermelinger
      4 // Description: Data Normalization Cartridge
      5 // Copyright 2016 ETH Zurich. All Rights Reserved.
      6 #ifndef NORMALIZERCARTRIDGE_H_ONAUDSVX
      7 #define NORMALIZERCARTRIDGE_H_ONAUDSVX
      8 
      9 #include <algorithm>
     10 #include "Cartridge.h"
     11 
     12 class NormalizerCartridge : public Cartridge
     13 {
     14 public:
     15     NormalizerCartridge(ArgumentParser& parser) : Cartridge(parser) {}
     16 
     17     virtual void capture(PhotoPaper& photo, Slice& data)
     18     {
     19         photo.make_new(photo.get_name()+"-normalizer", data.width(), data.height());
     20 
     21         // set description
     22         string desc("2D_Normalized");
     23         photo.set_description(desc.c_str());
     24 
     25         // compute min/max for shader
     26         if (!m_bComputed)
     27         {
     28             m_dataMin = data.min();
     29             m_dataMax = data.max();
     30         }
     31         const Real data_normInv = 1.0 / (m_dataMax - m_dataMin);
     32 
     33         // pixel shader
     34         for (int h=0; h < data.height(); ++h)
     35             for (int w=0; w < data.width(); ++w)
     36                 photo.set_pixel((data(w,h) - m_dataMin) * data_normInv, w, h);
     37 
     38         photo.write();
     39     }
     40 
     41     virtual void compute(Slice& data)
     42     {
     43         m_dataMin = std::min(m_dataMin, data.min());
     44         m_dataMax = std::max(m_dataMax, data.max());
     45         m_bComputed = true;
     46     }
     47 };
     48 
     49 #endif /* NORMALIZERCARTRIDGE_H_ONAUDSVX */