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