package fr.unistra.pelican.util.morphology; import fr.unistra.pelican.BooleanImage; import fr.unistra.pelican.Image; /** * Utility class to create 4D flat structuring element * * @author Jonathan Weber * */ public class FlatStructuringElement4D { public static BooleanImage create28ConnectivitySEWithoutCenterPixel() { BooleanImage se = FlatStructuringElement4D.create28ConnectivitySE(); se.setPixelXYZTBoolean(1,1,1,1,false); return se; } public static BooleanImage create28ConnectivitySE() { BooleanImage se = new BooleanImage(3,3,3,3,1); se.resetCenter(); se.fill(false); se.setImage4D(FlatStructuringElement3D.createSquareFlatStructuringElement(3), 1, Image.T); se.setPixelXYZTBoolean(1,1,1,0,true); se.setPixelXYZTBoolean(1,1,1,2,true); return se; } public static BooleanImage create6TemporalConnectivitySE() { BooleanImage se = new BooleanImage(3,3,1,3,1); se.resetCenter(); se.fill(false); se.setPixelXYZTBoolean(1,1,0,1,true); se.setPixelXYZTBoolean(1,0,0,1,true); se.setPixelXYZTBoolean(0,1,0,1,true); se.setPixelXYZTBoolean(2,1,0,1,true); se.setPixelXYZTBoolean(1,2,0,1,true); se.setPixelXYZTBoolean(0,0,0,0,true); se.setPixelXYZTBoolean(0,0,0,2,true); return se; } public static BooleanImage create10TemporalConnectivitySE() { BooleanImage se = new BooleanImage(3,3,1,3,1); se.resetCenter(); se.fill(false); se.setPixelXYZTBoolean(1,1,0,1,true); se.setPixelXYZTBoolean(1,0,0,1,true); se.setPixelXYZTBoolean(0,1,0,1,true); se.setPixelXYZTBoolean(2,1,0,1,true); se.setPixelXYZTBoolean(1,2,0,1,true); se.setPixelXYZTBoolean(0,0,0,1,true); se.setPixelXYZTBoolean(0,2,0,1,true); se.setPixelXYZTBoolean(2,0,0,1,true); se.setPixelXYZTBoolean(2,2,0,1,true); se.setPixelXYZTBoolean(0,0,0,0,true); se.setPixelXYZTBoolean(0,0,0,2,true); return se; } }