package fr.unistra.pelican.algorithms.descriptors.grey;
import fr.unistra.pelican.AlgorithmException;
import fr.unistra.pelican.Descriptor;
import fr.unistra.pelican.Image;
import fr.unistra.pelican.algorithms.conversion.RGBToGray;
import fr.unistra.pelican.algorithms.histogram.Histogram;
import fr.unistra.pelican.util.data.HistogramData;
/**
* Histogram descriptor
* Only works on grey levels
* @author jonathan.weber
*
*/
public class BasicHistogram extends Descriptor {
/** First input parameter. */
public Image input;
public Image original;
/** Output parameter. */
public HistogramData output;
/** Constructor */
public BasicHistogram() {
super();
super.inputs = "input";
super.outputs = "output";
}
public static HistogramData exec( Image input ) {
return ( HistogramData ) new BasicHistogram().process( input );
}
@SuppressWarnings("unchecked")
public void launch() throws AlgorithmException {
double[] values;
if(input.getBDim()==3)
values = Histogram.exec(RGBToGray.exec(input),true);
else
values = Histogram.exec(input,true);
this.output = new HistogramData();
this.output.setDescriptor( ( Class ) this.getClass() );
Double[] typedValues = new Double[values.length];
for(int i=0;i<values.length;i++)
typedValues[i]=values[i];
this.output.setValues( typedValues );
}
}