| OpendTect 8.0

Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Array3DFloodfill< T > Class Template Reference
Algo

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. More...

`#include <array3dfloodfill.h>`

Inheritance diagram for Array3DFloodfill< T >:
[legend]

## Classes
struct | Compartment

## Public Member Functions
| Array3DFloodfill (const Array3D< T > &input, T threshold, bool aboveisovalue, Array3D< T > &output)
| ~Array3DFloodfill ()
void | addSeed (int, int, int)
bool | isAboveIsovalue () const
int | maxNrThreads () const override
od_int64 | nrIterations () const override
void | setInsideValue (T val)
void | setOutsideValue (T val)
void | use6Neighbors (bool yn)
void | useInputValue (bool yn)
Public Member Functions inherited from ParallelTask
virtual | ~ParallelTask ()
void | doParallel (bool yn)
bool | execute () override
virtual bool | executeParallel (bool parallel)
od_int64 | nrDone () const override
| May be -1, i.e. class does not report nrdone.
od_int64 | totalNr () const override
Public Member Functions inherited from ReportingTask
| ReportingTask (const ReportingTask &)=delete
virtual | ~ReportingTask ()
void | getProgress (const ReportingTask &)
ReportingTask & | operator= (const ReportingTask &)=delete
void | setSimpleMeter (bool yn, int repperc)
int | simpleMeterStep () const
bool | useSimpleMeter () const
Public Member Functions inherited from Task
| Task (const Task &)=delete
virtual | ~Task ()
virtual void | controlWork (Control)
virtual void | enableWorkControl (bool=true)
| Must be called before execute()
virtual uiRetVal | errorWithDetails () const
virtual Control | getState () const
Task & | operator= (const Task &)=delete
virtual uiString | uiMessage () const
virtual uiString | uiNrDoneText () const
bool | workControlEnabled () const
Public Member Functions inherited from NamedCallBacker
| NamedCallBacker (const char *nm=nullptr)
| NamedCallBacker (const NamedCallBacker &)=delete
| ~NamedCallBacker ()
virtual Notifier< NamedCallBacker > & | objectToBeDeleted () const
NamedCallBacker & | operator= (const NamedCallBacker &)=delete
bool | operator== (const NamedCallBacker &oth) const
bool | operator== (const NamedObject &oth) const
Public Member Functions inherited from CallBacker
| CallBacker ()
| CallBacker (const CallBacker &)
virtual | ~CallBacker ()
bool | attachCB (const NotifierAccess &, const CallBack &, bool onlyifnew=false) const
bool | attachCB (const NotifierAccess *notif, const CallBack &cb, bool onlyifnew=false) const
void | detachAllNotifiers () const
| Call from the destructor of your inherited object.
void | detachCB (const NotifierAccess &, const CallBack &) const
void | detachCB (const NotifierAccess *notif, const CallBack &cb) const
virtual bool | isCapsule () const
bool | isNotifierAttached (const NotifierAccess *) const
| Only for debugging purposes, don't use.
CallBacker & | operator= (const CallBacker &)=delete
void | stopReceivingNotifications () const
virtual CallBacker * | trueCaller ()
Public Member Functions inherited from NamedObject
| NamedObject (const char *nm=nullptr)
| NamedObject (const NamedObject &oth)
virtual | ~NamedObject ()
virtual BufferString | getName () const
bool | getNameFromPar (const IOPar &)
const name_type & | name () const override
NamedObject & | operator= (const NamedObject &)
bool | operator== (const NamedObject &oth) const
virtual void | setName (const char *nm)
Public Member Functions inherited from ObjectWithName
virtual | ~ObjectWithName ()
bool | hasName (const char *nm) const
bool | hasName (const name_type &nm) const
void | putNameInPar (IOPar &) const

## Protected Member Functions
bool | doWork (od_int64 start, od_int64 stop, int) override
int | getNextWorkCompartment ()
int | getWorkCompartment (int, int, int) const
void | returnCompartment (int)
void | setOutput (int, int, int, bool addseed)
Protected Member Functions inherited from ParallelTask
| ParallelTask (const char *nm=0)
void | addToNrDone (od_int64 increment)
od_int64 | calculateThreadSize (od_int64 totalnr, int nrthreads, int thread) const
virtual int | minThreadSize () const
void | quickAddToNrDone (od_int64 loopidx)
void | resetNrDone ()
virtual bool | stopAllOnFailure () const
Protected Member Functions inherited from ReportingTask
| ReportingTask (const char *nm=nullptr)
void | incrementProgress ()
ProgressMeter * | progressMeter () const
void | reportProgressFinished ()
void | reportProgressStarted ()
void | resetProgress ()
void | setProgressMeter (ProgressMeter *) override
| Must be called before execute()
void | updateProgressMeter (bool forced=false, od_int64 *totalnr=0)
void | updateReportedName ()
Protected Member Functions inherited from Task
| Task (const char *nm=nullptr)
virtual bool | shouldContinue ()
Protected Member Functions inherited from NamedCallBacker
void | sendDelNotif () const

## Protected Attributes
bool | aboveisovalue_
Threads::ConditionVar | compartmentlock_
ObjectSet< Compartment > | compartments_
int | compsz0_
int | compsz1_
int | compsz2_
const Array3D< T > & | input_
| Not protected.
T | insideval_
Array3DImpl< bool > * | isdefined_
int | nrcomp0_
int | nrcomp1_
int | nrcomp2_
Array3D< T > & | output_
T | outsideval_
TypeSet< int > | permutation_
int | sz0_
int | sz1_
int | sz2_
T | threshold_
int | use6neighbors_
bool | useinputval_
Protected Attributes inherited from Task
Control | control_ = Task::Run
Threads::ConditionVar * | workcontrolcondvar_ = nullptr
Protected Attributes inherited from NamedCallBacker
Threads::Atomic< bool > | delalreadytriggered_
Notifier< NamedCallBacker > | delnotif_
Protected Attributes inherited from NamedObject
BufferString | name_

## Additional Inherited Members
Public Types inherited from Task
enum | Control { Run , Pause , Stop }
Public Types inherited from ObjectWithName
typedef OD::String | name_type
Static Public Member Functions inherited from ParallelTask
static uiString | sPosFinished ()
static uiString | sTrcFinished ()
Static Public Member Functions inherited from ReportingTask
static PtrMan< ProgressMeter > | getTextProgressMeter (od_ostream &, const IOPar *iop=nullptr)
static bool | needSimpleLogging (const IOPar &)
static const char * | sKeySimpleLogging ()
static const char * | sKeySimpleLoggingStep ()
Static Public Member Functions inherited from Task
static uiString | uiStdNrDoneText ()
Static Public Member Functions inherited from CallBacker
static void | createReceiverForCurrentThread ()
static void | removeReceiverForCurrentThread ()
Public Attributes inherited from ReportingTask
Notifier< ReportingTask > | progressUpdated

## 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

## ◆ Array3DFloodfill()

template<class T >

Array3DFloodfill< T >::Array3DFloodfill | ( | const Array3D< T > & | input,
|  | T | threshold,
|  | bool | aboveisovalue,
|  | Array3D< T > & | output )
| inline

## ◆ ~Array3DFloodfill()

template<class T >

Array3DFloodfill< T >::~Array3DFloodfill | ( |  | ) |
| inline

## Member Function Documentation

## ◆ addSeed()

template<class T >

void Array3DFloodfill< T >::addSeed | ( | int | x0,
|  | int | x1,
|  | int | x2 )
| inline

## ◆ doWork()

template<class T >

bool Array3DFloodfill< T >::doWork | ( | od_int64 | start,
|  | od_int64 | stop,
|  | int | threadidx )
| inline override protected virtual

The functions that does the job. The function will be called with all intervals from 0 to ParallelTask::nrIterations()-1. The function must be designed to be able to run in parallel.

Parameters

  start | first index
  stop | last index
  threadidx | gives an identifier (between 0 and nr of threads -1) that is unique to each call to doWork.

Implements ParallelTask.

## ◆ getNextWorkCompartment()

template<class T >

int Array3DFloodfill< T >::getNextWorkCompartment | ( |  | ) |
| inline protected

## ◆ getWorkCompartment()

template<class T >

int Array3DFloodfill< T >::getWorkCompartment | ( | int | x0,
|  | int | x1,
|  | int | x2 ) const
| inline protected

## ◆ isAboveIsovalue()

template<class T >

bool Array3DFloodfill< T >::isAboveIsovalue | ( |  | ) | const
| inline

## ◆ maxNrThreads()

template<class T >

int Array3DFloodfill< T >::maxNrThreads | ( |  | ) | const
| inline override virtual

Reimplemented from ParallelTask.

## ◆ nrIterations()

template<class T >

od_int64 Array3DFloodfill< T >::nrIterations | ( |  | ) | const
| inline override virtual

Returns
  the number of times the process should be run.

Implements ParallelTask.

## ◆ returnCompartment()

template<class T >

void Array3DFloodfill< T >::returnCompartment | ( | int | comp | ) |
| inline protected

## ◆ setInsideValue()

template<class T >

void Array3DFloodfill< T >::setInsideValue | ( | T | val | ) |
| inline

If udf, input value will be used.

## ◆ setOutput()

template<class T >

void Array3DFloodfill< T >::setOutput | ( | int | x0,
|  | int | x1,
|  | int | x2,
|  | bool | addseed )
| inline protected

## ◆ setOutsideValue()

template<class T >

void Array3DFloodfill< T >::setOutsideValue | ( | T | val | ) |
| inline

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

## ◆ use6Neighbors()

template<class T >

void Array3DFloodfill< T >::use6Neighbors | ( | bool | yn | ) |
| inline

## ◆ useInputValue()

template<class T >

void Array3DFloodfill< T >::useInputValue | ( | bool | yn | ) |
| inline

## Member Data Documentation

## ◆ aboveisovalue_

template<class T >

bool Array3DFloodfill< T >::aboveisovalue_
| protected

## ◆ compartmentlock_

template<class T >

Threads::ConditionVar Array3DFloodfill< T >::compartmentlock_
| protected

Protects the isused_ flags on the compartments.

## ◆ compartments_

template<class T >

ObjectSet<Compartment> Array3DFloodfill< T >::compartments_
| protected

## ◆ compsz0_

template<class T >

int Array3DFloodfill< T >::compsz0_
| protected

## ◆ compsz1_

template<class T >

int Array3DFloodfill< T >::compsz1_
| protected

## ◆ compsz2_

template<class T >

int Array3DFloodfill< T >::compsz2_
| protected

## ◆ input_

template<class T >

const Array3D<T>& Array3DFloodfill< T >::input_
| protected

Not protected.

## ◆ insideval_

template<class T >

T Array3DFloodfill< T >::insideval_
| protected

## ◆ isdefined_

template<class T >

Array3DImpl<bool>* Array3DFloodfill< T >::isdefined_
| protected

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

## ◆ nrcomp0_

template<class T >

int Array3DFloodfill< T >::nrcomp0_
| protected

## ◆ nrcomp1_

template<class T >

int Array3DFloodfill< T >::nrcomp1_
| protected

## ◆ nrcomp2_

template<class T >

int Array3DFloodfill< T >::nrcomp2_
| protected

## ◆ output_

template<class T >

Array3D<T>& Array3DFloodfill< T >::output_
| protected

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

## ◆ outsideval_

template<class T >

T Array3DFloodfill< T >::outsideval_
| protected

## ◆ permutation_

template<class T >

TypeSet<int> Array3DFloodfill< T >::permutation_
| protected

## ◆ sz0_

template<class T >

int Array3DFloodfill< T >::sz0_
| protected

## ◆ sz1_

template<class T >

int Array3DFloodfill< T >::sz1_
| protected

## ◆ sz2_

template<class T >

int Array3DFloodfill< T >::sz2_
| protected

## ◆ threshold_

template<class T >

T Array3DFloodfill< T >::threshold_
| protected

## ◆ use6neighbors_

template<class T >

int Array3DFloodfill< T >::use6neighbors_
| protected

## ◆ useinputval_

template<class T >

bool Array3DFloodfill< T >::useinputval_
| protected

Generated at
for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2025