package fr.unistra.pelican.demos;
import fr.unistra.pelican.AlgorithmException;
import fr.unistra.pelican.DoubleImage;
import fr.unistra.pelican.Image;
import fr.unistra.pelican.InvalidNumberOfParametersException;
import fr.unistra.pelican.InvalidTypeOfParameterException;
import fr.unistra.pelican.algorithms.conversion.HSIToRGB;
import fr.unistra.pelican.algorithms.conversion.HSVToRGB;
import fr.unistra.pelican.algorithms.conversion.LUVToXYZ;
import fr.unistra.pelican.algorithms.conversion.RGBToHSI;
import fr.unistra.pelican.algorithms.conversion.RGBToHSV;
import fr.unistra.pelican.algorithms.conversion.RGBToXYZ;
import fr.unistra.pelican.algorithms.conversion.RGBToYIQ;
import fr.unistra.pelican.algorithms.conversion.XYZToLAB;
import fr.unistra.pelican.algorithms.conversion.XYZToLUV;
import fr.unistra.pelican.algorithms.conversion.XYZToRGB;
import fr.unistra.pelican.algorithms.conversion.YIQToRGB;
import fr.unistra.pelican.algorithms.io.ImageLoader;
import fr.unistra.pelican.algorithms.visualisation.Viewer2D;
public class ConversionDemo
{
public static void main(String[] args)
{
try{
Image input = (Image)ImageLoader.exec("samples/remotesensing1.png");
input.setColor(true);
Viewer2D.exec(input,"RGB");
Image HSI = (Image)new RGBToHSI().process(input);
HSI.setColor(true);
Viewer2D.exec(HSI,"RGB->HSI");
Image RGB = (Image)new HSIToRGB().process(HSI);
RGB.setColor(true);
Viewer2D.exec(RGB,"HSI->RGB");
Image HSV = (Image)new RGBToHSV().process(RGB);
HSV.setColor(true);
Viewer2D.exec(HSV,"RGB->HSV");
RGB = (Image)new HSVToRGB().process(HSV);
RGB.setColor(true);
Viewer2D.exec(RGB,"HSV->RGB");
Image YIQ = (Image)new RGBToYIQ().process(RGB);
DoubleImage d = (DoubleImage)YIQ;
d = d.scaleToZeroOne();
d.setColor(true);
Viewer2D.exec(d,"RGB->YIQ (scaled to [0,1])");
RGB = (Image)new YIQToRGB().process(YIQ);
RGB.setColor(true);
Viewer2D.exec(RGB,"YIQ->RGB");
Image XYZ = (Image)new RGBToXYZ().process(RGB);
d = (DoubleImage)XYZ;
d = d.scaleToZeroOne();
d.setColor(true);
Viewer2D.exec(d,"RGB->XYZ (scaled to [0,1])");
Image LAB = (Image)new XYZToLAB().process(XYZ);
d = (DoubleImage)LAB;
d = d.scaleToZeroOne();
d.setColor(true);
Viewer2D.exec(d,"XYZ->LAB (scaled to [0,1])");
Image LUV = (Image)new XYZToLUV().process(XYZ);
d = (DoubleImage)LUV;
d = d.scaleToZeroOne();
d.setColor(true);
Viewer2D.exec(d,"XYZ->LUV (scaled to [0,1])");
XYZ = (Image)new LUVToXYZ().process(LUV);
RGB = (Image)new XYZToRGB().process(XYZ);
RGB.setColor(true);
Viewer2D.exec(RGB,"XYZ->RGB");
}catch(InvalidTypeOfParameterException ex){
ex.printStackTrace();
}catch(InvalidNumberOfParametersException ex){
ex.printStackTrace();
}catch(AlgorithmException ex){
ex.printStackTrace();
}
}
}