Search in sources :

Example 1 with ArrayContainerFactory

use of mpicbg.imglib.container.array.ArrayContainerFactory in project TrakEM2 by trakem2.

the class BinaryInterpolation2D method process.

/**
 * The first time, it will prepare the distance transform images, which are computed only once.
 */
public Image<BitType> process(final float weight) {
    synchronized (this) {
        if (null == idt1 || null == idt2) {
            ExecutorService exec = Executors.newFixedThreadPool(Math.min(2, Runtime.getRuntime().availableProcessors()));
            Future<IDT2D> fu1 = exec.submit(new NewITD2D(img1));
            Future<IDT2D> fu2 = exec.submit(new NewITD2D(img2));
            exec.shutdown();
            try {
                this.idt1 = fu1.get();
                this.idt2 = fu2.get();
            } catch (InterruptedException ie) {
                throw new RuntimeException(ie);
            } catch (ExecutionException e) {
                throw new RuntimeException(e);
            }
        }
    }
    // Cannot just img1.createNewImage() because the container may not be able to receive data,
    // such as the ShapeList container.
    final ImageFactory<BitType> f = new ImageFactory<BitType>(new BitType(), new ArrayContainerFactory());
    final Image<BitType> interpolated = f.createImage(new int[] { img1.getDimension(0), img1.getDimension(1) });
    if (img1.getContainer().compareStorageContainerCompatibility(img2.getContainer())) {
        final Cursor<IntType> c1 = idt1.result.createCursor();
        final Cursor<IntType> c2 = idt2.result.createCursor();
        final Cursor<BitType> ci = interpolated.createCursor();
        while (ci.hasNext()) {
            c1.fwd();
            c2.fwd();
            ci.fwd();
            if ((c1.getType().get() * weight) + (c2.getType().get() * (1 - weight)) > 0) {
                ci.getType().set(true);
            }
        }
        c1.close();
        c2.close();
        ci.close();
    } else {
        System.out.println("using option 2");
        final LocalizableByDimCursor<IntType> c1 = idt1.result.createLocalizableByDimCursor();
        final LocalizableByDimCursor<IntType> c2 = idt2.result.createLocalizableByDimCursor();
        final LocalizableByDimCursor<BitType> ci = interpolated.createLocalizableByDimCursor();
        while (ci.hasNext()) {
            ci.fwd();
            c1.setPosition(ci);
            c2.setPosition(ci);
            if (0 <= c1.getType().get() * weight + c2.getType().get() * (1 - weight)) {
                ci.getType().set(true);
            }
        }
        c1.close();
        c2.close();
        ci.close();
    }
    return interpolated;
}
Also used : ArrayContainerFactory(mpicbg.imglib.container.array.ArrayContainerFactory) IntType(mpicbg.imglib.type.numeric.integer.IntType) ImageFactory(mpicbg.imglib.image.ImageFactory) BitType(mpicbg.imglib.type.logic.BitType) ExecutorService(java.util.concurrent.ExecutorService) ExecutionException(java.util.concurrent.ExecutionException)

Example 2 with ArrayContainerFactory

use of mpicbg.imglib.container.array.ArrayContainerFactory in project TrakEM2 by trakem2.

the class IntegralImageMipMaps method wrap.

private static final Image<UnsignedByteType> wrap(final byte[] p, final int[] dims) {
    final Array<UnsignedByteType, ByteArray> c = new Array<UnsignedByteType, ByteArray>(new ArrayContainerFactory(), new ByteArray(p), dims, 1);
    final UnsignedByteType t = new UnsignedByteType(c);
    c.setLinkedType(t);
    return new Image<UnsignedByteType>(c, t);
}
Also used : ByteArray(mpicbg.imglib.container.basictypecontainer.array.ByteArray) Array(mpicbg.imglib.container.array.Array) UnsignedByteType(mpicbg.imglib.type.numeric.integer.UnsignedByteType) ByteArray(mpicbg.imglib.container.basictypecontainer.array.ByteArray) ArrayContainerFactory(mpicbg.imglib.container.array.ArrayContainerFactory) BufferedImage(java.awt.image.BufferedImage) FastIntegralImage(ini.trakem2.imaging.FastIntegralImage) IntegralImage(mpicbg.imglib.algorithm.integral.IntegralImage) Image(mpicbg.imglib.image.Image)

Aggregations

ArrayContainerFactory (mpicbg.imglib.container.array.ArrayContainerFactory)2 FastIntegralImage (ini.trakem2.imaging.FastIntegralImage)1 BufferedImage (java.awt.image.BufferedImage)1 ExecutionException (java.util.concurrent.ExecutionException)1 ExecutorService (java.util.concurrent.ExecutorService)1 IntegralImage (mpicbg.imglib.algorithm.integral.IntegralImage)1 Array (mpicbg.imglib.container.array.Array)1 ByteArray (mpicbg.imglib.container.basictypecontainer.array.ByteArray)1 Image (mpicbg.imglib.image.Image)1 ImageFactory (mpicbg.imglib.image.ImageFactory)1 BitType (mpicbg.imglib.type.logic.BitType)1 IntType (mpicbg.imglib.type.numeric.integer.IntType)1 UnsignedByteType (mpicbg.imglib.type.numeric.integer.UnsignedByteType)1