Class PixArray
- Direct Known Subclasses:
BinaryPixArray, BytePixArray, DoublePixArray, FloatPixArray, IntPixArray, LongPixArray, ShortPixArray
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal PixelDataTypeThe type of pixel that thisPixArraystores. -
Method Summary
Modifier and TypeMethodDescription__getPix()Gives direct access to the array of pixel values encapulated by thisPixArray.copyPix()Returns the a copy of the array of pixel values encapulated by thisPixArray.abstract int[]getHisto(int nbins) Computes a histogram of this PixArray.static final PixArraygetInstance(PixelDataType dataType, int nDim, int[] dims) Creates one of the sub-classes of PixArray Object of the type specified by the pixel data type.static final PixArraygetInstance(PixelDataType dataType, DataInputStream s, ByteOrder byteOrder, int nDim, int[] dims) Creates one of the sub-classes of PixArray Object of the type specified by the dataType with pixel data coming from aDataInputStream.int[]Finds the minimum and maximum values in this PixArray.abstract ObjectBasic pixel accessor method for images of any dimensionality.abstract ObjectGets/puts a single pixel value from/to this PixArray.abstract ObjectgetPutSlice(Object array, int slice, PixelOp op) Returns a 1-Dimensional array of type appropriate of the image pixel type, cast as an Object, with array indices [0 to (nRows * nCols)-1], representing the pixel intensity values for one slice of this image.static PixArraynewInstance(PixArray pixArray) abstract longwrite(BufferedOutputStream s, ByteOrder byteOrder) Writes this PixArray Object to a BufferedOutputStream.
-
Field Details
-
dataType
The type of pixel that thisPixArraystores.
-
-
Method Details
-
getInstance
Creates one of the sub-classes of PixArray Object of the type specified by the pixel data type.- Parameters:
dataType- a supported PixelDataType, one of:PixelDataType.BINARY,PixelDataType.BYTE,PixelDataType.UBYTE,PixelDataType.RGB_BY_PLANE,PixelDataType.RGB_INTERLACED,PixelDataType.COLOURPACKEDPixelDataType.SHORT,PixelDataType.USHORT,PixelDataType.INT,PixelDataType.UINT,PixelDataType.LONG,PixelDataType.FLOAT,PixelDataType.COMPLEX,PixelDataType.DOUBLE,PixelDataType.DOUBLECOMPLEX.
nDim- the dimensionality of the PixArray.dims- the dimensions of the PixArray.- Returns:
- a
PixArrayfor holding the specified array of pixel intensity values.
-
getInstance
public static final PixArray getInstance(PixelDataType dataType, DataInputStream s, ByteOrder byteOrder, int nDim, int[] dims) throws IOException Creates one of the sub-classes of PixArray Object of the type specified by the dataType with pixel data coming from aDataInputStream.- Parameters:
dataType- a supported PixelDataType, one ofPixelDataType.BINARY,PixelDataType.BYTE,PixelDataType.UBYTE,PixelDataType.RGB_BY_PLANE,PixelDataType.RGB_INTERLACED,PixelDataType.COLOURPACKEDPixelDataType.SHORT,PixelDataType.USHORT,PixelDataType.INT,PixelDataType.UINT,PixelDataType.LONG,PixelDataType.FLOAT,PixelDataType.COMPLEX,PixelDataType.DOUBLE,PixelDataType.DOUBLECOMPLEX.
s- the DataInputStream from which the pixel data values will be derived.byteOrder- the ByteOrder of the data in the input stream.nDim- the dimensionality of the PixArray.dims- the dimensions of the PixArray.- Returns:
- a
PixArraywith pixel intensity values read from the suppliedDataInputStream. - Throws:
IOException- if the pixel values cannot be derived froms.
-
copyPix
-
__getPix
-
getPutPix
public abstract Object getPutPix(Object array, int[] lowIdx, int[] highIdx, PixelOp op) throws IllegalArgumentException Basic pixel accessor method for images of any dimensionality. The int[] lowIdx contains indexes to the lowest index of the image pixel array that is required to be accessed, and highIdx indexes to the highest index of the image pixel array that is required to be accessed (exclusive). Only image dimensions from lowIdx to highIdx are accessed. For example, if you have a 10-slice 256x256 3-dimensional image and want the pixel values for just slices 2 to 5, then lowIdx would have values {2, 0, 0} and highIdx would have values {5, 255, 255}.- Parameters:
array- for get operations is an array to put pixels values in; for put operations contains the pixel values to put.lowIdx- contains indexes to the lowest index of the image pixel array that is required to be accessed (inclusive).highIdx- contains indexes to the highest index of the image pixel array that is required to be accessed (exclusive).op- the type of operation (PixelOp.GET or PixelOp.PUT).- Returns:
- a 1-dimensional array of the appropriate type cast to an Object.
- Throws:
IllegalArgumentException- if the class of the array is incorrect for this type of image.
-
getPutPix
public abstract Object getPutPix(Object pix, int[] pixIdx, PixelOp op) throws IllegalArgumentException Gets/puts a single pixel value from/to this PixArray. Returns a java Object of the appropriate class for the primitive pixel type, cast to an Object. This represents the pixel intensity value for the pixel indexed by each element of pixIdx.The
Classof pixel that must be supplied (for put operations), or that is returned (for get operations) is:
PixelDataType.BINARYimages - java.lang.Boolean.PixelDataType.BYTEimages - java.lang.Byte.PixelDataType.UBYTEimages - java.lang.Short.PixelDataType.RGB_INTERLACEDimages - java.awt.Color.PixelDataType.RGB_BY_PLANEimages - java.awt.Color.PixelDataType.COLOURPACKEDimages - java.awt.Color.PixelDataType.SHORTimages - java.lang.Short.PixelDataType.USHORTimages - java.lang.Integer.PixelDataType.INTimages - java.lang.Integer.PixelDataType.UINTimages - java.lang.Long.PixelDataType.FLOATimages - java.lang.Float.PixelDataType.COMPLEXimages - com.xinapse.image.Complex.PixelDataType.DOUBLEimages - java.lang.Double.PixelDataType.DOUBLECOMPLEXimages - com.xinapse.image.DoubleComplex.
- Parameters:
pix- a pixel value for a put operation or null for a get operation.pixIdx- an array of length at least nDim with elements 0 to nDim-1 equal to the index in that image dimension.op- the type of operation (PixelOp.GET or PixelOp.PUT).- Returns:
- a pixel value for a get operation or the supplied pixel for a put operation.
- Throws:
IllegalArgumentException- if the pixIdx is bad, or if the class of the pixel is incorrect for this type of image.
-
getPutSlice
public abstract Object getPutSlice(Object array, int slice, PixelOp op) throws IllegalArgumentException Returns a 1-Dimensional array of type appropriate of the image pixel type, cast as an Object, with array indices [0 to (nRows * nCols)-1], representing the pixel intensity values for one slice of this image. Applicable only to images with dimensionality of 2 or greater. If the image has dimensionality of greater than three, then this routine pretends that the image contains a just one multi-slice image, where in fact it contains series of multi-slice images - one for each of the extra dimensions. These can be accessed by providing a slice-number argument appropriate for the dimensionality of the image. For example, if the image is 4-dimensional with dimensions 10, 20, 256, 256, then this is consists of ten 3-D images each with 20 slices of 256x256 pixels. This routine pretends that thus is a 3-D image with 10x20 (=200) slices, so any slice from 0-199 could be accessed.- Parameters:
array- for get operations is an array to put pixels values in; for put operations contains the pixel values to put.slice- the slice number.op- the type of operation (PixelOp.GET or PixelOp.PUT).- Returns:
- a 1-dimensional array of the appropriate primitive type cast to an Object.
- Throws:
IllegalArgumentException- if the requested pixel values cannot be put or got, or if the class of the array is incorrect for this type of image.
-
write
Writes this PixArray Object to a BufferedOutputStream. All pixels are written.- Parameters:
s- the BufferedOutputStream.byteOrder- the ByteOrder of the data in the output stream.- Returns:
- the number of bytes written.
- Throws:
IOException- if the data cannot be written.
-
getMinMax
Finds the minimum and maximum values in this PixArray. For pixel data types that can be considered as integer, the true minium and maximum values are returned.For PixelDataType.BINARY, the values returned are always 0 and 1.
For RGB images (PixelDataType.RGB_INTERLACED, PixelDataType.RGB_BY_PLANE, PixelDataType.RGB_SLICE_BY_SLIVE_BY_PLANE, PixelDataType.COLOURPACKED), the values returned are the miniumum and maximum luminance values, where the luminance is (0.299 * Red) + (0.587 * Green) + (0.114 * Blue).
For floating types (PixelDataType.FLOAT and PixelDataType, boolean keepFoV.DOUBLE), the values returned are the integers that are the Math.floor() and Math.round() of the if (keepFoV) { pixelSizeRatio = (double) nOriginalSamples / nNewSamples; } real min and max respectively.
For PixelDataType.COMPLEX, the values returned are the min and max magnitudes of the complex values.
- Returns:
- an int[] of length 2, where the first element is the miniumum pixel value and the second is the maximum pixel value.
- Throws:
InvalidImageException- if the min/max can't be computed for the pixel data type, or if the intensity range in the pixels overflows that which can be stored as an int.
-
getHisto
Computes a histogram of this PixArray. This method may only return a meaningful histogram for data types that can be considered as integer.- Parameters:
nbins- the number of bins in the histogram.- Returns:
- an int[] of length specified by nbins, where each element of the array is the number of pixels of intensity min + i where i is the index into the array.
- Throws:
InvalidImageException- if the histogram can't be computed.
-
newInstance
-