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

class ossimEdgeFilter More...

#include <ossimEdgeFilter.h>

Inheritance diagram for ossimEdgeFilter:
ossimImageSourceFilter ossimImageSource ossimConnectableObjectListener ossimSource ossimListener ossimConnectableObject ossimErrorStatusInterface ossimObject ossimListenerManager ossimPropertyInterface ossimReferenced

Public Member Functions

 ossimEdgeFilter (ossimObject *owner=NULL)
 
 ossimEdgeFilter (ossimImageSource *inputSource)
 
 ossimEdgeFilter (ossimObject *owner, ossimImageSource *inputSource)
 
virtual ossimRefPtr< ossimImageDatagetTile (const ossimIrect &rect, ossim_uint32 resLevel=0)
 
virtual void initialize ()
 
virtual void getFilterTypeNames (std::vector< ossimString > &filterNames) const
 
virtual ossimString getFilterType () const
 
virtual void setFilterType (const ossimString &filterType)
 The filter type can be one of the following strings. More...
 
virtual void setProperty (ossimRefPtr< ossimProperty > property)
 
virtual ossimRefPtr< ossimPropertygetProperty (const ossimString &name) const
 
virtual void getPropertyNames (std::vector< ossimString > &propertyNames) const
 
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 loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 Method to the load (recreate) the state of an object from a keyword list. More...
 
- Public Member Functions inherited from ossimImageSourceFilter
 ossimImageSourceFilter (ossimObject *owner=NULL)
 
 ossimImageSourceFilter (ossimImageSource *inputSource)
 
 ossimImageSourceFilter (ossimObject *owner, ossimImageSource *inputSource)
 
virtual void getOutputBandList (std::vector< ossim_uint32 > &bandList) const
 
virtual ossim_uint32 getNumberOfInputBands () const
 
bool canConnectMyInputTo (ossim_int32 inputIndex, const ossimConnectableObject *object) const
 required to be overriden by derived classes More...
 
virtual void connectInputEvent (ossimConnectionEvent &event)
 
virtual void disconnectInputEvent (ossimConnectionEvent &event)
 
virtual void propertyEvent (ossimPropertyEvent &event)
 
virtual void refreshEvent (ossimRefreshEvent &event)
 
- 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 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
 
- Public Member Functions inherited from ossimConnectableObjectListener
 ossimConnectableObjectListener ()
 
virtual ~ossimConnectableObjectListener ()
 
virtual void processEvent (ossimEvent &event)
 ProcessEvent. More...
 
virtual void objectDestructingEvent (ossimObjectDestructingEvent &)
 
virtual void connectionEvent (ossimConnectionEvent &)
 
virtual void disconnectOutputEvent (ossimConnectionEvent &)
 
virtual void connectOutputEvent (ossimConnectionEvent &)
 
virtual void addObjectEvent (ossimContainerEvent &)
 
virtual void removeObjectEvent (ossimContainerEvent &)
 
virtual void containerEvent (ossimContainerEvent &)
 
- Public Member Functions inherited from ossimListener
 ossimListener ()
 
virtual ~ossimListener ()
 
void enableListener ()
 
void disableListener ()
 
void setListenerEnableFlag (bool flag)
 
bool isListenerEnabled () const
 
bool getListenerEnableFlag () const
 

Protected Member Functions

void adjustRequestRect (ossimIrect &requestRect) const
 
template<class T >
void runFilter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
template<class T >
void runSobelFilter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
template<class T >
void runPrewittFilter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
template<class T >
void runLaplacianFilter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
template<class T >
void runRobertsFilter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
template<class T >
void runSimpleFilter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
template<class T >
void runLocalMax8Filter (T dummyVariable, ossimRefPtr< ossimImageData > inputData)
 
- Protected Member Functions inherited from ossimImageSourceFilter
virtual ~ossimImageSourceFilter ()
 
- 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

ossimRefPtr< ossimImageDatatheTile
 
ossimString theFilterType
 
- Protected Attributes inherited from ossimImageSourceFilter
ossimImageSourcetheInputConnection
 
- 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
 
- Protected Attributes inherited from ossimListener
bool theListenerEnableFlag
 

Additional Inherited Members

- 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
 

Detailed Description

class ossimEdgeFilter

This has default implementation for the certain filter types. For the different filter type please see method setFilterType.

Definition at line 24 of file ossimEdgeFilter.h.

Constructor & Destructor Documentation

◆ ossimEdgeFilter() [1/3]

ossimEdgeFilter::ossimEdgeFilter ( ossimObject owner = NULL)

Definition at line 21 of file ossimEdgeFilter.cpp.

22  :ossimImageSourceFilter(owner),
23  theTile(NULL),
24  theFilterType("Sobel")
25 {
26 }
ossimImageSourceFilter(ossimObject *owner=NULL)
ossimString theFilterType
ossimRefPtr< ossimImageData > theTile

◆ ossimEdgeFilter() [2/3]

ossimEdgeFilter::ossimEdgeFilter ( ossimImageSource inputSource)

Definition at line 28 of file ossimEdgeFilter.cpp.

29  :ossimImageSourceFilter(inputSource),
30  theTile(NULL),
31  theFilterType("Sobel")
32 {
33 }
ossimImageSourceFilter(ossimObject *owner=NULL)
ossimString theFilterType
ossimRefPtr< ossimImageData > theTile

◆ ossimEdgeFilter() [3/3]

ossimEdgeFilter::ossimEdgeFilter ( ossimObject owner,
ossimImageSource inputSource 
)

Definition at line 35 of file ossimEdgeFilter.cpp.

37  :ossimImageSourceFilter(owner, inputSource),
38  theTile(NULL),
39  theFilterType("Sobel")
40 {
41 }
ossimImageSourceFilter(ossimObject *owner=NULL)
ossimString theFilterType
ossimRefPtr< ossimImageData > theTile

Member Function Documentation

◆ adjustRequestRect()

void ossimEdgeFilter::adjustRequestRect ( ossimIrect requestRect) const
protected

Definition at line 236 of file ossimEdgeFilter.cpp.

References ossimString::contains(), ossimString::downcase(), ossimIrect::lr(), theFilterType, ossimIrect::ul(), ossimIpt::x, and ossimIpt::y.

Referenced by getTile().

237 {
238  ossimString filterType = theFilterType;
239  filterType = filterType.downcase();
240  ossimIrect rect = requestRect;
241  if(filterType.contains("sob")||
242  filterType.contains("lap")||
243  filterType.contains("pre")||
244  filterType.contains("localmax"))
245  {
246  requestRect = ossimIrect(rect.ul().x - 1,
247  rect.ul().y - 1,
248  rect.lr().x + 1,
249  rect.lr().y + 1);
250  }
251  else if (filterType.contains("rob") || filterType.contains("sim"))
252  {
253  requestRect = ossimIrect(rect.ul().x,
254  rect.ul().y,
255  rect.lr().x + 1,
256  rect.lr().y + 1);
257  }
258  else
259  {
260  requestRect = ossimIrect(rect.ul().x - 1,
261  rect.ul().y - 1,
262  rect.lr().x + 1,
263  rect.lr().y + 1);
264  }
265 }
bool contains(char aChar) const
Definition: ossimString.h:58
const ossimIpt & ul() const
Definition: ossimIrect.h:274
const ossimIpt & lr() const
Definition: ossimIrect.h:276
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
ossimString theFilterType
ossim_int32 y
Definition: ossimIpt.h:142
ossim_int32 x
Definition: ossimIpt.h:141

◆ getFilterType()

ossimString ossimEdgeFilter::getFilterType ( ) const
virtual

Definition at line 152 of file ossimEdgeFilter.cpp.

References theFilterType.

Referenced by saveState().

153 {
154  return theFilterType;
155 }
ossimString theFilterType

◆ getFilterTypeNames()

void ossimEdgeFilter::getFilterTypeNames ( std::vector< ossimString > &  filterNames) const
virtual

Definition at line 141 of file ossimEdgeFilter.cpp.

Referenced by getProperty().

143 {
144  filterNames.push_back("Laplacian");
145  filterNames.push_back("Prewitt");
146  filterNames.push_back("Roberts");
147  filterNames.push_back("Simple");
148  filterNames.push_back("Sobel");
149  filterNames.push_back("LocalMax8");
150 }

◆ getProperty()

ossimRefPtr< ossimProperty > ossimEdgeFilter::getProperty ( const ossimString name) const
virtual

Reimplemented from ossimImageSourceFilter.

Definition at line 207 of file ossimEdgeFilter.cpp.

References ossimProperty::clearChangeType(), getFilterTypeNames(), ossimImageSourceFilter::getProperty(), PROP_EDGE_FILTER, ossimProperty::setCacheRefreshBit(), ossimProperty::setReadOnlyFlag(), and theFilterType.

208 {
209  if(name == PROP_EDGE_FILTER)
210  {
211  std::vector<ossimString> filterNames;
212 
213  getFilterTypeNames(filterNames);
216  false,
217  filterNames);
218  stringProp->clearChangeType();
219  stringProp->setReadOnlyFlag(false);
220  stringProp->setCacheRefreshBit();
221 
222  return stringProp;
223  }
224 
226 }
virtual void setReadOnlyFlag(bool flag)
void clearChangeType()
virtual void getFilterTypeNames(std::vector< ossimString > &filterNames) const
ossimString theFilterType
#define PROP_EDGE_FILTER
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
void setCacheRefreshBit()

◆ getPropertyNames()

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

Reimplemented from ossimImageSourceFilter.

Definition at line 228 of file ossimEdgeFilter.cpp.

References ossimImageSourceFilter::getPropertyNames(), and PROP_EDGE_FILTER.

229 {
231 
232  propertyNames.push_back(PROP_EDGE_FILTER);
233 }
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
#define PROP_EDGE_FILTER

◆ getTile()

ossimRefPtr< ossimImageData > ossimEdgeFilter::getTile ( const ossimIrect rect,
ossim_uint32  resLevel = 0 
)
virtual
Returns
the requested region of interest

Reimplemented from ossimImageSource.

Definition at line 43 of file ossimEdgeFilter.cpp.

References adjustRequestRect(), ossimImageData::getBuf(), ossimImageData::getNumberOfBands(), ossimRectilinearDataObject::getScalarType(), ossimImageSource::getTile(), initialize(), ossimSource::isSourceEnabled(), 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, runFilter(), ossimImageData::setImageRectangleAndBands(), theTile, and ossimRefPtr< T >::valid().

45 {
46  if(!isSourceEnabled())
47  {
48  return ossimImageSourceFilter::getTile(rect, resLevel);
49  }
50 
51  // expand the rect out to cver the 3x3 horizontal and vertical
52  // kernel.
53  //
54  ossimIrect requestRect = rect;
55 
56  adjustRequestRect(requestRect);
57 
58  ossimRefPtr<ossimImageData> inputData =
59  ossimImageSourceFilter::getTile(requestRect, resLevel);
60 
61  if(!inputData.valid() || (!inputData->getBuf()))
62  {
63  return inputData;
64  }
65 
66  if(!theTile.valid()) initialize();
67  if(!theTile.valid()) return theTile;
68 
70 
71  switch(theTile->getScalarType())
72  {
73  case OSSIM_UCHAR:
74  {
76  inputData);
77  break;
78  }
79  case OSSIM_FLOAT:
81  {
83  inputData);
84  break;
85  }
86  case OSSIM_USHORT16:
87  case OSSIM_USHORT11:
88  case OSSIM_USHORT12:
89  case OSSIM_USHORT13:
90  case OSSIM_USHORT14:
91  case OSSIM_USHORT15:
92  {
94  inputData);
95  break;
96  }
97  case OSSIM_SSHORT16:
98  {
100  inputData);
101  break;
102  }
103  case OSSIM_DOUBLE:
105  {
107  inputData);
108  break;
109  }
110  default:
111  {
112  ossimNotify(ossimNotifyLevel_WARN) << "ossimEdgeFilter::getTile WARN: Scalar type = " << theTile->getScalarType()
113  << " Not supported by ossimEdgeFilter" << std::endl;
114  break;
115  }
116  }
117 
118  return theTile;
119 }
16 bit unsigned integer (15 bits used)
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
virtual ossim_uint32 getNumberOfBands() const
bool valid() const
Definition: ossimRefPtr.h:75
void runFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
float ossim_float32
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
unsigned short ossim_uint16
double ossim_float64
signed short ossim_sint16
virtual void setImageRectangleAndBands(const ossimIrect &rect, ossim_uint32 numberOfBands)
32 bit normalized floating point
virtual ossimScalarType getScalarType() const
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
virtual const void * getBuf() const
void adjustRequestRect(ossimIrect &requestRect) const
ossimRefPtr< ossimImageData > theTile
virtual void initialize()
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
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)

◆ initialize()

void ossimEdgeFilter::initialize ( )
virtual

Reimplemented from ossimImageSourceFilter.

Definition at line 121 of file ossimEdgeFilter.cpp.

References ossimImageDataFactory::create(), ossimImageSourceFilter::initialize(), ossimImageData::initialize(), ossimImageDataFactory::instance(), ossimSource::isSourceEnabled(), theTile, and ossimRefPtr< T >::valid().

Referenced by getTile().

122 {
124 
125  theTile = NULL;
126 
127  if(!isSourceEnabled())
128  {
129  return;
130  }
131 
133  if(theTile.valid())
134  {
135  theTile->initialize();
136  }
137 
138 }
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
bool valid() const
Definition: ossimRefPtr.h:75
virtual void initialize()
Initialize the data buffer.
static ossimImageDataFactory * instance()
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossimRefPtr< ossimImageData > theTile

◆ loadState()

bool ossimEdgeFilter::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 ossimImageSourceFilter.

Definition at line 707 of file ossimEdgeFilter.cpp.

References ossimKeywordlist::find(), ossimImageSourceFilter::loadState(), ossimNotify(), ossimNotifyLevel_WARN, PROP_EDGE_FILTER, and setFilterType().

709 {
710  const char* value = kwl.find(prefix,
712  if(value)
713  {
714  setFilterType(ossimString(value));
715  } else {
716  ossimNotify(ossimNotifyLevel_WARN) << "ossimEdgeFilter::loadState WARN: no filter type found" << std::endl;
717  }
718 
719  return ossimImageSourceFilter::loadState(kwl, prefix);
720 }
const char * find(const char *key) const
virtual void setFilterType(const ossimString &filterType)
The filter type can be one of the following strings.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
#define PROP_EDGE_FILTER
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ runFilter()

template<class T >
void ossimEdgeFilter::runFilter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 268 of file ossimEdgeFilter.cpp.

References ossimString::contains(), ossimString::downcase(), ossimImageData::makeBlank(), runLaplacianFilter(), runLocalMax8Filter(), runPrewittFilter(), runRobertsFilter(), runSimpleFilter(), runSobelFilter(), theFilterType, and theTile.

Referenced by getTile().

270 {
271  ossimString filterType = theFilterType;
272  filterType = filterType.downcase();
273 
274  if(filterType.contains("sobel"))
275  {
276  runSobelFilter(dummyVariable, inputData);
277  }
278  else if(filterType.contains("lap"))
279  {
280  runLaplacianFilter(dummyVariable, inputData);
281  }
282  else if(filterType.contains("pre"))
283  {
284  runPrewittFilter(dummyVariable, inputData);
285  }
286  else if(filterType.contains("rob"))
287  {
288  runRobertsFilter(dummyVariable, inputData);
289  }
290  else if(filterType.contains("sim"))
291  {
292  runSimpleFilter(dummyVariable, inputData);
293  }
294  else if(filterType.contains("localmax"))
295  {
296  runLocalMax8Filter(dummyVariable, inputData);
297  }
298  else
299  {
300  theTile->makeBlank();
301  }
302 }
void runLaplacianFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
bool contains(char aChar) const
Definition: ossimString.h:58
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
ossimString theFilterType
virtual void makeBlank()
Initializes data to null pixel values.
void runRobertsFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
void runLocalMax8Filter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
ossimRefPtr< ossimImageData > theTile
void runSimpleFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
void runPrewittFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)
void runSobelFilter(T dummyVariable, ossimRefPtr< ossimImageData > inputData)

◆ runLaplacianFilter()

template<class T >
void ossimEdgeFilter::runLaplacianFilter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 572 of file ossimEdgeFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getMaxPix(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), theTile, ossimImageData::validate(), x, and y.

Referenced by runFilter().

574 {
575  ossim_uint32 bandIdx = 0;
576  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
577  // double horizontalValue = 0.0;
578  // double verticalValue = 0.0;
579  double value = 0.0;
580  // ossim_uint32 valueIdx = 0;
581  ossim_uint32 x = 0;
582  ossim_uint32 y = 0;
583  ossim_uint32 width = theTile->getWidth();
584  ossim_uint32 height = theTile->getHeight();
585  ossim_int32 rowIncrement = inputData->getWidth();
586  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
587 
588  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
589  {
590  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
591  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
592  T np = static_cast<T>(inputData->getNullPix(bandIdx));
593  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
594  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
595 
596  if(inputBuf&&outputBuf)
597  {
598  for(y = 0; y < height; ++y)
599  {
600  for(x = 0; x < width; ++x)
601  {
602  if( (*(inputBuf + rowIncrement + 1) != np))
603  {
604 
605  value = fabs(((double)inputBuf[rowIncrement + 1]*4.0) -
606  ((double)inputBuf[1] + (double)inputBuf[rowIncrement] + (double)inputBuf[rowIncrement + 2] + (double)inputBuf[rowIncrement2+1]));
607 
608  if((value == np) ||
609  (value < minP))
610  {
611  *outputBuf = (static_cast<T>(minP));
612  }
613  else if(value > maxP)
614  {
615  *outputBuf = (static_cast<T>(maxP));
616  }
617  else
618  {
619  *outputBuf = (static_cast<T>(value));
620  }
621 
622  }
623  else
624  {
625  *outputBuf = np;
626  }
627  ++outputBuf;
628  ++inputBuf;
629  }
630  inputBuf+=2;
631  }
632  }
633  }
634  theTile->validate();
635 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual const ossim_float64 * getMaxPix() const
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
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 const void * getBuf() const
ossimRefPtr< ossimImageData > theTile
int ossim_int32

◆ runLocalMax8Filter()

template<class T >
void ossimEdgeFilter::runLocalMax8Filter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 638 of file ossimEdgeFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), theTile, ossimImageData::validate(), x, and y.

Referenced by runFilter().

640 {
641  ossim_uint32 bandIdx = 0;
642  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
643 
644  ossim_uint32 x = 0;
645  ossim_uint32 y = 0;
646  ossim_uint32 width = theTile->getWidth();
647  ossim_uint32 height = theTile->getHeight();
648  ossim_int32 rowIncrement = inputData->getWidth();
649  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
650 
651  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
652  {
653  //inputBuf has a 1 pixel edge compared to outputBuf
654  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
655  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
656  T np = static_cast<T>(inputData->getNullPix(bandIdx)); //changed to input Null
657 
658  if(inputBuf&&outputBuf)
659  {
660  //one pass: maybe faster if changed to two passes
661  T* outB;
662  T* inB;
663 
664  outB = outputBuf;
665  inB = inputBuf;
666  for(y = 0; y < height; ++y)
667  {
668  for(x = 0; x < width; ++x)
669  {
670  if (inB[1+rowIncrement] != np)
671  {
672  *outB = max<T>(
673  max<T>(
674  max<T>(inB[0],inB[1]),
675  max<T>(inB[2],inB[rowIncrement])),
676  max<T>(
677  max<T>(inB[rowIncrement+2],inB[rowIncrement2]),
678  max<T>(inB[rowIncrement2+1],inB[rowIncrement2+2])
679  ));
680  }
681  else
682  {
683  *outB = np;
684  }
685  ++outB;
686  ++inB;
687  }
688  inB+=2; //go to next line, jump due to edge
689  }
690  }
691  }
692  theTile->validate();
693 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
virtual ossim_uint32 getHeight() const
virtual ossimDataObjectStatus validate() const
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
virtual const void * getBuf() const
ossimRefPtr< ossimImageData > theTile
int ossim_int32

◆ runPrewittFilter()

template<class T >
void ossimEdgeFilter::runPrewittFilter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 376 of file ossimEdgeFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getMaxPix(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), theTile, ossimImageData::validate(), x, and y.

Referenced by runFilter().

378 {
379  ossim_uint32 bandIdx = 0;
380  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
381  double horizontalValue = 0.0;
382  double verticalValue = 0.0;
383  double value = 0.0;
384  // ossim_uint32 valueIdx = 0;
385  ossim_uint32 x = 0;
386  ossim_uint32 y = 0;
387  ossim_uint32 width = theTile->getWidth();
388  ossim_uint32 height = theTile->getHeight();
389  ossim_int32 rowIncrement = inputData->getWidth();
390  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
391 
392  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
393  {
394  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
395  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
396  T np = static_cast<T>(inputData->getNullPix(bandIdx));
397  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
398  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
399 
400  if(inputBuf&&outputBuf)
401  {
402  for(y = 0; y < height; ++y)
403  {
404  for(x = 0; x < width; ++x)
405  {
406  if( (*(inputBuf + rowIncrement + 1) != np))
407  {
408  horizontalValue = ((double)inputBuf[0] - (double)inputBuf[rowIncrement2]) +
409  ((double)(inputBuf[1]) - (double)( inputBuf[rowIncrement2+1])) +
410  ((double)(inputBuf[2]) - (double)(inputBuf[rowIncrement2+2]));
411 
412  verticalValue = ((double)(inputBuf[2]) + (double)inputBuf[rowIncrement+2] + (double)inputBuf[rowIncrement2+2]) -
413  ((double)inputBuf[0] + (double)inputBuf[rowIncrement] + (double)inputBuf[rowIncrement2]);
414 
415  value = sqrt(horizontalValue*horizontalValue + verticalValue*verticalValue);
416 
417  if((value == np) ||
418  (value < minP))
419  {
420  *outputBuf = (static_cast<T>(minP));
421  }
422  else if(value > maxP)
423  {
424  *outputBuf = (static_cast<T>(maxP));
425  }
426  else
427  {
428  *outputBuf = (static_cast<T>(value));
429  }
430 
431  }
432  else
433  {
434  *outputBuf = np;
435  }
436  ++outputBuf;
437  ++inputBuf;
438  }
439  inputBuf+=2;
440  }
441  }
442  }
443  theTile->validate();
444 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual const ossim_float64 * getMaxPix() const
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
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 const void * getBuf() const
ossimRefPtr< ossimImageData > theTile
int ossim_int32

◆ runRobertsFilter()

template<class T >
void ossimEdgeFilter::runRobertsFilter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 447 of file ossimEdgeFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getMaxPix(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), theTile, ossimImageData::validate(), x, and y.

Referenced by runFilter().

449 {
450  ossim_uint32 bandIdx = 0;
451  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
452  double v1 = 0.0;
453  double v2 = 0.0;
454  double value = 0.0;
455  // ossim_uint32 valueIdx = 0;
456  ossim_uint32 x = 0;
457  ossim_uint32 y = 0;
458  ossim_uint32 width = theTile->getWidth();
459  ossim_uint32 height = theTile->getHeight();
460  ossim_int32 rowIncrement = inputData->getWidth();
461 
462  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
463  {
464  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
465  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
466  T np = static_cast<T>(inputData->getNullPix(bandIdx));
467  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
468  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
469 
470  if(inputBuf&&outputBuf)
471  {
472  for(y = 0; y < height; ++y)
473  {
474  for(x = 0; x < width; ++x)
475  {
476  if( (*inputBuf) != np)
477  {
478  v1 = (double)inputBuf[0] - (double)(inputBuf[rowIncrement+1]);
479  v1 = (double)inputBuf[0] - (double)(inputBuf[1]);
480 
481  v2 = (double)inputBuf[1] - (double)inputBuf[rowIncrement];
482  v2 = (double)inputBuf[0] - (double)inputBuf[rowIncrement];
483 
484  value = sqrt(v1*v1 + v2*v2);
485 
486  if((value == np) ||
487  (value < minP))
488  {
489  *outputBuf = (static_cast<T>(minP));
490  }
491  else if(value > maxP)
492  {
493  *outputBuf = (static_cast<T>(maxP));
494  }
495  else
496  {
497  *outputBuf = (static_cast<T>(value));
498  }
499 
500  }
501  else
502  {
503  *outputBuf = np;
504  }
505  ++outputBuf;
506  ++inputBuf;
507  }
508  ++inputBuf;
509  }
510  }
511  }
512  theTile->validate();
513 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual const ossim_float64 * getMaxPix() const
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
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 const void * getBuf() const
ossimRefPtr< ossimImageData > theTile
int ossim_int32

◆ runSimpleFilter()

template<class T >
void ossimEdgeFilter::runSimpleFilter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 516 of file ossimEdgeFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getMaxPix(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), theTile, ossimImageData::validate(), x, and y.

Referenced by runFilter().

517 {
518  ossim_uint32 bandIdx = 0;
519  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
520  double v1 = 0.0;
521  double v2 = 0.0;
522  double value = 0.0;
523  // ossim_uint32 valueIdx = 0;
524  ossim_uint32 x = 0;
525  ossim_uint32 y = 0;
526  ossim_uint32 width = theTile->getWidth();
527  ossim_uint32 height = theTile->getHeight();
528  ossim_int32 rowIncrement = inputData->getWidth();
529 
530  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
531  {
532  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
533  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
534  T np = static_cast<T>(inputData->getNullPix(bandIdx));
535  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
536  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
537 
538  if(inputBuf&&outputBuf)
539  {
540  for(y = 0; y < height; ++y)
541  {
542  for(x = 0; x < width; ++x)
543  {
544  if( (*inputBuf) != np)
545  {
546  v1 = (double)inputBuf[0] - (double)(inputBuf[1]);
547  v2 = (double)inputBuf[0] - (double)inputBuf[rowIncrement];
548  value = sqrt(v1*v1 + v2*v2);
549 
550  if((value == np) || (value < minP))
551  *outputBuf = (static_cast<T>(minP));
552  else if(value > maxP)
553  *outputBuf = (static_cast<T>(maxP));
554  else
555  *outputBuf = (static_cast<T>(value));
556  }
557  else
558  {
559  *outputBuf = np;
560  }
561  ++outputBuf;
562  ++inputBuf;
563  }
564  ++inputBuf;
565  }
566  }
567  }
568  theTile->validate();
569 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual const ossim_float64 * getMaxPix() const
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
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 const void * getBuf() const
ossimRefPtr< ossimImageData > theTile
int ossim_int32

◆ runSobelFilter()

template<class T >
void ossimEdgeFilter::runSobelFilter ( dummyVariable,
ossimRefPtr< ossimImageData inputData 
)
protected

Definition at line 305 of file ossimEdgeFilter.cpp.

References ossimImageData::getBuf(), ossimImageData::getHeight(), ossimImageData::getMaxPix(), ossimImageData::getMinPix(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getWidth(), theTile, ossimImageData::validate(), x, and y.

Referenced by runFilter().

307 {
308  ossim_uint32 bandIdx = 0;
309  ossim_uint32 numberOfBands = inputData->getNumberOfBands();
310  double horizontalValue = 0.0;
311  double verticalValue = 0.0;
312  double value = 0.0;
313  // ossim_uint32 valueIdx = 0;
314  ossim_uint32 x = 0;
315  ossim_uint32 y = 0;
316  ossim_uint32 width = theTile->getWidth();
317  ossim_uint32 height = theTile->getHeight();
318  ossim_int32 rowIncrement = inputData->getWidth();
319  ossim_int32 rowIncrement2 = 2*inputData->getWidth();
320 
321  for(bandIdx = 0; bandIdx < numberOfBands; ++bandIdx)
322  {
323  T* inputBuf = static_cast<T*>(inputData->getBuf(bandIdx));
324  T* outputBuf = static_cast<T*>(theTile->getBuf(bandIdx));
325  T np = static_cast<T>(inputData->getNullPix(bandIdx));
326  T minP = static_cast<T>(inputData->getMinPix(bandIdx));
327  T maxP = static_cast<T>(inputData->getMaxPix(bandIdx));
328 
329  if(inputBuf&&outputBuf)
330  {
331  for(y = 0; y < height; ++y)
332  {
333  for(x = 0; x < width; ++x)
334  {
335  if( (*(inputBuf + rowIncrement + 1) != np))
336  {
337  horizontalValue = ((double)inputBuf[0] - (double)inputBuf[rowIncrement2]) +
338  ((double)(inputBuf[1]*2.0) - (double)( inputBuf[rowIncrement2+1]*2.0)) +
339  ((double)(inputBuf[2]) - (double)(inputBuf[rowIncrement2+2]));
340 
341  verticalValue = ((double)(inputBuf[2]) + (double)inputBuf[rowIncrement+2]*2.0 + (double)inputBuf[rowIncrement2+2]) -
342  (double)(inputBuf[0] + 2.0*(double)inputBuf[rowIncrement] + (double)inputBuf[rowIncrement2]);
343 
344  value = sqrt(horizontalValue*horizontalValue + verticalValue*verticalValue);
345 
346  if((value == np) ||
347  (value < minP))
348  {
349  *outputBuf = (static_cast<T>(minP));
350  }
351  else if(value > maxP)
352  {
353  *outputBuf = (static_cast<T>(maxP));
354  }
355  else
356  {
357  *outputBuf = (static_cast<T>(value));
358  }
359 
360  }
361  else
362  {
363  *outputBuf = np;
364  }
365  ++outputBuf;
366  ++inputBuf;
367  }
368  inputBuf+=2;
369  }
370  }
371  }
372  theTile->validate();
373 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual const ossim_float64 * getMaxPix() const
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
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 const void * getBuf() const
ossimRefPtr< ossimImageData > theTile
int ossim_int32

◆ saveState()

bool ossimEdgeFilter::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 ossimImageSourceFilter.

Definition at line 695 of file ossimEdgeFilter.cpp.

References ossimKeywordlist::add(), getFilterType(), PROP_EDGE_FILTER, and ossimImageSourceFilter::saveState().

697 {
698  kwl.add(prefix,
700  getFilterType(),
701  true);
702 
703  return ossimImageSourceFilter::saveState(kwl, prefix);
704 }
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
#define PROP_EDGE_FILTER
virtual ossimString getFilterType() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.

◆ setFilterType()

void ossimEdgeFilter::setFilterType ( const ossimString filterType)
virtual

The filter type can be one of the following strings.

It is case insensitive for the compares.

Sobel Laplacian Prewitt

Definition at line 157 of file ossimEdgeFilter.cpp.

References ossimString::contains(), ossimString::downcase(), and theFilterType.

Referenced by loadState().

158 {
159  ossimString tempFilterType = filterType;
160  tempFilterType = tempFilterType.downcase();
161 
162  if(tempFilterType.contains("sob"))
163  {
164  theFilterType = "Sobel";
165  }
166  else if(tempFilterType.contains("lap"))
167  {
168  theFilterType = "Laplacian";
169  }
170  else if(tempFilterType.contains("prew"))
171  {
172  theFilterType = "Prewitt";
173  }
174  else if(tempFilterType.contains("rob"))
175  {
176  theFilterType = "Roberts";
177  }
178  else if(tempFilterType.contains("sim"))
179  {
180  theFilterType = "Simple";
181  }
182  else if(tempFilterType.contains("localmax"))
183  {
184  theFilterType = "LocalMax8";
185  }
186  else
187  {
188  theFilterType = "Sobel";
189  }
190 }
bool contains(char aChar) const
Definition: ossimString.h:58
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
ossimString theFilterType

◆ setProperty()

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

Reimplemented from ossimImageSourceFilter.

Definition at line 192 of file ossimEdgeFilter.cpp.

References ossimRefPtr< T >::get(), ossimProperty::getName(), PROP_EDGE_FILTER, ossimImageSourceFilter::setProperty(), and theFilterType.

193 {
194  if(!property) return;
195 
196  if(property->getName() == PROP_EDGE_FILTER)
197  {
198  theFilterType = property->valueToString();
199  }
200  else
201  {
203  }
204 
205 }
virtual void setProperty(ossimRefPtr< ossimProperty > property)
ossimString theFilterType
#define PROP_EDGE_FILTER
const ossimString & getName() const

Member Data Documentation

◆ theFilterType

ossimString ossimEdgeFilter::theFilterType
protected

◆ theTile

ossimRefPtr<ossimImageData> ossimEdgeFilter::theTile
protected

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