21 static const char* MIN_VALUE_PERCENT_KW =
"min_percent";
22 static const char* MAX_VALUE_PERCENT_KW =
"max_percent";
23 static const char* ALGORITHM_KW =
"algorithm";
26 "ossimMultiBandHistogramTileSource",
32 theAlgorithm(OSSIM_HISTOGRAM_LINEAR_STRETCH_ALGORITHM)
44 theAlgorithm(OSSIM_HISTOGRAM_LINEAR_STRETCH_ALGORITHM)
123 "Unknown scalar type");
154 std::vector<double> copyArray;
160 if(numberOfBands < copyArray.size())
162 std::copy(copyArray.begin(),
168 std::copy(copyArray.begin(),
169 copyArray.begin() + copyArray.size(),
177 if(numberOfBands < copyArray.size())
179 std::copy(copyArray.begin(),
185 std::copy(copyArray.begin(),
186 copyArray.begin() + copyArray.size(),
214 unsigned long numberOfMatches = 0;
216 while(numberOfMatches < static_cast<unsigned long>(numberOfSources))
219 const char* value = kwl.
find(prefix, key);
232 while(numberOfMatches < static_cast<unsigned long>(numberOfSources))
235 const char* value = kwl.
find(prefix, key);
261 const char* prefix)
const 286 algorithmString =
"linear_stretch";
291 algorithmString =
"none";
296 algorithmString =
"none";
303 algorithmString.
c_str(),
332 T* buf =
static_cast<T*
>(tile->
getBuf(band));
333 T np =
static_cast<T
>(tile->
getNullPix(band));
334 T minPix =
static_cast<T
>(tile->
getMinPix(band));
335 T maxPix =
static_cast<T
>(tile->
getMaxPix(band));
336 T range = (maxPix - minPix);
342 double delta = (maxClip - minClip);
344 if(fabs(delta) > 0.0)
346 for(
long offset = 0; offset < offsetUpperBound; ++offset)
348 if(buf[offset] != np)
350 if(buf[offset] < minClip)
352 buf[offset] = minPix;
354 else if(buf[offset] > maxClip)
356 buf[offset] = maxPix;
360 T value =
static_cast<T
>(minPix + ((buf[offset] - minClip)/delta)*range);
361 buf[offset] = value>maxPix?maxPix:value;
OSSIMDLLEXPORT void ossimSetError(const char *className, ossim_int32 error, const char *fmtString=0,...)
16 bit unsigned integer (15 bits used)
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
ossimRefPtr< ossimImageData > runLinearStretchAlgorithm(T dummyVariable, ossimRefPtr< ossimImageData > &tile)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=NULL)
Method to the load (recreate) the state of an object from a keyword list.
virtual const ossim_float64 * getMaxPix() const
ossimMultiBandHistogramTileSource()
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 getNumberOfSubstringKeys(const ossimString ®ularExpression) const
virtual void setImageRectangle(const ossimIrect &rect)
Represents serializable keyword/value map.
ossimMultiBandHistogramAlgorithm theAlgorithm
const char * find(const char *key) const
bool contains(char aChar) const
static ossimString toString(bool aValue)
Numeric to string methods.
virtual void disableSource()
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
static const ossimErrorCode OSSIM_ERROR
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
virtual ossimRefPtr< ossimMultiResLevelHistogram > getHistogram()
virtual void initialize()
Initialize the data buffer.
virtual void initialize()
ossim_int32 theCurrentResLevel
std::vector< double > theMaxValuePercentArray
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
std::vector< double > theMinValuePercentArray
ossim_uint32 getNumberOfBands() const
static ossimImageDataFactory * instance()
RTTI_DEF1(ossimMultiBandHistogramTileSource, "ossimMultiBandHistogramTileSource", ossimImageSourceHistogramFilter) ossimMultiBandHistogramTileSource
virtual ossimDataObjectStatus validate() const
ossimRefPtr< ossimImageData > theTile
ossimImageSource * theInputConnection
virtual void initialize()
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
ossimRefPtr< ossimHistogram > getHistogram(ossim_int32 band)
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
virtual ~ossimMultiBandHistogramTileSource()
static ossimString downcase(const ossimString &aString)
float HighClipVal(float clip_fraction) const
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
float LowClipVal(float clip_fraction) const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=NULL) const
Method to save the state of an object to a keyword list.
virtual const ossim_float64 * getMinPix() const
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
virtual const void * getBuf() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
ossimRefPtr< ossimMultiBandHistogram > getMultiBandHistogram(ossim_uint32 resLevel) const
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)