OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Static Public Member Functions | List of all members
ossimFilter Class Referenceabstract

#include <ossimFilter.h>

Inheritance diagram for ossimFilter:
ossimBellFilter ossimBesselFilter ossimBesselOrderOneFilter ossimBlackmanFilter ossimBoxFilter ossimBSplineFilter ossimCatromFilter ossimCubicFilter ossimGaussianFilter ossimHammingFilter ossimHanningFilter ossimHermiteFilter ossimLanczosFilter ossimMagicFilter ossimMitchellFilter ossimQuadraticFilter ossimSincFilter ossimTriangleFilter

Public Member Functions

 ossimFilter ()
 
virtual ~ossimFilter ()
 
virtual double filter (double x, double support) const =0
 
virtual NEWMAT::Matrix * newMatrix (long width=3, double middle=0.0, double scale=0.0) const
 
virtual void createMatrix (NEWMAT::Matrix &m, long width=3, double middle=0.0, double scale=0.0) const
 
virtual NEWMAT::RowVector * newVector (long width, double middle=0.0, double scale=1.0) const
 
virtual double getSupport () const =0
 

Static Public Member Functions

static double Sinc (double x)
 
static double Sinc (double x, double)
 

Detailed Description

Definition at line 8 of file ossimFilter.h.

Constructor & Destructor Documentation

◆ ossimFilter()

ossimFilter::ossimFilter ( )
inline

Definition at line 11 of file ossimFilter.h.

12  {}

◆ ~ossimFilter()

virtual ossimFilter::~ossimFilter ( )
inlinevirtual

Definition at line 13 of file ossimFilter.h.

13 {}

Member Function Documentation

◆ createMatrix()

void ossimFilter::createMatrix ( NEWMAT::Matrix &  m,
long  width = 3,
double  middle = 0.0,
double  scale = 0.0 
) const
virtual

Definition at line 263 of file ossimFilter.cpp.

References filter(), and getSupport().

Referenced by newMatrix().

267 {
268  NEWMAT::ColumnVector colVec(width);
269  NEWMAT::RowVector rowVec(width);
270 
271  double t = 0.0;
272  double val = 0.0;
273  if(width == 1)
274  {
275  t = 0;
276  val = filter(t, getSupport());
277  colVec[0] = val;
278  rowVec[0] = val;
279  }
280  else
281  {
282  for(long index = 0; index < width; index++)
283  {
284  t = (double)index/(double)(width-1);
285  t = middle + (t - .5)*scale;
286  val = filter(t, getSupport());
287  colVec[index] = val;
288  rowVec[index] = val;
289  }
290  }
291 
292  // do the outer product to construct the
293  // filter matrix
294  m = colVec * rowVec;
295 }
virtual double getSupport() const =0
virtual double filter(double x, double support) const =0

◆ filter()

virtual double ossimFilter::filter ( double  x,
double  support 
) const
pure virtual

◆ getSupport()

virtual double ossimFilter::getSupport ( ) const
pure virtual

◆ newMatrix()

NEWMAT::Matrix * ossimFilter::newMatrix ( long  width = 3,
double  middle = 0.0,
double  scale = 0.0 
) const
virtual

Will call the filter method to create a convolution matrix. This matrix will not have normalized weights.

Will generate a matrix by creating an outer product of the 1-D filter array. This matrix will be square width-by-width.

note: the matrix is a new matrix and needs to be destroyed by the caller

Definition at line 298 of file ossimFilter.cpp.

References createMatrix().

301 {
302  NEWMAT::Matrix *result = new NEWMAT::Matrix(width, width);
303 
304  createMatrix(*result,
305  width,
306  middle,
307  scale);
308 
309  return result;
310 }
virtual void createMatrix(NEWMAT::Matrix &m, long width=3, double middle=0.0, double scale=0.0) const

◆ newVector()

NEWMAT::RowVector * ossimFilter::newVector ( long  width,
double  middle = 0.0,
double  scale = 1.0 
) const
virtual

Definition at line 312 of file ossimFilter.cpp.

References filter(), and getSupport().

315 {
316  NEWMAT::RowVector *result = new NEWMAT::RowVector(width);
317 
318 
319  double t = 0.0;
320  double val = 0.0;
321  for(long index = 0; index < width; index++)
322  {
323  t = (double)index/(double)(width-1);
324  t = middle + (t- .5)*scale;
325  val = filter(t, getSupport());
326  (*result)[index] = val;
327  }
328 
329  return result;
330 }
virtual double getSupport() const =0
virtual double filter(double x, double support) const =0

◆ Sinc() [1/2]

static double ossimFilter::Sinc ( double  x)
inlinestatic

Definition at line 39 of file ossimFilter.h.

References M_PI, and x.

Referenced by ossimLanczosFilter::filter().

40  {
41  if (x != 0.0)
42  {
43  x*=M_PI;
44  return(sin(x)/x);
45  }
46 
47  return(1.0);
48  }
ossim_uint32 x
#define M_PI

◆ Sinc() [2/2]

static double ossimFilter::Sinc ( double  x,
double   
)
inlinestatic

Definition at line 49 of file ossimFilter.h.

References M_PI, and x.

50  {
51  if (x != 0.0)
52  {
53  x*=M_PI;
54  return(sin(x)/x);
55  }
56 
57  return(1.0);
58  }
ossim_uint32 x
#define M_PI

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