Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxExportExtraIdentMaskMedian.h

00001 /*
00002  *  Copyright (c) 2002, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Leon Todoran    (todoran@science.uva.nl)
00007  *  Dennis Koelma (koelma@wins.uva.nl)
00008  *
00009  */
00010 
00011 #ifndef HxExportExtraIdentMaskMedian_h
00012 #define HxExportExtraIdentMaskMedian_h
00013 
00014 #include "HxClassName.h"
00015 #include "HxSizes.h"
00016 #include "HxCategories.h"
00017 #include "HxTagList.h"
00018 
00019 
00023 template<class ResultT, class ImValT, class ExtraValT>
00024 class HxExportExtraIdentMaskMedian
00025 {
00026 public:
00028     typedef HxTagTransInVar     TransVarianceCategory;
00029 
00031     typedef HxTag1Phase         PhaseCategory;
00032 
00033 
00035                         HxExportExtraIdentMaskMedian(HxTagList& tags);
00036 
00038                         ~HxExportExtraIdentMaskMedian();
00039 
00041     void                doIt(const ImValT& imV, const ExtraValT& extraV);
00042 
00044     static HxString     className();
00045 
00046 private:
00047     HxTagList&          _tags;
00048     ExtraValT           _maskVal;
00049     ResultT             _result;
00050     ImValT              _minVal;
00051     ImValT              _maxVal;
00052     int                 _dim;
00053 };
00054 
00055 template<class ResultT, class ImValT, class ExtraValT>
00056 
00057 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::HxExportExtraIdentMaskMedian(HxTagList& tags) : _tags(tags)
00058 {
00059     _maskVal = HxGetTag<int>(tags, "maskVal");
00060     _result = HxScalarInt(0);
00061     _minVal = ImValT::LARGE_VAL;
00062     _maxVal = ImValT::SMALL_VAL;
00063 }
00064 
00065 template<class ResultT, class ImValT, class ExtraValT>
00066 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::~HxExportExtraIdentMaskMedian()
00067 {
00068     _result = ResultT(_minVal) + ResultT(_maxVal);
00069     _result /= HxScalarInt(2);
00070     HxAddTag(_tags, "result", HxValue(_result));
00071 }
00072 
00073 template<class ResultT, class ImValT, class ExtraValT>
00074 inline void
00075 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::doIt(const ImValT& imV,
00076                                                   const ExtraValT& extraV)
00077 {
00078     if (extraV == _maskVal) {
00079         if(imV < _minVal)
00080             _minVal=imV;
00081         if(imV > _maxVal)
00082             _maxVal=imV;
00083     }
00084 }
00085 
00086 template<class ResultT, class ImValT, class ExtraValT>
00087 inline HxString
00088 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::className()
00089 {
00090     return HxString("identMaskMedian");
00091 }
00092 
00093 
00094 #endif

Generated on Tue Feb 3 14:18:34 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001