00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef VxFrmFtorLocMax_h
00016 #define VxFrmFtorLocMax_h
00017
00018 #include "VxFrmFtorNgb.h"
00019
00020 template<class T>
00021 class VxFrmFtorLocMax : public VxFrmFtorNgb {
00022 public:
00023 VxFrmFtorLocMax(int kernelSize) {
00024 for(int i=-kernelSize; i<=kernelSize; i++) {
00025 _kernel.push_back(i);
00026 }
00027 }
00028
00029 VxFrmFtorLocMax(std::vector<int> kernel) {
00030 _kernel = kernel;
00031 }
00032
00033 virtual void Init(int frame) {
00034 _frameNr = frame;
00035 _output = 0;
00036 };
00037
00038 virtual void pushInput(int frame, const VxValue& input) {
00039 T inp;
00040 input.get(inp);
00041 if(inp>_output) {
00042 _output = inp;
00043 }
00044 }
00045
00046 virtual VxValue getOutput() {
00047 return VxValue((T) _output);
00048 }
00049
00050 virtual std::vector<int> getKernel(int frame) {
00051 return _kernel;
00052 }
00053
00054 virtual HxString getInputClass() const {
00055 return HxClassName<T>();
00056 }
00057
00058 virtual HxString getOutputClass() const {
00059 return HxClassName<T>();
00060 }
00061
00062 virtual HxString name() const {
00063 return HxString("LocalMax");
00064 }
00065
00066
00067 virtual VxFrmFtorNgb* clone() const {
00068 return new VxFrmFtorLocMax(_kernel);
00069 }
00070
00071 private:
00072
00073 std::vector<int> _kernel;
00074 int _frameNr;
00075 T _output;
00076
00077 };
00078 #endif