w2img::MorphFilter Class Reference

Inheritance diagram for w2img::MorphFilter:

w2img::ImageFilter w2img::SingleData2DFilter w2img::Data2DFilter List of all members.

Detailed Description

Performs morphological open (dilate) and close (erode) based on grey-scale values that are of monotonically increasing/decreasing interest.

For example, this filter will work on radar reflectivity and infrared temperature, but will not work for such things as Doppler velocity since it is not possibly specify a direction of interest.

Author:
Lakshman
Version:
Id
w2img_MorphFilter.h,v 1.6 2009/06/02 20:17:57 lakshman Exp


Public Types

 Erode
 This is useful for removing things like speckle, i.e.
 Dilate
 This is useful for filling gaps and optimistic smoothing i.e.
 LargeIsInteresting
 Data like rain rate, radar reflectivity, etc.
 SmallIsInteresting
 Data like infrared temperature where colder values correspond to thunderstorms.
enum  Operation { Erode, Dilate }
 For specifying which morphological operation to perform. More...
enum  DataDirection { LargeIsInteresting, SmallIsInteresting }
 Specify the direction of interest in your data. More...

Public Member Functions

 MorphFilter (Operation morphologicalOperation, DataDirection howDataIsOrganized=LargeIsInteresting)
 Construct a morphological filter.
void setNeighborhoodSize (size_t kernel_xsize, size_t kernel_ysize)
 Changes the neighborhood size from 3 (half-size of 1).
void setMinFill (float min_fill)
 How much of the neighborhood should be filled before we do dilation/erosion? By default, this is 0 for erosion and 0.33 for dilation.
virtual ~MorphFilter ()
virtual code::Image< float > filterImage (const code::Image< float > &data)
 the work-horse function that does the actual morphological operations.
virtual code::SmartPtr< code::DataType > filter (const code::RadialSet &)
virtual code::SmartPtr< code::DataType > filter (const code::CartesianGrid2D &)
virtual code::SmartPtr< code::DataType > filter (const code::LatLonGrid &)
void process (code::PolarGrid &)
 Note that you need to call getResult() to get the result.
void process (code::RadialSet &)
 Note that you need to call getResult() to get the result.
void process (code::CartesianGrid2D &)
 Note that you need to call getResult() to get the result.
void process (code::LatLonGrid &)
 Note that you need to call getResult() to get the result.
void process (code::WindFieldStruct< code::LatLonGrid > &)
 Note that you need to call getResult() to get the result.
void process (code::WindFieldStruct< code::CartesianGrid2D > &)
 Note that you need to call getResult() to get the result.
void allowChangingMissingData (bool in)
 Should we filter at missing data values also, or not process missing values? By default, smoothing around a missing value might produce a value at that point in the result i.e.
bool canChangeMissing () const
void setToHandleRadialData (bool in)
 Pass in true if radial data should be filtered directly instead, of as is default, to convert to CartesianGrid before contouring.
void setCartesianGridResolutionRatio (double inres)
 changes the grid resolution of CartesianGrids created from RadialSets from that of the gate width.
void setCartesianGridDimension (const code::Length &indim)
 clips cartesian grids to this extent in the horizontal and vertical directions.
void setWrapAroundRadials (size_t numWrapAroundRadials)
 Normally, the RadialSet processing is done with no radial "wrapping".
size_t getWrapAroundRadials () const
code::SmartPtr< code::DataType > getResult ()
 get the result of the filtering -- returns 0 on error.
void reset ()

Protected Attributes

code::SmartPtr< code::DataType > myResult


Member Enumeration Documentation

enum w2img::MorphFilter::DataDirection

Specify the direction of interest in your data.

Enumerator:
LargeIsInteresting  Data like rain rate, radar reflectivity, etc.

where large data tends to be of interest.

SmallIsInteresting  Data like infrared temperature where colder values correspond to thunderstorms.

enum w2img::MorphFilter::Operation

For specifying which morphological operation to perform.

Enumerator:
Erode  This is useful for removing things like speckle, i.e.

it erodes the area of interest.

Dilate  This is useful for filling gaps and optimistic smoothing i.e.

it dilates the area of interest.


Constructor & Destructor Documentation

w2img::MorphFilter::MorphFilter ( Operation  morphologicalOperation,
DataDirection  howDataIsOrganized = LargeIsInteresting 
)

Construct a morphological filter.

virtual w2img::MorphFilter::~MorphFilter (  )  [virtual]


Member Function Documentation

void w2img::SingleData2DFilter::allowChangingMissingData ( bool  in  )  [inline, virtual, inherited]

Should we filter at missing data values also, or not process missing values? By default, smoothing around a missing value might produce a value at that point in the result i.e.

the bool is true.

Implements w2img::Data2DFilter.

bool w2img::SingleData2DFilter::canChangeMissing (  )  const [inline, virtual, inherited]

Implements w2img::Data2DFilter.

virtual code::SmartPtr<code::DataType> w2img::ImageFilter::filter ( const code::LatLonGrid &   )  [virtual, inherited]

Implements w2img::SingleData2DFilter.

Reimplemented in w2img::DistanceFilter.

virtual code::SmartPtr<code::DataType> w2img::ImageFilter::filter ( const code::CartesianGrid2D &   )  [virtual, inherited]

Implements w2img::SingleData2DFilter.

Reimplemented in w2img::DistanceFilter.

virtual code::SmartPtr<code::DataType> w2img::ImageFilter::filter ( const code::RadialSet &   )  [virtual, inherited]

Implements w2img::SingleData2DFilter.

Reimplemented in w2img::DistanceFilter.

virtual code::Image<float> w2img::MorphFilter::filterImage ( const code::Image< float > &  data  )  [virtual]

the work-horse function that does the actual morphological operations.

Implements w2img::ImageFilter.

code::SmartPtr<code::DataType> w2img::Data2DFilter::getResult (  )  [inline, inherited]

get the result of the filtering -- returns 0 on error.

This may or may not be the same data as passed in, for example process(RadialSet) may return a CartesianGrid.

size_t w2img::SingleData2DFilter::getWrapAroundRadials (  )  const [inline, virtual, inherited]

Implements w2img::Data2DFilter.

void w2img::SingleData2DFilter::process ( code::WindFieldStruct< code::CartesianGrid2D > &   )  [inherited]

Note that you need to call getResult() to get the result.

The input data is not changed.

void w2img::SingleData2DFilter::process ( code::WindFieldStruct< code::LatLonGrid > &   )  [inherited]

Note that you need to call getResult() to get the result.

The input data is not changed.

void w2img::SingleData2DFilter::process ( code::LatLonGrid &   )  [inherited]

Note that you need to call getResult() to get the result.

The input data is not changed.

void w2img::SingleData2DFilter::process ( code::CartesianGrid2D &   )  [inherited]

Note that you need to call getResult() to get the result.

The input data is not changed.

void w2img::SingleData2DFilter::process ( code::RadialSet &   )  [inherited]

Note that you need to call getResult() to get the result.

The input data is not changed.

void w2img::SingleData2DFilter::process ( code::PolarGrid &   )  [inherited]

Note that you need to call getResult() to get the result.

The input data is not changed.

void w2img::Data2DFilter::reset (  )  [inline, inherited]

void w2img::SingleData2DFilter::setCartesianGridDimension ( const code::Length &  indim  )  [inline, virtual, inherited]

clips cartesian grids to this extent in the horizontal and vertical directions.

(Removes the boundaries, keeping the image centered at the same spot).

by default, no such clipping is done. Pass in Length() to turn off clipping.

Implements w2img::Data2DFilter.

void w2img::SingleData2DFilter::setCartesianGridResolutionRatio ( double  inres  )  [inline, virtual, inherited]

changes the grid resolution of CartesianGrids created from RadialSets from that of the gate width.

For example, if the RadialSet's gate width is 1km, then if the ratio is 3, the CartesianGrid's resolution is 0.33km. If the input ratio is 0.33 then the grid resolution will be 3km.

Implements w2img::Data2DFilter.

void w2img::MorphFilter::setMinFill ( float  min_fill  ) 

How much of the neighborhood should be filled before we do dilation/erosion? By default, this is 0 for erosion and 0.33 for dilation.

void w2img::MorphFilter::setNeighborhoodSize ( size_t  kernel_xsize,
size_t  kernel_ysize 
)

Changes the neighborhood size from 3 (half-size of 1).

void w2img::SingleData2DFilter::setToHandleRadialData ( bool  in  )  [inline, virtual, inherited]

Pass in true if radial data should be filtered directly instead, of as is default, to convert to CartesianGrid before contouring.

Implements w2img::Data2DFilter.

void w2img::SingleData2DFilter::setWrapAroundRadials ( size_t  numWrapAroundRadials  )  [inline, virtual, inherited]

Normally, the RadialSet processing is done with no radial "wrapping".

You can remove boundary effects in the azimuthal direction by calling this function with a value greater than zero.

When filtering with a 5x5 kernel, this class will automatically add 5 radials, do the filtering and then remove the extra five radials. In that case, the number of wraparound radials should be set to 5.

Implements w2img::Data2DFilter.


Member Data Documentation

code::SmartPtr<code::DataType> w2img::Data2DFilter::myResult [protected, inherited]


Generated on Fri May 4 13:40:24 2012 for WDSS-IIw2algs by  doxygen 1.4.7