Search in sources :

Example 46 with FloatProcessor

use of ij.process.FloatProcessor in project TrakEM2 by trakem2.

the class Utils method fastConvertToFloat.

/**
 * A method that circumvents the findMinAndMax when creating a float processor from an existing processor.  Ignores color calibrations and does no scaling at all.
 */
public static final FloatProcessor fastConvertToFloat(final ShortProcessor ip) {
    final short[] pix = (short[]) ip.getPixels();
    final float[] data = new float[pix.length];
    for (int i = 0; i < pix.length; i++) data[i] = pix[i] & 0xffff;
    final FloatProcessor fp = new FloatProcessorT2(ip.getWidth(), ip.getHeight(), data, ip.getColorModel(), ip.getMin(), ip.getMax());
    return fp;
}
Also used : FloatProcessor(ij.process.FloatProcessor) FloatProcessorT2(ini.trakem2.imaging.FloatProcessorT2)

Example 47 with FloatProcessor

use of ij.process.FloatProcessor in project TrakEM2 by trakem2.

the class ImageArrayConverter method ImageToDoubleArray1DZeroPadding.

public static double[] ImageToDoubleArray1DZeroPadding(ImageProcessor ip, int width, int height) {
    double[] image;
    Object pixelArray = ip.getPixels();
    int count = 0;
    int offsetX = (width - ip.getWidth()) / 2;
    int offsetY = (height - ip.getHeight()) / 2;
    if (offsetX < 0) {
        System.err.println("mpi.fruitfly.general.ImageArrayConverter.ImageToDoubleArray1DZeroPadding(): Zero-Padding size in X smaller than image! " + width + " < " + ip.getWidth());
        return null;
    }
    if (offsetY < 0) {
        System.err.println("mpi.fruitfly.general.ImageArrayConverter.ImageToDoubleArray1DZeroPadding(): Zero-Padding size in Y smaller than image! " + height + " < " + ip.getHeight());
        return null;
    }
    if (ip instanceof ByteProcessor) {
        image = new double[width * height];
        byte[] pixels = (byte[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[(y + offsetY) * width + x + offsetX] = pixels[count++] & 0xff;
    } else if (ip instanceof ShortProcessor) {
        image = new double[width * height];
        short[] pixels = (short[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[(y + offsetY) * width + x + offsetX] = pixels[count++] & 0xffff;
    } else if (ip instanceof FloatProcessor) {
        image = new double[width * height];
        float[] pixels = (float[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[(y + offsetY) * width + x + offsetX] = pixels[count++];
    } else // RGB
    {
        image = new double[width * height];
        int[] pixels = (int[]) pixelArray;
    // still unknown how to do...
    /*
            for (int y = 0; y < ip.getHeight(); y++)
                for (int x = 0; x < ip.getWidth(); x++)
                        image[x][y] = pixels[count++];// & 0xffffff;
            */
    }
    return image;
}
Also used : ByteProcessor(ij.process.ByteProcessor) FloatProcessor(ij.process.FloatProcessor) Point(java.awt.Point) ShortProcessor(ij.process.ShortProcessor)

Example 48 with FloatProcessor

use of ij.process.FloatProcessor in project TrakEM2 by trakem2.

the class ImageArrayConverter method ImageToIntArray.

public static int[][] ImageToIntArray(ImageProcessor ip) {
    int[][] image;
    Object pixelArray = ip.getPixels();
    int count = 0;
    if (ip instanceof ByteProcessor) {
        image = new int[ip.getWidth()][ip.getHeight()];
        byte[] pixels = (byte[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[x][y] = pixels[count++] & 0xff;
    } else if (ip instanceof ShortProcessor) {
        image = new int[ip.getWidth()][ip.getHeight()];
        short[] pixels = (short[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[x][y] = pixels[count++] & 0xffff;
    } else if (ip instanceof FloatProcessor) {
        image = new int[ip.getWidth()][ip.getHeight()];
        float[] pixels = (float[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[x][y] = (int) pixels[count++];
    } else // RGB
    {
        image = new int[ip.getWidth()][ip.getHeight()];
        int[] pixels = (int[]) pixelArray;
    // still unknown how to do...
    /*
            for (int y = 0; y < ip.getHeight(); y++)
                for (int x = 0; x < ip.getWidth(); x++)
                        image[x][y] = pixels[count++];// & 0xffffff;
            */
    }
    return image;
}
Also used : ByteProcessor(ij.process.ByteProcessor) FloatProcessor(ij.process.FloatProcessor) Point(java.awt.Point) ShortProcessor(ij.process.ShortProcessor)

Example 49 with FloatProcessor

use of ij.process.FloatProcessor in project TrakEM2 by trakem2.

the class ImageArrayConverter method ImageToFloatArray2DZeroPadding.

public static FloatArray2D ImageToFloatArray2DZeroPadding(ImageProcessor ip, int width, int height) {
    FloatArray2D image = new FloatArray2D(width, height);
    Object pixelArray = ip.getPixels();
    int count = 0;
    int offsetX = (width - ip.getWidth()) / 2;
    int offsetY = (height - ip.getHeight()) / 2;
    if (offsetX < 0) {
        System.err.println("mpi.fruitfly.general.ImageArrayConverter.ImageToFloatArray2DZeroPadding(): Zero-Padding size in X smaller than image! " + width + " < " + ip.getWidth());
        return null;
    }
    if (offsetY < 0) {
        System.err.println("mpi.fruitfly.general.ImageArrayConverter.ImageToFloatArray2DZeroPadding(): Zero-Padding size in Y smaller than image! " + height + " < " + ip.getHeight());
        return null;
    }
    if (ip instanceof ByteProcessor) {
        byte[] pixels = (byte[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image.set(pixels[count++] & 0xff, x + offsetX, y + offsetY);
    } else if (ip instanceof ShortProcessor) {
        short[] pixels = (short[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image.set(pixels[count++] & 0xffff, x + offsetX, y + offsetY);
    } else if (ip instanceof FloatProcessor) {
        float[] pixels = (float[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image.set(pixels[count++], x + offsetX, y + offsetY);
    } else // RGB
    {
        int[] pixels = (int[]) pixelArray;
    // still unknown how to do...
    /*
            for (int y = 0; y < ip.getHeight(); y++)
                for (int x = 0; x < ip.getWidth(); x++)
                        image[x][y] = pixels[count++];// & 0xffffff;
            */
    }
    return image;
}
Also used : ByteProcessor(ij.process.ByteProcessor) FloatArray2D(mpi.fruitfly.math.datastructures.FloatArray2D) FloatProcessor(ij.process.FloatProcessor) Point(java.awt.Point) ShortProcessor(ij.process.ShortProcessor)

Example 50 with FloatProcessor

use of ij.process.FloatProcessor in project TrakEM2 by trakem2.

the class ImageArrayConverter method ImageToDoubleArray1D.

public static double[] ImageToDoubleArray1D(ImageProcessor ip) {
    double[] image;
    Object pixelArray = ip.getPixels();
    int count = 0;
    if (ip instanceof ByteProcessor) {
        image = new double[ip.getWidth() * ip.getHeight()];
        byte[] pixels = (byte[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[count] = pixels[count++] & 0xff;
    } else if (ip instanceof ShortProcessor) {
        image = new double[ip.getWidth() * ip.getHeight()];
        short[] pixels = (short[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[count] = pixels[count++] & 0xffff;
    } else if (ip instanceof FloatProcessor) {
        image = new double[ip.getWidth() * ip.getHeight()];
        float[] pixels = (float[]) pixelArray;
        for (int y = 0; y < ip.getHeight(); y++) for (int x = 0; x < ip.getWidth(); x++) image[count] = pixels[count++];
    } else // RGB
    {
        image = new double[ip.getWidth() * ip.getHeight()];
        int[] pixels = (int[]) pixelArray;
    // still unknown how to do...
    /*
            for (int y = 0; y < ip.getHeight(); y++)
                for (int x = 0; x < ip.getWidth(); x++)
                        image[x][y] = pixels[count++];// & 0xffffff;
            */
    }
    return image;
}
Also used : ByteProcessor(ij.process.ByteProcessor) FloatProcessor(ij.process.FloatProcessor) Point(java.awt.Point) ShortProcessor(ij.process.ShortProcessor)

Aggregations

FloatProcessor (ij.process.FloatProcessor)174 ImageProcessor (ij.process.ImageProcessor)30 SeededTest (uk.ac.sussex.gdsc.test.junit5.SeededTest)26 Rectangle (java.awt.Rectangle)23 Test (org.junit.Test)22 ByteProcessor (ij.process.ByteProcessor)21 ShortProcessor (ij.process.ShortProcessor)20 Point (java.awt.Point)20 Test (org.junit.jupiter.api.Test)20 ImagePlus (ij.ImagePlus)19 ImageStack (ij.ImageStack)19 Future (java.util.concurrent.Future)12 ColorProcessor (ij.process.ColorProcessor)11 ArrayList (java.util.ArrayList)9 LinkedList (java.util.LinkedList)8 Fht (uk.ac.sussex.gdsc.core.ij.process.Fht)7 Point (mpicbg.models.Point)6 FHT2 (ij.process.FHT2)5 File (java.io.File)5 UniformRandomProvider (org.apache.commons.rng.UniformRandomProvider)5