Classes | Public Member Functions | Protected Member Functions | Protected Attributes

Array3DFloodfill< T > Class Template Reference

Inheritance diagram for Array3DFloodfill< T >:
ParallelTask Task NamedObject CallBacker

List of all members.

Classes

struct  Compartment

Public Member Functions

 Array3DFloodfill (const Array3D< T > &input, T threshold, bool aboveisovalue, Array3D< T > &output)
 ~Array3DFloodfill ()
void setOutsideValue (T val)
void setInsideValue (T val)
void useInputValue (bool yn)
void use6Neighbors (bool yn)
void addSeed (int, int, int)
bool isAboveIsovalue () const
int maxNrThreads ()
od_int64 nrIterations () const

Protected Member Functions

void setOutput (int, int, int, bool addseed)
bool doWork (od_int64 start, od_int64 stop, int)
int getNextWorkCompartment ()
void returnCompartment (int)
int getWorkCompartment (int, int, int) const

Protected Attributes

threshold_
bool aboveisovalue_
int use6neighbors_
bool useinputval_
insideval_
outsideval_
int nrcomp0_
int compsz0_
int nrcomp1_
int compsz1_
int nrcomp2_
int compsz2_
int sz0_
int sz1_
int sz2_
ObjectSet< Compartmentcompartments_
Threads::ConditionVar compartmentlock_
TypeSet< int > permutation_
const Array3D< T > & input_
 Not protected.
Array3D< T > & output_
Array3DImpl< bool > * isdefined_

Detailed Description

template<class T>
class Array3DFloodfill< T >

Given an input array and a threshold, we use flood fill to find all the locations with values less (or greater) than the threshold based on seeds. User has the option to set inside or outside value on the output.

Example: Given known array, threshold, T=float

Array3DImpl<float> output( array.info() ); Array3DFloodfill<float> floodfill( arr, threshold, max, output ); floodfill.setOutsideValue( 1e+5 );

floodfill.addSeed(0,0,0); At least one seed's value should be bigger than the threshold if max (or smaller if !max)

floodfill.execute();


Constructor & Destructor Documentation

template<class T >
Array3DFloodfill< T >::Array3DFloodfill ( const Array3D< T > &  input,
threshold,
bool  aboveisovalue,
Array3D< T > &  output 
) [inline]
template<class T >
Array3DFloodfill< T >::~Array3DFloodfill (  )  [inline]

Member Function Documentation

template<class T >
void Array3DFloodfill< T >::addSeed ( int  x0,
int  x1,
int  x2 
) [inline]
template<class T >
bool Array3DFloodfill< T >::doWork ( od_int64  start,
od_int64  stop,
int   
) [inline, protected]
template<class T >
int Array3DFloodfill< T >::getNextWorkCompartment (  )  [inline, protected]
template<class T >
int Array3DFloodfill< T >::getWorkCompartment ( int  x0,
int  x1,
int  x2 
) const [inline, protected]
template<class T >
bool Array3DFloodfill< T >::isAboveIsovalue (  )  const [inline]
template<class T >
int Array3DFloodfill< T >::maxNrThreads (  )  [inline]
template<class T >
od_int64 Array3DFloodfill< T >::nrIterations (  )  const [inline, virtual]

Implements ParallelTask.

template<class T >
void Array3DFloodfill< T >::returnCompartment ( int  comp  )  [inline, protected]
template<class T >
void Array3DFloodfill< T >::setInsideValue ( val  )  [inline]

If udf, input value will be used.

template<class T >
void Array3DFloodfill< T >::setOutput ( int  x0,
int  x1,
int  x2,
bool  addseed 
) [inline, protected]
template<class T >
void Array3DFloodfill< T >::setOutsideValue ( val  )  [inline]

If udf, uDf(T) will be set. Must be set if use Marchingcubes.

template<class T >
void Array3DFloodfill< T >::use6Neighbors ( bool  yn  )  [inline]
template<class T >
void Array3DFloodfill< T >::useInputValue ( bool  yn  )  [inline]

Member Data Documentation

template<class T >
bool Array3DFloodfill< T >::aboveisovalue_ [protected]
template<class T >
Threads::ConditionVar Array3DFloodfill< T >::compartmentlock_ [protected]

Protects the isused_ flags on the compartments.

template<class T >
ObjectSet<Compartment> Array3DFloodfill< T >::compartments_ [protected]
template<class T >
int Array3DFloodfill< T >::compsz0_ [protected]
template<class T >
int Array3DFloodfill< T >::compsz1_ [protected]
template<class T >
int Array3DFloodfill< T >::compsz2_ [protected]
template<class T >
const Array3D<T>& Array3DFloodfill< T >::input_ [protected]

Not protected.

template<class T >
T Array3DFloodfill< T >::insideval_ [protected]
template<class T >
Array3DImpl<bool>* Array3DFloodfill< T >::isdefined_ [protected]

The locks_ on the compartment protects 'its' part of the array.

template<class T >
int Array3DFloodfill< T >::nrcomp0_ [protected]
template<class T >
int Array3DFloodfill< T >::nrcomp1_ [protected]
template<class T >
int Array3DFloodfill< T >::nrcomp2_ [protected]
template<class T >
Array3D<T>& Array3DFloodfill< T >::output_ [protected]

The locks_ on the compartment protects 'its' part of the array.

template<class T >
T Array3DFloodfill< T >::outsideval_ [protected]
template<class T >
TypeSet<int> Array3DFloodfill< T >::permutation_ [protected]
template<class T >
int Array3DFloodfill< T >::sz0_ [protected]
template<class T >
int Array3DFloodfill< T >::sz1_ [protected]
template<class T >
int Array3DFloodfill< T >::sz2_ [protected]
template<class T >
T Array3DFloodfill< T >::threshold_ [protected]
template<class T >
int Array3DFloodfill< T >::use6neighbors_ [protected]
template<class T >
bool Array3DFloodfill< T >::useinputval_ [protected]