OpendTect  6.6
GLCM_attrib.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3  * (C) JOANNEUM RESEARCH; http://www.joanneum.at
4  * AUTHOR : Christoph Eichkitz; http://www.joanneum.at/resources/gph/
5  mitarbeiterinnen/mitarbeiter-detailansicht/person/0/3144/eichkitz.html
6  * DATE : November 2013
7 -*/
8 
9 #include "attribprovider.h"
10 #include "arraynd.h"
11 #include "glcmmod.h"
12 
13 #include <utility>
14 
15 namespace Attrib
16 {
17 
20 public:
21  static void initClass();
22  explicit GLCM_attrib(Desc&);
23  static const char* attribName() { return "GLCM"; }
24  static const char* gateStr() { return "gate"; }
25  static const char* numbergreyStr() { return "greylevels"; }
26  static const char* attributeStr() { return "attribute"; }
27  static const char* stepoutStr() { return "stepout"; }
28  static const char* directionStr() { return "direction"; }
29  static const char* minlimitStr() { return "minlimit"; }
30  static const char* maxlimitStr() { return "maxlimit"; }
31  static const char* sampStr() { return "samples"; }
32  static const char* steeringStr() { return "steering"; }
33  static const char* attribTypeStr(int);
34  static const char* directTypeStr(int);
35  void initSteering() { stdPrepSteering(stepout_); }
36 
37 protected:
40  static void updateDesc(Desc&);
41  static void updateDefaults(Desc&);
42 
44  { return true; }
45 
46  bool getInputOutput(int input,TypeSet<int>&) const;
47  bool getInputData(const BinID&,int zintv);
48  bool computeData(const DataHolder&,
49  const BinID& relpos,int z0,
50  int nrsamples, int threadid) const;
51 
52  const BinID* desStepout(int,int) const;
53  const BinID* reqStepout(int input, int output) const;
54 
55  const Interval<float>* reqZMargin( int input, int output ) const;
56  const Interval<float>* desZMargin( int input, int output ) const;
57  const Interval<int>* desZSampMargin( int input, int output ) const;
58 
59 private:
63  int samples_;
64  float minlimit_;
65  float maxlimit_;
67  bool dosteer_;
69 
73 
76  int dataidx_;
77 
78  struct Node
79  {
80  int nodeI;
81  int nodeJ;
84  };
85 
87 
88 
90  {
94  };
95 
97 
98  int computeGreyLevel(float) const;
99  std::pair<double, double> computeMu(Node* LinkedList,
100  int elements) const;
101  std::pair<double, double> computeSigma(Node* LinkedList,
102  int elements,double MuX,
103  double MuY) const;
104  double computeMean(Node* LinkedList,
105  int elements) const;
106  double computeMuXminusY(Node* LinkedList,
107  int elements) const;
108  double computeMXplusY(Node* LinkedList,
109  int elements,int N) const;
110  double computeMXminusY(Node* LinkedList,
111  int elements, int N) const;
112  double computeMxI(Node* LinkedList,
113  int elements,int i) const;
114  double computeMyJ(Node* LinkedList,
115  int elements,int j) const;
116  double computeHXY1(Node* LinkedList,
117  int elements) const;
118  double computeHXY2(Node* LinkedList,
119  int elements) const;
120  double computeHX(Node* LinkedList,int elements) const;
121  double computeHY(Node* LinkedList,int elements) const;
122  double computeEnergy(Node* head,int elements) const;
123  double computeContrast(Node* LinkedList,
124  int elements) const;
125  double computeCorrelation(Node* LinkedList,
126  int elements) const;
127  double computeVariance(Node* LinkedList,
128  int elements) const;
130  Node* LinkedList,
131  int elements) const;
132  double computeSumAverage(Node* LinkedList,
133  int elements) const;
134  double computeSumVariance(Node* LinkedList,
135  int elements) const;
136  double computeSumEntropy(Node* LinkedList,
137  int elements) const;
138  double computeEntropy(Node* LinkedList,
139  int elements) const;
140  double computeDifferenceVariance(Node* LinkedList,
141  int elements) const;
143  Node* LinkedList,
144  int elements) const;
145  double computeF12(Node* LinkedList,int elements) const;
146  double computeF13(Node* LinkedList,int elements) const;
147  double computeHomogeneity(Node* LinkedList,
148  int elements) const;
149  double computeSumMean(Node* LinkedList,
150  int elements) const;
151  double computeMaximumProbability(Node* LinkedList,
152  int elements) const;
153  double computeClusterTendency(Node* LinkedList,
154  int elements) const;
155  double computeClusterShade(Node* LinkedList,
156  int elements) const;
157  double computeClusterProminence(Node* LinkedList,
158  int elements) const;
159  double computeDissimilarity(Node* LinkedList,
160  int elements) const;
161  double computeDifferenceMean(Node* LinkedList,
162  int elements) const;
163  double computeAutocorrelation(Node* LinkedList,
164  int elements) const;
165  double computeInertia(Node* LinkedList,
166  int elements) const;
167 
168 };
169 
170 };
171 
Attrib::GLCM_attrib::sampStr
static const char * sampStr()
Definition: GLCM_attrib.h:31
Attrib::GLCM_attrib::computeMXminusY
double computeMXminusY(Node *LinkedList, int elements, int N) const
Attrib::GLCM_attrib::initClass
static void initClass()
Attrib::GLCM_attrib::sampgate_
Interval< int > sampgate_
Definition: GLCM_attrib.h:70
Attrib::GLCM_attrib::computeMean
double computeMean(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::maxlimit_
float maxlimit_
Definition: GLCM_attrib.h:65
Attrib::GLCM_attrib::reqStepout
const BinID * reqStepout(int input, int output) const
Attrib::GLCM_attrib::directionStr
static const char * directionStr()
Definition: GLCM_attrib.h:28
Attrib::GLCM_attrib::dosteer_
bool dosteer_
Definition: GLCM_attrib.h:67
Attrib::Provider
Provides the actual output to ...
Definition: attribprovider.h:44
Attrib::GLCM_attrib::computeInertia
double computeInertia(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::PosAndSteeridx::positions_
TypeSet< BinID > positions_
Definition: GLCM_attrib.h:92
Attrib::GLCM_attrib::direction_
int direction_
Definition: GLCM_attrib.h:62
Attrib::GLCM_attrib
Definition: GLCM_attrib.h:19
Attrib::GLCM_attrib::computeSumAverage
double computeSumAverage(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeSigma
std::pair< double, double > computeSigma(Node *LinkedList, int elements, double MuX, double MuY) const
Attrib::GLCM_attrib::computeMaximumProbability
double computeMaximumProbability(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::Node::numbercoocurrence
int numbercoocurrence
Definition: GLCM_attrib.h:82
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
Attrib::GLCM_attrib::computeCorrelation
double computeCorrelation(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::desgate_
Interval< float > desgate_
Definition: GLCM_attrib.h:72
Attrib::GLCM_attrib::attribute_
int attribute_
Definition: GLCM_attrib.h:60
Attrib::GLCM_attrib::GLCM_attrib
GLCM_attrib(Desc &)
Attrib::GLCM_attrib::computeContrast
double computeContrast(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::Node::nodeI
int nodeI
Definition: GLCM_attrib.h:80
Attrib::GLCM_attrib::inpdata_
ObjectSet< const DataHolder > inpdata_
Definition: GLCM_attrib.h:74
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Attrib::GLCM_attrib::attributeStr
static const char * attributeStr()
Definition: GLCM_attrib.h:26
Attrib::GLCM_attrib::computeDissimilarity
double computeDissimilarity(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::desZMargin
const Interval< float > * desZMargin(int input, int output) const
Attrib::GLCM_attrib::reqZMargin
const Interval< float > * reqZMargin(int input, int output) const
Attrib::DataHolder
Holds the attribute data.
Definition: attribdataholder.h:43
Attrib::GLCM_attrib::computeDifferenceMean
double computeDifferenceMean(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeEntropy
double computeEntropy(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::minlimit_
float minlimit_
Definition: GLCM_attrib.h:64
Attrib::GLCM_attrib::usegreylevels_
int usegreylevels_
Definition: GLCM_attrib.h:61
Attrib::GLCM_attrib::createInstance
static Provider * createInstance(Desc &)
Attrib::GLCM_attrib::computeClusterShade
double computeClusterShade(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeVariance
double computeVariance(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::~GLCM_attrib
~GLCM_attrib()
Definition: GLCM_attrib.h:38
Attrib::GLCM_attrib::posandsteeridx_
PosAndSteeridx posandsteeridx_
Definition: GLCM_attrib.h:96
Attrib::GLCM_attrib::numbergreyStr
static const char * numbergreyStr()
Definition: GLCM_attrib.h:25
Attrib::GLCM_attrib::computeAutocorrelation
double computeAutocorrelation(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::directTypeStr
static const char * directTypeStr(int)
Attrib::GLCM_attrib::computeData
bool computeData(const DataHolder &, const BinID &relpos, int z0, int nrsamples, int threadid) const
Attrib::GLCM_attrib::computeSumEntropy
double computeSumEntropy(Node *LinkedList, int elements) const
arraynd.h
Attrib::GLCM_attrib::attribTypeStr
static const char * attribTypeStr(int)
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
Attrib::GLCM_attrib::computeF12
double computeF12(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeMuXminusY
double computeMuXminusY(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::desZSampMargin
const Interval< int > * desZSampMargin(int input, int output) const
Attrib::GLCM_attrib::Node::next
Node * next
Definition: GLCM_attrib.h:83
Attrib::GLCM_attrib::computeHX
double computeHX(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::Node::nodeJ
int nodeJ
Definition: GLCM_attrib.h:81
Attrib::GLCM_attrib::computeDifferenceVariance
double computeDifferenceVariance(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeHomogeneity
double computeHomogeneity(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::Node_
Node Node_
Definition: GLCM_attrib.h:86
Attrib::GLCM_attrib::dataidx_
int dataidx_
Definition: GLCM_attrib.h:76
Attrib::GLCM_attrib::gateStr
static const char * gateStr()
Definition: GLCM_attrib.h:24
Attrib::GLCM_attrib::computeMXplusY
double computeMXplusY(Node *LinkedList, int elements, int N) const
Attrib::GLCM_attrib::PosAndSteeridx::steerindexes_
TypeSet< int > steerindexes_
Definition: GLCM_attrib.h:91
Attrib::GLCM_attrib::minlimitStr
static const char * minlimitStr()
Definition: GLCM_attrib.h:29
Attrib::GLCM_attrib::PosAndSteeridx::posidx_
TypeSet< int > posidx_
Definition: GLCM_attrib.h:93
Attrib::GLCM_attrib::PosAndSteeridx
Definition: GLCM_attrib.h:90
Attrib::GLCM_attrib::stepout_
BinID stepout_
Definition: GLCM_attrib.h:68
Attrib::GLCM_attrib::computeMxI
double computeMxI(Node *LinkedList, int elements, int i) const
Attrib::GLCM_attrib::computeSumMean
double computeSumMean(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeMyJ
double computeMyJ(Node *LinkedList, int elements, int j) const
Attrib::GLCM_attrib::allowParallelComputation
bool allowParallelComputation() const
Definition: GLCM_attrib.h:43
Attrib::GLCM_attrib::gate_
Interval< float > gate_
Definition: GLCM_attrib.h:71
Attrib::GLCM_attrib::computeF13
double computeF13(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::stepoutStr
static const char * stepoutStr()
Definition: GLCM_attrib.h:27
Attrib::GLCM_attrib::samprange_
int samprange_
Definition: GLCM_attrib.h:66
Attrib::GLCM_attrib::computeSumVariance
double computeSumVariance(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::Node
Definition: GLCM_attrib.h:79
Attrib::GLCM_attrib::computeDifferenceEntropy
double computeDifferenceEntropy(Node *LinkedList, int elements) const
attribprovider.h
Attrib::GLCM_attrib::computeClusterTendency
double computeClusterTendency(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::getInputData
bool getInputData(const BinID &, int zintv)
Attrib::GLCM_attrib::samples_
int samples_
Definition: GLCM_attrib.h:63
Attrib::GLCM_attrib::maxlimitStr
static const char * maxlimitStr()
Definition: GLCM_attrib.h:30
Attrib::GLCM_attrib::updateDesc
static void updateDesc(Desc &)
Attrib::GLCM_attrib::initSteering
void initSteering()
Definition: GLCM_attrib.h:35
Attrib::GLCM_attrib::getInputOutput
bool getInputOutput(int input, TypeSet< int > &) const
Attrib::GLCM_attrib::computeMu
std::pair< double, double > computeMu(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::mODTextTranslationClass
mODTextTranslationClass(GLCM_attrib)
Attrib::GLCM_attrib::computeClusterProminence
double computeClusterProminence(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::computeHY
double computeHY(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::steerdata_
const DataHolder * steerdata_
Definition: GLCM_attrib.h:75
Attrib::GLCM_attrib::steeringStr
static const char * steeringStr()
Definition: GLCM_attrib.h:32
Attrib::GLCM_attrib::computeHXY2
double computeHXY2(Node *LinkedList, int elements) const
Attrib
Semblance Attribute.
Definition: attribdataholder.h:25
Interval< float >
Attrib::GLCM_attrib::computeHXY1
double computeHXY1(Node *LinkedList, int elements) const
Attrib::Desc
Description of an attribute in an Attrib::DescSet. Each attribute has a name (e.g....
Definition: attribdesc.h:89
Attrib::GLCM_attrib::attribName
static const char * attribName()
Definition: GLCM_attrib.h:23
Attrib::GLCM_attrib::computeEnergy
double computeEnergy(Node *head, int elements) const
Attrib::GLCM_attrib::computeGreyLevel
int computeGreyLevel(float) const
Attrib::GLCM_attrib::desStepout
const BinID * desStepout(int, int) const
Attrib::GLCM_attrib::computeInverseDifferenceMoment
double computeInverseDifferenceMoment(Node *LinkedList, int elements) const
Attrib::GLCM_attrib::updateDefaults
static void updateDefaults(Desc &)
TypeSet< int >

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