24 static const char * MASK_FILTER_MASK_TYPE_KW =
"mask_type";
31 theMaskType(OSSIM_MASK_TYPE_SELECT),
59 imageSourceData = imageSource->
getTile(rect, resLevel);
61 return imageSourceData;
78 if(!imageSourceData.
valid())
82 if(!maskSourceData.
valid())
84 return imageSourceData;
141 if((tw*th) != (dw*dh))
171 return imageSourceData;
181 return imageSourceData;
249 return imageSourceData;
317 return imageSourceData;
385 return imageSourceData;
447 template <
class inputT,
class maskT>
480 if(maskBands&&inputBands)
485 maskT* bufMask =
static_cast<maskT*
> ( maskSourceData->
getBuf() );
486 inputT* bufIn =
static_cast<inputT*
>( imageSourceData->
getBuf(band) );
487 inputT* bufOut =
static_cast<inputT*
>(
theTile->
getBuf(band) );
491 for(offset = 0; offset < maxOffset; ++offset)
505 *bufOut = *bufIn != nullPix ? *bufIn : minPix;
523 template <
class inputT,
class maskT>
556 if(maskBands&&inputBands)
561 maskT* bufMask = (maskT*)maskSourceData->
getBuf();
562 inputT* bufIn = (inputT*)imageSourceData->
getBuf(band);
566 for(offset = 0; offset < maxOffset; ++offset)
587 template <
class inputT,
class maskT>
611 if(maskBands&&inputBands)
616 maskT* bufMask = (maskT*)maskSourceData->
getBuf();
617 inputT* bufIn = (inputT*)imageSourceData->
getBuf(band);
625 for(offset = 0; offset < maxOffset; ++offset)
629 *bufOut = (inputT)((*bufIn)*((double)(*bufMask)/255.0));
647 for(offset = 0; offset < maxOffset; ++offset)
649 *bufOut = (inputT)((*bufIn)*((double)(*bufMask)/255.0));
667 template <
class inputT,
class maskT>
676 if(maskBands&&inputBands)
681 maskT* bufMask = (maskT*)maskSourceData->
getBuf();
686 for(offset = 0; offset < maxOffset; ++offset)
724 if(maskType ==
"select")
728 else if(maskType ==
"invert")
732 else if(maskType ==
"weighted")
736 else if(maskType ==
"binary")
740 else if(maskType ==
"binary_inverse")
744 else if(maskType ==
"select_clamp_min")
774 maskType =
"weighted";
784 maskType =
"binary_inverse";
789 maskType =
"select_clamp_min";
806 const char* lookup = kwl.
find(prefix, MASK_FILTER_MASK_TYPE_KW);
816 const char* prefix)
const 819 MASK_FILTER_MASK_TYPE_KW,
828 if( property.
valid() )
830 if(property->
getName() == MASK_FILTER_MASK_TYPE_KW)
846 if(name == MASK_FILTER_MASK_TYPE_KW)
848 std::vector<ossimString> constraintList;
868 propertyNames.push_back(MASK_FILTER_MASK_TYPE_KW);
16 bit unsigned integer (15 bits used)
virtual void setNumberOfInputs(ossim_int32 numberOfInputs)
Will set the number of inputs.
virtual void valueToString(ossimString &valueResult) const =0
ossimRefPtr< ossimImageData > executeMaskFilterInvertSelection(inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
virtual const ossim_float64 * getMaxPix() const
Standard select if mask is true then keep with min.
virtual ossim_uint32 getNumberOfBands() const
virtual void setImageRectangle(const ossimIrect &rect)
virtual void setWidthHeight(ossim_uint32 w, ossim_uint32 h)
Represents serializable keyword/value map.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
const char * find(const char *key) const
virtual void initialize()
ossimRefPtr< ossimImageData > executeMaskFilterBinary(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
Will execute the binary algorithm.
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
RTTI_DEF1(ossimMaskFilter, "ossimMaskFilter", ossimImageSource)
virtual bool canConnectMyInputTo(ossim_int32 index, const ossimConnectableObject *object) const
required to be overriden by derived classes
const ossimIpt & ul() const
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
virtual ~ossimMaskFilter()
Will delete its owned tile.
virtual void initialize()
Initialize the data buffer.
ossimRefPtr< ossimImageData > executeMaskFilterInvertSelect(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the invert selection algorithm.
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
Main entry point for the algorithm.
virtual ossimObject * dup() const
standard select if mask is true then keep
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
Interface to set the mask type.
static ossimImageDataFactory * instance()
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) 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.
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.
virtual ossimDataObjectStatus validate() const
signed short ossim_sint16
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
Adds "mask_type" to list.
virtual ossimString getMaskTypeString() const
Returns the current mask algorithm used as a string.
virtual ossim_uint32 getNumberOfInputBands() const
ossimRefPtr< ossimImageSource > theMaskSource
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
32 bit normalized floating point
virtual ossimIrect getImageRectangle() const
static ossimString downcase(const ossimString &aString)
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
ossimRefPtr< ossimImageData > executeMaskFilterSelect(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the section algorithm.
virtual void setOrigin(const ossimIpt &origin)
virtual const ossim_float64 * getMinPix() const
virtual ossimScalarType getScalarType() const
virtual void makeBlank()
Initializes data to null pixel values.
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
virtual void setMaskType(ossimFileSelectionMaskType type)
Sets the mask type.
virtual ossimFileSelectionMaskType getMaskType() const
Returns the current mask algorithm used.
ossimRefPtr< ossimImageData > executeMaskFilterWeighted(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the weighted algorithm.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual const void * getBuf() const
ossimMaskFilter(ossimObject *owner=NULL)
Default Constructor.
bool theInputListIsFixedFlag
Indicates whether the theInputObjectList is fixed.
virtual void setDataObjectStatus(ossimDataObjectStatus status) const
Full list found in ossimConstants.h.
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
ossimDataObjectStatus
Definitions for data object status.
bool theOutputListIsFixedFlag
Indicates whether the theOutputObjectList is fixed.
ossimFileSelectionMaskType
Enumeration used to identify what the selection type for this mask is to be used: ...
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
ossimRefPtr< ossimImageData > executeMaskFilterSelection(inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
virtual ossim_uint32 getNumberOfInputBands() const =0
virtual const ossimIpt & getOrigin() const
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
const ossimString & getName() const
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
void setMaskSource(ossimImageSource *maskSource)
This set method is necessary when this object is being added to an ossimImageChain because ossimImage...
16 bit unsigned integer (12 bits used)
ossimRefPtr< ossimImageData > executeMaskFilterBinarySelection(inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
virtual ossimRefPtr< ossimImageData > executeMaskFilter(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)