### Question:
ConvolutionKernels { public static ImageStack gen3DTemporalFrameSubtraction(int xSize, int ySize, int innerTRadius, int outerTDelta) { assert xSize>0; assert ySize>0; int width = (2*xSize+1); int height = (2*ySize+1); int widthHeight = width*height; int tSize = 2*innerTRadius+1+outerTDelta*2; int innerTDelta = 2*innerTRadius+1; float [][] kernel = new float[tSize][widthHeight]; int totalPixels = xSize*ySize*tSize; int counter = 0; for (int t=0;t<tSize;t++) { for (int j = -ySize; j <= ySize; j++) { for (int i = -xSize; i <= xSize; i++) { if (t<outerTDelta) { kernel[t][(ySize+j)*width+(xSize+i)] = -1f; counter++; } else if (t>=tSize-outerTDelta) { kernel[t][(ySize + j) * width + (xSize + i)] = -1f; counter++; } } } } kernel[tSize/2][ySize*width+xSize] = counter + 1; ImageStack ims = new ImageStack(width, height); for (int t=0;t<tSize;t++){ ims.addSlice(new FloatProcessor(width, height, kernel[t])); } return ims; }  static FloatProcessor genGaussianKernel(double sigma); static FloatProcessor genGaussianERFKernel(double sigma); static FloatProcessor genGaussianERFKernel(double sigma, double xShift, double yShift); static FloatProcessor genGaussianKernel(double sigma, float xDelta, float yDelta); static FloatProcessor genLaplacianOfGaussianKernel(double sigma); static FloatProcessor genDifferenceOfGaussiansKernel(double sigmaSmall, double sigmaBig); static FloatProcessor genSmooth(int xSize, int ySize); static FloatProcessor genIntegration(int xSize, int ySize); static FloatProcessor genCircularIntegration(double radius); static FloatProcessor genCircularSmooth(double radius); static FloatProcessor genLaplacian1(); static FloatProcessor genLaplacian2(); static FloatProcessor genLaplacian3(); static FloatProcessor genExtendedLaplacian(); static FloatProcessor genExtendedLaplacian2(); static FloatProcessor genGradientX(int xSize, int ySize); static FloatProcessor genGradientY(int xSize, int ySize); static ImageStack gen3DTemporalFrameSubtraction(int xSize, int ySize, int innerTRadius, int outerTDelta); static ImageStack gen3DSmooth(); static ImageStack gen3DSmooth(int xSize, int ySize, int tSize); static void normalizeToOne(float [] pixels); static void normalizeToOne(ImageStack ims); static void normalizeToOne(FloatProcessor fp); static boolean isNormalizedToOne(float [] pixels, double allowedError); static boolean isNormalizedToOne(ImageStack ims, double allowedError); static boolean isNormalizedToOne(FloatProcessor fp, double allowedError); static boolean isNormalizedToZero(float [] pixels, double allowedError); static boolean isNormalizedToZero(ImageStack ims, double allowedError); static boolean isNormalizedToZero(FloatProcessor fp, double allowedError);  }### Answer:
@Test public void testGen3DTemporalFrameSubtraction() throws Exception { assertTrue(ConvolutionKernels.isNormalizedToOne(ConvolutionKernels.gen3DTemporalFrameSubtraction(4, 4, 2, 4), 0.05f)); }