diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml index 5ef569202..fb81f2293 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build-main.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '8' + java-version: '11' distribution: 'zulu' cache: 'maven' - name: Set up CI environment diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index 925b57658..8d4c1f896 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -14,7 +14,7 @@ jobs: - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '8' + java-version: '11' distribution: 'zulu' cache: 'maven' - name: Set up CI environment diff --git a/pom.xml b/pom.xml index 0f201a17b..bc5911a3d 100644 --- a/pom.xml +++ b/pom.xml @@ -206,6 +206,22 @@ Jean-Yves Tinevez and Michael Zinsmaier. 0.15.0 1.0.0-beta-18 10.4.16 + + + [11.0.17,) + 8 + true @@ -281,4 +297,39 @@ Jean-Yves Tinevez and Michael Zinsmaier. test + + + + + + maven-compiler-plugin + + + + org.scijava + scijava-ops-indexer + 1.0.0 + + + true + + -Ascijava.ops.parse=${scijava.parse.ops} + -Ascijava.ops.opVersion=${project.version} + + + + + maven-javadoc-plugin + + + + implNote + a + Implementation Note: + + + + + + diff --git a/src/main/java/net/imglib2/algorithm/binary/Thresholder.java b/src/main/java/net/imglib2/algorithm/binary/Thresholder.java index 2e14f7ee6..2bee0ba57 100644 --- a/src/main/java/net/imglib2/algorithm/binary/Thresholder.java +++ b/src/main/java/net/imglib2/algorithm/binary/Thresholder.java @@ -70,6 +70,7 @@ public class Thresholder * the number of threads to use for thresholding. * @return a new {@link Img} of type {@link BitType} and of same dimension * that the source image. + * @implNote op name='threshold.apply' */ public static final < T extends Type< T > & Comparable< T >> Img< BitType > threshold( final Img< T > source, final T threshold, final boolean above, final int numThreads ) { diff --git a/src/main/java/net/imglib2/algorithm/componenttree/mser/MserTree.java b/src/main/java/net/imglib2/algorithm/componenttree/mser/MserTree.java index b14bb3242..f1d24aed8 100644 --- a/src/main/java/net/imglib2/algorithm/componenttree/mser/MserTree.java +++ b/src/main/java/net/imglib2/algorithm/componenttree/mser/MserTree.java @@ -105,7 +105,8 @@ public final class MserTree< T extends Type< T > > implements ComponentForest< M * {@link #buildMserTree(RandomAccessibleInterval, RealType, long, long, double, double, ImgFactory, boolean)} * using an {@link ArrayImgFactory} or {@link CellImgFactory} depending on * input image size. - * + * + * @implNote op name='create.mserTree',type=Function * @param input * the input image. * @param delta @@ -133,7 +134,8 @@ public static < T extends RealType< T > > MserTree< T > buildMserTree( final Ran * {@link #buildMserTree(RandomAccessibleInterval, RealType, long, long, double, double, ImgFactory, boolean)} * using an {@link ArrayImgFactory} or {@link CellImgFactory} depending on * input image size. - * + * + * @implNote op name='create.mserTree',type=Function * @param input * the input image. * @param delta @@ -159,7 +161,8 @@ public static < T extends RealType< T > > MserTree< T > buildMserTree( final Ran /** * Build a MSER tree from an input image. - * + * + * @implNote op name='create.mserTree',type=Function * @param input * the input image. * @param delta @@ -198,7 +201,8 @@ public static < T extends RealType< T > > MserTree< T > buildMserTree( final Ran * {@link #buildMserTree(RandomAccessibleInterval, ComputeDelta, long, long, double, double, ImgFactory, Type, Comparator)} * using an {@link ArrayImgFactory} or {@link CellImgFactory} depending on * input image size. - * + * + * @implNote op name='create.mserTree',type=Function * @param input * the input image. * @param computeDelta @@ -226,7 +230,8 @@ public static < T extends Type< T > > MserTree< T > buildMserTree( final RandomA /** * Build a MSER tree from an input image. - * + * + * @implNote op name='create.mserTree',type=Function * @param input * the input image. * @param computeDelta diff --git a/src/main/java/net/imglib2/algorithm/componenttree/pixellist/PixelListComponentTree.java b/src/main/java/net/imglib2/algorithm/componenttree/pixellist/PixelListComponentTree.java index 797d35e4a..5b09c4d7a 100644 --- a/src/main/java/net/imglib2/algorithm/componenttree/pixellist/PixelListComponentTree.java +++ b/src/main/java/net/imglib2/algorithm/componenttree/pixellist/PixelListComponentTree.java @@ -74,6 +74,7 @@ public final class PixelListComponentTree< T extends Type< T > > implements Comp * using an {@link ArrayImgFactory} or {@link CellImgFactory} depending on * input image size. * + * @implNote op name='create.pixelListComponentTree',type=Function * @param input * the input image. * @param type @@ -92,6 +93,7 @@ public static < T extends RealType< T > > PixelListComponentTree< T > buildCompo /** * Build a component tree from an input image. * + * @implNote op name='create.pixelListComponentTree',type=Function * @param input * the input image. * @param type @@ -120,6 +122,7 @@ public static < T extends RealType< T > > PixelListComponentTree< T > buildCompo * using an {@link ArrayImgFactory} or {@link CellImgFactory} depending on * input image size. * + * @implNote op name='create.pixelListComponentTree',type=Function * @param input * the input image. * @param maxValue @@ -138,6 +141,7 @@ public static < T extends Type< T > > PixelListComponentTree< T > buildComponent /** * Build a component tree from an input image. * + * @implNote op name='create.pixelListComponentTree',type=Function * @param input * the input image. * @param maxValue diff --git a/src/main/java/net/imglib2/algorithm/convolution/fast_gauss/FastGauss.java b/src/main/java/net/imglib2/algorithm/convolution/fast_gauss/FastGauss.java index c16591780..dac8369a8 100644 --- a/src/main/java/net/imglib2/algorithm/convolution/fast_gauss/FastGauss.java +++ b/src/main/java/net/imglib2/algorithm/convolution/fast_gauss/FastGauss.java @@ -88,11 +88,23 @@ public class FastGauss return new LineConvolution<>( new FastGaussConvolverRealType( sigma ), direction ); } + /** + * @param sigmas the standard deviations of the Gaussian blur (in each dimension) + * @param input the input data to blur + * @param output the preallocated output buffer + * @implNote op name='filter.gauss', type=Computer + */ public static void convolve( final double[] sigmas, final RandomAccessible< ? extends RealType< ? > > input, final RandomAccessibleInterval< ? extends RealType< ? > > output ) { convolution( sigmas ).process( input, output ); } + /** + * @param sigma the standard deviation of the Gaussian blur (in all dimensions) + * @param input the input data to blur + * @param output the preallocated output buffer + * @implNote op name='filter.gauss', type=Computer + */ public static void convolve( final double sigma, final RandomAccessible< ? extends RealType< ? > > input, final RandomAccessibleInterval< ? extends RealType< ? > > output ) { convolution( sigma ).process( input, output ); diff --git a/src/main/java/net/imglib2/algorithm/convolution/kernel/Kernel1D.java b/src/main/java/net/imglib2/algorithm/convolution/kernel/Kernel1D.java index b3ae1c038..df0960e24 100644 --- a/src/main/java/net/imglib2/algorithm/convolution/kernel/Kernel1D.java +++ b/src/main/java/net/imglib2/algorithm/convolution/kernel/Kernel1D.java @@ -56,6 +56,8 @@ public class Kernel1D * @param halfKernel * the upper half (starting at the center pixel) of the symmetric * convolution kernel. + * @return a {@link Kernel1D} used for one dimensional convolutions + * @implNote op name='create.kernel1DSymmetric' */ public static Kernel1D symmetric( final double... halfKernel ) { @@ -68,6 +70,9 @@ public static Kernel1D symmetric( final double... halfKernel ) /** * Similar to {@link #symmetric(double[])} but creates an array of * one-dimensional convolution kernels. + * @param halfKernels the upper halves (starting at the center pixel) of the symmetric convolution kernels + * @return an array of {@link Kernel1D}s used for one dimensional convolutions + * @implNote op name='create.kernel1DSymmetric' */ public static Kernel1D[] symmetric( final double[][] halfKernels ) { @@ -82,6 +87,8 @@ public static Kernel1D[] symmetric( final double[][] halfKernels ) * @param originIndex * the index of the array element which is the origin of the * kernel + * @return an asymmetric {@link Kernel1D} used for one dimensional convolutions + * @implNote op name='create.kernel1DAsymmetric' */ public static Kernel1D asymmetric( final double[] fullKernel, final int originIndex ) { @@ -94,6 +101,9 @@ public static Kernel1D asymmetric( final double[] fullKernel, final int originIn /** * Creates a one-dimensional asymmetric convolution kernel, where the origin * of the kernel is in the middle. + * @param kernel the raw data of the symmetric convolution kernel + * @return a {@link Kernel1D} used for one dimensional convolutions + * @implNote op name='create.kernel1DCentralAsymmetric' */ public static Kernel1D centralAsymmetric( final double... kernel ) { @@ -103,6 +113,13 @@ public static Kernel1D centralAsymmetric( final double... kernel ) /** * Similar to {@link #asymmetric(double[], int)} but creates an array of * one-dimensional convolution kernels. + * @param fullKernels + * arrays containing the values of each kernel + * @param originIndices + * the indices of the array elements at the origin of each + * kernel + * @return an array of {@link Kernel1D}s used for one dimensional convolutions + * @implNote op name='create.kernel1DAsymmetric' */ public static Kernel1D[] asymmetric( final double[][] fullKernels, final int[] originIndices ) { @@ -113,6 +130,9 @@ public static Kernel1D[] asymmetric( final double[][] fullKernels, final int[] o /** * Similar to {@link #centralAsymmetric(double...)} but creates an array of * one-dimensional convolution kernels. + * @param kernels the upper halves (starting at the center pixel) of the symmetric convolution kernels + * @return an array of {@link Kernel1D}s used for one dimensional convolutions + * @implNote op name='create.kernel1DCentralAsymmetric' */ public static Kernel1D[] centralAsymmetric( final double[][] kernels ) { diff --git a/src/main/java/net/imglib2/algorithm/convolution/kernel/SeparableKernelConvolution.java b/src/main/java/net/imglib2/algorithm/convolution/kernel/SeparableKernelConvolution.java index 90bd850e7..9da6788f9 100644 --- a/src/main/java/net/imglib2/algorithm/convolution/kernel/SeparableKernelConvolution.java +++ b/src/main/java/net/imglib2/algorithm/convolution/kernel/SeparableKernelConvolution.java @@ -114,6 +114,7 @@ public class SeparableKernelConvolution * the required source interval. * @param target * target image. + * @implNote op name='filter.convolve', type=Computer */ public static void convolve( final Kernel1D[] kernels, final RandomAccessible< ? extends NumericType< ? > > source, diff --git a/src/main/java/net/imglib2/algorithm/dog/DifferenceOfGaussian.java b/src/main/java/net/imglib2/algorithm/dog/DifferenceOfGaussian.java index ec163a7d9..eb033362f 100644 --- a/src/main/java/net/imglib2/algorithm/dog/DifferenceOfGaussian.java +++ b/src/main/java/net/imglib2/algorithm/dog/DifferenceOfGaussian.java @@ -60,6 +60,44 @@ */ public class DifferenceOfGaussian { + /** + * Compute the difference of Gaussian for the input. Input convolved with + * Gaussian of sigmaSmaller is subtracted from input convolved with Gaussian + * of sigmaLarger (where {@code sigmaLarger > sigmaSmaller}). + *

+ * Creates an appropriate temporary image and calls + * {@link #DoG(double[], double[], RandomAccessible, RandomAccessible, RandomAccessibleInterval, ExecutorService)} + * . + *

+ * This method differs from + * {@link #DoG(double[], double[], RandomAccessible, RandomAccessibleInterval, ExecutorService)} + * only in that its parameter order is tailored to an Op. The output comes + * last, and the primary input (the input image) comes first. + * + * @implNote op name="filter.dog", type=Computer + * @param input + * the input image extended to infinity (or at least covering the + * same interval as the dog result image, plus borders for + * convolution). + * @param sigmaSmaller + * stddev (in every dimension) of smaller Gaussian. + * @param sigmaLarger + * stddev (in every dimension) of larger Gaussian. + * @param service + * service providing threads for multi-threading + * @param dog + * the Difference-of-Gaussian result image. + */ + public static < I extends NumericType< I >, T extends NumericType< T > & NativeType< T > > void DoG( + final RandomAccessible< I > input, + final double[] sigmaSmaller, + final double[] sigmaLarger, + final ExecutorService service, + final RandomAccessibleInterval< T > dog) + { + DoG( sigmaSmaller, sigmaLarger, input, dog, service ); + } + /** * Compute the difference of Gaussian for the input. Input convolved with * Gaussian of sigmaSmaller is subtracted from input convolved with Gaussian @@ -97,6 +135,45 @@ public static < I extends NumericType< I >, T extends NumericType< T > & NativeT DoG( sigmaSmaller, sigmaLarger, input, Views.translate( g1, translation ), dog, service ); } + /** + * Compute the difference of Gaussian for the input. Input convolved with + * Gaussian of sigmaSmaller is subtracted from input convolved with Gaussian + * of sigmaLarger (where sigmaLarger > sigmaSmaller). + *

+ * This method differs from + * {@link #DoG(double[], double[], RandomAccessible, RandomAccessible, RandomAccessibleInterval, ExecutorService)} + * only in that its parameter order is tailored to an Op. The output comes + * last, and the primary input (the input image) comes first. + *

+ * + * @implNote op name="filter.dog", type=Computer + * @param input + * the input image extended to infinity (or at least covering the + * same interval as the dog result image, plus borders for + * convolution). + * @param sigmaSmaller + * stddev (in every dimension) of smaller Gaussian. + * @param sigmaLarger + * stddev (in every dimension) of larger Gaussian. + * @param tmp + * temporary image, must at least cover the same interval as the + * dog result image. + * @param service + * how many threads to use for the computation. + * @param dog + * the Difference-of-Gaussian result image. + */ + public static < I extends NumericType< I >, T extends NumericType< T > & NativeType< T > > void DoG( + final RandomAccessible< I > input, + final double[] sigmaSmaller, + final double[] sigmaLarger, + final RandomAccessible< T > tmp, + final ExecutorService service, + final RandomAccessibleInterval< T > dog) + { + DoG(sigmaSmaller, sigmaLarger, input, tmp, dog, service); + } + /** * Compute the difference of Gaussian for the input. Input convolved with * Gaussian of sigmaSmaller is subtracted from input convolved with Gaussian diff --git a/src/main/java/net/imglib2/algorithm/edge/SubpixelEdgelDetection.java b/src/main/java/net/imglib2/algorithm/edge/SubpixelEdgelDetection.java index db83aaf5f..e48e5a1b6 100644 --- a/src/main/java/net/imglib2/algorithm/edge/SubpixelEdgelDetection.java +++ b/src/main/java/net/imglib2/algorithm/edge/SubpixelEdgelDetection.java @@ -73,7 +73,8 @@ public class SubpixelEdgelDetection *

* Note: The input image type must be a signed type! Otherwise gradient * computation will not work. - * + * + * @implNote op name='features.subpixelEdgels', type=Function * @param input * input image * @param factory diff --git a/src/main/java/net/imglib2/algorithm/fill/FloodFill.java b/src/main/java/net/imglib2/algorithm/fill/FloodFill.java index 56415286e..7fbacb893 100644 --- a/src/main/java/net/imglib2/algorithm/fill/FloodFill.java +++ b/src/main/java/net/imglib2/algorithm/fill/FloodFill.java @@ -90,6 +90,7 @@ public class FloodFill * input pixel type * @param * fill label type + * @implNote op name='morphology.floodFill', type=Computer2 */ public static < T extends Type< T >, U extends Type< U > > void fill( final RandomAccessible< T > source, @@ -138,6 +139,7 @@ public static < T extends Type< T >, U extends Type< U > > void fill( * input pixel type * @param * fill label type + * @implNote op name='morphology.floodFill', type=Computer2 */ public static < T, U extends Type< U > > void fill( final RandomAccessible< T > source, @@ -180,6 +182,7 @@ public static < T, U extends Type< U > > void fill( * input pixel type * @param * fill label type + * @implNote op name='morphology.floodFill', type=Computer2 */ public static < T, U > void fill( final RandomAccessible< T > source, diff --git a/src/main/java/net/imglib2/algorithm/gauss3/Gauss3.java b/src/main/java/net/imglib2/algorithm/gauss3/Gauss3.java index 952d83d5d..a06b2ba89 100644 --- a/src/main/java/net/imglib2/algorithm/gauss3/Gauss3.java +++ b/src/main/java/net/imglib2/algorithm/gauss3/Gauss3.java @@ -74,6 +74,7 @@ public final class Gauss3 * {@link Parallelization} context. (By default, it will use the * {@link ForkJoinPool#commonPool() common ForkJoinPool}) * + * @implNote op name='filter.gauss', type=Computer * @param sigma * standard deviation of isotropic Gaussian. * @param source @@ -116,6 +117,7 @@ public static < S extends NumericType< S >, T extends NumericType< T > > void ga * {@link Parallelization} context. (By default, it will use the * {@link ForkJoinPool#commonPool() common ForkJoinPool}) * + * @implNote op name='filter.gauss', type=Computer * @param sigma * standard deviation in every dimension. * @param source diff --git a/src/main/java/net/imglib2/algorithm/gradient/PartialDerivative.java b/src/main/java/net/imglib2/algorithm/gradient/PartialDerivative.java index 343ea5da5..fbfac58ab 100644 --- a/src/main/java/net/imglib2/algorithm/gradient/PartialDerivative.java +++ b/src/main/java/net/imglib2/algorithm/gradient/PartialDerivative.java @@ -107,6 +107,7 @@ public static < T extends NumericType< T > > void gradientCentralDifference2( fi * @param es * {@link ExecutorService} providing workers for gradient * computation. Service is managed (created, shutdown) by caller. + * @implNote op name='filter.partialDerivative, filter.gradientCentralDifference', type=Computer2, priority='-1000.' */ public static < T extends NumericType< T > > void gradientCentralDifferenceParallel( final RandomAccessible< T > source, @@ -177,6 +178,7 @@ public static < T extends NumericType< T > > void gradientCentralDifferenceParal * output image * @param dimension * along which dimension the partial derivatives are computed + * @implNote op name='filter.partialDerivative, filter.gradientCentralDifference', type=Computer2, priority='-1000.' */ public static < T extends NumericType< T > > void gradientCentralDifference( final RandomAccessible< T > source, final RandomAccessibleInterval< T > result, final int dimension ) @@ -200,6 +202,7 @@ public static < T extends NumericType< T > > void gradientCentralDifference( fin * the gradient image plus a one pixel border in dimension. * @param result output image * @param dimension along which dimension the partial derivatives are computed + * @implNote op name='filter.gradientBackwardDifference', type=Computer2 */ public static < T extends NumericType< T > > void gradientBackwardDifference( final RandomAccessible< T > source, final RandomAccessibleInterval< T > result, final int dimension ) @@ -222,6 +225,7 @@ public static < T extends NumericType< T > > void gradientBackwardDifference( fi * the gradient image plus a one pixel border in dimension. * @param result output image * @param dimension along which dimension the partial derivatives are computed + * @implNote op name='filter.gradientForwardDifference', type=Computer2 */ public static < T extends NumericType< T > > void gradientForwardDifference( final RandomAccessible< T > source, final RandomAccessibleInterval< T > result, final int dimension ) diff --git a/src/main/java/net/imglib2/algorithm/kdtree/ConvexPolytope.java b/src/main/java/net/imglib2/algorithm/kdtree/ConvexPolytope.java index d8cb0b4f8..9dc11643e 100644 --- a/src/main/java/net/imglib2/algorithm/kdtree/ConvexPolytope.java +++ b/src/main/java/net/imglib2/algorithm/kdtree/ConvexPolytope.java @@ -65,6 +65,7 @@ public ConvexPolytope( final HyperPlane... hyperplanes ) /** * Apply an {@link AffineGet affine transformation} to a {@link HyperPlane}. * + * @implNote op name='transform.affine', type=Function * @param polytope * a polytope. * @param transform diff --git a/src/main/java/net/imglib2/algorithm/kdtree/HyperPlane.java b/src/main/java/net/imglib2/algorithm/kdtree/HyperPlane.java index d994762ba..8aef5aece 100644 --- a/src/main/java/net/imglib2/algorithm/kdtree/HyperPlane.java +++ b/src/main/java/net/imglib2/algorithm/kdtree/HyperPlane.java @@ -74,6 +74,7 @@ public double getDistance() /** * Apply an {@link AffineGet affine transformation} to a {@link HyperPlane}. * + * @implNote op name='transform.affine', type=Function * @param plane * a plane. * @param transform diff --git a/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponentAnalysis.java b/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponentAnalysis.java index c98339cfd..0a08f7bd6 100644 --- a/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponentAnalysis.java +++ b/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponentAnalysis.java @@ -117,6 +117,7 @@ public static < T > ToLongBiFunction< Localizable, T > idFromIntervalIndexer( fi * generalization for higher dimenions over a binary mask. {@code mask} and * {@code labeling} are expected to have equal min and max. * + * @implNote op name='labeling.cca', type=Computer * @param mask * Boolean mask to distinguish foreground ({@code true}) from * background ({@code false}). @@ -154,6 +155,7 @@ public static < B extends BooleanType< B >, L extends IntegerType< L > > void co * ({@link DiamondShape}), 8-neighborhood * ({@link RectangleNeighborhood}) and their generalisations for * higher dimensions. + * @implNote op name='labeling.cca', type=Computer2 */ public static < B extends BooleanType< B >, L extends IntegerType< L > > void connectedComponents( final RandomAccessibleInterval< B > mask, @@ -200,6 +202,7 @@ public static < B extends BooleanType< B >, L extends IntegerType< L > > void co * @param idForSet * Create id for a set from the root id of a set. Multiple calls * with the same argument should always return the same result. + * @implNote op name='labeling.cca', type=Computer2 */ public static < B extends BooleanType< B >, L extends IntegerType< L > > void connectedComponents( final RandomAccessibleInterval< B > mask, diff --git a/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponents.java b/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponents.java index c578e21eb..d6873f8b3 100644 --- a/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponents.java +++ b/src/main/java/net/imglib2/algorithm/labeling/ConnectedComponents.java @@ -99,6 +99,7 @@ public CollectNeighborLabelsFactory getFactory() * @param se * structuring element to use. 8-connected or 4-connected * (respectively n-dimensional analog) + * @implNote op name='labeling.cca', type=Computer2 */ public static < T extends IntegerType< T >, L, I extends IntegerType< I > > void labelAllConnectedComponents( final RandomAccessible< T > input, @@ -132,6 +133,7 @@ public static < T extends IntegerType< T >, L, I extends IntegerType< I > > void * (respectively n-dimensional analog) * @param service * service providing threads for multi-threading + * @implNote op name='labeling.cca', type=Computer2 */ public static < T extends IntegerType< T >, L, I extends IntegerType< I > > void labelAllConnectedComponents( final RandomAccessible< T > input, diff --git a/src/main/java/net/imglib2/algorithm/lazy/Lazy.java b/src/main/java/net/imglib2/algorithm/lazy/Lazy.java index 8a093af64..eee487136 100644 --- a/src/main/java/net/imglib2/algorithm/lazy/Lazy.java +++ b/src/main/java/net/imglib2/algorithm/lazy/Lazy.java @@ -157,6 +157,7 @@ else if ( DoubleType.class.isInstance( type ) ) * Create a memory {@link CachedCellImg} with a cell generator * {@link Consumer}. * + * @implNote op name='create.img, engine.create', type=Function * @param targetInterval * @param blockSize * @param type diff --git a/src/main/java/net/imglib2/algorithm/localextrema/LocalExtrema.java b/src/main/java/net/imglib2/algorithm/localextrema/LocalExtrema.java index f2b1bce5e..2dd60a6c7 100644 --- a/src/main/java/net/imglib2/algorithm/localextrema/LocalExtrema.java +++ b/src/main/java/net/imglib2/algorithm/localextrema/LocalExtrema.java @@ -167,6 +167,7 @@ public static < P, T > ArrayList< P > findLocalExtrema( final RandomAccessibleIn * {@code source} accordingly. The returned coordinate list is valid * for the original {@code source}. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema within this * {@link RandomAccessibleInterval} @@ -208,6 +209,7 @@ public static < P, T > List< P > findLocalExtrema( * {@code source} accordingly. The returned coordinate list is valid * for the original {@code source}. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema within this * {@link RandomAccessibleInterval} @@ -248,6 +250,7 @@ public static < P, T > List< P > findLocalExtrema( * The task is parallelized along the longest dimension of * {@code interval} * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema of the function defined by this * {@link RandomAccessible} @@ -287,6 +290,7 @@ public static < P, T > List< P > findLocalExtrema( * test for being an extremum can be specified as an implementation of the * {@link LocalNeighborhoodCheck} interface. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema of the function defined by this * {@link RandomAccessible} @@ -367,6 +371,7 @@ public static < P, T > List< P > findLocalExtrema( * expand {@code source} accordingly. The returned coordinate list is * valid for the original {@code source}. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema within this * {@link RandomAccessibleInterval} @@ -393,6 +398,7 @@ public static < P, T > List< P > findLocalExtrema( * {@code source} accordingly. The returned coordinate list is valid * for the original {@code source}. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema within this * {@link RandomAccessibleInterval} @@ -427,6 +433,7 @@ public static < P, T > List< P > findLocalExtrema( * * The local neighborhood is defined as {@link RectangleShape} with span 1. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema within this {@link RandomAccessible} * @param interval @@ -451,6 +458,7 @@ public static < P, T > List< P > findLocalExtrema( * test for being an extremum can be specified as an implementation of the * {@link LocalNeighborhoodCheck} interface. * + * @implNote op name='features.localExtrema', type=Function * @param source * Find local extrema within this {@link RandomAccessible} * @param interval @@ -495,6 +503,7 @@ public static < P, T > List< P > findLocalExtrema( * determining by how much a {@link RandomAccessibleInterval} should be * expanded to include min and max positions in the local extrema search. * + * @implNote op name='geom.borderSize', type=Function * @param shape * Defines the local neighborhood * @param nDim diff --git a/src/main/java/net/imglib2/algorithm/morphology/BlackTopHat.java b/src/main/java/net/imglib2/algorithm/morphology/BlackTopHat.java index 5c2857ee7..05cdd16a9 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/BlackTopHat.java +++ b/src/main/java/net/imglib2/algorithm/morphology/BlackTopHat.java @@ -77,7 +77,8 @@ public class BlackTopHat * allow for performance optimization through structuring element * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. - * + * + * @implNote op name='morphology.blackTopHat', type=Function * @param source * the source image. * @param strels @@ -120,7 +121,8 @@ public static < T extends RealType< T >> Img< T > blackTopHat( final Img< T > so * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.blackTopHat', type=Function * @param source * the source image. * @param strels @@ -159,7 +161,8 @@ public static < T extends Type< T > & Comparable< T > & Sub< T > > Img< T > blac * limited to flat structuring elements, only having {@code on/off} pixels, * contrary to grayscale structuring elements. This allows to simply use a * {@link Shape} as a type for these structuring elements. - * + * + * @implNote op name='morphology.blackTopHat', type=Function * @param source * the source image. * @param strel @@ -196,7 +199,8 @@ public static < T extends RealType< T >> Img< T > blackTopHat( final Img< T > so * (against {@link Comparable}) than any of the value found in the source * image, and the converse for the max value. These normally unseen * parameters are required to operate on {@code T extends Comparable & Sub}. - * + * + * @implNote op name='morphology.blackTopHat', type=Function * @param source * the source image. * @param strel @@ -261,6 +265,7 @@ public static < T extends Type< T > & Comparable< T > & Sub< T > > Img< T > blac * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.blackTopHat', type=Computer2 */ public static < T extends RealType< T > > void blackTopHat( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final int numThreads ) { @@ -320,6 +325,7 @@ public static < T extends RealType< T > > void blackTopHat( final RandomAccessib * sub-type of {@code T extends Comparable & Sub}, because we * want to be able to compare pixels between themselves and to * subtract them. + * @implNote op name='morphology.blackTopHat', type=Computer2 */ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopHat( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final T minVal, final T maxVal, final int numThreads ) { @@ -358,6 +364,7 @@ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopH * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.blackTopHat', type=Computer2 */ public static < T extends RealType< T > > void blackTopHat( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final int numThreads ) { @@ -411,6 +418,7 @@ public static < T extends RealType< T > > void blackTopHat( final RandomAccessib * sub-type of {@code T extends Comparable & Sub}, because we * want to be able to compare pixels between themselves and to * subtract them. + * @implNote op name='morphology.blackTopHat', type=Computer2 */ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopHat( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final T minVal, final T maxVal, final int numThreads ) { @@ -451,6 +459,7 @@ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopH * @param * the type of the source image. Must be a sub-type of * {@code T extends RealType}. + * @implNote op name='morphology.blackTopHat', type=Inplace1 */ public static < T extends RealType< T >> void blackTopHatInPlace( final RandomAccessible< T > source, final Interval interval, final List< ? extends Shape > strels, final int numThreads ) { @@ -513,6 +522,7 @@ public static < T extends RealType< T >> void blackTopHatInPlace( final RandomAc * sub-type of {@code T extends Comparable & Sub}, because we * want to be able to compare pixels between themselves and to * subtract them. + * @implNote op name='morphology.blackTopHat', type=Inplace1 */ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopHatInPlace( final RandomAccessible< T > source, final Interval interval, final List< ? extends Shape> strels, final T minVal, final T maxVal, final int numThreads ) { @@ -555,6 +565,7 @@ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopH * @param * the type of the source image. Must be a sub-type of * {@code T extends RealType}. + * @implNote op name='morphology.blackTopHat', type=Inplace1 */ public static < T extends RealType< T >> void blackTopHatInPlace( final RandomAccessible< T > source, final Interval interval, final Shape strel, final int numThreads ) { @@ -612,6 +623,7 @@ public static < T extends RealType< T >> void blackTopHatInPlace( final RandomAc * sub-type of {@code T extends Comparable & Sub}, because we * want to be able to compare pixels between themselves and to * subtract them. + * @implNote op name='morphology.blackTopHat', type=Inplace1 */ public static < T extends Type< T > & Comparable< T > & Sub< T >> void blackTopHatInPlace( final RandomAccessible< T > source, final Interval interval, final Shape strel, final T minVal, final T maxVal, final int numThreads ) { diff --git a/src/main/java/net/imglib2/algorithm/morphology/Closing.java b/src/main/java/net/imglib2/algorithm/morphology/Closing.java index 918c8a42c..f1b673693 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/Closing.java +++ b/src/main/java/net/imglib2/algorithm/morphology/Closing.java @@ -63,7 +63,8 @@ public class Closing * allow for performance optimization through structuring element * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. - * + * + * @implNote op name='morphology.close', type=Function * @param source * the {@link Img} to operate on. * @param strels @@ -104,7 +105,8 @@ public static final < T extends RealType< T >> Img< T > close( final Img< T > so * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.close', type=Function * @param source * the {@link Img} to operate on. * @param strels @@ -138,7 +140,8 @@ public static final < T extends Type< T > & Comparable< T > > Img< T > close( fi * >Closing_(morphology). *

* The closing operation is simply a dilation followed by an erosion. - * + * + * @implNote op name='morphology.close', type=Function * @param source * the {@link Img} to operate on. * @param strel @@ -174,7 +177,8 @@ public static final < T extends RealType< T >> Img< T > close( final Img< T > so * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.close', type=Function * @param source * the {@link Img} to operate on. * @param strel @@ -238,6 +242,7 @@ public static final < T extends Type< T > & Comparable< T > > Img< T > close( fi * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.close', type=Computer2 */ public static < T extends RealType< T > > void close( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final int numThreads ) { @@ -300,6 +305,7 @@ public static < T extends RealType< T > > void close( final RandomAccessible< T * @param * the type of the source and the result. Must extends * {@code Compparable}. + * @implNote op name='morphology.close', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void close( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final T minVal, final T maxVal, final int numThreads ) { @@ -349,6 +355,7 @@ public static < T extends Type< T > & Comparable< T > > void close( final Random * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.close', type=Computer2 */ public static < T extends RealType< T > > void close( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final int numThreads ) { @@ -406,6 +413,7 @@ public static < T extends RealType< T > > void close( final RandomAccessible< T * @param * the type of the source and the result. Must extends * {@code Comparable}. + * @implNote op name='morphology.close', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void close( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final T minVal, final T maxVal, final int numThreads ) { @@ -443,7 +451,8 @@ public static < T extends Type< T > & Comparable< T > > void close( final Random * allow for performance optimization through structuring element * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. - * + * + * @implNote op name='morphology.close', type=Inplace1 * @param source * the source image. * @param interval @@ -495,7 +504,8 @@ public static < T extends RealType< T > > void closeInPlace( final RandomAccessi * image, and conversely for the min value. These normally unseen parameters * are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.close', type=Inplace1 * @param source * the source image. * @param interval @@ -546,7 +556,8 @@ public static < T extends Type< T > & Comparable< T >> void closeInPlace( final * image, and conversely for the min value. These normally unseen parameters * are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.close', type=Inplace1 * @param source * the source image. * @param interval @@ -598,7 +609,8 @@ public static < T extends RealType< T > > void closeInPlace( final RandomAccessi * image, and conversely for the min value. These normally unseen parameters * are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.close', type=Inplace1 * @param source * the source image. * @param interval diff --git a/src/main/java/net/imglib2/algorithm/morphology/Dilation.java b/src/main/java/net/imglib2/algorithm/morphology/Dilation.java index 947f93a83..6b0f888aa 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/Dilation.java +++ b/src/main/java/net/imglib2/algorithm/morphology/Dilation.java @@ -76,6 +76,7 @@ public class Dilation * pixels, contrary to grayscale structuring elements. This allows to simply * use a {@link Shape} as a type for these structuring elements. * + * @implNote op names='morphology.dilate', type=Function * @param source * the source image. * @param strels @@ -121,6 +122,7 @@ public static < T extends RealType< T > > Img< T > dilate( final Img< T > source * image. This normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op names='morphology.dilate', type=Function * @param source * the source image. * @param strels @@ -160,6 +162,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > dilate( final I * pixels, contrary to grayscale structuring elements. This allows to simply * use a {@link Shape} as a type for these structuring elements. * + * @implNote op names='morphology.dilate', type=Function * @param source * the source image. * @param strel @@ -200,6 +203,7 @@ public static < T extends RealType< T >> Img< T > dilate( final Img< T > source, * image. This normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op names='morphology.dilate', type=Function * @param source * the source image. * @param strel @@ -259,6 +263,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > dilate( final I * the structuring element, as a list of {@link Shape}s. * @param numThreads * the number of threads to use for the calculation. + * @implNote op name='morphology.dilate', type=Computer2 */ public static < T extends RealType< T >> void dilate( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final int numThreads ) { @@ -316,6 +321,7 @@ public static < T extends RealType< T >> void dilate( final RandomAccessible< T * @param * the type of the source image and the dilation result. Must be * a sub-type of {@code T extends Comparable & Type}. + * @implNote op name='morphology.dilate', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void dilate( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final T minVal, final int numThreads ) { @@ -394,6 +400,7 @@ public static < T extends Type< T > & Comparable< T > > void dilate( final Rando * the structuring element, as a {@link Shape}. * @param numThreads * the number of threads to use for the calculation. + * @implNote op name='morphology.dilate', type=Computer2 */ public static < T extends RealType< T >> void dilate( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final int numThreads ) { @@ -446,6 +453,7 @@ public static < T extends RealType< T >> void dilate( final RandomAccessible< T * @param * the type of the source image and the dilation result. Must be * a sub-type of {@code T extends Comparable & Type}. + * @implNote op name='morphology.dilate', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void dilate( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final T minVal, int numThreads ) { @@ -597,6 +605,7 @@ public void run() * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.dilate', type=Function * @param source * the source image. * @param strels @@ -655,6 +664,7 @@ public static < T extends RealType< T > > Img< T > dilateFull( final Img< T > so * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.dilate', type=Function * @param source * the source image. * @param strels @@ -707,6 +717,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > dilateFull( fin * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.dilate', type=Function * @param source * the source image. * @param strel @@ -767,6 +778,7 @@ public static < T extends RealType< T >> Img< T > dilateFull( final Img< T > sou * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.dilate', type=Function * @param source * the source image. * @param strel @@ -821,6 +833,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > dilateFull( fin * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. * + * @implNote op name='morphology.dilate', type=Inplace1 * @param source * the source image. * @param interval @@ -870,6 +883,7 @@ public static < T extends RealType< T > > void dilateInPlace( final RandomAccess * image. This normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op name='morphology.dilate', type=Inplace1 * @param source * the source image. * @param interval @@ -913,6 +927,7 @@ public static < T extends Type< T > & Comparable< T > > void dilateInPlace( fina * e.g. {@link Views#extendValue(RandomAccessibleInterval, Type)} *

* + * @implNote op name='morphology.dilate', type=Inplace1 * @param source * the source image. * @param interval @@ -965,6 +980,7 @@ public static < T extends RealType< T > > void dilateInPlace( final RandomAccess * image. This normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op name='morphology.dilate', type=Inplace1 * @param source * the source image. * @param interval diff --git a/src/main/java/net/imglib2/algorithm/morphology/Erosion.java b/src/main/java/net/imglib2/algorithm/morphology/Erosion.java index aced24af1..a2177daf6 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/Erosion.java +++ b/src/main/java/net/imglib2/algorithm/morphology/Erosion.java @@ -76,6 +76,7 @@ public class Erosion * pixels, contrary to grayscale structuring elements. This allows to simply * use a {@link Shape} as a type for these structuring elements. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strels @@ -121,6 +122,7 @@ public static < T extends RealType< T > > Img< T > erode( final Img< T > source, * normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strels @@ -160,6 +162,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > erode( final Im * pixels, contrary to grayscale structuring elements. This allows to simply * use a {@link Shape} as a type for these structuring elements. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strel @@ -200,6 +203,7 @@ public static < T extends RealType< T >> Img< T > erode( final Img< T > source, * normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strel @@ -259,6 +263,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > erode( final Im * the structuring element, as a list of {@link Shape}s. * @param numThreads * the number of threads to use for the calculation. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends RealType< T >> void erode( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final int numThreads ) { @@ -316,6 +321,7 @@ public static < T extends RealType< T >> void erode( final RandomAccessible< T > * @param * the type of the source image and the erosion result. Must be a * sub-type of {@code T extends Comparable & Type}. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void erode( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final T maxVal, final int numThreads ) { @@ -394,6 +400,7 @@ public static < T extends Type< T > & Comparable< T > > void erode( final Random * the structuring element, as a {@link Shape}. * @param numThreads * the number of threads to use for the calculation. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends RealType< T >> void erode( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final int numThreads ) { @@ -446,6 +453,7 @@ public static < T extends RealType< T >> void erode( final RandomAccessible< T > * @param * the type of the source image and the erosion result. Must be a * sub-type of {@code T extends Comparable & Type}. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void erode( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final T maxVal, int numThreads ) { @@ -597,6 +605,7 @@ public void run() * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strels @@ -655,6 +664,7 @@ public static < T extends RealType< T > > Img< T > erodeFull( final Img< T > sou * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strels @@ -707,6 +717,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > erodeFull( fina * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strel @@ -767,6 +778,7 @@ public static < T extends RealType< T >> Img< T > erodeFull( final Img< T > sour * dimensions equals to the maximum of the number of dimension of both * source and structuring element. * + * @implNote op name='morphology.erode', type=Function * @param source * the source image. * @param strel @@ -821,6 +833,7 @@ public static < T extends Type< T > & Comparable< T > > Img< T > erodeFull( fina * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. * + * @implNote op name='morphology.erode', type=Inplace1 * @param source * the source image. * @param interval @@ -870,6 +883,7 @@ public static < T extends RealType< T > > void erodeInPlace( final RandomAccessi * normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op name='morphology.erode', type=Inplace1 * @param source * the source image. * @param interval @@ -913,6 +927,7 @@ public static < T extends Type< T > & Comparable< T > > void erodeInPlace( final * e.g. {@link Views#extendValue(RandomAccessibleInterval, Type)} *

* + * @implNote op name='morphology.erode', type=Inplace1 * @param source * the source image. * @param interval @@ -962,6 +977,7 @@ public static < T extends RealType< T > > void erodeInPlace( final RandomAccessi * normally unseen parameter is required to operate on * {@code T extends Comparable & Type}. * + * @implNote op name='morphology.erode', type=Inplace1 * @param source * the source image. * @param interval diff --git a/src/main/java/net/imglib2/algorithm/morphology/Opening.java b/src/main/java/net/imglib2/algorithm/morphology/Opening.java index ae7c716f3..6d6ad0718 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/Opening.java +++ b/src/main/java/net/imglib2/algorithm/morphology/Opening.java @@ -70,7 +70,8 @@ public class Opening * allow for performance optimization through structuring element * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. - * + * + * @implNote op name='morphology.open', type=Function * @param source * the {@link Img} to operate on. * @param strels @@ -111,7 +112,8 @@ public static final < T extends RealType< T >> Img< T > open( final Img< T > sou * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.open', type=Function * @param source * the {@link Img} to operate on. * @param strels @@ -145,7 +147,8 @@ public static final < T extends Type< T > & Comparable< T > > Img< T > open( fin * >Opening_(morphology). *

* The opening operation is simply an erosion followed by a dilation. - * + * + * @implNote op name='morphology.open', type=Function * @param source * the {@link Img} to operate on. * @param strel @@ -181,7 +184,8 @@ public static final < T extends RealType< T >> Img< T > open( final Img< T > sou * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.open', type=Function * @param source * the {@link Img} to operate on. * @param strel @@ -245,6 +249,7 @@ public static final < T extends Type< T > & Comparable< T > > Img< T > open( fin * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends RealType< T > > void open( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final int numThreads ) { @@ -307,6 +312,7 @@ public static < T extends RealType< T > > void open( final RandomAccessible< T > * @param * the type of the source and the result. Must extends * {@code Compparable}. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void open( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final T minVal, final T maxVal, final int numThreads ) { @@ -356,6 +362,7 @@ public static < T extends Type< T > & Comparable< T > > void open( final RandomA * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.open', type=Computer2 */ public static < T extends RealType< T > > void open( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final int numThreads ) { @@ -413,6 +420,7 @@ public static < T extends RealType< T > > void open( final RandomAccessible< T > * @param * the type of the source and the result. Must extends * {@code Comparable}. + * @implNote op name='morphology.erode', type=Computer2 */ public static < T extends Type< T > & Comparable< T > > void open( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final T minVal, final T maxVal, final int numThreads ) { @@ -450,7 +458,8 @@ public static < T extends Type< T > & Comparable< T > > void open( final RandomA * allow for performance optimization through structuring element * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is left untouched. - * + * + * @implNote op name='morphology.open', type=Inplace1 * @param source * the source image. * @param interval @@ -502,7 +511,8 @@ public static < T extends RealType< T > > void openInPlace( final RandomAccessib * image, and conversely for the min value. These normally unseen parameters * are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.open', type=Inplace1 * @param source * the source image. * @param interval @@ -545,7 +555,8 @@ public static < T extends Type< T > & Comparable< T >> void openInPlace( final R * It is the caller responsibility to ensure that the source is sufficiently * padded to properly cover the target range plus the shape size. See * e.g. {@link Views#extendValue(RandomAccessibleInterval, Type)}. - * + * + * @implNote op name='morphology.open', type=Inplace1 * @param source * the source image. * @param interval @@ -592,7 +603,8 @@ public static < T extends RealType< T > > void openInPlace( final RandomAccessib * image, and conversely for the min value. These normally unseen parameters * are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op name='morphology.open', type=Inplace1 * @param source * the source image. * @param interval diff --git a/src/main/java/net/imglib2/algorithm/morphology/StructuringElements.java b/src/main/java/net/imglib2/algorithm/morphology/StructuringElements.java index 04880bc5e..a96734db0 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/StructuringElements.java +++ b/src/main/java/net/imglib2/algorithm/morphology/StructuringElements.java @@ -628,6 +628,7 @@ public static final List< Shape > diamond( final int radius, final int dimension * @param increments * the values by which each element of the position vector is to * be incremented when iterating. + * @return a {@link Shape} structuring element. * @see [1] * Jones and Soilles.Periodic lines: Definition, cascades, and diff --git a/src/main/java/net/imglib2/algorithm/morphology/TopHat.java b/src/main/java/net/imglib2/algorithm/morphology/TopHat.java index 3f4015c53..85744155e 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/TopHat.java +++ b/src/main/java/net/imglib2/algorithm/morphology/TopHat.java @@ -78,7 +78,8 @@ public class TopHat * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is returned. *

- * + * + * @implNote op names='morphology.topHat, morphology.whiteTopHat', type=Function * @param source * the source image. * @param strels @@ -122,7 +123,8 @@ public static < T extends RealType< T >> Img< T > topHat( final Img< T > source, * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Type}. - * + * + * @implNote op names='morphology.topHat, morphology.whiteTopHat', type=Function * @param source * the source image. * @param strels @@ -161,7 +163,8 @@ public static < T extends Type< T > & Comparable< T > & Sub< T > > Img< T > topH * limited to flat structuring elements, only having {@code on/off} * pixels, contrary to grayscale structuring elements. This allows to simply * use a {@link Shape} as a type for these structuring elements. - * + * + * @implNote op names='morphology.topHat, morphology.whiteTopHat', type=Function * @param source * the source image. * @param strel @@ -199,7 +202,8 @@ public static < T extends RealType< T >> Img< T > topHat( final Img< T > source, * image, and the converse for the max value. These normally unseen * parameters are required to operate on * {@code T extends Comparable & Sub}. - * + * + * @implNote op names='morphology.topHat, morphology.whiteTopHat', type=Function * @param source * the source image. * @param strel @@ -264,6 +268,7 @@ public static < T extends Type< T > & Comparable< T > & Sub< T > > Img< T > topH * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Computer2 */ public static < T extends RealType< T >> void topHat( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final int numThreads ) { @@ -325,6 +330,7 @@ public static < T extends RealType< T >> void topHat( final RandomAccessible< T * sub-type of {@code T extends Comparable & Sub}, * because we want to be able to compare pixels between * themselves and to subtract them. + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Computer2 */ public static < T extends Type< T > & Comparable< T > & Sub< T >> void topHat( final RandomAccessible< T > source, final IterableInterval< T > target, final List< ? extends Shape > strels, final T minVal, final T maxVal, final int numThreads ) { @@ -364,6 +370,7 @@ public static < T extends Type< T > & Comparable< T > & Sub< T >> void topHat( f * @param * the type of the source and the result. Must extends * {@link RealType}. + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Computer2 */ public static < T extends RealType< T >> void topHat( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final int numThreads ) { @@ -419,6 +426,7 @@ public static < T extends RealType< T >> void topHat( final RandomAccessible< T * sub-type of {@code T extends Comparable & Sub}, * because we want to be able to compare pixels between * themselves and to subtract them. + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Computer2 */ public static < T extends Type< T > & Comparable< T > & Sub< T >> void topHat( final RandomAccessible< T > source, final IterableInterval< T > target, final Shape strel, final T minVal, final T maxVal, final int numThreads ) { @@ -447,7 +455,8 @@ public static < T extends Type< T > & Comparable< T > & Sub< T >> void topHat( f * allow for performance optimization through structuring element * decomposition. Each shape is processed in order as given in the list. If * the list is empty, the source image is left untouched. - * + * + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Inplace1 * @param source * the source image. * @param interval @@ -502,7 +511,8 @@ public static < T extends RealType< T >> void topHatInPlace( final RandomAccessi * conversely for the min value. These normally unseen parameters are * required to operate on * {@code T extends Comparable & Sub}. - * + * + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Inplace1 * @param source * the source image. * @param interval @@ -552,7 +562,8 @@ public static < T extends Type< T > & Comparable< T > & Sub< T >> void topHatInP * It is the caller responsibility to ensure that the source is sufficiently * padded to properly cover the target range plus the shape size. See * e.g. {@link Views#extendValue(RandomAccessibleInterval, Type)}. - * + * + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Inplace1 * @param source * the source image. * @param interval @@ -602,7 +613,8 @@ public static < T extends RealType< T >> void topHatInPlace( final RandomAccessi * conversely for the min value. These normally unseen parameters are * required to operate on * {@code T extends Comparable & Sub}. - * + * + * @implNote op name='morphology.topHat, morphology.whiteTopHat', type=Inplace1 * @param source * the source image. * @param interval diff --git a/src/main/java/net/imglib2/algorithm/morphology/distance/DistanceTransform.java b/src/main/java/net/imglib2/algorithm/morphology/distance/DistanceTransform.java index 24f4e2482..156847619 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/distance/DistanceTransform.java +++ b/src/main/java/net/imglib2/algorithm/morphology/distance/DistanceTransform.java @@ -122,6 +122,7 @@ public static enum DISTANCE_TYPE * should be squared, too). * @param * {@link RealType} input + * @implNote op name='image.distanceTransform', type=Inplace1 */ public static < T extends RealType< T > > void transform( final RandomAccessibleInterval< T > source, @@ -161,6 +162,7 @@ public static < T extends RealType< T > > void transform( * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', type=Inplace1 */ public static < T extends RealType< T > > void transform( final RandomAccessibleInterval< T > source, @@ -195,6 +197,7 @@ public static < T extends RealType< T > > void transform( * {@link RealType} input * @param * {@link RealType} intermediate results + * @implNote op name='image.distanceTransform', type=Computer2 */ public static < T extends RealType< T >, U extends RealType< U > > void transform( final RandomAccessible< T > source, @@ -239,6 +242,7 @@ public static < T extends RealType< T >, U extends RealType< U > > void transfor * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', type=Computer2 */ public static < T extends RealType< T >, U extends RealType< U > > void transform( final RandomAccessible< T > source, @@ -279,6 +283,7 @@ public static < T extends RealType< T >, U extends RealType< U > > void transfor * {@link RealType} intermediate results * @param * {@link RealType} output + * @implNote op name='image.distanceTransform', type=Computer3 */ public static < T extends RealType< T >, U extends RealType< U >, V extends RealType< V > > void transform( final RandomAccessible< T > source, @@ -343,6 +348,7 @@ public static < T extends RealType< T >, U extends RealType< U >, V extends Real * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', type=Computer3 */ public static < T extends RealType< T >, U extends RealType< U >, V extends RealType< V > > void transform( final RandomAccessible< T > source, @@ -383,6 +389,7 @@ public static < T extends RealType< T >, U extends RealType< U >, V extends Real * {@link Distance} between two points. * @param * {@link RealType} input + * @implNote op name='image.distanceTransform', type=Inplace1 */ public static < T extends RealType< T > > void transform( final RandomAccessibleInterval< T > source, @@ -415,6 +422,7 @@ public static < T extends RealType< T > > void transform( * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', type=Inplace1 */ public static < T extends RealType< T > > void transform( final RandomAccessibleInterval< T > source, @@ -442,6 +450,7 @@ public static < T extends RealType< T > > void transform( * {@link RealType} input * @param * {@link RealType} intermediate results + * @implNote op name='image.distanceTransform', type=Computer2 */ public static < T extends RealType< T >, U extends RealType< U > > void transform( final RandomAccessible< T > source, @@ -479,6 +488,7 @@ public static < T extends RealType< T >, U extends RealType< U > > void transfor * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', type=Computer2 */ public static < T extends RealType< T >, U extends RealType< U > > void transform( final RandomAccessible< T > source, @@ -512,6 +522,7 @@ public static < T extends RealType< T >, U extends RealType< U > > void transfor * {@link RealType} intermediate results * @param * {@link RealType} output + * @implNote op name='image.distanceTransform', type=Computer2 */ public static < T extends RealType< T >, U extends RealType< U >, V extends RealType< V > > void transform( final RandomAccessible< T > source, @@ -583,6 +594,7 @@ public static < T extends RealType< T >, U extends RealType< U >, V extends Real * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', type=Computer3 */ public static < T extends RealType< T >, U extends RealType< U >, V extends RealType< V > > void transform( final RandomAccessible< T > source, @@ -646,6 +658,7 @@ public static < T extends RealType< T >, U extends RealType< U >, V extends Real * {@link BooleanType} binary mask input * @param * {@link RealType} intermediate results + * @implNote op name='image.distanceTransform', priority='100', type=Computer2 */ public static < B extends BooleanType< B >, U extends RealType< U > > void binaryTransform( final RandomAccessible< B > source, @@ -688,6 +701,7 @@ public static < B extends BooleanType< B >, U extends RealType< U > > void binar * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', priority='100', type=Computer2 */ public static < B extends BooleanType< B >, U extends RealType< U > > void binaryTransform( final RandomAccessible< B > source, @@ -726,6 +740,7 @@ public static < B extends BooleanType< B >, U extends RealType< U > > void binar * {@link RealType} intermediate results * @param * {@link RealType} output + * @implNote op name='image.distanceTransform', priority='100', type=Computer3 */ public static < B extends BooleanType< B >, U extends RealType< U >, V extends RealType< V > > void binaryTransform( final RandomAccessible< B > source, @@ -779,6 +794,7 @@ public static < B extends BooleanType< B >, U extends RealType< U >, V extends R * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', priority='100', type=Computer3 */ public static < B extends BooleanType< B >, U extends RealType< U >, V extends RealType< V > > void binaryTransform( final RandomAccessible< B > source, @@ -818,6 +834,7 @@ public static < B extends BooleanType< B >, U extends RealType< U >, V extends R * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', priority='100', type=Inplace1 */ public static < B extends BooleanType< B > > void binaryTransform( final RandomAccessibleInterval< B > source, @@ -843,6 +860,7 @@ public static < B extends BooleanType< B > > void binaryTransform( * {@link BooleanType} binary mask input * @param * {@link RealType} intermediate results + * @implNote op name='image.distanceTransform', priority='100', type=Computer2 */ public static < B extends BooleanType< B >, U extends RealType< U > > void binaryTransform( final RandomAccessible< B > source, @@ -878,6 +896,7 @@ public static < B extends BooleanType< B >, U extends RealType< U > > void binar * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', priority='100', type=Computer2 */ public static < B extends BooleanType< B >, U extends RealType< U > > void binaryTransform( final RandomAccessible< B > source, @@ -909,6 +928,7 @@ public static < B extends BooleanType< B >, U extends RealType< U > > void binar * {@link RealType} intermediate results * @param * {@link RealType} output + * @implNote op name='image.distanceTransform', priority='100', type=Computer3 */ public static < B extends BooleanType< B >, U extends RealType< U >, V extends RealType< V > > void binaryTransform( final RandomAccessible< B > source, @@ -954,6 +974,7 @@ public static < B extends BooleanType< B >, U extends RealType< U >, V extends R * @throws ExecutionException * if the computation threw an exception (distance transform may * be computed only partially) + * @implNote op name='image.distanceTransform', priority='100', type=Computer3 */ public static < B extends BooleanType< B >, U extends RealType< U >, V extends RealType< V > > void binaryTransform( final RandomAccessible< B > source, diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Branchpoints.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Branchpoints.java index 864194e18..ae90dda4e 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Branchpoints.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Branchpoints.java @@ -69,11 +69,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, containing only skeleton branchpoints + * @implNote op name='morphology.branchpoints' + */ public static < T extends BooleanType< T > > Img< T > branchpoints( final Img< T > source ) { return new Branchpoints().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.branchpoints', type=Computer + */ public static < T extends BooleanType< T > > void branchpoints( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Branchpoints().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Bridge.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Bridge.java index 66e581455..991b0b272 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Bridge.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Bridge.java @@ -66,11 +66,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, with bridges placed to join objects with only a single separating pixel. + * @implNote op name='morphology.bridge' + */ public static < T extends BooleanType< T > > Img< T > bridge( final Img< T > source ) { return new Bridge().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.bridge', type=Computer + */ public static < T extends BooleanType< T > > void bridge( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Bridge().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Clean.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Clean.java index ff3a31b97..11fe23508 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Clean.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Clean.java @@ -65,11 +65,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, with isolated pixels removed + * @implNote op name='morphology.clean' + */ public static < T extends BooleanType< T > > Img< T > clean( final Img< T > source ) { return new Clean().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.clean', type=Computer + */ public static < T extends BooleanType< T > > void clean( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Clean().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Endpoints.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Endpoints.java index 875d9e165..14424dd03 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Endpoints.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Endpoints.java @@ -67,11 +67,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, containing only the elements at the end of a skeleton + * @implNote op name='morphology.endpoints' + */ public static < T extends BooleanType< T > > Img< T > endpoints( final Img< T > source ) { return new Endpoints().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.endpoints', type=Computer + */ public static < T extends BooleanType< T > > void endpoints( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Endpoints().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Fill.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Fill.java index f81fe3265..cac11d4a6 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Fill.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Fill.java @@ -65,11 +65,21 @@ protected boolean getExtendedValue() return true; } + /** + * @param source the input data + * @return a copy of {@code source}, with holes filled + * @implNote op name='morphology.fill' + */ public static < T extends BooleanType< T > > Img< T > fill( final Img< T > source ) { return new Fill().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.fill', type=Computer + */ public static < T extends BooleanType< T > > void fill( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Fill().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Hbreak.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Hbreak.java index 749f451c6..e18924ed9 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Hbreak.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Hbreak.java @@ -65,11 +65,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, with vertical bridges removed + * @implNote op name='morphology.hbreak' + */ public static < T extends BooleanType< T > > Img< T > hbreak( final Img< T > source ) { return new Hbreak().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.hbreak', type=Computer + */ public static < T extends BooleanType< T > > void hbreak( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Hbreak().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Life.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Life.java index 747a96297..90138516e 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Life.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Life.java @@ -65,11 +65,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, operated on by a single iteration of the Game of Life + * @implNote op name='morphology.life' + */ public static < T extends BooleanType< T > > Img< T > life( final Img< T > source ) { return new Life().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.life', type=Computer + */ public static < T extends BooleanType< T > > void life( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Life().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Majority.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Majority.java index b72484a04..887959303 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Majority.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Majority.java @@ -66,11 +66,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return an {@link Img} where each sample is equal to the majority value surrounding it in {@code source} + * @implNote op name='morphology.majority' + */ public static < T extends BooleanType< T > > Img< T > majority( final Img< T > source ) { return new Majority().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.majority', type=Computer + */ public static < T extends BooleanType< T > > void majority( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Majority().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Remove.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Remove.java index fd4e8b2b2..16beab357 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Remove.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Remove.java @@ -66,11 +66,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, keeping only the perimeter of solid objects. + * @implNote op name='morphology.outline' + */ public static < T extends BooleanType< T > > Img< T > remove( final Img< T > source ) { return new Remove().calculate( source ); } + /** + * @param source the input data + * @param target a prallocated output buffer + * @implNote op name='morphology.outline', type=Computer + */ public static < T extends BooleanType< T > > void remove( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Remove().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Spur.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Spur.java index 255b0e8c7..cf2d8f6e8 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Spur.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Spur.java @@ -57,11 +57,21 @@ */ public class Spur { + /** + * @param source the input data + * @return a copy of {@code source}, with spurs removed + * @implNote op name='morphology.spur' + */ public static < T extends BooleanType< T > > Img< T > spur( final Img< T > source ) { return new Spur2().calculate( new Spur1().calculate( source ) ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.spur', type=Computer + */ public static < T extends BooleanType< T > > void spur( final RandomAccessible< T > source, final IterableInterval< T > target ) { final T extendedVal = target.firstElement().createVariable(); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Thicken.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Thicken.java index 0a807d938..86234d288 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Thicken.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Thicken.java @@ -72,11 +72,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, where uniquely labeled objects are thickened + * @implNote op name='morphology.thicken' + */ public static < T extends BooleanType< T > > Img< T > thicken( final Img< T > source ) { return new Thicken().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.thicken', type=Computer + */ public static < T extends BooleanType< T > > void thicken( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Thicken().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Thin.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Thin.java index fa6e28cf1..694f83d35 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Thin.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Thin.java @@ -71,11 +71,21 @@ */ public class Thin { + /** + * @param source the input data + * @return a copy of {@code source}, with lines in the image being thinned + * @implNote op name='morphology.thin' + */ public static < T extends BooleanType< T > > Img< T > thin( final Img< T > source ) { return new Thin2().calculate( new Thin1().calculate( source ) ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.thin', type=Computer + */ public static < T extends BooleanType< T > > void thin( final RandomAccessible< T > source, final IterableInterval< T > target ) { final T extendedVal = target.firstElement().createVariable(); diff --git a/src/main/java/net/imglib2/algorithm/morphology/table2d/Vbreak.java b/src/main/java/net/imglib2/algorithm/morphology/table2d/Vbreak.java index 56ccc85e0..657b249d6 100644 --- a/src/main/java/net/imglib2/algorithm/morphology/table2d/Vbreak.java +++ b/src/main/java/net/imglib2/algorithm/morphology/table2d/Vbreak.java @@ -65,11 +65,21 @@ protected boolean getExtendedValue() return false; } + /** + * @param source the input data + * @return a copy of {@code source}, with horizontal bridges removed + * @implNote op name='morphology.vbreak' + */ public static < T extends BooleanType< T > > Img< T > vbreak( final Img< T > source ) { return new Vbreak().calculate( source ); } + /** + * @param source the input data + * @param target a preallocated output buffer + * @implNote op name='morphology.vbreak', type=Computer + */ public static < T extends BooleanType< T > > void vbreak( final RandomAccessible< T > source, final IterableInterval< T > target ) { new Vbreak().calculate( source, target ); diff --git a/src/main/java/net/imglib2/algorithm/stats/Max.java b/src/main/java/net/imglib2/algorithm/stats/Max.java index c470c37e7..c988e15d2 100644 --- a/src/main/java/net/imglib2/algorithm/stats/Max.java +++ b/src/main/java/net/imglib2/algorithm/stats/Max.java @@ -46,11 +46,12 @@ public class Max { /** * Find the maximum value and its position in an {@link IterableInterval}. - * + * * @param iterable * input interval. * @return a cursor positioned on the global maximum. If several maxima with * the same value exist, the cursor is on the first one. + * @implNote op name='stats.max', type=Function */ public static < T extends Comparable< T > > Cursor< T > findMax( final IterableInterval< T > iterable ) { diff --git a/src/main/java/net/imglib2/algorithm/stats/Min.java b/src/main/java/net/imglib2/algorithm/stats/Min.java index 8d8a077cf..574de67d1 100644 --- a/src/main/java/net/imglib2/algorithm/stats/Min.java +++ b/src/main/java/net/imglib2/algorithm/stats/Min.java @@ -46,7 +46,8 @@ public class Min { /** * Find the minimum value and its position in an {@link IterableInterval}. - * + * + * @implNote op name='stats.min', type=Function * @param iterable * input interval. * @return a cursor positioned on the global minimum. If several minima with diff --git a/src/main/java/net/imglib2/algorithm/stats/Normalize.java b/src/main/java/net/imglib2/algorithm/stats/Normalize.java index b7c0e7433..912ca505d 100644 --- a/src/main/java/net/imglib2/algorithm/stats/Normalize.java +++ b/src/main/java/net/imglib2/algorithm/stats/Normalize.java @@ -42,7 +42,8 @@ public class Normalize { /** * Normalize values of an {@link IterableInterval} to the range [min, max]. - * + * + * @implNote op name='image.normalize', type=Inplace1 * @param iterable * the interval to be normalized. * @param min