raw_data[i] = raw_data[i]*factor;
}
+void ImageData::power2(double x)
+{
+ for (int i=0; i<width*height; i++)
+ raw_data[i] = pow(x,raw_data[i]);
+}
+
void ImageData::gamma(double gamma, double epsilon)
{
// This is tricky: what to do if we have a negative power and we get zero?
void offset(double offset, bool do_auto);// add an offset
void scale(double factor); // scale the data
void gamma(double gamma, double epsilon); // gamma scaling operation on 16 bit data
+ void power2(double x); // y = x^data
// More complicated functions that preserve the images size
id.cbc(op->parameters[0].value, op->parameters[1].value, 0, 1, op->parameters[2].value, op->parameters[3].value);
else if (op->name == "power")
id.gamma(op->parameters[0].value,op->parameters[1].value);
+ else if (op->name == "power2")
+ id.power2(op->parameters[0].value);
else if (op->name == "scale data")
id.scale(op->parameters[0].value);
else if (op->name == "even odd")
gradmag.addParameter("Axis Bias [0-1.0]",0.5);
Define_Image_Operation(&gradmag);
- Image_Operation gamma("power","y = x^p, p<0 & abs(x)<eps => truncate x, y<0 & p not int => set y=0"); // a better name
+ Image_Operation gamma("power","y = data^p. If p<0 & abs(data)<eps => truncate x to avoid 1/0. If data<0 & p not int => set data=0 to avoid complex numbers"); // a better name
gamma.addParameter("Power", 0.5);
gamma.addParameter("Epsilon", 1e-20);
Define_Image_Operation(&gamma);
+ Image_Operation power2("power2","y = b^data");
+ power2.addParameter("Base (b)", 10);
+ Define_Image_Operation(&power2);
+
Define_Image_Operation(new Image_Operation("norm lbl","Stretch the contrast of each line to full scale"));
Define_Image_Operation(new Image_Operation("norm cbc","Stretch the contrast of each column to full scale"));