OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ossimMaskFilter Class Reference

#include <ossimMaskFilter.h>

Inheritance diagram for ossimMaskFilter:
ossimImageSource ossimSource ossimConnectableObject ossimErrorStatusInterface ossimObject ossimListenerManager ossimPropertyInterface ossimReferenced

Public Types

enum  ossimFileSelectionMaskType {
  OSSIM_MASK_TYPE_SELECT = 1, OSSIM_MASK_TYPE_INVERT = 2, OSSIM_MASK_TYPE_WEIGHTED = 3, OSSIM_MASK_TYPE_BINARY = 4,
  OSSIM_MASK_TYPE_BINARY_INVERSE = 5, OSSIM_MASK_TYPE_SELECT_CLAMP_MIN = 6
}
 Enumeration used to identify what the selection type for this mask is to be used: More...
 
- Public Types inherited from ossimConnectableObject
enum  ossimConnectableObjectDirectionType { CONNECTABLE_DIRECTION_NONE = 0, CONNECTABLE_DIRECTION_INPUT = 1, CONNECTABLE_DIRECTION_OUTPUT = 2 }
 
typedef std::vector< ossimRefPtr< ossimConnectableObject > > ConnectableObjectList
 

Public Member Functions

 ossimMaskFilter (ossimObject *owner=NULL)
 Default Constructor. More...
 
void setMaskSource (ossimImageSource *maskSource)
 This set method is necessary when this object is being added to an ossimImageChain because ossimImageChain::addLast() performs a disconnect of all the input sources, thus losing the assignments made via constructor accepting source pointers. More...
 
virtual void setMaskType (ossimFileSelectionMaskType type)
 Sets the mask type. More...
 
virtual void setMaskType (const ossimString &type)
 Sets the mask type from string. More...
 
virtual ossimFileSelectionMaskType getMaskType () const
 Returns the current mask algorithm used. More...
 
virtual ossimString getMaskTypeString () const
 Returns the current mask algorithm used as a string. More...
 
virtual ossimRefPtr< ossimImageDatagetTile (const ossimIrect &rect, ossim_uint32 resLevel=0)
 Main entry point for the algorithm. More...
 
virtual void initialize ()
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 Method to the load (recreate) the state of an object from a keyword list. More...
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Method to save the state of an object to a keyword list. More...
 
virtual bool canConnectMyInputTo (ossim_int32 index, const ossimConnectableObject *object) const
 required to be overriden by derived classes More...
 
virtual ossim_uint32 getNumberOfInputBands () const
 
virtual ossimRefPtr< ossimImageDataexecuteMaskFilter (ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 
virtual void setProperty (ossimRefPtr< ossimProperty > property)
 Interface to set the mask type. More...
 
virtual ossimRefPtr< ossimPropertygetProperty (const ossimString &name) const
 
virtual void getPropertyNames (std::vector< ossimString > &propertyNames) const
 Adds "mask_type" to list. More...
 
- Public Member Functions inherited from ossimImageSource
 ossimImageSource (ossimObject *owner=0)
 
 ossimImageSource (ossimObject *owner, ossim_uint32 inputListSize, ossim_uint32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimImageSource ()
 
virtual ossimRefPtr< ossimImageDatagetTile (const ossimIpt &origin, ossim_uint32 resLevel=0)
 
virtual bool getTile (ossimImageData *result, ossim_uint32 resLevel=0)
 Method to get a tile. More...
 
virtual ossimObjectgetObject ()
 For RTTI support. More...
 
virtual const ossimObjectgetObject () const
 For RTTI support. More...
 
virtual void getDecimationFactor (ossim_uint32 resLevel, ossimDpt &result) const
 Will return the decimation factor for the given resolution level. More...
 
virtual void getDecimationFactors (std::vector< ossimDpt > &decimations) const
 Will return an array of all decimations for each resolution level. More...
 
virtual ossim_uint32 getNumberOfDecimationLevels () const
 Will return the number of resolution levels. More...
 
virtual ossim_uint32 getNumberOfOutputBands () const
 Returns the number of bands in a tile returned from this TileSource. More...
 
virtual void getOutputBandList (std::vector< ossim_uint32 > &bandList) const
 Initializes bandList. More...
 
virtual ossimScalarType getOutputScalarType () const
 This will be used to query the output pixel type of the tile source. More...
 
virtual ossim_uint32 getTileWidth () const
 Returns the default processing tile width. More...
 
virtual ossim_uint32 getTileHeight () const
 Returns the default processing tile height. More...
 
virtual double getNullPixelValue (ossim_uint32 band=0) const
 Each band has a null pixel associated with it. More...
 
virtual double getMinPixelValue (ossim_uint32 band=0) const
 Returns the min pixel of the band. More...
 
virtual double getMaxPixelValue (ossim_uint32 band=0) const
 Returns the max pixel of the band. More...
 
virtual ossimIrect getBoundingRect (ossim_uint32 resLevel=0) const
 This will return the bounding rect of the source. More...
 
virtual void getBoundingRect (ossimIrect &rect, ossim_uint32 resLevel=0) const
 Gets the bounding rectangle of the source. More...
 
virtual void getValidImageVertices (std::vector< ossimIpt > &validVertices, ossimVertexOrdering ordering=OSSIM_CLOCKWISE_ORDER, ossim_uint32 resLevel=0) const
 ordering specifies how the vertices should be arranged. More...
 
virtual ossimRefPtr< ossimImageGeometrygetImageGeometry ()
 Returns the image geometry object associated with this tile source or NULL if not defined. More...
 
virtual void setImageGeometry (const ossimImageGeometry *geom)
 Default implementation sets geometry of the first input to the geometry specified. More...
 
virtual void saveImageGeometry () const
 Default method to call input's saveImageGeometry. More...
 
virtual void saveImageGeometry (const ossimFilename &geometry_file) const
 Default method to call input's saveImageGeometry. More...
 
virtual bool isIndexedData () const
 
- Public Member Functions inherited from ossimSource
 ossimSource (ossimObject *owner=0)
 
 ossimSource (ossimObject *owner, ossim_uint32 inputListSize, ossim_uint32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimSource ()
 
virtual bool isSourceEnabled () const
 
virtual void enableSource ()
 
virtual void disableSource ()
 
virtual bool getEnableFlag () const
 
virtual void setEnableFlag (bool flag)
 
virtual bool isInitialized () const
 
virtual void setInitializedFlag (bool flag)
 
virtual std::ostream & print (std::ostream &out) const
 Outputs theErrorStatus as an ossimErrorCode and an ossimString. More...
 
- Public Member Functions inherited from ossimConnectableObject
 ossimConnectableObject (ossimObject *owner=0)
 Base constructor of this object. More...
 
 ossimConnectableObject (ossimObject *owner, ossim_int32 inputListSize, ossim_int32 outputListSize, bool inputListIsFixedFlag=true, bool outputListIsFixedFlag=true)
 
virtual ~ossimConnectableObject ()
 
void setId (const ossimId &id)
 All connectable objects will have id's. More...
 
const ossimIdgetId () const
 Will allow us to get this object's id. More...
 
const ossimObjectgetOwner () const
 Fetches the current owner, most likely a container but not limited to one. More...
 
virtual void changeOwner (ossimObject *owner)
 Permits changing the object's owner. More...
 
virtual void setDescription (const ossimString &description)
 
virtual ossimString getDescription () const
 
virtual bool isConnected (ossimConnectableObjectDirectionType direction=CONNECTABLE_DIRECTION_INPUT) const
 will check the direction specified to see if all slots are full. More...
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findConnectableObject(const ossimId &id))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findObjectOfType(RTTItypeid typeId, ossimConnectableObjectDirectionType directionType, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findObjectOfType(const ossimString &obj, ossimConnectableObjectDirectionType directionType, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual ossimConnectableObject *findInputObjectOfType(const ossimString &className))
 
virtual ossim_int32 findInputIndex (const ossimConnectableObject *object)
 Return a valid index of the input list if the passed in object is found else return -1. More...
 
virtual ossim_int32 findInputIndex (const ossimId &id)
 Return a valid index of the input list if the passed id is found else return -1. More...
 
virtual ossim_int32 findOutputIndex (const ossimConnectableObject *object)
 Return a valid index of the output list if the passed in object is found else return -1. More...
 
virtual ossim_int32 findOutputIndex (const ossimId &id)
 Return a valid index of the output list if the passed in object is found else return -1. More...
 
virtual ossim_int32 getMyInputIndexToConnectTo (ossimConnectableObject *object) const
 Should return the first available index to connect to. More...
 
virtual ossim_int32 getMyOutputIndexToConnectTo (ossimConnectableObject *object) const
 Should return the first available index to connect to. More...
 
virtual bool canConnectMyOutputTo (ossim_int32 myOutputIndex, const ossimConnectableObject *object) const
 default implementation is to allow anyone to connect to us. More...
 
virtual void disconnect (ossimConnectableObject *object=0)
 Will disconnect the object passed in. More...
 
virtual void disconnect (const ossimId &id)
 Will disconnect the object passed in. More...
 
virtual ossimRefPtr< ossimConnectableObjectdisconnectMyInput (ossim_int32 inputIndex, bool disconnectOutputFlag=true, bool createEventFlag=true)
 Will disconnect the object at the given input index and generate a connection event. More...
 
virtual void disconnectMyInput (ossimConnectableObject *input, bool disconnectOutputFlag=true, bool createEventFlag=true)
 Finds the index of the passed in input and calls disconnectMyInput(inputIndex, disconnectOutputFlag, createEventFlag);. More...
 
virtual void disconnectMyInputs (ConnectableObjectList &inputList, bool disconnectOutputFlag=true, bool createEventFlag=true)
 
virtual ossimRefPtr< ossimConnectableObjectdisconnectMyOutput (ossim_int32 outputIndex, bool disconnectInputFlag=true, bool createEventFlag=true)
 Will disconnect the object at the given output index and generate a connection event. More...
 
virtual void disconnectMyOutput (ossimConnectableObject *output, bool disconnectInputFlag=true, bool createEventFlag=true)
 Will disconnect the output object. More...
 
virtual void disconnectMyOutputs (ConnectableObjectList &outputList, bool disconnectOutputFlag=true, bool createEventFlag=true)
 
virtual void disconnectAllInputs ()
 Will disconnect all of the input objects. More...
 
virtual void disconnectAllOutputs ()
 Will disconnect all of the output objects. More...
 
virtual ossim_int32 connectMyInputTo (ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
 Will try to connect this objects input to the passed in object. More...
 
virtual ossim_int32 connectMyInputTo (ossim_int32 inputIndex, ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
 Will connect the specified input to the passed in object. More...
 
virtual bool connectMyInputTo (ConnectableObjectList &inputList, bool makeOutputConnection=true, bool createEventFlag=true)
 
virtual ossim_int32 connectMyOutputTo (ossimConnectableObject *outputObject, bool makeInputConnection=true, bool createEventFlag=true)
 Will try to connect this objects output to the passed in object. More...
 
virtual bool connectMyOutputTo (ConnectableObjectList &outputList, bool makeInputConnection=true, bool createEventFlag=true)
 
virtual bool connectInputList (ConnectableObjectList &inputList)
 Will disconnect itself from all inputs and reset to the passed in input list. More...
 
virtual bool connectOutputList (ConnectableObjectList &outputList)
 Will disconnect itself from all outputs and reset to the passed in output list. More...
 
virtual ossim_uint32 getNumberOfInputs () const
 Returns the number of input objects. More...
 
virtual ossim_uint32 getNumberOfOutputs () const
 Return the number of output objects. More...
 
ossimConnectableObjectgetInput (ossim_uint32 index=0)
 returns the object at the specified index. More...
 
const ossimConnectableObjectgetInput (ossim_uint32 index=0) const
 returns the object at the specified index. More...
 
ossimConnectableObjectgetOutput (ossim_uint32 index=0)
 returns the object at the specified index. More...
 
const ossimConnectableObjectgetOutput (ossim_uint32 index=0) const
 returns the object at the specified index. More...
 
virtual void setNumberOfInputs (ossim_int32 numberOfInputs)
 Will set the number of inputs. More...
 
virtual bool getInputListIsFixedFlag () const
 
virtual bool getOutputListIsFixedFlag () const
 
virtual void setNumberOfOutputs (ossim_int32 numberOfInputs)
 Will set the number of outputs. More...
 
const ConnectableObjectListgetInputList () const
 
const ConnectableObjectListgetOutputList () const
 
ConnectableObjectListgetInputList ()
 
ConnectableObjectListgetOutputList ()
 
 OSSIM_DEPRECATE_METHOD (virtual void findAllObjectsOfType(ConnectableObjectList &result, const RTTItypeid &typeInfo, bool recurse=true))
 
 OSSIM_DEPRECATE_METHOD (virtual void findAllObjectsOfType(ConnectableObjectList &result, const ossimString &className, bool recurse=true))
 
virtual void propagateEventToOutputs (ossimEvent &event)
 
virtual void propagateEventToInputs (ossimEvent &event)
 
virtual void setProperty (const ossimString &name, const ossimString &value)
 
virtual ossim_uint32 saveStateOfAllInputs (ossimKeywordlist &kwl, bool saveThisStateFlag=true, ossim_uint32 objectIndex=1, const char *prefix=0) const
 Save the state of all inputs to a keyword list. More...
 
virtual bool fillContainer (ossimConnectableContainer &container)
 Inserts this object and all of its children and inputs into the container provided. More...
 
bool moveInputUp (const ossimId &id)
 Moves the input connection matching id up one in the connection list. More...
 
bool moveInputDown (const ossimId &id)
 Moves the input connection matching id down one in the connection list. More...
 
bool moveInputToTop (const ossimId &id)
 Moves the input connection matching id to the top of the connection list. More...
 
bool moveInputToBottom (const ossimId &id)
 Moves the input connection matching id to the bottom of the connection list. More...
 
virtual void accept (ossimVisitor &visitor)
 We will add a visitor interface for all connectable objects. More...
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 
- Public Member Functions inherited from ossimListenerManager
 ossimListenerManager ()
 
virtual ~ossimListenerManager ()
 
virtual void fireEvent (ossimEvent &event)
 
virtual bool addListener (ossimListener *listener)
 
virtual bool removeListener (ossimListener *listener)
 
virtual bool findListener (ossimListener *listener)
 
- Public Member Functions inherited from ossimPropertyInterface
 ossimPropertyInterface ()
 
virtual ~ossimPropertyInterface ()
 
virtual ossimString getPropertyValueAsString (const ossimString &name) const
 
void getPropertyList (std::vector< ossimRefPtr< ossimProperty > > &propertyList) const
 
void setProperties (std::vector< ossimRefPtr< ossimProperty > > &propertyList)
 
- Public Member Functions inherited from ossimErrorStatusInterface
 ossimErrorStatusInterface ()
 
virtual ~ossimErrorStatusInterface ()
 
virtual ossimErrorCode getErrorStatus () const
 
virtual ossimString getErrorStatusString () const
 
virtual void setErrorStatus (ossimErrorCode error_status) const
 
virtual void setErrorStatus () const
 
virtual void clearErrorStatus () const
 
bool hasError () const
 

Protected Member Functions

virtual ~ossimMaskFilter ()
 Will delete its owned tile. More...
 
void allocate ()
 
ossimRefPtr< ossimImageDataexecuteMaskFilterSelect (ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 will execute the section algorithm. More...
 
ossimRefPtr< ossimImageDataexecuteMaskFilterInvertSelect (ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 will execute the invert selection algorithm. More...
 
ossimRefPtr< ossimImageDataexecuteMaskFilterWeighted (ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 will execute the weighted algorithm. More...
 
ossimRefPtr< ossimImageDataexecuteMaskFilterBinary (ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 Will execute the binary algorithm. More...
 
template<class inputT , class maskT >
ossimRefPtr< ossimImageDataexecuteMaskFilterSelection (inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 
template<class inputT , class maskT >
ossimRefPtr< ossimImageDataexecuteMaskFilterInvertSelection (inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 
template<class inputT , class maskT >
ossimRefPtr< ossimImageDataexecuteMaskFilterWeighted (inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 
template<class inputT , class maskT >
ossimRefPtr< ossimImageDataexecuteMaskFilterBinarySelection (inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
 
- Protected Member Functions inherited from ossimImageSource
 ossimImageSource (const ossimImageSource &rhs)
 
const ossimImageSourceoperator= (const ossimImageSource &)
 
- Protected Member Functions inherited from ossimSource
 ossimSource (const ossimSource &rhs)
 
const ossimSourceoperator= (const ossimSource &rhs)
 
- Protected Member Functions inherited from ossimConnectableObject
ossimConnectableObjectfindObjectOfType (ConnectableObjectList *connectableList, ossimVisitor &visitor)
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Member Functions inherited from ossimListenerManager
 ossimListenerManager (const ossimListenerManager &rhs)
 

Protected Attributes

ossimFileSelectionMaskType theMaskType
 Member variable that holds the algorithm type to run on the calls to getTile. More...
 
ossimRefPtr< ossimImageDatatheTile
 Member used to store the result of the applied algorithm type. More...
 
ossimRefPtr< ossimImageSourcetheMaskSource
 
- Protected Attributes inherited from ossimSource
bool theEnableFlag
 
bool theInitializedFlag
 
- Protected Attributes inherited from ossimConnectableObject
ossimId theId
 
ossimString theDescription
 
ossimObjecttheOwner
 
bool theInputListIsFixedFlag
 Indicates whether the theInputObjectList is fixed. More...
 
bool theOutputListIsFixedFlag
 Indicates whether the theOutputObjectList is fixed. More...
 
ConnectableObjectList theInputObjectList
 Holds a list of input objects. More...
 
ConnectableObjectList theOutputObjectList
 Holds a list of output objects. More...
 
- Protected Attributes inherited from ossimListenerManager
std::list< ossimListener * > theListenerList
 
bool theEnabledFlag
 
std::list< ossimListener * > theDelayedAdd
 
std::list< ossimListener * > theDelayedRemove
 
bool theFireEventFlag
 
- Protected Attributes inherited from ossimErrorStatusInterface
ossimErrorCode theErrorStatus
 

Detailed Description

class ossimMaskFilter
   Requires 2 inputs.  The first input is assumed to be the image input
   and the second input is assumed to be the mask data.  It will only
   use one band of the mask and multi band masks are not supported.
   the number of bands, min pix, max pix, null pix ...etc are mapped
   to the first input.
Keywords:
   mask_type:
keywords description: This keyword can have the following values:
   select, select_clamp, invert, weighted, binary, or binary_inverse
  • select will use the input data and every where the mask is greater than 0 it will copy the input to the output.
  • select_clamp_min If mask pixel is non zero, output pixel is input pixel; else, null pixel value. Differs from select in that output pixel is clamped to min pixel if input pixel is used.
  • invert will use the input data and every where the mask is 0 it will copy the input to the output else it will place a null in the output.
  • weighted will normalize the mask between 0 and 1 and then multiply the input by that normalized value and copy to the output.
  • binary If mask pixel is non zero, output pixel is max pixel value; else, null.
  • binary_inverse If mask pixel is non zero, output pixel is max pixel value; else, null pixel value.
example of keywords:
 mask_type: select
 

Definition at line 61 of file ossimMaskFilter.h.

Member Enumeration Documentation

◆ ossimFileSelectionMaskType

Enumeration used to identify what the selection type for this mask is to be used:

  • OSSIM_MASK_TYPE_SELECT If the mask is non zero then the input is kept if it's 0 then the input is nulled out.
  • OSSIM_MASK_TYPE_INVERT If the input is non zero then the output is nulled else the input is kept
  • OSSIM_MASK_TYPE_WEIGHTED works as a multiplier of the input data. The mask is normalized to be between 0 and 1 and multiplies the input by that normalized value.
  • OSSIM_MASK_TYPE_BINARY If mask pixel is non zero, output pixel is null pixel value; else, max pixel value.
  • OSSIM_MASK_TYPE_BINARY_INVERSE If mask pixel is non zero, output pixel is max pixel value; else, null pixel value.
  • OSSIM_MASK_TYPE_SELECT_CLAMP_MIN If mask pixel is non zero, output pixel is input pixel; else, null pixel value. Differs from OSSIM_MASK_TYPE_SELECT in that output pixel is clamped to min pixel if input pixel is used. The clampling has the affect of flipping null pixels to min pixel value if the mask pixel is non zero and input pixel is a null.
Enumerator
OSSIM_MASK_TYPE_SELECT 

standard select if mask is true then keep

standard invert if mask is true the don't keep

OSSIM_MASK_TYPE_INVERT 

weighted operation.

Normalize the mask and multiply the input

OSSIM_MASK_TYPE_WEIGHTED 

binary image>

OSSIM_MASK_TYPE_BINARY 

inverse binary image>

OSSIM_MASK_TYPE_BINARY_INVERSE 

Standard select if mask is true then keep with min.

OSSIM_MASK_TYPE_SELECT_CLAMP_MIN 

Definition at line 89 of file ossimMaskFilter.h.

Constructor & Destructor Documentation

◆ ossimMaskFilter()

ossimMaskFilter::ossimMaskFilter ( ossimObject owner = NULL)

Default Constructor.

Definition at line 28 of file ossimMaskFilter.cpp.

29  :
30  ossimImageSource(owner, 1, 1, true, false),
32  theTile(0)
33 {
34 }
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
standard select if mask is true then keep
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.
ossimImageSource(ossimObject *owner=0)

◆ ~ossimMaskFilter()

ossimMaskFilter::~ossimMaskFilter ( )
protectedvirtual

Will delete its owned tile.

Definition at line 36 of file ossimMaskFilter.cpp.

37 {
38 }

Member Function Documentation

◆ allocate()

void ossimMaskFilter::allocate ( )
protected

Definition at line 110 of file ossimMaskFilter.cpp.

References ossimImageDataFactory::create(), ossimConnectableObject::getInput(), ossimImageData::initialize(), ossimImageDataFactory::instance(), and theTile.

Referenced by getTile().

111 {
112  if(getInput())
113  {
115  theTile->initialize();
116  }
117 }
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
virtual void initialize()
Initialize the data buffer.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
static ossimImageDataFactory * instance()
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const

◆ canConnectMyInputTo()

bool ossimMaskFilter::canConnectMyInputTo ( ossim_int32  myInputIndex,
const ossimConnectableObject object 
) const
virtual

required to be overriden by derived classes

Implements ossimConnectableObject.

Definition at line 95 of file ossimMaskFilter.cpp.

References PTR_CAST.

97 {
98  return (PTR_CAST(ossimImageSource, object)!= 0);
99 }
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321

◆ executeMaskFilter()

ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilter ( ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
virtual

Definition at line 119 of file ossimMaskFilter.cpp.

References ossimImageData::dup(), executeMaskFilterBinary(), executeMaskFilterInvertSelect(), executeMaskFilterSelect(), executeMaskFilterWeighted(), ossimRefPtr< T >::get(), ossimImageData::getBuf(), ossimDataObject::getDataObjectStatus(), ossimImageData::getHeight(), ossimImageData::getOrigin(), ossimImageData::getWidth(), ossimImageData::initialize(), ossimImageData::loadTile(), OSSIM_MASK_TYPE_BINARY, OSSIM_MASK_TYPE_BINARY_INVERSE, OSSIM_MASK_TYPE_INVERT, OSSIM_MASK_TYPE_SELECT, OSSIM_MASK_TYPE_SELECT_CLAMP_MIN, OSSIM_MASK_TYPE_WEIGHTED, ossimDataObject::setDataObjectStatus(), ossimImageData::setOrigin(), ossimImageData::setWidthHeight(), theMaskType, and theTile.

Referenced by getTile().

122 {
123  if(!theTile)
124  {
125  theTile = (ossimImageData*)imageSourceData->dup();
126  if(!theTile->getBuf())
127  {
128  theTile->initialize();
129  }
130  }
131  else
132  {
133  ossim_uint32 tw = theTile->getWidth();
135  ossim_uint32 dw = imageSourceData->getWidth();
136  ossim_uint32 dh = imageSourceData->getHeight();
137 
138  theTile->setWidthHeight(imageSourceData->getWidth(),
139  imageSourceData->getHeight());
140  theTile->setOrigin(imageSourceData->getOrigin());
141  if((tw*th) != (dw*dh))
142  {
143  theTile->initialize();
144  }
145  theTile->setDataObjectStatus(imageSourceData->getDataObjectStatus());
146  }
147  theTile->loadTile(imageSourceData.get());
148  theTile->setDataObjectStatus(imageSourceData->getDataObjectStatus());
149  switch(theMaskType)
150  {
153  {
154  return executeMaskFilterSelect(theTile, maskSourceData);
155  }
157  {
158  return executeMaskFilterInvertSelect(theTile, maskSourceData);
159  }
161  {
162  return executeMaskFilterWeighted(theTile, maskSourceData);
163  }
166  {
167  return executeMaskFilterBinary(theTile, maskSourceData);
168  }
169  }
170 
171  return imageSourceData;
172 }
virtual ossim_uint32 getWidth() const
Standard select if mask is true then keep with min.
virtual void setWidthHeight(ossim_uint32 w, ossim_uint32 h)
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.
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
virtual void initialize()
Initialize the data buffer.
ossimRefPtr< ossimImageData > executeMaskFilterInvertSelect(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the invert selection algorithm.
virtual ossimObject * dup() const
standard select if mask is true then keep
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.
unsigned int ossim_uint32
ossimRefPtr< ossimImageData > executeMaskFilterSelect(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the section algorithm.
virtual void setOrigin(const ossimIpt &origin)
ossimRefPtr< ossimImageData > executeMaskFilterWeighted(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the weighted algorithm.
virtual const void * getBuf() const
virtual void setDataObjectStatus(ossimDataObjectStatus status) const
Full list found in ossimConstants.h.
virtual const ossimIpt & getOrigin() const

◆ executeMaskFilterBinary()

ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterBinary ( ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

Will execute the binary algorithm.

Copies the values in the mask to each tile. Values will be either NULL or MAX pixel value, typically 0 or 255.

Definition at line 379 of file ossimMaskFilter.cpp.

References executeMaskFilterBinarySelection(), ossimRectilinearDataObject::getScalarType(), OSSIM_DOUBLE, OSSIM_FLOAT, OSSIM_NORMALIZED_DOUBLE, OSSIM_NORMALIZED_FLOAT, OSSIM_SSHORT16, OSSIM_UCHAR, OSSIM_USHORT11, OSSIM_USHORT12, OSSIM_USHORT13, OSSIM_USHORT14, OSSIM_USHORT15, OSSIM_USHORT16, ossimNotify(), ossimNotifyLevel_WARN, and theTile.

Referenced by executeMaskFilter().

381 {
382  if(maskSourceData->getScalarType() != OSSIM_UCHAR)
383  {
384  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterBinary WARNING: Only uchar masks are supported" << endl;
385  return imageSourceData;
386  }
387 
388  switch(imageSourceData->getScalarType())
389  {
390  case OSSIM_UCHAR:
391  {
393  (ossim_uint8)0,
394  imageSourceData,
395  maskSourceData);
396  break;
397  }
398  case OSSIM_USHORT11:
399  case OSSIM_USHORT12:
400  case OSSIM_USHORT13:
401  case OSSIM_USHORT14:
402  case OSSIM_USHORT15:
403  case OSSIM_USHORT16:
404  {
406  (ossim_uint8)0,
407  imageSourceData,
408  maskSourceData);
409  break;
410  }
411  case OSSIM_SSHORT16:
412  {
414  (ossim_uint8)0,
415  imageSourceData,
416  maskSourceData);
417  break;
418  }
419  case OSSIM_FLOAT:
421  {
423  (ossim_uint8)0,
424  imageSourceData,
425  maskSourceData);
426  break;
427  }
428  case OSSIM_DOUBLE:
430  {
432  (ossim_uint8)0,
433  imageSourceData,
434  maskSourceData);
435  break;
436  }
437  default:
438  {
439  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterBinary WARNING: Unknown scalar type" << endl;
440  break;
441  }
442  }
443 
444  return theTile;
445 }
16 bit unsigned integer (15 bits used)
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
signed short ossim_sint16
32 bit normalized floating point
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
32 bit floating point
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
8 bit unsigned iteger
16 bit unsigned integer (12 bits used)
ossimRefPtr< ossimImageData > executeMaskFilterBinarySelection(inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)

◆ executeMaskFilterBinarySelection()

template<class inputT , class maskT >
ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterBinarySelection ( inputT  dummyInput,
maskT  dummyMask,
ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

Definition at line 668 of file ossimMaskFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getMaxPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), OSSIM_MASK_TYPE_BINARY_INVERSE, theMaskType, theTile, and ossimImageData::validate().

Referenced by executeMaskFilterBinary().

673 {
674  ossim_uint32 maskBands = maskSourceData->getNumberOfBands();
675  ossim_uint32 inputBands = imageSourceData->getNumberOfBands();
676  if(maskBands&&inputBands)
677  {
678  ossim_uint32 maxOffset = theTile->getWidth()*theTile->getHeight();
679  for(ossim_uint32 band = 0; band < inputBands; ++band)
680  {
681  maskT* bufMask = (maskT*)maskSourceData->getBuf();
682  inputT* bufOut = (inputT*)theTile->getBuf(band);
683  const inputT NP = (inputT)theTile->getNullPix(band);
684  const inputT MP = (inputT)theTile->getMaxPix(band);
685  ossim_uint32 offset = 0;
686  for(offset = 0; offset < maxOffset; ++offset)
687  {
689  {
690  if(*bufMask) // if mask == 1
691  *bufOut = MP; // set to max pix
692  else // if mask == 0
693  *bufOut = NP; // set to null pix
694  }
695  else
696  {
697  if(*bufMask) // if mask == 1
698  *bufOut = NP; // set to null pix
699  else // if mask == 0
700  *bufOut = MP; // set to max pix
701  }
702  ++bufOut;
703  ++bufMask;
704  }
705  }
706  theTile->validate();
707  }
708 
709  return theTile;
710 }
virtual ossim_uint32 getWidth() const
virtual const ossim_float64 * getMaxPix() const
Standard select if mask is true then keep with min.
virtual ossim_uint32 getNumberOfBands() const
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
virtual ossim_uint32 getHeight() const
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.
virtual ossimDataObjectStatus validate() const
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
virtual const void * getBuf() const

◆ executeMaskFilterInvertSelect()

ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterInvertSelect ( ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

will execute the invert selection algorithm.

everywhere the mask is 0 it copies the input data to the output else it outputs null.

Definition at line 243 of file ossimMaskFilter.cpp.

References executeMaskFilterInvertSelection(), ossimRectilinearDataObject::getScalarType(), OSSIM_DOUBLE, OSSIM_FLOAT, OSSIM_NORMALIZED_DOUBLE, OSSIM_NORMALIZED_FLOAT, OSSIM_SSHORT16, OSSIM_UCHAR, OSSIM_USHORT11, OSSIM_USHORT12, OSSIM_USHORT13, OSSIM_USHORT14, OSSIM_USHORT15, OSSIM_USHORT16, ossimNotify(), ossimNotifyLevel_WARN, and theTile.

Referenced by executeMaskFilter().

245 {
246  if(maskSourceData->getScalarType() != OSSIM_UCHAR)
247  {
248  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterSelect WARNING: Only uchar masks are supported" << endl;
249  return imageSourceData;
250  }
251 
252  switch(imageSourceData->getScalarType())
253  {
254  case OSSIM_UCHAR:
255  {
257  (ossim_uint8)0,
258  imageSourceData,
259  maskSourceData);
260  break;
261  }
262  case OSSIM_USHORT11:
263  case OSSIM_USHORT12:
264  case OSSIM_USHORT13:
265  case OSSIM_USHORT14:
266  case OSSIM_USHORT15:
267  case OSSIM_USHORT16:
268  {
270  (ossim_uint8)0,
271  imageSourceData,
272  maskSourceData);
273  break;
274  }
275  case OSSIM_SSHORT16:
276  {
278  (ossim_uint8)0,
279  imageSourceData,
280  maskSourceData);
281  break;
282  }
283  case OSSIM_FLOAT:
285  {
287  (ossim_uint8)0,
288  imageSourceData,
289  maskSourceData);
290  break;
291  }
292  case OSSIM_DOUBLE:
294  {
296  (ossim_uint8)0,
297  imageSourceData,
298  maskSourceData);
299  break;
300  }
301  default:
302  {
303  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterSelect WARNING: Unknown scalar type" << endl;
304  break;
305  }
306  }
307 
308  return theTile;
309 }
16 bit unsigned integer (15 bits used)
ossimRefPtr< ossimImageData > executeMaskFilterInvertSelection(inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
signed short ossim_sint16
32 bit normalized floating point
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
32 bit floating point
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
8 bit unsigned iteger
16 bit unsigned integer (12 bits used)

◆ executeMaskFilterInvertSelection()

template<class inputT , class maskT >
ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterInvertSelection ( inputT  dummyInput,
maskT  dummyMask,
ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

Definition at line 524 of file ossimMaskFilter.cpp.

References ossimImageData::getBuf(), ossimDataObject::getDataObjectStatus(), ossimImageData::getHeight(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), ossimImageData::makeBlank(), OSSIM_EMPTY, OSSIM_FULL, OSSIM_NULL, theTile, and ossimImageData::validate().

Referenced by executeMaskFilterInvertSelect().

529 {
530  ossimDataObjectStatus maskDataStatus = maskSourceData->getDataObjectStatus();
531  ossimDataObjectStatus inputDataStatus = imageSourceData->getDataObjectStatus();
532 
533  // First just check if mask is empty, which means pass the image source along untouched:
534  if( (maskDataStatus == OSSIM_NULL) || (maskDataStatus == OSSIM_EMPTY))
535  {
536  theTile = imageSourceData;
537  return theTile;
538  }
539 
540  // Then check for a total mask (all mask values are 1) and return empty tile if so:
541  if (maskDataStatus == OSSIM_FULL)
542  {
543  theTile->makeBlank();
544  return theTile;
545  }
546 
547  // Finally check for blank source tile and return it if so:
548  if( (inputDataStatus == OSSIM_NULL) || (inputDataStatus == OSSIM_EMPTY))
549  {
550  theTile->makeBlank();
551  return theTile;
552  }
553 
554  ossim_uint32 maskBands = maskSourceData->getNumberOfBands();
555  ossim_uint32 inputBands = imageSourceData->getNumberOfBands();
556  if(maskBands&&inputBands)
557  {
558  ossim_uint32 maxOffset = theTile->getWidth()*theTile->getHeight();
559  for(ossim_uint32 band = 0; band < inputBands; ++band)
560  {
561  maskT* bufMask = (maskT*)maskSourceData->getBuf();
562  inputT* bufIn = (inputT*)imageSourceData->getBuf(band);
563  inputT* bufOut = (inputT*)theTile->getBuf(band);
564  inputT np = (inputT)theTile->getNullPix(band);
565  ossim_uint32 offset = 0;
566  for(offset = 0; offset < maxOffset; ++offset)
567  {
568  if(!*bufMask)
569  {
570  *bufOut = *bufIn;
571  }
572  else
573  {
574  *bufOut = np;
575  }
576  ++bufOut;
577  ++bufIn;
578  ++bufMask;
579  }
580  }
581  theTile->validate();
582  }
583 
584  return theTile;
585 }
virtual ossim_uint32 getWidth() const
virtual ossim_uint32 getNumberOfBands() const
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
virtual ossimDataObjectStatus validate() const
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
virtual void makeBlank()
Initializes data to null pixel values.
virtual const void * getBuf() const
ossimDataObjectStatus
Definitions for data object status.

◆ executeMaskFilterSelect()

ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterSelect ( ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

will execute the section algorithm.

everywhere the mask is not 0 it copies the input data to the output and everywhere the input is null it writes a null pixel to the output.

Definition at line 174 of file ossimMaskFilter.cpp.

References executeMaskFilterSelection(), ossimRectilinearDataObject::getScalarType(), OSSIM_DOUBLE, OSSIM_FLOAT, OSSIM_NORMALIZED_DOUBLE, OSSIM_NORMALIZED_FLOAT, OSSIM_SSHORT16, OSSIM_UCHAR, OSSIM_USHORT11, OSSIM_USHORT12, OSSIM_USHORT13, OSSIM_USHORT14, OSSIM_USHORT15, OSSIM_USHORT16, ossimNotify(), ossimNotifyLevel_WARN, and theTile.

Referenced by executeMaskFilter().

177 {
178  if(maskSourceData->getScalarType() != OSSIM_UCHAR)
179  {
180  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterSelect WARNING: Only uchar masks are supported" << endl;
181  return imageSourceData;
182  }
183 
184  switch(imageSourceData->getScalarType())
185  {
186  case OSSIM_UCHAR:
187  {
189  (ossim_uint8)0,
190  imageSourceData,
191  maskSourceData);
192  break;
193  }
194  case OSSIM_USHORT11:
195  case OSSIM_USHORT12:
196  case OSSIM_USHORT13:
197  case OSSIM_USHORT14:
198  case OSSIM_USHORT15:
199  case OSSIM_USHORT16:
200  {
202  (ossim_uint8)0,
203  imageSourceData,
204  maskSourceData);
205  break;
206  }
207  case OSSIM_SSHORT16:
208  {
210  (ossim_uint8)0,
211  imageSourceData,
212  maskSourceData);
213  break;
214  }
215  case OSSIM_FLOAT:
217  {
219  (ossim_uint8)0,
220  imageSourceData,
221  maskSourceData);
222  break;
223  }
224  case OSSIM_DOUBLE:
226  {
227  executeMaskFilterSelection((double)0,
228  (ossim_uint8)0,
229  imageSourceData,
230  maskSourceData);
231  break;
232  }
233  default:
234  {
235  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterSelect WARNING: Unknown scalar type" << endl;
236  break;
237  }
238  }
239 
240  return theTile;
241 }
16 bit unsigned integer (15 bits used)
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
signed short ossim_sint16
32 bit normalized floating point
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
ossimRefPtr< ossimImageData > executeMaskFilterSelection(inputT dummyInput, maskT dummyMask, ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
32 bit floating point
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
8 bit unsigned iteger
16 bit unsigned integer (12 bits used)

◆ executeMaskFilterSelection()

template<class inputT , class maskT >
ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterSelection ( inputT  dummyInput,
maskT  dummyMask,
ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

Definition at line 448 of file ossimMaskFilter.cpp.

References ossimImageData::getBuf(), ossimDataObject::getDataObjectStatus(), ossimImageData::getHeight(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), ossimImageData::makeBlank(), OSSIM_EMPTY, OSSIM_FULL, OSSIM_MASK_TYPE_SELECT, OSSIM_NULL, theMaskType, theTile, and ossimImageData::validate().

Referenced by executeMaskFilterSelect().

453 {
454  ossimDataObjectStatus maskDataStatus = maskSourceData->getDataObjectStatus();
455  ossimDataObjectStatus inputDataStatus = imageSourceData->getDataObjectStatus();
456 
457  // First just check if mask is full, which means pass the image source along untouched:
458  if (maskDataStatus == OSSIM_FULL)
459  {
460  theTile = imageSourceData;
461  return theTile;
462  }
463 
464  // Then check for a total mask (all mask values are 0) and return empty tile if so:
465  if( (maskDataStatus == OSSIM_NULL) || (maskDataStatus == OSSIM_EMPTY))
466  {
467  theTile->makeBlank();
468  return theTile;
469  }
470 
471  // Finally check for blank source tile and return it if so:
472  if( (inputDataStatus == OSSIM_NULL) || (inputDataStatus == OSSIM_EMPTY))
473  {
474  theTile->makeBlank();
475  return theTile;
476  }
477 
478  ossim_uint32 maskBands = maskSourceData->getNumberOfBands();
479  ossim_uint32 inputBands = imageSourceData->getNumberOfBands();
480  if(maskBands&&inputBands)
481  {
482  ossim_uint32 maxOffset = theTile->getWidth()*theTile->getHeight();
483  for(ossim_uint32 band = 0; band < inputBands; ++band)
484  {
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) );
488  inputT nullPix = static_cast<inputT> ( theTile->getNullPix(band) );
489  inputT minPix = static_cast<inputT> ( theTile->getMinPix(band) );
490  ossim_uint32 offset = 0;
491  for(offset = 0; offset < maxOffset; ++offset)
492  {
493  if(*bufMask)
494  {
496  {
497  *bufOut = *bufIn;
498  }
499  else
500  {
501  //---
502  // OSSIM_MASK_TYPE_SELECT_CLAMP_MIN
503  // Use input pixel clamping any nulls to min.
504  //---
505  *bufOut = *bufIn != nullPix ? *bufIn : minPix;
506  }
507  }
508  else
509  {
510  *bufOut = nullPix;
511  }
512  ++bufOut;
513  ++bufIn;
514  ++bufMask;
515  }
516  }
517  theTile->validate();
518  }
519 
520  return theTile;
521 }
virtual ossim_uint32 getWidth() const
virtual ossim_uint32 getNumberOfBands() const
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
standard select if mask is true then keep
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.
virtual ossimDataObjectStatus validate() const
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
virtual const ossim_float64 * getMinPix() const
virtual void makeBlank()
Initializes data to null pixel values.
virtual const void * getBuf() const
ossimDataObjectStatus
Definitions for data object status.

◆ executeMaskFilterWeighted() [1/2]

ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterWeighted ( ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

will execute the weighted algorithm.

It normalizes the mask value to be between 0 and 1 and multiplies the input data by that value and outputs it.

Definition at line 311 of file ossimMaskFilter.cpp.

References ossimRectilinearDataObject::getScalarType(), OSSIM_DOUBLE, OSSIM_FLOAT, OSSIM_NORMALIZED_DOUBLE, OSSIM_NORMALIZED_FLOAT, OSSIM_SSHORT16, OSSIM_UCHAR, OSSIM_USHORT11, OSSIM_USHORT12, OSSIM_USHORT13, OSSIM_USHORT14, OSSIM_USHORT15, OSSIM_USHORT16, ossimNotify(), ossimNotifyLevel_WARN, and theTile.

Referenced by executeMaskFilter().

313 {
314  if(maskSourceData->getScalarType() != OSSIM_UCHAR)
315  {
316  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterSelect WARNING: Only uchar masks are supported" << endl;
317  return imageSourceData;
318  }
319 
320  switch(imageSourceData->getScalarType())
321  {
322  case OSSIM_UCHAR:
323  {
325  (ossim_uint8)0,
326  imageSourceData,
327  maskSourceData);
328  break;
329  }
330  case OSSIM_USHORT11:
331  case OSSIM_USHORT12:
332  case OSSIM_USHORT13:
333  case OSSIM_USHORT14:
334  case OSSIM_USHORT15:
335  case OSSIM_USHORT16:
336  {
338  (ossim_uint8)0,
339  imageSourceData,
340  maskSourceData);
341  break;
342  }
343  case OSSIM_SSHORT16:
344  {
346  (ossim_uint8)0,
347  imageSourceData,
348  maskSourceData);
349  break;
350  }
351  case OSSIM_FLOAT:
353  {
354  executeMaskFilterWeighted((float)0,
355  (ossim_uint8)0,
356  imageSourceData,
357  maskSourceData);
358  break;
359  }
360  case OSSIM_DOUBLE:
362  {
363  executeMaskFilterWeighted((double)0,
364  (ossim_uint8)0,
365  imageSourceData,
366  maskSourceData);
367  break;
368  }
369  default:
370  {
371  ossimNotify(ossimNotifyLevel_WARN) << "ossimMaskFilter::executeMaskFilterSelect WARNING: Unknown scalar type" << endl;
372  break;
373  }
374  }
375 
376  return theTile;
377 }
16 bit unsigned integer (15 bits used)
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
signed short ossim_sint16
32 bit normalized floating point
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
ossimRefPtr< ossimImageData > executeMaskFilterWeighted(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)
will execute the weighted algorithm.
32 bit floating point
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
8 bit unsigned iteger
16 bit unsigned integer (12 bits used)

◆ executeMaskFilterWeighted() [2/2]

template<class inputT , class maskT >
ossimRefPtr< ossimImageData > ossimMaskFilter::executeMaskFilterWeighted ( inputT  dummyInput,
maskT  dummyMask,
ossimRefPtr< ossimImageData imageSourceData,
ossimRefPtr< ossimImageData maskSourceData 
)
protected

Definition at line 588 of file ossimMaskFilter.cpp.

References ossimImageData::getBuf(), ossimDataObject::getDataObjectStatus(), ossimImageData::getHeight(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), ossimImageData::makeBlank(), OSSIM_EMPTY, OSSIM_NULL, OSSIM_PARTIAL, theTile, and ossimImageData::validate().

593 {
594  ossimDataObjectStatus maskDataStatus = maskSourceData->getDataObjectStatus();
595  ossimDataObjectStatus inputDataStatus = imageSourceData->getDataObjectStatus();
596 
597  if( (maskDataStatus == OSSIM_NULL)||
598  (maskDataStatus == OSSIM_EMPTY))
599  {
600  theTile->makeBlank();
601  return theTile;
602  }
603  if( (inputDataStatus == OSSIM_NULL)||
604  (inputDataStatus == OSSIM_EMPTY))
605  {
606  return theTile;
607  }
608 
609  ossim_uint32 maskBands = maskSourceData->getNumberOfBands();
610  ossim_uint32 inputBands = imageSourceData->getNumberOfBands();
611  if(maskBands&&inputBands)
612  {
613  ossim_uint32 maxOffset = theTile->getWidth()*theTile->getHeight();
614  for(ossim_uint32 band = 0; band < inputBands; ++band)
615  {
616  maskT* bufMask = (maskT*)maskSourceData->getBuf();
617  inputT* bufIn = (inputT*)imageSourceData->getBuf(band);
618  inputT* bufOut = (inputT*)theTile->getBuf(band);
619  inputT np = (inputT)theTile->getNullPix(band);
620  inputT minp = (inputT)theTile->getMinPix(band);
621  ossim_uint32 offset = 0;
622 
623  if(inputDataStatus == OSSIM_PARTIAL)
624  {
625  for(offset = 0; offset < maxOffset; ++offset)
626  {
627  if(*bufIn != np)
628  {
629  *bufOut = (inputT)((*bufIn)*((double)(*bufMask)/255.0));
630  if((*bufOut != np)&&
631  (*bufOut < minp))
632  {
633  *bufOut = minp;
634  }
635  }
636  else
637  {
638  *bufOut = np;
639  }
640  ++bufOut;
641  ++bufIn;
642  ++bufMask;
643  }
644  }
645  else
646  {
647  for(offset = 0; offset < maxOffset; ++offset)
648  {
649  *bufOut = (inputT)((*bufIn)*((double)(*bufMask)/255.0));
650  if((*bufOut != np)&&
651  (*bufOut < minp))
652  {
653  *bufOut = minp;
654  }
655  ++bufOut;
656  ++bufIn;
657  ++bufMask;
658  }
659  }
660  }
661  theTile->validate();
662  }
663 
664  return theTile;
665 }
virtual ossim_uint32 getWidth() const
virtual ossim_uint32 getNumberOfBands() const
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
virtual ossimDataObjectStatus validate() const
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
virtual const ossim_float64 * getMinPix() const
virtual void makeBlank()
Initializes data to null pixel values.
virtual const void * getBuf() const
ossimDataObjectStatus
Definitions for data object status.

◆ getMaskType()

ossimMaskFilter::ossimFileSelectionMaskType ossimMaskFilter::getMaskType ( ) const
virtual

Returns the current mask algorithm used.

Returns
the current ossimFileSelectionMaskType used.

Definition at line 751 of file ossimMaskFilter.cpp.

References theMaskType.

752 {
753  return theMaskType;
754 }
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.

◆ getMaskTypeString()

ossimString ossimMaskFilter::getMaskTypeString ( ) const
virtual

Returns the current mask algorithm used as a string.

Returns
the current ossimFileSelectionMaskType used.

Definition at line 756 of file ossimMaskFilter.cpp.

References OSSIM_MASK_TYPE_BINARY, OSSIM_MASK_TYPE_BINARY_INVERSE, OSSIM_MASK_TYPE_INVERT, OSSIM_MASK_TYPE_SELECT, OSSIM_MASK_TYPE_SELECT_CLAMP_MIN, OSSIM_MASK_TYPE_WEIGHTED, and theMaskType.

757 {
758  ossimString maskType;
759 
760  switch(theMaskType)
761  {
763  {
764  maskType = "select";
765  break;
766  }
768  {
769  maskType = "invert";
770  break;
771  }
773  {
774  maskType = "weighted";
775  break;
776  }
778  {
779  maskType = "binary";
780  break;
781  }
783  {
784  maskType = "binary_inverse";
785  break;
786  }
788  {
789  maskType = "select_clamp_min";
790  break;
791  }
792  }
793 
794  return maskType;
795 }
Standard select if mask is true then keep with min.
standard select if mask is true then keep
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.

◆ getNumberOfInputBands()

ossim_uint32 ossimMaskFilter::getNumberOfInputBands ( ) const
virtual

Returns the number of bands available from the input.

Implements ossimImageSource.

Definition at line 871 of file ossimMaskFilter.cpp.

References ossimConnectableObject::getInput(), ossimImageSource::getNumberOfInputBands(), and PTR_CAST.

872 {
874  if (img_source)
875  return img_source->getNumberOfInputBands();
876  return 0;
877 }
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321
virtual ossim_uint32 getNumberOfInputBands() const =0

◆ getProperty()

ossimRefPtr< ossimProperty > ossimMaskFilter::getProperty ( const ossimString name) const
virtual
Returns
"mask_type" property.

Reimplemented from ossimImageSource.

Definition at line 841 of file ossimMaskFilter.cpp.

843 {
844  ossimRefPtr<ossimProperty> result = 0;
845 
846  if(name == MASK_FILTER_MASK_TYPE_KW)
847  {
848  std::vector<ossimString> constraintList;
849  constraintList.push_back(ossimString("select"));
850  constraintList.push_back(ossimString("invert"));
851  constraintList.push_back(ossimString("weighted"));
852 
853  result = new ossimStringProperty(MASK_FILTER_MASK_TYPE_KW,
855  false,
856  constraintList);
857  }
858  else
859  {
860  result = ossimImageSource::getProperty(name);
861  }
862  return result;
863 }
virtual ossimString getMaskTypeString() const
Returns the current mask algorithm used as a string.
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const

◆ getPropertyNames()

void ossimMaskFilter::getPropertyNames ( std::vector< ossimString > &  propertyNames) const
virtual

Adds "mask_type" to list.

Reimplemented from ossimImageSource.

Definition at line 865 of file ossimMaskFilter.cpp.

References ossimImageSource::getPropertyNames().

866 {
867  ossimImageSource::getPropertyNames(propertyNames);
868  propertyNames.push_back(MASK_FILTER_MASK_TYPE_KW);
869 }
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const

◆ getTile()

ossimRefPtr< ossimImageData > ossimMaskFilter::getTile ( const ossimIrect rect,
ossim_uint32  resLevel = 0 
)
virtual

Main entry point for the algorithm.

Parameters
rect

Reimplemented from ossimImageSource.

Definition at line 46 of file ossimMaskFilter.cpp.

References allocate(), executeMaskFilter(), ossimDataObject::getDataObjectStatus(), ossimImageData::getImageRectangle(), ossimConnectableObject::getInput(), ossimImageSource::getTile(), ossimImageData::initialize(), ossimSource::isSourceEnabled(), OSSIM_NULL, PTR_CAST, ossimImageData::setImageRectangle(), ossimImageData::setOrigin(), theMaskSource, theTile, ossimIrect::ul(), and ossimRefPtr< T >::valid().

Referenced by ossimOverviewSequencer::getNextTile().

48 {
50  if (!imageSource || !theMaskSource.valid())
51  {
53  return theTile;
54  }
55 
56  ossimRefPtr<ossimImageData> imageSourceData;
57  ossimRefPtr<ossimImageData> maskSourceData;
58 
59  imageSourceData = imageSource->getTile(rect, resLevel);
60  if(!isSourceEnabled())
61  return imageSourceData;
62 
63  if (!theTile.valid())
64  allocate();
65 
66  maskSourceData = theMaskSource->getTile(rect, resLevel);
67  if(!imageSourceData.valid() || !theTile.valid())
68  {
70  }
71 
72  theTile->setOrigin(rect.ul());
73  if(theTile->getImageRectangle() != rect)
74  {
77  }
78  if(!imageSourceData.valid())
79  {
80  return theTile;
81  }
82  if(!maskSourceData.valid())
83  {
84  return imageSourceData;
85  }
86 
87  if(imageSourceData->getDataObjectStatus() != OSSIM_NULL)
88  {
89  return executeMaskFilter(imageSourceData, maskSourceData);
90  }
91 
92  return theTile;
93 }
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
virtual void setImageRectangle(const ossimIrect &rect)
bool valid() const
Definition: ossimRefPtr.h:75
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
const ossimIpt & ul() const
Definition: ossimIrect.h:274
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual void initialize()
Initialize the data buffer.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
ossimRefPtr< ossimImageSource > theMaskSource
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321
virtual ossimIrect getImageRectangle() const
virtual void setOrigin(const ossimIpt &origin)
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
virtual ossimRefPtr< ossimImageData > executeMaskFilter(ossimRefPtr< ossimImageData > imageSourceData, ossimRefPtr< ossimImageData > maskSourceData)

◆ initialize()

void ossimMaskFilter::initialize ( )
virtual

Implements ossimImageSource.

Definition at line 101 of file ossimMaskFilter.cpp.

References ossimConnectableObject::getInput(), and theTile.

102 {
103  if(getInput(0))
104  {
105  // Force an allocate on the next getTile.
106  theTile = 0;
107  }
108 }
ossimRefPtr< ossimImageData > theTile
Member used to store the result of the applied algorithm type.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.

◆ loadState()

bool ossimMaskFilter::loadState ( const ossimKeywordlist kwl,
const char *  prefix = 0 
)
virtual

Method to the load (recreate) the state of an object from a keyword list.

Return true if ok or false on error.

Reimplemented from ossimImageSource.

Definition at line 797 of file ossimMaskFilter.cpp.

References ossimKeywordlist::find(), ossimImageSource::loadState(), ossimConnectableObject::setNumberOfInputs(), ossimConnectableObject::theInputListIsFixedFlag, and ossimConnectableObject::theOutputListIsFixedFlag.

799 {
800  bool result = ossimImageSource::loadState(kwl, prefix);
801 
803  theOutputListIsFixedFlag = false;
805 
806  const char* lookup = kwl.find(prefix, MASK_FILTER_MASK_TYPE_KW);
807  if (lookup)
808  {
809  setMaskType(ossimString(lookup));
810  }
811 
812  return result;
813 }
virtual void setNumberOfInputs(ossim_int32 numberOfInputs)
Will set the number of inputs.
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 setMaskType(ossimFileSelectionMaskType type)
Sets the mask type.
bool theInputListIsFixedFlag
Indicates whether the theInputObjectList is fixed.
bool theOutputListIsFixedFlag
Indicates whether the theOutputObjectList is fixed.

◆ saveState()

bool ossimMaskFilter::saveState ( ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Method to save the state of an object to a keyword list.

Return true if ok or false on error.

Reimplemented from ossimImageSource.

Definition at line 815 of file ossimMaskFilter.cpp.

References ossimKeywordlist::add().

817 {
818  kwl.add(prefix,
819  MASK_FILTER_MASK_TYPE_KW,
820  getMaskTypeString().c_str(),
821  true);
822 
823  return ossimImageSource::saveState(kwl, prefix);
824 }
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual ossimString getMaskTypeString() const
Returns the current mask algorithm used as a string.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.

◆ setMaskSource()

void ossimMaskFilter::setMaskSource ( ossimImageSource maskSource)

This set method is necessary when this object is being added to an ossimImageChain because ossimImageChain::addLast() performs a disconnect of all the input sources, thus losing the assignments made via constructor accepting source pointers.

If the intent is to insert this object in place of the image handler in a chain, First remove the handler from the chain, then add a default-constructed mask filter object, then call this method to assign the inputs.

Definition at line 41 of file ossimMaskFilter.cpp.

References theMaskSource.

42 {
43  theMaskSource = maskSource;
44 }
ossimRefPtr< ossimImageSource > theMaskSource

◆ setMaskType() [1/2]

void ossimMaskFilter::setMaskType ( ossimFileSelectionMaskType  type)
virtual

Sets the mask type.

Parameters
typeThe mask algorithm type to be used. see ossimFileSelectionMaskType

Definition at line 712 of file ossimMaskFilter.cpp.

References theMaskType.

713 {
714  theMaskType = type;
715 }
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.

◆ setMaskType() [2/2]

void ossimMaskFilter::setMaskType ( const ossimString type)
virtual

Sets the mask type from string.

Valid strings are: "select", "invert" and "weighted".

Parameters
typeThe mask algorithm type to be used.

Definition at line 717 of file ossimMaskFilter.cpp.

References ossimString::downcase(), OSSIM_MASK_TYPE_BINARY, OSSIM_MASK_TYPE_BINARY_INVERSE, OSSIM_MASK_TYPE_INVERT, OSSIM_MASK_TYPE_SELECT, OSSIM_MASK_TYPE_SELECT_CLAMP_MIN, OSSIM_MASK_TYPE_WEIGHTED, and theMaskType.

718 {
719  if(type != "")
720  {
721  ossimString maskType = type;
722  maskType.downcase();
723 
724  if(maskType == "select")
725  {
727  }
728  else if(maskType == "invert")
729  {
731  }
732  else if(maskType == "weighted")
733  {
735  }
736  else if(maskType == "binary")
737  {
739  }
740  else if(maskType == "binary_inverse")
741  {
743  }
744  else if(maskType == "select_clamp_min")
745  {
747  }
748  }
749 }
Standard select if mask is true then keep with min.
standard select if mask is true then keep
ossimFileSelectionMaskType theMaskType
Member variable that holds the algorithm type to run on the calls to getTile.
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48

◆ setProperty()

void ossimMaskFilter::setProperty ( ossimRefPtr< ossimProperty property)
virtual

Interface to set the mask type.

Reimplemented from ossimImageSource.

Definition at line 826 of file ossimMaskFilter.cpp.

References ossimProperty::getName(), and ossimRefPtr< T >::valid().

827 {
828  if( property.valid() )
829  {
830  if(property->getName() == MASK_FILTER_MASK_TYPE_KW)
831  {
832  setMaskType(property->valueToString());
833  }
834  else
835  {
837  }
838  }
839 }
virtual void valueToString(ossimString &valueResult) const =0
bool valid() const
Definition: ossimRefPtr.h:75
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual void setMaskType(ossimFileSelectionMaskType type)
Sets the mask type.
const ossimString & getName() const

Member Data Documentation

◆ theMaskSource

ossimRefPtr<ossimImageSource> ossimMaskFilter::theMaskSource
protected

Definition at line 261 of file ossimMaskFilter.h.

Referenced by getTile(), and setMaskSource().

◆ theMaskType

ossimFileSelectionMaskType ossimMaskFilter::theMaskType
protected

Member variable that holds the algorithm type to run on the calls to getTile.

Definition at line 254 of file ossimMaskFilter.h.

Referenced by executeMaskFilter(), executeMaskFilterBinarySelection(), executeMaskFilterSelection(), getMaskType(), getMaskTypeString(), and setMaskType().

◆ theTile

ossimRefPtr<ossimImageData> ossimMaskFilter::theTile
protected

The documentation for this class was generated from the following files: