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

#include <ossimConvolutionSource.h>

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

Public Member Functions

 ossimConvolutionSource ()
 
 ossimConvolutionSource (ossimImageSource *inputSource, const NEWMAT::Matrix &convolutionMatix)
 
 ossimConvolutionSource (ossimImageSource *inputSource, const vector< NEWMAT::Matrix > &convolutionList)
 
virtual void setConvolution (const double *kernel, int nrows, int ncols, bool doWeightedAverage=false)
 
virtual void setConvolution (const NEWMAT::Matrix &convolutionMatrix, bool doWeightedAverage=false)
 
virtual void setConvolutionList (const vector< NEWMAT::Matrix > &convolutionList, bool doWeightedAverage=false)
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=NULL) const
 Method to save the state of an object to a keyword list. More...
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=NULL)
 
ossimRefPtr< ossimImageDatagetTile (const ossimIrect &tileRect, ossim_uint32 resLevel=0)
 
virtual void initialize ()
 
- 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)
 
virtual void setProperty (ossimRefPtr< ossimProperty > property)
 
virtual ossimRefPtr< ossimPropertygetProperty (const ossimString &name) const
 
virtual void getPropertyNames (std::vector< ossimString > &propertyNames) const
 
- 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

virtual ~ossimConvolutionSource ()
 
void allocate ()
 
virtual void setKernelInformation ()
 
virtual void deleteConvolutionList ()
 
template<class T >
void convolve (T dummyVariable, ossimRefPtr< ossimImageData > inputTile, ossimDiscreteConvolutionKernel *kernel)
 
- 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
 
ossim_int32 theMaxKernelWidth
 
ossim_int32 theMaxKernelHeight
 
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList
 
- 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

Definition at line 24 of file ossimConvolutionSource.h.

Constructor & Destructor Documentation

◆ ossimConvolutionSource() [1/3]

ossimConvolutionSource::ossimConvolutionSource ( )

Definition at line 25 of file ossimConvolutionSource.cpp.

27  theTile(NULL)
28 {
29 }
ossimImageSourceFilter(ossimObject *owner=NULL)
ossimRefPtr< ossimImageData > theTile

◆ ossimConvolutionSource() [2/3]

ossimConvolutionSource::ossimConvolutionSource ( ossimImageSource inputSource,
const NEWMAT::Matrix &  convolutionMatix 
)

Definition at line 31 of file ossimConvolutionSource.cpp.

References initialize(), setKernelInformation(), and theConvolutionKernelList.

33  : ossimImageSourceFilter(inputSource),
34  theTile(NULL)
35 {
36  theConvolutionKernelList.push_back(new ossimDiscreteConvolutionKernel(convolutionMatrix));
38  initialize();
39 }
ossimImageSourceFilter(ossimObject *owner=NULL)
ossimRefPtr< ossimImageData > theTile
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList

◆ ossimConvolutionSource() [3/3]

ossimConvolutionSource::ossimConvolutionSource ( ossimImageSource inputSource,
const vector< NEWMAT::Matrix > &  convolutionList 
)

Definition at line 41 of file ossimConvolutionSource.cpp.

References setConvolutionList().

43  : ossimImageSourceFilter(inputSource),
44  theTile(NULL)
45 {
46  setConvolutionList(convolutionList);
47 }
ossimImageSourceFilter(ossimObject *owner=NULL)
ossimRefPtr< ossimImageData > theTile
virtual void setConvolutionList(const vector< NEWMAT::Matrix > &convolutionList, bool doWeightedAverage=false)

◆ ~ossimConvolutionSource()

ossimConvolutionSource::~ossimConvolutionSource ( )
protectedvirtual

Definition at line 49 of file ossimConvolutionSource.cpp.

References deleteConvolutionList().

50 {
52 }

Member Function Documentation

◆ allocate()

void ossimConvolutionSource::allocate ( )
protected

Definition at line 381 of file ossimConvolutionSource.cpp.

References ossimImageDataFactory::create(), ossimImageData::initialize(), ossimImageDataFactory::instance(), ossimImageSourceFilter::theInputConnection, and theTile.

Referenced by getTile().

382 {
384  {
387  theTile->initialize();
388  }
389 }
ossimRefPtr< ossimImageData > theTile
virtual void initialize()
Initialize the data buffer.
static ossimImageDataFactory * instance()
ossimImageSource * theInputConnection
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const

◆ convolve()

template<class T >
void ossimConvolutionSource::convolve ( dummyVariable,
ossimRefPtr< ossimImageData inputTile,
ossimDiscreteConvolutionKernel kernel 
)
protected

Definition at line 269 of file ossimConvolutionSource.cpp.

References ossimDiscreteConvolutionKernel::convolveSubImage(), ossim::defaultMax(), ossim::defaultMin(), ossimImageData::getBuf(), ossimDataObject::getDataObjectStatus(), ossimDiscreteConvolutionKernel::getHeight(), ossimImageData::getHeight(), ossimImageData::getImageRectangle(), ossimImageData::getNullPix(), ossimImageData::getNumberOfBands(), ossimImageData::getOrigin(), ossimImageSource::getOutputScalarType(), ossimDiscreteConvolutionKernel::getWidth(), ossimImageData::getWidth(), ossimImageData::isNull(), OSSIM_PARTIAL, ossimImageData::setNull(), status, theTile, ossimIrect::width(), ossimIpt::x, x, ossimIpt::y, and y.

Referenced by getTile().

272 {
273  ossimIpt startOrigin = theTile->getOrigin();
274 
275  // Make sure that the patch is not empty or NULL
276  //
277  ossimIpt startDelta(startOrigin.x - inputTile->getOrigin().x,
278  startOrigin.y - inputTile->getOrigin().y);
279 
281  // let's setup some variables that we will need to do the
282  // convolution algorithm.
283  //
284  ossimIrect patchRect = inputTile->getImageRectangle();
285  long tileHeight = theTile->getHeight();
286  long tileWidth = theTile->getWidth();
287  long outputBands = theTile->getNumberOfBands();
288  long convolutionWidth = kernel->getWidth();
289  long convolutionHeight = kernel->getHeight();
290  long convolutionOffsetX= convolutionWidth/2;
291  long convolutionOffsetY= convolutionHeight/2;
292  long patchWidth = patchRect.width();
293  long convolutionTopLeftOffset = 0;
294  long convolutionCenterOffset = 0;
295 
296  long outputOffset = 0;
297  T np = 0;
298 
299  const double minPix = ossim::defaultMin(getOutputScalarType());
300  const double maxPix = ossim::defaultMax(getOutputScalarType());
301 // const double* maxPix = inputTile->getMaxPix();
302  const double* nullPix = inputTile->getNullPix();
303  double convolveResult = 0;
304 
305  if(status == OSSIM_PARTIAL) // must check for NULLS
306  {
307  for(long y = 0; y <tileHeight; y++)
308  {
309  convolutionCenterOffset = patchWidth*(startDelta.y + y) + startDelta.x;
310  convolutionTopLeftOffset = patchWidth*(startDelta.y + y - convolutionOffsetY) + startDelta.x-convolutionOffsetX;
311 
312  for(long x =0; x < tileWidth; x++)
313  {
314  if(!inputTile->isNull(convolutionCenterOffset))
315  {
316  for(long b = 0; b < outputBands; ++b)
317  {
318  T* buf = (T*)(inputTile->getBuf(b)) + convolutionTopLeftOffset;
319  T* outBuf = (T*)(theTile->getBuf(b));
320  kernel->convolveSubImage(buf,
321  patchWidth,
322  convolveResult,
323  (T)nullPix[b]);
324 
325  convolveResult = convolveResult < minPix? minPix:convolveResult;
326  convolveResult = convolveResult > maxPix? maxPix:convolveResult;
327 
328  outBuf[outputOffset] = (T)convolveResult;
329  }
330  }
331  else
332  {
333  theTile->setNull(outputOffset);
334 
335  }
336  ++convolutionCenterOffset;
337  ++convolutionTopLeftOffset;
338  ++outputOffset;
339  }
340  }
341  }
342  else // do not need to check for nulls here.
343  {
344  for(long b = 0; b < outputBands; ++b)
345  {
346  double convolveResult = 0;
347  const T* buf = (const T*)inputTile->getBuf(b);
348  T* outBuf = (T*)(theTile->getBuf(b));
349  np =(T)nullPix[b];
350  outputOffset = 0;
351 
352  for(long y = 0; y <tileHeight; y++)
353  {
354  convolutionTopLeftOffset = patchWidth*(startDelta.y + y - convolutionOffsetY) + startDelta.x-convolutionOffsetX;
355 
356  for(long x =0; x < tileWidth; x++)
357  {
358  kernel->convolveSubImage(&buf[convolutionTopLeftOffset],
359  patchWidth,
360  convolveResult,
361  np);
362 // NOT SURE IF I WANT TO CLAMP IN A CONVOLUTION SOURCE
363 // seems better to clamp to a scalar range instead of an input min max
364  convolveResult = convolveResult < minPix? (T)minPix:convolveResult;
365  convolveResult = convolveResult > maxPix?(T)maxPix:convolveResult;
366  outBuf[outputOffset] = (T)convolveResult;
367  ++outputOffset;
368  ++convolutionTopLeftOffset;
369  }
370  }
371  }
372  }
373 }
virtual ossim_uint32 getWidth() const
ossim_uint32 x
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 y
ossimRefPtr< ossimImageData > theTile
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
bool isNull(ossim_uint32 offset) const
OSSIM_DLL double defaultMin(ossimScalarType scalarType)
Definition: ossimCommon.cpp:73
virtual const ossim_float64 * getNullPix() const
virtual ossimIrect getImageRectangle() const
ossim_uint32 width() const
Definition: ossimIrect.h:500
void setNull(ossim_uint32 offset)
return status
OSSIM_DLL double defaultMax(ossimScalarType scalarType)
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
ossim_int32 y
Definition: ossimIpt.h:142
virtual const void * getBuf() const
virtual void convolveSubImage(const float *data, long dataWidth, double &result, float nullPixel=OSSIM_DEFAULT_NULL_PIX_FLOAT) const
ossim_int32 x
Definition: ossimIpt.h:141
ossimDataObjectStatus
Definitions for data object status.
virtual const ossimIpt & getOrigin() const

◆ deleteConvolutionList()

void ossimConvolutionSource::deleteConvolutionList ( )
protectedvirtual

Definition at line 513 of file ossimConvolutionSource.cpp.

References theConvolutionKernelList.

Referenced by loadState(), setConvolutionList(), and ~ossimConvolutionSource().

514 {
515  for(ossim_int32 index = 0; index < (ossim_int32)theConvolutionKernelList.size(); ++index)
516  {
517  delete theConvolutionKernelList[index];
518  }
519 
520  theConvolutionKernelList.clear();
521 }
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList
int ossim_int32

◆ getTile()

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

Reimplemented from ossimImageSource.

Definition at line 87 of file ossimConvolutionSource.cpp.

References allocate(), convolve(), ossimRefPtr< T >::get(), ossimImageData::getHeight(), ossimRectilinearDataObject::getScalarType(), ossimImageSource::getTile(), ossimImageData::getWidth(), ossimIrect::height(), ossimImageData::initialize(), ossimSource::isSourceEnabled(), ossimImageData::loadTile(), ossimIrect::lr(), ossimImageData::makeBlank(), OSSIM_DOUBLE, OSSIM_EMPTY, OSSIM_FLOAT, OSSIM_NORMALIZED_DOUBLE, OSSIM_NORMALIZED_FLOAT, OSSIM_NULL, OSSIM_SSHORT16, OSSIM_UCHAR, OSSIM_USHORT11, OSSIM_USHORT12, OSSIM_USHORT13, OSSIM_USHORT14, OSSIM_USHORT15, OSSIM_USHORT16, ossimImageData::setHeight(), ossimImageData::setOrigin(), ossimImageData::setWidth(), theConvolutionKernelList, ossimImageSourceFilter::theInputConnection, theMaxKernelHeight, theMaxKernelWidth, theTile, ossimIrect::ul(), ossimRefPtr< T >::valid(), ossimImageData::validate(), ossimIrect::width(), ossimIpt::x, and ossimIpt::y.

Referenced by ossimImageSharpenFilter::getTile(), ossimSFIMFusion::getTile(), and ossimLocalCorrelationFusion::getTile().

90 {
92 
93  if((!isSourceEnabled())||
94  (theConvolutionKernelList.size() < 1))
95  {
96  return theInputConnection->getTile(tileRect, resLevel);
97  }
98 
99  if(!theTile.valid())
100  {
101  allocate();
102  if(!theTile.valid()) // Throw exception???
103  {
104  return theInputConnection->getTile(tileRect, resLevel);
105  }
106  }
107 
108  ossim_uint32 w = tileRect.width();
109  ossim_uint32 h = tileRect.height();
110  ossim_uint32 tw = theTile->getWidth();
112  theTile->setWidth(w);
113  theTile->setHeight(h);
114  if((w*h)!=(tw*th))
115  {
116  theTile->initialize();
117  theTile->makeBlank();
118  }
119  else
120  {
121  theTile->makeBlank();
122  }
123  theTile->setOrigin(tileRect.ul());
124  long offsetX = (theMaxKernelWidth)/2;
125  long offsetY = (theMaxKernelHeight)/2;
126  ossimIrect requestRect(tileRect.ul().x - offsetX,
127  tileRect.ul().y - offsetY,
128  tileRect.lr().x + offsetX,
129  tileRect.lr().y + offsetY);
130 
132  resLevel);
133 
134  if(!input.valid() ||
135  (input->getDataObjectStatus() == OSSIM_NULL)||
136  (input->getDataObjectStatus() == OSSIM_EMPTY))
137  {
138  return input;
139  }
140  switch(theTile->getScalarType())
141  {
142  case OSSIM_UCHAR:
143  {
144  if(theConvolutionKernelList.size() == 1)
145  {
146  convolve(static_cast<ossim_uint8>(0),
147  input,
149  }
150  else
151  {
153  ossim_uint32 idx;
154  for(idx = 0; idx < upperBound; ++idx)
155  {
156  convolve(static_cast<ossim_uint8>(0),
157  input,
159  input->loadTile(theTile.get());
160  }
161  }
162  break;
163  }
164  case OSSIM_USHORT16:
165  case OSSIM_USHORT11:
166  case OSSIM_USHORT12:
167  case OSSIM_USHORT13:
168  case OSSIM_USHORT14:
169  case OSSIM_USHORT15:
170  {
171  if(theConvolutionKernelList.size() == 1)
172  {
173  convolve(static_cast<ossim_uint16>(0),
174  input,
176  }
177  else
178  {
180  ossim_uint32 idx;
181  for(idx = 0; idx < upperBound; ++idx)
182  {
183  convolve(static_cast<ossim_uint16>(0),
184  input,
186  input->loadTile(theTile.get());
187  }
188  }
189  break;
190  }
191  case OSSIM_SSHORT16:
192  {
193  if(theConvolutionKernelList.size() == 1)
194  {
195  convolve(static_cast<ossim_sint16>(0),
196  input,
198  }
199  else
200  {
202  ossim_uint32 idx;
203  for(idx = 0; idx < upperBound; ++idx)
204  {
205  convolve(static_cast<ossim_sint16>(0),
206  input,
208  input->loadTile(theTile.get());
209  }
210  }
211  break;
212  }
213  case OSSIM_FLOAT:
215  {
216  if(theConvolutionKernelList.size() == 1)
217  {
218  convolve(static_cast<float>(0),
219  input,
221  }
222  else
223  {
225  ossim_uint32 idx;
226  for(idx = 0; idx < upperBound; ++idx)
227  {
228  convolve(static_cast<float>(0),
229  input,
231  input->loadTile(theTile.get());
232  }
233  }
234  break;
235  }
236  case OSSIM_DOUBLE:
238  {
239  if(theConvolutionKernelList.size() == 1)
240  {
241  convolve(static_cast<double>(0),
242  input,
244  }
245  else
246  {
248  ossim_uint32 idx;
249  for(idx = 0; idx < upperBound; ++idx)
250  {
251  convolve(static_cast<double>(0),
252  input,
254  input->loadTile(theTile.get());
255  }
256  }
257  break;
258  }
259  default:
260  {
261  theTile->loadTile(input.get());
262  }
263  }
264  theTile->validate();
265  return theTile;
266 }
16 bit unsigned integer (15 bits used)
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
Definition: ossimSource.cpp:79
bool valid() const
Definition: ossimRefPtr.h:75
ossimRefPtr< ossimImageData > theTile
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
16 bit unsigned integer (13 bits used)
virtual void initialize()
Initialize the data buffer.
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
virtual void setHeight(ossim_uint32 height)
void convolve(T dummyVariable, ossimRefPtr< ossimImageData > inputTile, ossimDiscreteConvolutionKernel *kernel)
virtual ossimDataObjectStatus validate() const
ossimImageSource * theInputConnection
unsigned int ossim_uint32
32 bit normalized floating point
virtual void setWidth(ossim_uint32 width)
virtual void setOrigin(const ossimIpt &origin)
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList
virtual ossimScalarType getScalarType() const
virtual void makeBlank()
Initializes data to null pixel values.
64 bit normalized floating point
16 bit unsigned integer (11 bits used)
32 bit floating point
16 bit unsigned iteger
64 bit floating point
16 bit signed integer
8 bit unsigned iteger
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin, ossim_uint32 resLevel=0)
16 bit unsigned integer (12 bits used)

◆ initialize()

void ossimConvolutionSource::initialize ( )
virtual

◆ loadState()

bool ossimConvolutionSource::loadState ( const ossimKeywordlist kwl,
const char *  prefix = NULL 
)
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 440 of file ossimConvolutionSource.cpp.

References deleteConvolutionList(), and ossimKeywordlist::find().

442 {
444 
445  const char* numberOfMatrices = kwl.find(prefix, NUMBER_OF_MATRICES);
446 
447  ossim_int32 matrixCount = ossimString(numberOfMatrices).toLong();
448  ossim_int32 numberOfMatches = 0;
449  ossim_int32 index = 0;
450  while(numberOfMatches < matrixCount)
451  {
452  ossimString newPrefix = prefix;
453  newPrefix += ossimString("m");
454  newPrefix += ossimString::toString(index);
455  newPrefix += ossimString(".");
456 
457  const char* rows = kwl.find((newPrefix+NUMBER_OF_ROWS.key()).c_str());
458  const char* cols = kwl.find((newPrefix+NUMBER_OF_COLS.key()).c_str());
459 
460  if(rows&&cols)
461  {
462  ++numberOfMatches;
463  ossim_int32 numberOfRows = ossimString(rows).toLong();
464  ossim_int32 numberOfCols = ossimString(cols).toLong();
465  NEWMAT::Matrix convolutionMatrix(numberOfRows, numberOfCols);
466 
467 
468  for(ossim_int32 r = 1; r <= numberOfRows; r++)
469  {
470  for(ossim_int32 c = 1; c <= numberOfCols; c++)
471  {
472  convolutionMatrix[r-1][c-1] = 0.0;
473 
475  value += "_";
476  value += ossimString::toString(c);
477 
478  const char* v = kwl.find(newPrefix.c_str(),
479  value.c_str());
480  if(v)
481  {
482  convolutionMatrix[r-1][c-1] = ossimString(v).toDouble();
483  }
484  }
485  }
486  theConvolutionKernelList.push_back(new ossimDiscreteConvolutionKernel(convolutionMatrix));
487  }
488  ++index;
489  }
491  return ossimImageSourceFilter::loadState(kwl, prefix);
492 }
const char * find(const char *key) const
static ossimString toString(bool aValue)
Numeric to string methods.
double toDouble() const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList
long toLong() const
toLong&#39;s deprecated, please use the toInts...
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
int ossim_int32
const char * key() const

◆ saveState()

bool ossimConvolutionSource::saveState ( ossimKeywordlist kwl,
const char *  prefix = NULL 
) 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 391 of file ossimConvolutionSource.cpp.

References ossimKeywordlist::add(), theConvolutionKernelList, and ossimString::toString().

393 {
394  ossim_uint32 numberOfMatrices = 0;
395  for(ossim_uint32 m = 0; m < theConvolutionKernelList.size();++m)
396  {
398  {
399  ++numberOfMatrices;
400  const NEWMAT::Matrix& kernel = theConvolutionKernelList[m]->getKernel();
401  ossimString mPrefix = "m" +
402  ossimString::toString(numberOfMatrices) +
403  ".";
404  kwl.add(prefix,
405  (mPrefix + "rows").c_str(),
406  kernel.Nrows(),
407  true);
408 
409  kwl.add(prefix,
410  (mPrefix + "cols").c_str(),
411  kernel.Ncols(),
412  true);
413 
414  for(ossim_int32 row = 0; row < kernel.Nrows(); ++row)
415  {
416  for(ossim_int32 col =0; col < kernel.Ncols(); ++col)
417  {
418  ossimString newPrefix = mPrefix +
419  ossimString::toString(row+1) + "_" +
420  ossimString::toString(col+1);
421  kwl.add(prefix,
422  newPrefix,
423  kernel[row][col],
424  true);
425  }
426  }
427  }
428  }
429 
430 
431  kwl.add(prefix,
432  NUMBER_OF_MATRICES,
433  numberOfMatrices,
434  true);
435 
436  return ossimImageSourceFilter::saveState(kwl, prefix);
437 }
static ossimString toString(bool aValue)
Numeric to string methods.
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
unsigned int ossim_uint32
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
int ossim_int32

◆ setConvolution() [1/2]

void ossimConvolutionSource::setConvolution ( const double *  kernel,
int  nrows,
int  ncols,
bool  doWeightedAverage = false 
)
virtual

Definition at line 54 of file ossimConvolutionSource.cpp.

Referenced by ossimImageSharpenFilter::buildConvolutionMatrix().

58 {
59  NEWMAT::Matrix m(nrows, ncols);
60  const double* tempPtr = kernel;
61  for(int row = 0; row < nrows; ++row)
62  {
63  for(int col = 0; col < ncols; ++col)
64  {
65  m[row][col] =*tempPtr;
66  ++tempPtr;
67  }
68  }
69 
70  setConvolution(m, doWeightedAverage);
71 }
virtual void setConvolution(const double *kernel, int nrows, int ncols, bool doWeightedAverage=false)

◆ setConvolution() [2/2]

void ossimConvolutionSource::setConvolution ( const NEWMAT::Matrix &  convolutionMatrix,
bool  doWeightedAverage = false 
)
virtual

Definition at line 523 of file ossimConvolutionSource.cpp.

References setConvolutionList().

524 {
525  std::vector<NEWMAT::Matrix> m;
526 
527  m.push_back(convolutionMatrix);
528 
529  setConvolutionList(m, doWeightedAverage);
530 }
virtual void setConvolutionList(const vector< NEWMAT::Matrix > &convolutionList, bool doWeightedAverage=false)

◆ setConvolutionList()

void ossimConvolutionSource::setConvolutionList ( const vector< NEWMAT::Matrix > &  convolutionList,
bool  doWeightedAverage = false 
)
virtual

Definition at line 73 of file ossimConvolutionSource.cpp.

References deleteConvolutionList(), setKernelInformation(), and theConvolutionKernelList.

Referenced by ossimConvolutionSource(), and setConvolution().

75 {
77  ossim_uint32 idx;
78  for(idx = 0; idx < convolutionList.size(); ++idx)
79  {
80  theConvolutionKernelList.push_back(new ossimDiscreteConvolutionKernel(convolutionList[idx],
81  doWeightedAverage));
82  }
83 
85 }
unsigned int ossim_uint32
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList

◆ setKernelInformation()

void ossimConvolutionSource::setKernelInformation ( )
protectedvirtual

Definition at line 494 of file ossimConvolutionSource.cpp.

References theConvolutionKernelList, theMaxKernelHeight, and theMaxKernelWidth.

Referenced by ossimConvolutionSource(), and setConvolutionList().

495 {
496  ossim_uint32 index;
497 
498  if(theConvolutionKernelList.size() > 0)
499  {
502 
503  for(index = 1; index < theConvolutionKernelList.size(); ++index)
504  {
505  ossim_int32 w = theConvolutionKernelList[index]->getWidth();
506  ossim_int32 h = theConvolutionKernelList[index]->getHeight();
509  }
510  }
511 }
unsigned int ossim_uint32
std::vector< ossimDiscreteConvolutionKernel *> theConvolutionKernelList
int ossim_int32

Member Data Documentation

◆ theConvolutionKernelList

std::vector<ossimDiscreteConvolutionKernel* > ossimConvolutionSource::theConvolutionKernelList
protected

◆ theMaxKernelHeight

ossim_int32 ossimConvolutionSource::theMaxKernelHeight
protected

Definition at line 57 of file ossimConvolutionSource.h.

Referenced by getTile(), and setKernelInformation().

◆ theMaxKernelWidth

ossim_int32 ossimConvolutionSource::theMaxKernelWidth
protected

Definition at line 56 of file ossimConvolutionSource.h.

Referenced by getTile(), and setKernelInformation().

◆ theTile

ossimRefPtr<ossimImageData> ossimConvolutionSource::theTile
protected

Definition at line 55 of file ossimConvolutionSource.h.

Referenced by allocate(), convolve(), getTile(), and initialize().


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