/usr/include/OTB-5.8/otbPatternSampler.h is in libotb-dev 5.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef otbPatternSampler_h
#define otbPatternSampler_h
#include "otbSamplerBase.h"
namespace otb
{
/**
* \class PatternSampler
*
* \brief Periodic sampler for iteration loops
*
* This class allows doing periodic sampling during an iteration loop.
*
* \ingroup OTBStatistics
*/
class ITK_EXPORT PatternSampler : public SamplerBase
{
public:
typedef PatternSampler Self;
typedef SamplerBase Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Internal parameters, only contains an offset to shift the periodic
* sampling
*/
typedef struct Parameter
{
/** Maximum size of the internal patterns */
unsigned long MaxPatternSize;
/** First sampling pattern */
std::vector<bool> Pattern1;
/** Second sampling pattern (can be empty).
* It is called when the first pattern returns false */
std::vector<bool> Pattern2;
/** Seed used to randomly generate patterns (used only if greater than 0) */
unsigned int Seed;
bool operator!=(const struct Parameter & param) const;
} ParameterType;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Runtime information support. */
itkTypeMacro(PatternSampler,SamplerBase);
/** Setter for internal parameters */
void SetParameters(const ParameterType ¶m)
{
if (m_Parameters != param)
{
this->Modified();
m_Parameters = param;
}
}
/** Getter for internal parameters */
ParameterType GetParameters()
{
return m_Parameters;
}
/**
* Method that resets the internal state of the sampler
*/
void Reset(void) ITK_OVERRIDE;
/**
* Method to call during iteration, returns true if the sample is selected,
* and false otherwise.
*/
bool TakeSample(void);
/** Import sampling patterns from an input string
* Two patterns may be given, separated by a slash
* Beware, the second pattern may be empty
*/
static void ImportPatterns(
const std::string &data,
ParameterType ¶m);
/** Export the sampling patterns in the input parameter to
* an output string. If the second pattern is not empty, it will be
* concatenated to the output string, separated by a slash
*/
static void ExportPatterns(
const ParameterType ¶m,
std::string &data);
protected:
/** Constructor */
PatternSampler();
/** Destructor */
~PatternSampler() ITK_OVERRIDE {}
private:
// Not implemented
PatternSampler(const Self&);
void operator=(const Self&);
/** Generate a random array of booleans */
std::vector<bool> RandArray(unsigned long N,unsigned long T);
/** Find a suitable size for internal patterns */
unsigned long FindBestSize(unsigned long tot);
/** Internal parameters for the sampler */
ParameterType m_Parameters;
/** Index tracking the position in first internal pattern */
unsigned long m_Index1;
/** Index tracking the position in the second internal pattern */
unsigned long m_Index2;
/** Helper function to decode boolean sequence
* Caracters converted into true : '1' 'X' 'y' 'Y' '|' '+'
* Caracters converted into false : '0' '_' 'n' 'N' '.' '-'
* Other caracters will return a 2 */
static unsigned int ParseSymbol(const char &s);
};
} // namespace otb
#endif
|