OpendTect  6.6
dippca.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: Bo Zhang/Y.Liu
8  Date: June 2012
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "algomod.h"
16 #include "algomod.h"
17 #include "enums.h"
18 #include "factory.h"
19 #include "odmemory.h"
20 
21 template <class T> class Array2D;
22 template <class T> class Array3D;
23 
24 class Dip2DCalculator;
25 class Dip3DCalculator;
26 class TaskRunner;
27 
28 
40 {
41 public:
42 
43  virtual ~DipPCA() {}
44 
45  mStruct(Algo) Setup
46  { Setup();
47  Setup& operator=(const Setup&);
48 
49  float threshold_;
50  bool isabove_; //Flt value is above threshold or not
51  int boxlength_;
52  int boxwidth_;
53  int boxheight_;
54  StepInterval<int> thetarg_; //dip angle in positive degree
55  StepInterval<int> alpharg_; //azimuth angle in positive degree
56  };
57 
58  void setSetup(Setup nsetup) { setup_ = nsetup; }
59  virtual bool compute(TaskRunner* tr=0) { return true; }
60 
61 protected:
62 
64 };
65 
66 
71 mExpClass(Algo) Dip2D : public DipPCA
72 {
73 public:
74  Dip2D(const Array2D<float>& input,
75  float xdist,float ydist);
76  ~Dip2D();
77 
78  bool compute(TaskRunner* tr=0);
79 
80  enum Output { Dip=0, Dilation=1, Thinning=2 };
81  const Array2D<float>* get(Output) const;
82 
83 protected:
84 
85  friend class Dip2DCalculator;
86  bool fillGap();
87 
88 
90 
91  Array2D<float>* dip_; //The fault dip
93  //The fault dip after perform dilation to dip
95  //The fault dip after thining to dilation
96 
97  const int xsz_;
98  const int ysz_;
99  const float xdist_;
100  const float ydist_;
101 };
102 
103 
108 mExpClass(Algo) Dip3D : public DipPCA
109 {
110 public:
111  Dip3D(const Array3D<float>& input,
112  float xdist,float ydist,float zdist);
114 
115  bool compute(TaskRunner* tr=0);
116 
117  enum Output { AbsDip=0, InlDip=1, CrlDip=2, Azimuth=3 };
118  const Array3D<float>* get(Output) const;
119 
120 protected:
121 
122  friend class Dip3DCalculator;
124 
129 
130  const int xsz_;
131  const int ysz_;
132  const int zsz_;
133  const float xdist_;
134  const float ydist_;
135  const float zdist_;
136 };
137 
Seis::Dip
@ Dip
Definition: seistype.h:53
Dip2D::xdist_
const float xdist_
Definition: dippca.h:99
Dip3D::compute
bool compute(TaskRunner *tr=0)
Dip3D::get
const Array3D< float > * get(Output) const
factory.h
odmemory.h
Dip2D::fillGap
bool fillGap()
Dip3D::input_
const Array3D< float > & input_
Definition: dippca.h:123
Dip2D::xsz_
const int xsz_
Definition: dippca.h:97
Dip2D::input_
const Array2D< float > & input_
Definition: dippca.h:89
Dip2D::Output
Output
Definition: dippca.h:80
Dip3D::ysz_
const int ysz_
Definition: dippca.h:131
Dip3D::zsz_
const int zsz_
Definition: dippca.h:132
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Seis::Azimuth
@ Azimuth
Definition: seistype.h:54
sKey::Setup
FixedString Setup()
Definition: keystrs.h:139
Dip2D::dip_
Array2D< float > * dip_
Definition: dippca.h:91
Dip3D::Dip3D
Dip3D(const Array3D< float > &input, float xdist, float ydist, float zdist)
Dip3D::~Dip3D
~Dip3D()
Dip3D::xdist_
const float xdist_
Definition: dippca.h:133
Dip3D::ydist_
const float ydist_
Definition: dippca.h:134
Array3D
Array3D ( Subclass of ArrayND ) is a three dimensional array.
Definition: arraynd.h:162
StepInterval< int >
DipPCA::setup_
Setup setup_
Definition: dippca.h:63
Dip2D
To calculate Dip/Azimuth for 2D datasets using the method of PCA.
Definition: dippca.h:72
Dip2D::~Dip2D
~Dip2D()
Dip3D::zdist_
const float zdist_
Definition: dippca.h:135
mStruct
#define mStruct(module)
Definition: commondefs.h:182
DipPCA::~DipPCA
virtual ~DipPCA()
Definition: dippca.h:43
Dip2D::compute
bool compute(TaskRunner *tr=0)
Setup
Definition: ceemdalgo.h:161
Dip3D::absdip_
Array3D< float > * absdip_
Definition: dippca.h:125
TaskRunner
Class that can execute a task.
Definition: task.h:170
Dip2D::dilation_
Array2D< float > * dilation_
Definition: dippca.h:92
Dip2D::ydist_
const float ydist_
Definition: dippca.h:100
Dip2D::dthinner_
Array2D< float > * dthinner_
Definition: dippca.h:94
Dip3D::crldip_
Array3D< float > * crldip_
Definition: dippca.h:127
DipPCA::compute
virtual bool compute(TaskRunner *tr=0)
Definition: dippca.h:59
Dip3D::inldip_
Array3D< float > * inldip_
Definition: dippca.h:126
enums.h
Dip2D::get
const Array2D< float > * get(Output) const
Dip2D::ysz_
const int ysz_
Definition: dippca.h:98
DipPCA
Base class to calculate Dip/Azimuth using the method of PCA.
Definition: dippca.h:40
DipPCA::setSetup
void setSetup(Setup nsetup)
Definition: dippca.h:58
Dip3D::azimuth_
Array3D< float > * azimuth_
Definition: dippca.h:128
Dip3D::xsz_
const int xsz_
Definition: dippca.h:130
Array2D
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:140
Dip3D::Output
Output
Definition: dippca.h:117
Dip2D::Dip2D
Dip2D(const Array2D< float > &input, float xdist, float ydist)
Dip3D
To calculate Dip/Azimuth for 3D datasets using the method of PCA.
Definition: dippca.h:109

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