{ "PoissonNoise", PoissonNoiseEvaluateOperator, UndefinedOptionFlag, MagickFalse },
{ "Pow", PowEvaluateOperator, UndefinedOptionFlag, MagickFalse },
{ "RightShift", RightShiftEvaluateOperator, UndefinedOptionFlag, MagickFalse },
+ { "RMS", RootMeanSquareEvaluateOperator, UndefinedOptionFlag, MagickFalse },
+ { "RootMeanSquare", RootMeanSquareEvaluateOperator, UndefinedOptionFlag, MagickFalse },
{ "Set", SetEvaluateOperator, UndefinedOptionFlag, MagickFalse },
{ "Sin", SineEvaluateOperator, UndefinedOptionFlag, MagickFalse },
{ "Sine", SineEvaluateOperator, UndefinedOptionFlag, MagickFalse },
{ "Minimum", MinimumStatistic, UndefinedOptionFlag, MagickFalse },
{ "Mode", ModeStatistic, UndefinedOptionFlag, MagickFalse },
{ "NonPeak", NonpeakStatistic, UndefinedOptionFlag, MagickFalse },
+ { "RootMeanSquare", RootMeanSquareStatistic, UndefinedOptionFlag, MagickFalse },
+ { "RMS", RootMeanSquareStatistic, UndefinedOptionFlag, MagickFalse },
{ "StandardDeviation", StandardDeviationStatistic, UndefinedOptionFlag, MagickFalse },
{ (char *) NULL, UndefinedMethod, UndefinedOptionFlag, MagickFalse }
},
result=(double) ((size_t) pixel >> (size_t) (value+0.5));
break;
}
+ case RootMeanSquareEvaluateOperator:
+ {
+ result=(double) (pixel*value);
+ break;
+ }
case SetEvaluateOperator:
{
result=value;
}
break;
}
+ case RootMeanSquareEvaluateOperator:
+ {
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ evaluate_pixel[x].channel[i]=sqrt(evaluate_pixel[x].channel[i]/
+ (double) number_images);
+ break;
+ }
default:
break;
}
*pixel=ScaleShortToQuantum((unsigned short) color);
}
+static inline void GetRootMeanSquarePixelList(PixelList *pixel_list,
+ Quantum *pixel)
+{
+ double
+ sum;
+
+ register SkipList
+ *p;
+
+ size_t
+ color;
+
+ ssize_t
+ count;
+
+ /*
+ Find the mean value for each of the color.
+ */
+ p=(&pixel_list->skip_list);
+ color=65536L;
+ count=0;
+ sum=0.0;
+ do
+ {
+ color=p->nodes[color].next[0];
+ sum*=(double) p->nodes[color].count*color;
+ count+=p->nodes[color].count;
+ } while (count < (ssize_t) pixel_list->length);
+ sum/=pixel_list->length;
+ *pixel=ScaleShortToQuantum((unsigned short) sqrt(sum));
+}
+
static inline void GetStandardDeviationPixelList(PixelList *pixel_list,
Quantum *pixel)
{
GetNonpeakPixelList(pixel_list[id],&pixel);
break;
}
+ case RootMeanSquareStatistic:
+ {
+ GetRootMeanSquarePixelList(pixel_list[id],&pixel);
+ break;
+ }
case StandardDeviationStatistic:
{
GetStandardDeviationPixelList(pixel_list[id],&pixel);
PoissonNoiseEvaluateOperator,
PowEvaluateOperator,
RightShiftEvaluateOperator,
+ RootMeanSquareEvaluateOperator,
SetEvaluateOperator,
SineEvaluateOperator,
SubtractEvaluateOperator,
MinimumStatistic,
ModeStatistic,
NonpeakStatistic,
+ RootMeanSquareStatistic,
StandardDeviationStatistic
} StatisticType;