OpendTect  6.6
expdiscfilter.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*@+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Kristofer Tingdahl
8  Date: 07-10-1999
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 DiscFilter radius= planefilter=true [constantvel=true] [velocity=] [fast=]
13 
14 Discfilter places a disc with the "radius" along the dip specified on the
15 input. The filter extracts samples along the disc and derives statistical
16 properties from it. If planefilter is enabled, the filter will go the all
17 traces within the radius. If planefilter is turned off, it will cut out a
18 disc through the data regardless of which trace it might be. At high
19 dips, it might equally well take many samples from the same trace.
20 This option makes it neccecary to convert the time-domain to distance, and
21 this is what the velocity is for. Velocity can either be stated on commandline
22 or be given for each sample. The 'fast' option is use when planefilter is
23 turned off and specifies wether the filter should snap each sample to the
24 closest trace, or do an interpolation between the traces.
25 
26 Input:
27 0 Data
28 1 Inline Dip
29 2 Crossline Dip
30 3 Velocity (only if not stated on command-line)
31 
32 Outputs:
33 0 Mean
34 1 Median
35 2 Stddev
36 3 Variance
37 4 Min
38 5 Max
39 6 Most Frequent
40 
41 
42 @$*/
43 
44 #include <attribcalc.h>
45 #include <task.h>
46 #include <position.h>
47 #include <limits.h>
48 #include <seistrc.h>
49 #include <arrayndimpl.h>
50 #include <runstat.h>
51 #include <attribparamimpl.h>
52 
53 #define mDiscFilterAvg 0
54 #define mDiscFilterMed 1
55 #define mDiscFilterStdDev 2
56 #define mDiscFilterVar 3
57 #define mDiscFilterMin 4
58 #define mDiscFilterMax 5
59 #define mDiscFilterMostFreq 6
60 
61 #define mDiscFilterNrVals 7
62 
63 
64 mClass(AttribExp) DiscFilterAttrib : public AttribCalc
65 {
66 public:
68  , "DiscFilter"
69  , IntAttribParameter
70  , radius
71  , IntAttribParameter( "radius"
73  , 3
74  , Interval<int>(0,100)
75  )
76  , BoolAttribParameter
77  , planefilter
78  , BoolAttribParameter( "planefilter"
80  , false
81  )
82  , BoolAttribParameter
83  , constantvel
84  , BoolAttribParameter( "constantvel"
86  , true
87  )
88  , FloatAttribParameter
89  , velocity
90  , FloatAttribParameter( "velocity"
92  , 4000
93  , Interval<float>(0,mUndefValue)
94  )
95  , BoolAttribParameter
96  , fast
97  , BoolAttribParameter( "fast"
99  , true
100  )
101  , mAttribParamFormHasUpdate);
102 
103  DiscFilterAttrib( Parameters* );
105 
106  bool init();
107 
108  int nrAttribs() const { return mDiscFilterNrVals ; }
109  const char* attribName(int val) const
110  {
111  switch (val)
112  {
113  case mDiscFilterAvg: return "Average";
114  case mDiscFilterMed: return "Median";
115  case mDiscFilterStdDev: return "StdDev";
116  case mDiscFilterVar: return "Variance";
117  case mDiscFilterMin: return "Min";
118  case mDiscFilterMax: return "Max";
119  case mDiscFilterMostFreq:return "MostFreq";
120  }
121 
122  return 0;
123  }
124 
126 
127  const BinID* reqStepout(int inp, int) const
128  { return inp ? 0 : &stepout; }
129  const Interval<int>* reqExtraSamples(int inp, int) const
130  { return inp ? 0 : &sg; }
131 
132  const Interval<float>* inlDipMargin(int,int) const { return 0; }
133  const Interval<float>* crlDipMargin(int,int) const { return 0; }
134 
135  Seis::DataType dataType(int val, int) const;
136 
137  const char* definitionStr() const { return desc; }
138  void setCommonInfo( const AttribProcessCommonInfo& ni )
139  { common = &ni; }
140 
141 protected:
142 
146 
147  float inldist;
148  float crldist;
149 
150  int radius;
151  float velocity;
153  bool fast;
154  const AttribProcessCommonInfo* common;
155 
156  mClass(AttribExp) Task : public AttribCalc::Task
157  {
158  public:
160  {
161  public:
162  Input( const DiscFilterAttrib& calculator_ )
163  : calculator ( calculator_ )
164  , inldiptrc( 0 )
165  , crldiptrc( 0 )
166  , veltrc( 0 )
167  , trcs( 0 ) {}
168 
169  bool set( const BinID&,
171  const TypeSet<int>&,
172  const TypeSet<float*>& );
173 
175  { return new DiscFilterAttrib::Task::Input(*this); }
176 
178  const SeisTrc* veltrc;
181 
186 
188  };
189 
190  Task( const DiscFilterAttrib& calculator_ )
191  : avg( 0 )
192  , med( 0 )
193  , stddev( 0 )
194  , variance( 0 )
195  , min( 0 )
196  , max( 0 )
197  , mostfreq( 0 )
198  , indata( 0,0,0 )
199  , calculator( calculator_ ) {}
200 
201  Task( const Task& );
202  // Not impl. Only to give error if someone uses it
203 
204  void set( float , int , float ,
205  const AttribCalc::Task::Input* ,
206  const TypeSet<float*>& );
207 
208  AttribCalc::Task* clone() const;
209 
210  int getFastestSz() const { return 25; }
211 
212  int nextStep();
213 
215  { return new DiscFilterAttrib::Task::Input( calculator ); }
216 
217  protected:
218  float* avg;
219  float* med;
220  float* stddev;
221  float* variance;
222  float* min;
223  float* max;
224  float* mostfreq;
225 
227  RunningStatistics<float> stat;
228 
230  };
231 
234 };
235 
DiscFilterAttrib::definitionStr
const char * definitionStr() const
Definition: expdiscfilter.h:137
DiscFilterAttrib::Task::Input::inldiptrc
const SeisTrc * inldiptrc
Definition: expdiscfilter.h:179
sKey::Input
FixedString Input()
Definition: keystrs.h:81
DiscFilterAttrib
Definition: expdiscfilter.h:65
DiscFilterAttrib::Task::getInput
AttribCalc::Task::Input * getInput() const
Definition: expdiscfilter.h:214
DiscFilterAttrib::init
bool init()
mDiscFilterVar
#define mDiscFilterVar
Definition: expdiscfilter.h:56
task.h
DiscFilterAttrib::Task::max
float * max
Definition: expdiscfilter.h:223
mDiscFilterMin
#define mDiscFilterMin
Definition: expdiscfilter.h:57
DipViewAttrib::desc
BufferString desc
Definition: expdipview.h:66
DiscFilterAttrib::Task::variance
float * variance
Definition: expdiscfilter.h:221
DiscFilterAttrib::Task::set
void set(float, int, float, const AttribCalc::Task::Input *, const TypeSet< float * > &)
DiscFilterAttrib::mAttrib5Param
mAttrib5Param(DiscFilterAttrib, "DiscFilter", IntAttribParameter, radius, IntAttribParameter("radius", AttribParameter::Required, 3, Interval< int >(0, 100)), BoolAttribParameter, planefilter, BoolAttribParameter("planefilter", AttribParameter::Default, false), BoolAttribParameter, constantvel, BoolAttribParameter("constantvel", AttribParameter::Default, true), FloatAttribParameter, velocity, FloatAttribParameter("velocity", AttribParameter::Required, 4000, Interval< float >(0, mUndefValue)), BoolAttribParameter, fast, BoolAttribParameter("fast", AttribParameter::Default, true), mAttribParamFormHasUpdate)
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
Seis::DataType
DataType
Definition: seistype.h:53
mDiscFilterMed
#define mDiscFilterMed
Definition: expdiscfilter.h:54
DiscFilterAttrib::stepout
BinID stepout
Definition: expdiscfilter.h:145
DiscFilterAttrib::Task::Task
Task(const DiscFilterAttrib &calculator_)
Definition: expdiscfilter.h:190
SeisTrc
Seismic trace.
Definition: seistrc.h:34
DiscFilterAttrib::~DiscFilterAttrib
~DiscFilterAttrib()
DiscFilterAttrib::radius
int radius
Definition: expdiscfilter.h:150
Array3DImpl< float >
mDiscFilterNrVals
#define mDiscFilterNrVals
Definition: expdiscfilter.h:61
DiscFilterAttrib::Task::Input::inldipattrib
int inldipattrib
Definition: expdiscfilter.h:184
DiscFilterAttrib::attribName
const char * attribName(int val) const
Definition: expdiscfilter.h:109
DiscFilterAttrib::reqExtraSamples
const Interval< int > * reqExtraSamples(int inp, int) const
Definition: expdiscfilter.h:129
arrayndimpl.h
DiscFilterAttrib::Task::Input::calculator
const DiscFilterAttrib & calculator
Definition: expdiscfilter.h:187
mDiscFilterMax
#define mDiscFilterMax
Definition: expdiscfilter.h:58
DipViewAttrib::Task::Input::calculator
const DipViewAttrib & calculator
Definition: expdipview.h:91
DiscFilterAttrib::Task::Input::crldipattrib
int crldipattrib
Definition: expdiscfilter.h:185
DiscFilterAttrib::Task::clone
AttribCalc::Task * clone() const
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
DiscFilterAttrib::inlDipMargin
const Interval< float > * inlDipMargin(int, int) const
Definition: expdiscfilter.h:132
DiscFilterAttrib::sg
Interval< int > sg
Definition: expdiscfilter.h:144
mDiscFilterAvg
#define mDiscFilterAvg
Definition: expdiscfilter.h:53
DiscFilterAttrib::Task::stddev
float * stddev
Definition: expdiscfilter.h:220
DiscFilterAttrib::Task::Input::veltrc
const SeisTrc * veltrc
Definition: expdiscfilter.h:178
DiscFilterAttrib::velocity
float velocity
Definition: expdiscfilter.h:151
DiscFilterAttrib::Task::Task
Task(const Task &)
DiscFilterAttrib::Task::Input::dataattrib
int dataattrib
Definition: expdiscfilter.h:182
mClass
#define mClass(module)
Definition: commondefs.h:181
DiscFilterAttrib::Task::nextStep
int nextStep()
DiscFilterAttrib::fast
bool fast
Definition: expdiscfilter.h:153
DiscFilterAttrib::Task::calculator
const DiscFilterAttrib & calculator
Definition: expdiscfilter.h:229
DiscFilterAttrib::desc
BufferString desc
Definition: expdiscfilter.h:143
mDiscFilterStdDev
#define mDiscFilterStdDev
Definition: expdiscfilter.h:55
DiscFilterAttrib::Task::Input::clone
AttribCalc::Task::Input * clone() const
Definition: expdiscfilter.h:174
DiscFilterAttrib::crlDipMargin
const Interval< float > * crlDipMargin(int, int) const
Definition: expdiscfilter.h:133
DiscFilterAttrib::Task::Input::velattrib
int velattrib
Definition: expdiscfilter.h:183
DiscFilterAttrib::Task
Definition: expdiscfilter.h:157
DiscFilterAttrib::reqStepout
const BinID * reqStepout(int inp, int) const
Definition: expdiscfilter.h:127
position.h
DipViewAttrib::Task::Task
Task(const DipViewAttrib &calculator_)
Definition: expdipview.h:94
DiscFilterAttrib::Task::Input::crldiptrc
const SeisTrc * crldiptrc
Definition: expdiscfilter.h:180
DiscFilterAttrib::dataType
Seis::DataType dataType(int, const TypeSet< Seis::DataType > &) const
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
DiscFilterAttrib::Task::med
float * med
Definition: expdiscfilter.h:219
mDiscFilterMostFreq
#define mDiscFilterMostFreq
Definition: expdiscfilter.h:59
Array2DImpl< const SeisTrc * >
seistrc.h
DiscFilterAttrib::crldist
float crldist
Definition: expdiscfilter.h:148
variance
float variance(const X &x, int sz)
Definition: simpnumer.h:287
DiscFilterAttrib::Task::avg
float * avg
Definition: expdiscfilter.h:218
DiscFilterAttrib::Task::Input
Definition: expdiscfilter.h:160
DiscFilterAttrib::Task::getFastestSz
int getFastestSz() const
Definition: expdiscfilter.h:210
DiscFilterAttrib::dataType
Seis::DataType dataType(int val, int) const
DiscFilterAttrib::DiscFilterAttrib
DiscFilterAttrib(Parameters *)
DiscFilterAttrib::inldist
float inldist
Definition: expdiscfilter.h:147
DiscFilterAttrib::Task::Input::trcs
Array2DImpl< const SeisTrc * > * trcs
Definition: expdiscfilter.h:177
DiscFilterAttrib::Task::Input::Input
Input(const DiscFilterAttrib &calculator_)
Definition: expdiscfilter.h:162
DiscFilterAttrib::Task::Input::set
bool set(const BinID &, const ObjectSet< AttribProvider > &, const TypeSet< int > &, const TypeSet< float * > &)
DiscFilterAttrib::setCommonInfo
void setCommonInfo(const AttribProcessCommonInfo &ni)
Definition: expdiscfilter.h:138
Table::Required
@ Required
Definition: tabledef.h:27
DiscFilterAttrib::nrAttribs
int nrAttribs() const
Definition: expdiscfilter.h:108
Interval< int >
sKey::Default
FixedString Default()
Definition: keystrs.h:59
DiscFilterAttrib::Task::mostfreq
float * mostfreq
Definition: expdiscfilter.h:224
DiscFilterAttrib::Task::stat
RunningStatistics< float > stat
Definition: expdiscfilter.h:227
DiscFilterAttrib::constantvel
bool constantvel
Definition: expdiscfilter.h:152
DiscFilterAttrib::common
const AttribProcessCommonInfo * common
Definition: expdiscfilter.h:154
DiscFilterAttrib::Task::indata
Array3DImpl< float > indata
Definition: expdiscfilter.h:226
TypeSet< Seis::DataType >
DiscFilterAttrib::Task::min
float * min
Definition: expdiscfilter.h:222

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