]> granicus.if.org Git - imagemagick/blob - MagickCore/statistic.h
(no commit message)
[imagemagick] / MagickCore / statistic.h
1 /*
2   Copyright 1999-2014 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.
6   obtain a copy of the License at
7   
8     http://www.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 typedef struct _ChannelStatistics
26 {
27   size_t
28     depth;
29
30   double
31     area,
32     minima,
33     maxima,
34     sum,
35     sum_squared,
36     sum_cubed,
37     sum_fourth_power,
38     mean,
39     variance,
40     standard_deviation,
41     kurtosis,
42     skewness;
43 } ChannelStatistics;
44
45 typedef struct _ChannelMoments
46 {
47   double
48     I[32];
49
50   PointInfo
51     centroid,
52     ellipse_axis;
53
54   double
55     ellipse_angle,
56     ellipse_eccentricity,
57     ellipse_intensity;
58 } ChannelMoments;
59
60 typedef enum
61 {
62   UndefinedEvaluateOperator,
63   AbsEvaluateOperator,
64   AddEvaluateOperator,
65   AddModulusEvaluateOperator,
66   AndEvaluateOperator,
67   CosineEvaluateOperator,
68   DivideEvaluateOperator,
69   ExponentialEvaluateOperator,
70   GaussianNoiseEvaluateOperator,
71   ImpulseNoiseEvaluateOperator,
72   LaplacianNoiseEvaluateOperator,
73   LeftShiftEvaluateOperator,
74   LogEvaluateOperator,
75   MaxEvaluateOperator,
76   MeanEvaluateOperator,
77   MedianEvaluateOperator,
78   MinEvaluateOperator,
79   MultiplicativeNoiseEvaluateOperator,
80   MultiplyEvaluateOperator,
81   OrEvaluateOperator,
82   PoissonNoiseEvaluateOperator,
83   PowEvaluateOperator,
84   RightShiftEvaluateOperator,
85   SetEvaluateOperator,
86   SineEvaluateOperator,
87   SubtractEvaluateOperator,
88   SumEvaluateOperator,
89   ThresholdBlackEvaluateOperator,
90   ThresholdEvaluateOperator,
91   ThresholdWhiteEvaluateOperator,
92   UniformNoiseEvaluateOperator,
93   XorEvaluateOperator
94 } MagickEvaluateOperator;
95
96 typedef enum
97 {
98   UndefinedFunction,
99   PolynomialFunction,
100   SinusoidFunction,
101   ArcsinFunction,
102   ArctanFunction
103 } MagickFunction;
104
105 typedef enum
106 {
107   UndefinedStatistic,
108   GradientStatistic,
109   MaximumStatistic,
110   MeanStatistic,
111   MedianStatistic,
112   MinimumStatistic,
113   ModeStatistic,
114   NonpeakStatistic,
115   StandardDeviationStatistic
116 } StatisticType;
117
118 extern MagickExport ChannelStatistics
119   *GetImageStatistics(const Image *,ExceptionInfo *);
120
121 extern MagickExport ChannelMoments
122   *GetImageMoments(const Image *,ExceptionInfo *);
123
124 extern MagickExport Image
125   *EvaluateImages(const Image *,const MagickEvaluateOperator,ExceptionInfo *),
126   *PolynomialImage(const Image *,const size_t,const double *,ExceptionInfo *),
127   *StatisticImage(const Image *,const StatisticType,const size_t,const size_t,
128     ExceptionInfo *);
129
130 extern MagickExport MagickBooleanType
131   EvaluateImage(Image *,const MagickEvaluateOperator,const double,
132     ExceptionInfo *),
133   FunctionImage(Image *,const MagickFunction,const size_t,const double *,
134     ExceptionInfo *),
135   GetImageExtrema(const Image *,size_t *,size_t *,ExceptionInfo *),
136   GetImageMean(const Image *,double *,double *,ExceptionInfo *),
137   GetImageKurtosis(const Image *,double *,double *,ExceptionInfo *),
138   GetImageRange(const Image *,double *,double *,ExceptionInfo *);
139
140 #if defined(__cplusplus) || defined(c_plusplus)
141 }
142 #endif
143
144 #endif