SpaceVariantDoGModule.C
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include "SpaceVariant/SpaceVariantDoGModule.H"
00037 #include "SpaceVariant/SpaceVariantOpts.H"
00038 #include "SpaceVariant/SVChanLevels.H"
00039 #include "Image/ImageSet.H"
00040
00041
00042
00043
00044 SpaceVariantDoGModule::SpaceVariantDoGModule(OptionManager& mgr,
00045 const std::string& descrName, const std::string& tagName) :
00046 FovealTransformModule(mgr, descrName, tagName),
00047 itsSvDoGCenter(&OPT_SpaceVariantDogCenter, this),
00048 itsSvDoGSize(&OPT_SpaceVariantDogSize, this)
00049 { }
00050
00051
00052 SpaceVariantDoGModule::~SpaceVariantDoGModule()
00053 { }
00054
00055
00056 Image<PixRGB<float> > SpaceVariantDoGModule::transformRGB(const Image<PixRGB<byte> >& image,
00057 const ImageSet<PixRGB<float> >* const pyr_cache)
00058 {
00059 return this->transformDoG(image, pyr_cache);
00060 }
00061
00062
00063 void SpaceVariantDoGModule::transformRgbPyramid(const Image<PixRGB<byte> >& image, ImageSet<PixRGB<float> >& pyramid, const SVChanLevels& levels, const ImageSet<PixRGB<float> >* const pyr_cache)
00064 {
00065 return this->transformDoGPyramid(image, pyramid, levels, pyr_cache);
00066 }
00067
00068
00069 Image<float> SpaceVariantDoGModule::transformFloat(const Image<float>& image, const ImageSet<float>* const pyr_cache)
00070 {
00071 return this->transformDoG(image, pyr_cache);
00072 }
00073
00074
00075 void SpaceVariantDoGModule::transformFloatPyramid(const Image<float>& image, ImageSet<float>& pyramid, const SVChanLevels& levels, const ImageSet<float>* const pyr_cache)
00076 {
00077 return this->transformDoGPyramid(image, pyramid, levels, pyr_cache);
00078 }
00079
00080
00081 template <class T_or_RGB>
00082 Image<typename promote_trait<T_or_RGB, float>::TP>
00083 SpaceVariantDoGModule::transformDoG(const Image<T_or_RGB>& ret_image, const ImageSet<typename promote_trait<T_or_RGB, float>::TP>* const pyr_cache)
00084 {
00085 Image<T_or_RGB> output;
00086 if (ret_image.initialized())
00087 {
00088
00089 if (!validTransforms())
00090 clear(ret_image.getDims());
00091 else if (ret_image.getDims() != itsTransform->getCTDims())
00092 clear(ret_image.getDims());
00093
00094
00095 output = transformToDoG(*itsTransform, ret_image, itsSvDoGSize.getVal(), itsSvDoGCenter.getVal(), pyr_cache);
00096 }
00097 return output;
00098 }
00099
00100
00101 template <class T_or_RGB>
00102 void SpaceVariantDoGModule::transformDoGPyramid(const Image<T_or_RGB>& ret_image, ImageSet<typename promote_trait<T_or_RGB, float>::TP>& pyramid, const SVChanLevels& levels, const ImageSet<typename promote_trait<T_or_RGB, float>::TP>* const pyr_cache)
00103 {
00104 if (ret_image.initialized())
00105 {
00106
00107 if (!validTransforms())
00108 clear(ret_image.getDims());
00109 else if (ret_image.getDims() != itsTransform->getCTDims())
00110 clear(ret_image.getDims());
00111
00112 pyramid = ImageSet<typename promote_trait<T_or_RGB, float>::TP>(levels.numLevels());
00113 for (uint ii = 0; ii < levels.numLevels(); ++ii)
00114 pyramid[ii] = transformToDoG(*itsTransform, ret_image, itsSvDoGSize.getVal(), itsSvDoGCenter.getVal(), pyr_cache, levels.getVariance(ii));
00115 }
00116 }
00117
00118 #define INST_CLASS SpaceVariantDoGModule::
00119 #include "inst/SpaceVariant/SpaceVariantDoGModule.I"
00120
00121
00122
00123
00124