package fr.unistra.pelican.algorithms.geometric;
import fr.unistra.pelican.Algorithm;
import fr.unistra.pelican.Image;
/**
* This class performs a 2D horizontal axial symmetry of the input image
*
* @author Weber
*/
public class HorizontalAxialSymmetry2D extends Algorithm {
/**
* The input image
*/
public Image input;
/**
* The output image
*/
public Image output;
/**
* Default constructor
*
*/
public HorizontalAxialSymmetry2D() {
super.inputs = "input";
super.outputs = "output";
}
/**
* Performs a 2D symmetry of the input image
* @param input The input image
* @return The output image
*/
@SuppressWarnings("unchecked")
public static <T extends Image> T exec(T input) {
return (T) new HorizontalAxialSymmetry2D().process(input);
}
/*
* (non-Javadoc)
* @see fr.unistra.pelican.Algorithm#launch()
*/
public void launch() {
int xdim=input.getXDim()-1;
int ydim=input.getYDim()-1;
output=input.copyImage(false);
for(int b=0;b<input.bdim;b++)
for(int x=0;x<=xdim;x++)
for(int y=0;y<=ydim;y++)
output.setPixelXYBDouble(x,y,b,input.getPixelXYBDouble(x,ydim-y,b));
}
}