29 m_MagnifyFilter(NULL),
30 m_MinifyFilterType(ossimScaleFilter_NEAREST_NEIGHBOR),
31 m_MagnifyFilterType(ossimScaleFilter_NEAREST_NEIGHBOR),
32 m_ScaleFactor(1.0, 1.0),
33 m_InverseScaleFactor(1.0, 1.0),
49 m_MagnifyFilter(NULL),
50 m_MinifyFilterType(ossimScaleFilter_NEAREST_NEIGHBOR),
51 m_MagnifyFilterType(ossimScaleFilter_NEAREST_NEIGHBOR),
52 m_ScaleFactor(scaleFactor),
119 imageRect.
ul().
y - (deltaPt.
y),
120 imageRect.
lr().
x + (deltaPt.
x),
121 imageRect.
lr().
y + (deltaPt.
y));
200 if(!inputData.
valid() ||
401 double support = 0.0;
421 for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
423 T* imageBuf = (T*)input->
getBuf(bandIdx);
424 T* viewBuf = (T*)output->
getBuf(bandIdx);
427 T outMinPix = (T)output->
getMinPix(bandIdx);
428 T outMaxPix = (T)output->
getMaxPix(bandIdx);
430 for(
x = 0;
x < vw; ++
x)
440 vector<double> kernel(delta);
443 for(kernelIdx = 0; kernelIdx < delta; ++kernelIdx)
445 double t = scale*(start + kernelIdx -
447 kernel[kernelIdx] = filter->
filter(t,
449 density += kernel[kernelIdx];
451 if ((density != 0.0) && (density != 1.0))
457 for (kernelIdx=0; kernelIdx < delta; kernelIdx++)
458 kernel[kernelIdx]*=density;
462 T* xptr = imageBuf + offset;
463 T* xCenterptr = imageBuf + offset;
464 T* outptr = viewBuf +
x;
466 for(
y = 0;
y < vh; ++
y)
470 if((*xCenterptr) == np)
476 for(kernelIdx = 0; kernelIdx < (int)kernel.size(); ++kernelIdx)
479 (kernel[kernelIdx] != 0.0))
481 result += ((double)(*(xptr+kernelIdx))*kernel[kernelIdx]);
482 density += kernel[kernelIdx];
489 if(result < outMinPix) result = outMinPix;
490 if(result > outMaxPix) result = outMaxPix;
523 double support = 0.0;
544 for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
546 T* imageBuf = (T*)input->
getBuf(bandIdx);
547 T* viewBuf = (T*)output->
getBuf(bandIdx);
550 T outMinPix = (T)output->
getMinPix(bandIdx);
551 T outMaxPix = (T)output->
getMaxPix(bandIdx);
553 for(
y = 0;
y < vh; ++
y)
563 vector<double> kernel(delta);
564 double density = 0.0;
565 for(kernelIdx = 0; kernelIdx < delta; ++kernelIdx)
567 kernel[kernelIdx] = filter->
filter(scale*(start + kernelIdx - center + .5),
569 density += kernel[kernelIdx];
571 if ((density != 0.0) && (density != 1.0))
577 for (kernelIdx=0; kernelIdx < delta; kernelIdx++)
578 kernel[kernelIdx]*=density;
584 for(
x = 0;
x < vw; ++
x)
586 T* yptr = imageBuf + offset +
x;
587 T* yCenterptr = imageBuf + offsetCenter +
x;
591 if((*yCenterptr) == np)
597 for(kernelIdx = 0; kernelIdx < delta; ++kernelIdx)
600 (kernel[kernelIdx] != 0.0))
602 result += ((*yptr)*kernel[kernelIdx]);
603 density += kernel[kernelIdx];
611 if(result < outMinPix) result = outMinPix;
612 if(result > outMaxPix) result = outMaxPix;
614 *viewBuf = (T)result;
676 if ( inputGeom.
valid() )
694 ossimIpt origin(ossim::round<int>(input.
ul().
x*scaleFactor.
x),
695 ossim::round<int>(input.
ul().
y*scaleFactor.
y));
715 return "nearest_neighbor";
755 return "blackman_sinc";
759 return "blackman_bessel";
775 return "nearest_neighbor";
782 typeUpper = typeUpper.
upcase();
788 else if(typeUpper.
contains(
"NEAREST_NEIGHBOR"))
792 else if(typeUpper.
contains(
"GAUSSIAN"))
796 else if(typeUpper.
contains(
"HANNING"))
800 else if(typeUpper.
contains(
"HAMMING"))
804 else if(typeUpper.
contains(
"LANCZOS"))
808 else if(typeUpper.
contains(
"MITCHELL"))
812 else if(typeUpper.
contains(
"CATROM"))
816 else if(typeUpper.
contains(
"CUBIC"))
820 else if(typeUpper.
contains(
"BLACKMAN_BESSEL"))
824 else if(typeUpper.
contains(
"BLACKMAN_SINC"))
828 else if(typeUpper.
contains(
"BLACKMAN"))
832 else if(typeUpper.
contains(
"QUADRATIC"))
836 else if(typeUpper.
contains(
"TRIANGLE"))
840 else if(typeUpper.
contains(
"HERMITE"))
16 bit unsigned integer (15 bits used)
virtual bool isSourceEnabled() const
virtual ossimIrect getBoundingRect(ossim_uint32 resLevel=0) const
This will return the bounding rect of the source.
void runFilter(const ossimIrect &imageRect, const ossimIrect &viewRect)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
virtual const ossim_float64 * getMaxPix() const
static ossimString upcase(const ossimString &aString)
virtual ossim_uint32 getNumberOfBands() const
virtual double getSupport() const =0
virtual void setImageRectangle(const ossimIrect &rect)
ossimRefPtr< ossimImageData > m_Tile
void updateGeometry()
If this object is maintaining an ossimImageGeometry, this method needs to be called after a scale cha...
Represents serializable keyword/value map.
void setScaleFactor(const ossimDpt &scale)
ossimString getFilterTypeAsString(ossimScaleFilterType type) const
const char * find(const char *key) const
void getSupport(double &x, double &y)
ossim_uint32 height() const
static const char * SCALE_X_KW
bool contains(char aChar) const
ossimFilter * createNewFilter(ossimScaleFilterType filterType, ossimScaleFilterType &result)
const ossimIpt & ul() const
virtual ossimDataObjectStatus getDataObjectStatus() const
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
virtual void applyScale(const ossimDpt &scale, bool recenterTiePoint)
Applies scale to theDeltaLonPerPixel, theDeltaLatPerPixel and theMetersPerPixel data members (eg: the...
const ossimFilter * getHorizontalFilter() const
static const char * SCALE_Y_KW
virtual void initialize()
Initialize the data buffer.
ossimFilter * m_MinifyFilter
virtual void initialize()
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
void runFilterTemplate(T dummy, const ossimIrect &imageRect, const ossimIrect &viewRect)
static ossimImageDataFactory * instance()
virtual ossimIrect getBoundingRect(ossim_uint32 resLevel=0) const
This will return the bounding rect of the source.
virtual ossimDataObjectStatus validate() const
signed short ossim_sint16
ossimFilter * m_MagnifyFilter
ossimImageSource * theInputConnection
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
virtual ossimIrect getImageRectangle() const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
ossim_float64 m_BlurFactor
virtual ~ossimScaleFilter()
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &tileRect, ossim_uint32 resLevel=0)
ossimRefPtr< ossimImageData > m_BlankTile
const ossimIpt & lr() const
ossimIrect scaleRect(const ossimIrect input, const ossimDpt &scaleFactor) const
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossim_uint32 width() const
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if not defined...
ossimDpt m_InverseScaleFactor
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
virtual double filter(double x, double support) const =0
RTTI_DEF1(ossimScaleFilter, "ossimScaleFilter", ossimImageSourceFilter)
virtual void setOrigin(const ossimIpt &origin)
virtual const ossim_float64 * getMinPix() const
ossimRefPtr< ossimImageGeometry > m_ScaledGeometry
The input image geometry, altered by the scale.
const ossimFilter * getVerticalFilter() const
void setFilterType(ossimScaleFilterType filterType)
virtual ossimScalarType getScalarType() const
virtual void makeBlank()
Initializes data to null pixel values.
64 bit normalized floating point
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
16 bit unsigned integer (11 bits used)
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if not defined...
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
void runVerticalFilterTemplate(T dummy, const ossimRefPtr< ossimImageData > &input, ossimRefPtr< ossimImageData > &output)
virtual void initialize()
virtual const void * getBuf() const
ossimScaleFilterType getFilterType(const ossimString &type) const
void runHorizontalFilterTemplate(T dummy, const ossimRefPtr< ossimImageData > &input, ossimRefPtr< ossimImageData > &output)
ossimScaleFilterType m_MinifyFilterType
ossimScaleFilterType m_MagnifyFilterType
unsigned char ossim_uint8
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)