package fr.unistra.pelican.algorithms.segmentation;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import fr.unistra.pelican.ByteImage;
import fr.unistra.pelican.Image;
import fr.unistra.pelican.algorithms.histogram.ContrastStretch;
import fr.unistra.pelican.algorithms.io.ImageLoader;
import fr.unistra.pelican.algorithms.io.ImageSave;
import fr.unistra.pelican.algorithms.morphology.vectorial.gradient.MultispectralEuclideanGradient;
import fr.unistra.pelican.util.morphology.FlatStructuringElement2D;
public class WatershedTest {
@Test
public void testSimpleWatersed() {
Image input = ImageLoader.exec("src/test/resources/watershed.png");
Image output = ContrastStretch.exec(Watershed.exec(MultispectralEuclideanGradient.exec(input,FlatStructuringElement2D.createCircleFlatStructuringElement(2))));
// Viewer2D.exec(output, "samples/watershed-truth.png");
// ImageSave.exec(output, "src/test/resources/watershed-truth.png");
Image truth = ImageLoader.exec("src/test/resources/watershed-truth.tiff");
assertEquals(truth.size(), output.size());
for(int i = 0; i < truth.size(); i++)
assertEquals(output.getPixelByte(i), truth.getPixelByte(i));
}
public static void main(String[] args) {
Image input = ImageLoader.exec("src/test/resources/watershed.png");
Image output = new ByteImage(ContrastStretch.exec(Watershed.exec(MultispectralEuclideanGradient.exec(input,FlatStructuringElement2D.createCircleFlatStructuringElement(2)))));
// Viewer2D.exec(output, "samples/watershed-truth.png");
ImageSave.exec(output, "src/test/resources/watershed-truth.tiff");
Image truth = ImageLoader.exec("src/test/resources/watershed-truth.tiff");
assertEquals(truth.size(), output.size());
for(int i = 0; i < truth.size(); i++)
assertEquals(output.getPixelByte(i), truth.getPixelByte(i));
}
}