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 */