00001 #ifndef Impala_Core_Array_Trait_UpoRGB2Intensity_h 00002 #define Impala_Core_Array_Trait_UpoRGB2Intensity_h 00003 00004 #include "Core/Array/Pattern/Categories.h" 00005 00006 namespace Impala 00007 { 00008 namespace Core 00009 { 00010 namespace Array 00011 { 00012 namespace Trait 00013 { 00014 00015 00017 template<class DstArrayT, class SrcArrayT> 00018 class UpoRGB2Intensity 00019 { 00020 public: 00022 typedef Pattern::TagTransInVar TransVarianceCategory; 00023 00025 typedef Pattern::TagCallValue CallCategory; 00026 00027 typedef typename DstArrayT::ArithType DstArithT; 00028 typedef typename SrcArrayT::ArithType SrcArithT; 00029 00031 UpoRGB2Intensity() 00032 { 00033 } 00034 00036 DstArithT 00037 DoIt(const SrcArithT& x) 00038 { 00039 return 0.212671*x.X() + 0.715160*x.Y() + 0.072169*x.Z(); 00040 } 00041 }; 00042 00043 } // namespace Trait 00044 } // namespace Array 00045 } // namespace Core 00046 } // namespace Impala 00047 00048 #endif