MagickCore  7.1.0
Convert, Edit, Or Compose Bitmap Images
statistic.h
1 /*
2  Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization
3  dedicated to making software imaging solutions freely available.
4 
5  You may not use this file except in compliance with the License. You may
6  obtain a copy of the License at
7 
8  https://imagemagick.org/script/license.php
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 
16  MagickCore statistical methods.
17 */
18 #ifndef MAGICKCORE_STATISTIC_H
19 #define MAGICKCORE_STATISTIC_H
20 
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24 
25 #define MaximumNumberOfImageMoments 8
26 #define MaximumNumberOfPerceptualColorspaces 6
27 #define MaximumNumberOfPerceptualHashes 7
28 
29 typedef struct _ChannelStatistics
30 {
31  size_t
32  depth;
33 
34  double
35  area,
36  minima,
37  maxima,
38  sum,
39  sum_squared,
40  sum_cubed,
41  sum_fourth_power,
42  mean,
43  variance,
44  standard_deviation,
45  kurtosis,
46  skewness,
47  entropy,
48  median;
50 
51 typedef struct _ChannelMoments
52 {
53  double
54  invariant[MaximumNumberOfImageMoments+1];
55 
56  PointInfo
57  centroid,
58  ellipse_axis;
59 
60  double
61  ellipse_angle,
62  ellipse_eccentricity,
63  ellipse_intensity;
65 
66 typedef struct _ChannelPerceptualHash
67 {
68  double
69  srgb_hu_phash[MaximumNumberOfImageMoments+1],
70  hclp_hu_phash[MaximumNumberOfImageMoments+1];
71 
72  size_t
73  number_colorspaces;
74 
75  ColorspaceType
76  colorspace[MaximumNumberOfPerceptualColorspaces+1];
77 
78  double
79  phash[MaximumNumberOfPerceptualColorspaces+1][MaximumNumberOfImageMoments+1];
80 
81  size_t
82  number_channels;
84 
85 typedef enum
86 {
87  UndefinedEvaluateOperator,
88  AbsEvaluateOperator,
89  AddEvaluateOperator,
90  AddModulusEvaluateOperator,
91  AndEvaluateOperator,
92  CosineEvaluateOperator,
93  DivideEvaluateOperator,
94  ExponentialEvaluateOperator,
95  GaussianNoiseEvaluateOperator,
96  ImpulseNoiseEvaluateOperator,
97  LaplacianNoiseEvaluateOperator,
98  LeftShiftEvaluateOperator,
99  LogEvaluateOperator,
100  MaxEvaluateOperator,
101  MeanEvaluateOperator,
102  MedianEvaluateOperator,
103  MinEvaluateOperator,
104  MultiplicativeNoiseEvaluateOperator,
105  MultiplyEvaluateOperator,
106  OrEvaluateOperator,
107  PoissonNoiseEvaluateOperator,
108  PowEvaluateOperator,
109  RightShiftEvaluateOperator,
110  RootMeanSquareEvaluateOperator,
111  SetEvaluateOperator,
112  SineEvaluateOperator,
113  SubtractEvaluateOperator,
114  SumEvaluateOperator,
115  ThresholdBlackEvaluateOperator,
116  ThresholdEvaluateOperator,
117  ThresholdWhiteEvaluateOperator,
118  UniformNoiseEvaluateOperator,
119  XorEvaluateOperator,
120  InverseLogEvaluateOperator
121 } MagickEvaluateOperator;
122 
123 typedef enum
124 {
125  UndefinedFunction,
126  ArcsinFunction,
127  ArctanFunction,
128  PolynomialFunction,
129  SinusoidFunction
130 } MagickFunction;
131 
132 typedef enum
133 {
134  UndefinedStatistic,
135  GradientStatistic,
136  MaximumStatistic,
137  MeanStatistic,
138  MedianStatistic,
139  MinimumStatistic,
140  ModeStatistic,
141  NonpeakStatistic,
142  RootMeanSquareStatistic,
143  StandardDeviationStatistic,
144  ContrastStatistic
145 } StatisticType;
146 
147 extern MagickExport ChannelStatistics
148  *GetImageStatistics(const Image *,ExceptionInfo *);
149 
150 extern MagickExport ChannelMoments
151  *GetImageMoments(const Image *,ExceptionInfo *);
152 
153 extern MagickExport ChannelPerceptualHash
154  *GetImagePerceptualHash(const Image *,ExceptionInfo *);
155 
156 extern MagickExport Image
157  *EvaluateImages(const Image *,const MagickEvaluateOperator,ExceptionInfo *),
158  *PolynomialImage(const Image *,const size_t,const double *,ExceptionInfo *),
159  *StatisticImage(const Image *,const StatisticType,const size_t,const size_t,
160  ExceptionInfo *);
161 
162 extern MagickExport MagickBooleanType
163  EvaluateImage(Image *,const MagickEvaluateOperator,const double,
164  ExceptionInfo *),
165  FunctionImage(Image *,const MagickFunction,const size_t,const double *,
166  ExceptionInfo *),
167  GetImageEntropy(const Image *,double *,ExceptionInfo *),
168  GetImageExtrema(const Image *,size_t *,size_t *,ExceptionInfo *),
169  GetImageMean(const Image *,double *,double *,ExceptionInfo *),
170  GetImageMedian(const Image *,double *,ExceptionInfo *),
171  GetImageKurtosis(const Image *,double *,double *,ExceptionInfo *),
172  GetImageRange(const Image *,double *,double *,ExceptionInfo *);
173 
174 #if defined(__cplusplus) || defined(c_plusplus)
175 }
176 #endif
177 
178 #endif
Definition: image.h:152