Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages | Examples

vetFilterNoiseChannel.h

00001 
00029 #ifndef __VETLIB_VETFILTERNOISECHANNEL_H__
00030  #define __VETLIB_VETFILTERNOISECHANNEL_H__
00031 
00032  #include "../vetDefs.h"
00033  #include "../vetFilter.h"
00034 
00035  #include "../vetFrameYUV420.h"
00036  #include "../vetFrameRGB24.h"
00037  #include "../vetFrameT.h"
00038 
00039 
00040 
00041 class vetFilterNoiseChannelParameters : public vetFilterParameters
00042 {
00043         public:
00044 
00045                 enum NOISEOPER{ ADDITIVE, MULTIPLICATIVE };
00046 
00047         protected:
00048 
00049                 NOISEOPER operation;
00050                 bool normalized;
00051                 float spread;
00052                 int normalize_value;
00053 
00054                 friend class vetFilterNoiseChannel;
00055 
00056 
00057         public:
00058 
00059                 vetFilterNoiseChannelParameters(NOISEOPER mode = vetFilterNoiseChannelParameters::ADDITIVE);
00060                 ~vetFilterNoiseChannelParameters() {}
00061 
00062                 void reset();
00063 
00064                 void setOperation(NOISEOPER mode) { operation = mode; };
00065                 NOISEOPER getOperation() { return operation; };
00066 
00067                 void setNormalisedNoise(bool value = true) { normalized = value; };
00068                 bool isNormalisedNoise() { return normalized; };
00069 
00070                 void setNormalisedNoiseValue(int value) { normalize_value = value; };
00071                 int getNormalisedNoiseValue() { return normalize_value; };
00072 
00073                 void setSpread(float value) { spread = value; };
00074                 float isSpread() { return spread; };
00075 
00076 
00077                 VETRESULT saveToStreamXML(FILE *fp);
00078                 VETRESULT loadFromStreamXML(FILE *fp);
00079 
00080 
00081 };
00082 
00083 class vetFilterNoiseChannel :   public vetFilter
00084  {
00085 
00086  protected:
00087 
00091                 vetFilterNoiseChannelParameters* myParams;
00092 
00093                 vetInput* externalSource;
00094 
00095                 PixelRGB24 zeroRGB;
00096                 PixelRGB24 oneRGB;
00097 
00098                 unsigned char zeroChar;
00099                 unsigned char oneChar;
00100 
00101                 void generateNoise(vetFrameYUV420& img, unsigned char zero);
00102                 void generateNoise(vetFrameRGB24& img, PixelRGB24 zero);
00103                 void generateNoise(vetFrameT<unsigned char>& img, unsigned char zero);
00104 
00105  public:
00106 
00107 
00112                 vetFilterNoiseChannel(vetFilterNoiseChannelParameters* initParams = NULL);
00113 
00117                 ~vetFilterNoiseChannel();
00118 
00128                 VETRESULT setParameters(vetFilterNoiseChannelParameters* initParams);
00129 
00135                 vetFilterNoiseChannelParameters& getParameters() { return *myParams; };
00136 
00146                 VETRESULT setFilterParameters (vetFilterNoiseChannelParameters* initParams)
00147                  {
00148                         if (initParams == NULL)
00149                                 return setParameters(NULL);
00150                         else
00151                                 return setParameters(static_cast<vetFilterNoiseChannelParameters*>(initParams));
00152                  };
00153 
00154 
00155 
00161                 vetFilterParameters* getFilterParameters ()
00162                  {
00163                         if (myParams == NULL)
00164                                 return NULL;
00165                         else
00166                                 return static_cast<vetFilterParameters*>(myParams);
00167                  };
00168 
00174                 VETRESULT reset();
00175 
00176 
00177                 // take care of frame rate and neutral pixel (0 for add, 1 for mult)
00178                 VETRESULT setNoiseSource(vetInput& frameSource);
00179 
00180                 //internal
00181                 void resetNoiseSource();
00182 
00183 
00184 
00185                 VETRESULT AddNoise(vetFrameYUV420& img);
00186                 VETRESULT AddNoise(vetFrameRGB24& img);
00187                 VETRESULT AddNoise(vetFrameT<unsigned char>& img);
00188 
00189                 VETRESULT MultiplyNoise(vetFrameYUV420& img);
00190                 VETRESULT MultiplyNoise(vetFrameRGB24& img);
00191                 VETRESULT MultiplyNoise(vetFrameT<unsigned char>& img);
00192 
00193 
00194 
00195 
00206                 VETRESULT importFrom(vetFrameYUV420& img);
00207 
00218                 VETRESULT importFrom(vetFrameRGB24& img);
00219 
00230                 VETRESULT importFrom(vetFrameT<unsigned char>& img);
00231 
00232 
00233 
00234 };
00235 
00236 
00237 
00238 #endif //__VETLIB_VETFILTERNOISECHANNEL_H__
00239 
00240 /*
00241 //TODO
00242         S/N // -> calcolo potenze!
00243 
00244 */

Generated on Tue Jan 24 11:59:02 2006 for VETLib by  doxygen 1.4.4