package fr.unistra.pelican.algorithms.morphology.binary; import static org.junit.Assert.assertEquals; import org.junit.Test; import fr.unistra.pelican.BooleanImage; import fr.unistra.pelican.Image; import fr.unistra.pelican.util.morphology.FlatStructuringElement2D; public class BinaryDilationTest { @Test public void testBinaryDilation() { Image image = fr.unistra.pelican.algorithms.io.ImageLoader.exec( "samples/binary.png" ); image = new BooleanImage( image ); BooleanImage se = FlatStructuringElement2D.createSquareFlatStructuringElement(5); Image result = BinaryDilation.exec( image,se ); System.out.println( "BinaryDilation ne plante pas." ); Image truth = fr.unistra.pelican.algorithms.io.ImageLoader.exec( "src/test/resources/binarydilation-square5x5-truth.png" ); assertEquals( truth.size(), result.size() ); for ( int i = 0 ; i < truth.size() ; i++ ) assertEquals( result.getPixelByte(i), truth.getPixelByte(i) ); System.out.println( "BinaryDilation a passé le test unitaire !" ); } // endfunc public static void main(String[] args) { new BinaryDilationTest().testBinaryDilation(); // Image image = fr.unistra.pelican.algorithms.io.ImageLoader.exec( "samples/binary.png" ); // Image compare = image.copyImage( true ); // fr.unistra.pelican.algorithms.visualisation.Viewer2D.exec( image,"image de départ" ); // image = new BooleanImage( image ); // BooleanImage se = FlatStructuringElement2D.createSquareFlatStructuringElement(5); // // Image truth = fr.unistra.pelican.algorithms.io.ImageLoader.exec( // "src/test/resources/binarydilation-square5x5-truth.png"); // int size = truth.size(); // int xdim = truth.getXDim(); // int ydim = truth.getYDim(); // int tdim = truth.getTDim(); // int bdim = truth.getBDim(); // int zdim = truth.getZDim(); // // System.out.println( "A)" ); // long start = System.currentTimeMillis(); // Image base = BinaryDilation.exec( image,se ); // long end = System.currentTimeMillis(); // // System.out.println( "B)" ); // long starts = System.currentTimeMillis(); // Image opt = BinaryDilation.exec( image,se, // fr.unistra.pelican.algorithms.morphology.gray.GrayErosion.RECTANGLE_OPTIMIZATION ); // long ends = System.currentTimeMillis(); // // System.out.println( "taille de l'image: "+xdim+","+ydim+","+zdim+","+tdim+","+bdim ); // System.out.println( "machin de base: "+( end-start ) + "ms." ); // System.out.println( "truc optimisé: "+( ends-starts ) + "ms." ); // ////// fr.unistra.pelican.algorithms.visualisation.Viewer2D.exec( image,"image grise" ); ////// fr.unistra.pelican.algorithms.visualisation.Viewer2D.exec( base,"machin de base" ); ////// fr.unistra.pelican.algorithms.visualisation.Viewer2D.exec( opt,"truc optimisé" ); // // assertEquals( xdim,base.getXDim(),opt.getXDim() ); // assertEquals( ydim,base.getYDim(),opt.getYDim() ); // assertEquals( zdim,base.getZDim(),opt.getZDim() ); // assertEquals( tdim,base.getTDim(),opt.getTDim() ); // assertEquals( bdim,base.getBDim(),opt.getBDim() ); // // for ( int t = 0 ; t < tdim ; t++ ) // for ( int z = 0 ; z < zdim ; z++ ) // for ( int y = 0 ; y < ydim ; y++ ) // for ( int x = 0 ; x < xdim ; x++ ) // for ( int b = 0 ; b < bdim ; b++ ) { // // if ( !image.isPresentXYZTB(x,y,z,t,b) ) continue; // if ( truth.getPixelXYZTBByte(x,y,z,t,b) != opt.getPixelXYZTBByte(x,y,z,t,b) ) { // // compare.setPixelXYZTBByte( x,y,z,t,0, 255 ); // compare.setPixelXYZTBByte( x,y,z,t,1, 0 ); // compare.setPixelXYZTBByte( x,y,z,t,2, 0 ); // } // } // fr.unistra.pelican.algorithms.visualisation.Viewer2D.exec( compare,"conflits" ); // // for ( int i = 0; i < size; i++ ) // if ( !image.isPresent( i ) ) continue; // else assertEquals( truth.getPixelByte(i),opt.getPixelByte(i) ); } // endmain }