From aa7c36e0868ff2ad889bd12fc8f283a10710727b Mon Sep 17 00:00:00 2001 From: tpietzsch Date: Mon, 15 Jul 2024 13:28:20 +0200 Subject: [PATCH] Add Convolve example --- .../convolve/ConvolveBdvPlayground.java | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/test/java/net/imglib2/algorithm/blocks/convolve/ConvolveBdvPlayground.java diff --git a/src/test/java/net/imglib2/algorithm/blocks/convolve/ConvolveBdvPlayground.java b/src/test/java/net/imglib2/algorithm/blocks/convolve/ConvolveBdvPlayground.java new file mode 100644 index 000000000..8db6340da --- /dev/null +++ b/src/test/java/net/imglib2/algorithm/blocks/convolve/ConvolveBdvPlayground.java @@ -0,0 +1,90 @@ +/*- + * #%L + * ImgLib2: a general-purpose, multidimensional image processing library. + * %% + * Copyright (C) 2009 - 2024 Tobias Pietzsch, Stephan Preibisch, Stephan Saalfeld, + * John Bogovic, Albert Cardona, Barry DeZonia, Christian Dietz, Jan Funke, + * Aivar Grislis, Jonathan Hale, Grant Harris, Stefan Helfrich, Mark Hiner, + * Martin Horn, Steffen Jaensch, Lee Kamentsky, Larry Lindsey, Melissa Linkert, + * Mark Longair, Brian Northan, Nick Perry, Curtis Rueden, Johannes Schindelin, + * Jean-Yves Tinevez and Michael Zinsmaier. + * %% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * #L% + */ +package net.imglib2.algorithm.blocks.convolve; + +import bdv.cache.SharedQueue; +import bdv.util.Bdv; +import bdv.util.BdvFunctions; +import bdv.util.BdvSource; +import bdv.util.volatiles.VolatileViews; +import bdv.viewer.DisplayMode; +import ij.IJ; +import ij.ImagePlus; +import net.imglib2.algorithm.blocks.BlockAlgoUtils; +import net.imglib2.algorithm.blocks.BlockSupplier; +import net.imglib2.img.Img; +import net.imglib2.img.display.imagej.ImageJFunctions; +import net.imglib2.type.numeric.ARGBType; +import net.imglib2.type.numeric.integer.UnsignedByteType; +import net.imglib2.view.Views; + +public class ConvolveBdvPlayground +{ + public static void main( String[] args ) + { + System.setProperty("apple.laf.useScreenMenuBar", "true"); + + final String fn = "/Users/pietzsch/workspace/data/e002_stack_fused-8bit.tif"; + final ImagePlus imp = IJ.openImage( fn ); + final Img< UnsignedByteType > img = ImageJFunctions.wrapByte( imp ); + + final BdvSource bdv = BdvFunctions.show( + img, + "img", + Bdv.options() ); + bdv.setColor( new ARGBType( 0xffffff ) ); + bdv.setDisplayRange( 0, 255 ); + bdv.getBdvHandle().getViewerPanel().setDisplayMode( DisplayMode.SINGLE ); + + final BlockSupplier< UnsignedByteType > blocks = BlockSupplier + .of( Views.extendMirrorDouble( img ) ) + .andThen( Convolve.gauss( 4 ) ); + + final long[] dimensions = img.dimensionsAsLongArray(); + final int[] cellDimensions = { 64, 64, 64 }; + final Img< UnsignedByteType > convolved = BlockAlgoUtils.cellImg( + blocks, + dimensions, + cellDimensions ); + + final BdvSource out = BdvFunctions.show( + VolatileViews.wrapAsVolatile( convolved, new SharedQueue( 8, 1 ) ), + "convolve", + Bdv.options() + .addTo( bdv ) + ); + out.setDisplayRange( 0, 255 ); + out.setColor( new ARGBType( 0x00ff00 ) ); + } +}