Class UNCImage

java.lang.Object
com.xinapse.multisliceimage.MultiSliceImage
com.xinapse.multisliceimage.UNC.UNCImage
All Implemented Interfaces:
ReadableImage, WritableImage, InfoStorer, AutoCloseable, Cloneable

public class UNCImage extends MultiSliceImage implements InfoStorer, AutoCloseable
This class is a representation of a multi-dimensional image in the University of North Carolina (UNC) format. A UNCImage object may be either purely held in memory, or may have its pixel data kept on disk. Note that only big-endian byte ordering is implemented and supported.
  • Field Details

    • DEFAULT_OVERWRITE

      public static final boolean DEFAULT_OVERWRITE
      The default setting for the whether UNC images can be overwritten.
      See Also:
    • N_DIMV

      public static final int N_DIMV
      The maximum dimensionality of an image.
      See Also:
    • N_HISTOGRAM

      public static final int N_HISTOGRAM
      The number of entries in an image histogram
      See Also:
  • Constructor Details

    • UNCImage

      public UNCImage()
      Creates an uninitialised instance of a UNCImage. Needed so that newInstance() method can be called on the class.
    • UNCImage

      public UNCImage(String fileName, UNCPixFormat pixform, int dimc, int[] dimv) throws InvalidImageException, IOException
      Creates a disk-based UNCImage with the given type of pixel and dimensions. dimc should be greater that 1 and less than or equal to nDIMV.
      Parameters:
      fileName - the name of the file to be created.
      pixform - the type of image to be created (e.g. UNCPixFormat.GREY).
      dimc - the dimensionality of the image.
      dimv - an array of length at least dimc containing the number of picture elements in each dimension. For example, in a 3-dimensional image, dimv[0] is the number of slices, dimv[1] the number of rows, and dimv[2] the number of columns.
      Throws:
      InvalidImageException - if the image cannot be created.
      IOException - if an I/O error occurs.
    • UNCImage

      public UNCImage(File f, UNCPixFormat pixform, int dimc, int[] dimv) throws InvalidImageException, IOException
      Creates a disk-based UNCImage with the given type of pixel and dimensions. dimc should be greater that 1 and less than or equal to nDIMV.
      Parameters:
      f - is File Object representing the path of the file to be created.
      pixform - the type of image to be created (e.g. UNCPixFormat.GREY).
      dimc - the dimensionality of the image.
      dimv - an array of length at least dimc containing the number of picture elements in each dimension. For example, in a 3-dimensional image, dimv[0] is the number of slices, dimv[1] the number of rows, and dimv[2] the number of columns.
      Throws:
      InvalidImageException - if the image cannot be created.
      IOException - if an I/O error occurs.
    • UNCImage

      public UNCImage(UNCPixFormat pixform, int dimc, int[] dimv) throws InvalidImageException
      Creates an in-memory UNCImage with the given type of pixel and dimensions. dimc should be greater that 1 and less than or equal to nDIMV.
      Parameters:
      pixform - the type of image to be created (e.g. UNCPixFormat.GREY).
      dimc - the dimensionality of the image.
      dimv - an array of length at least dimc containing the number of picture elements in each dimension. For example, in a 3-dimensional image, dimv[0] is the number of slices, dimv[1] the number of rows, and dimv[2] the number of columns.
      Throws:
      InvalidImageException - if the image cannot be created.
    • UNCImage

      public UNCImage(DataInputStream s, boolean skipPixelData) throws InvalidImageException
      Creates an in-memory UNCImage, loading all information from the data input stream. Optionally skips over loading of the pixel data.
      Parameters:
      s - the DataInputStream.
      skipPixelData - if true then pixel data is not loaded and cannot later be accessed.
      Throws:
      InvalidImageException - if the image cannot be loaded.
  • Method Details

    • newInstance

      public static UNCImage newInstance(URL url) throws InvalidImageException, UNCException, IOException
      Creates an in-memory UNCImage, loading all information from a URL.
      Parameters:
      url - the URL that will give a UNC image data stream.
      Returns:
      a new UNCImage loaded from a URL.
      Throws:
      InvalidImageException - if the image cannot be loaded.
      UNCException - if the image cannot be loaded for UNC-specific reasons.
      IOException - if an I/O error occurs while loading the image.
    • newInstance

      public static UNCImage newInstance(URL url, boolean skipPixelData) throws InvalidImageException, UNCException, IOException
      Creates an in-memory UNCImage, loading information from a URL. Optionally skips loading of the pixel data into memory. If skipPixelData is true, then the pixel data will not be accessible.
      Parameters:
      url - the URL that will give a UNC image data stream.
      skipPixelData - if true then pixel data is not loaded and cannot later be accessed.
      Returns:
      a new UNCImage loaded from a URL.
      Throws:
      InvalidImageException - if the image cannot be loaded.
      UNCException - if the image cannot be loaded for UNC-specific reasons.
      IOException - if an I/O error occurs while loading the image.
    • newInstance

      public static UNCImage newInstance(String fileName, String mode) throws InvalidImageException, IOException, FileNotFoundException
      Opens an existing disk-based UNC image.
      Parameters:
      fileName - the name of the image file.
      mode - the open mode. Can be either "r" (read-only) or "rw" (read-write).
      Returns:
      a new UNCImage, loaded from a disk file.
      Throws:
      InvalidImageException - if the mode is invalid or the image cannot be read.
      FileNotFoundException - if the image file doesn't exist.
      IOException - if an I/O error occurs.
    • newInstance

      public static UNCImage newInstance(File f, String mode) throws InvalidImageException, IOException, FileNotFoundException
      Opens an existing disk-based UNC image.
      Parameters:
      f - a File object representing the path to this image file.
      mode - the open mode. Can be either "r" (read-only) or "rw" (read-write).
      Returns:
      a new UNCImage, loaded from a disk file.
      Throws:
      InvalidImageException - if the mode is invalid or the image cannot be read.
      FileNotFoundException - if the image file doesn't exist.
      IOException - if an I/O error occurs.
    • newInstance

      public static UNCImage newInstance(InputStream s) throws InvalidImageException
      Creates an in-memory UNCImage, loading information from an input stream.
      Parameters:
      s - the InputStream.
      Returns:
      a new UNCImage, loaded from an input stream.
      Throws:
      InvalidImageException - if the image cannot be loaded.
    • newInstance

      public static UNCImage newInstance(InputStream s, boolean skipPixelData) throws InvalidImageException
      Creates an in-memory UNCImage, loading information from the input stream. Optionally skips over loading of the pixel data.
      Parameters:
      s - the InputStream.
      skipPixelData - if true then pixel data is not loaded and cannot later be accessed.
      Returns:
      a new UNCImage, loaded from an input stream.
      Throws:
      InvalidImageException - if the image cannot be loaded.
    • getByteOrder

      public ByteOrder getByteOrder()
      Description copied from class: MultiSliceImage
      Returns the byte order for this image.
      Specified by:
      getByteOrder in class MultiSliceImage
      Returns:
      the byte oder for this image, or null if the byte order is not defined yet (in-memory images only).
    • isUNCImage

      public static boolean isUNCImage(URL url)
      Returns true if the URL produces a UNCImage input stream. Returns false otherwise.
      Parameters:
      url - the URL to be tested
      Returns:
      true if the URL produces a UNCImage input stream; false otherwise.
    • getPreviewIcon

      public static PreviewIcon getPreviewIcon(File f, boolean withImagePreview)
      Returns the PreviewIcon for a UNC image, or null if the supplied File does not represent a UNC image.
      Parameters:
      f - the File to be tested.
      withImagePreview - whether a image preview is to be generated. Generating an image preview will take longer than not generating one.
      Returns:
      a PreviewIcon if the File produces a UNCImage; null otherwise.
    • isUNCImage

      public static boolean isUNCImage(String fileName)
      Returns true if the fileName is the name of a UNC Image file. Returns false otherwise.
      Parameters:
      fileName - the name of a file to be tested.
      Returns:
      true if a UNCImage file with the specified name exists on disk; false otherwise.
    • isUNCImage

      public static boolean isUNCImage(File f)
      Returns true if the File is a UNC Image File. Returns false otherwise.
      Parameters:
      f - the File to be tested.
      Returns:
      true if the File is a UNC Image File; false otherwise.
    • disposeImageData

      public void disposeImageData()
      Description copied from interface: ReadableImage
      Gives this image the option to free up resources by removing access to image data. After this method is called, image data may no longer be accessible, and method calls to access it may result in an Exception being thrown.
      Specified by:
      disposeImageData in interface ReadableImage
    • close

      public void close() throws IOException
      Closes a UNCImage and frees up resources. For in-memory UNCImages, this merely explicity frees resources so that the garbage collector can work more efficiently. However, for disk-based images it is essential to apply the close() method. Image data is written to disk during the put() methods, but other information - the title and the info fields are only written to disk by the close() method. If the close() method is not applied to a disk-based UNCImage, then any changes to the title and info fields will be lost. Any further operations to a closed UNCImage are not possible, and may cause an exception to be thrown.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface ReadableImage
      Throws:
      IOException - if the file cannot be written or closed.
    • isOpen

      public boolean isOpen()
      Description copied from interface: ReadableImage
      Tests whether this image is still open.
      Specified by:
      isOpen in interface ReadableImage
      Returns:
      true if the image is still open for reading and (if opened read/write) writing; false otherwise.
    • write

      public String write(String fileName) throws InvalidImageException
      Description copied from interface: WritableImage
      Writes this WritableImage to a file (or possibly a pair of header/image files).
      Specified by:
      write in interface WritableImage
      Parameters:
      fileName - with which the image is to be written.
      Returns:
      the actual file name to which the image was written.
      Throws:
      InvalidImageException - if the image cannot be written.
    • getPreferredOverwrite

      public static boolean getPreferredOverwrite()
      Returns whether the user prefers to overwrite UNC images.
      Returns:
      true if the user prefers to overwrite existsing UNC images; false if UNC will not be overwritten.
    • savePreferredOverwrite

      public static void savePreferredOverwrite(boolean b)
      Saves whether the user prefers to overwrite UNC images.
      Parameters:
      b - true if the user prefers to overwrite existsing UNC images; false if UNC are not to be overwritten.
    • write

      public void write(DataOutputStream s) throws InvalidImageException
      Writes this UNCImage to a DataOutputStream.
      Parameters:
      s - the DataOutputStream.
      Throws:
      InvalidImageException - if the image cannot be written.
    • getBytesPerPixel

      public int getBytesPerPixel()
      Returns the number of bytes per pixel for this image.
      Returns:
      the number of bytes per pixel.
    • getNativeHeader

      public String getNativeHeader()
      Description copied from interface: ReadableImage
      Returns a String showing the 'native' header for this image.
      Specified by:
      getNativeHeader in interface ReadableImage
      Returns:
      a String describing the 'native' header for this image.
    • toString

      public String toString()
      Returns a string describing this image.
      Overrides:
      toString in class Object
      Returns:
      a String that describes the image.
    • toHTML

      public String toHTML()
      Returns an HTML string describing this image.
      Returns:
      a String that describes the image in HTML format.
    • setMinMax

      public void setMinMax(int min, int max) throws InvalidImageException
      Sets the min and max pixel intensity fields for this UNCImage. Also sets the valid flag to true.
      Specified by:
      setMinMax in interface WritableImage
      Specified by:
      setMinMax in class MultiSliceImage
      Parameters:
      min - the minimum pixel value in the image.
      max - the maximum pixel value in the image.
      Throws:
      InvalidImageException - if the image is read-only or if the supplied values are unsuitable for this image.
    • getDimc

      public int getDimc()
      Returns the dimensionality of this image.
      Returns:
      dimc, the dimensionality.
    • getNDim

      public int getNDim()
      Returns the MultiSliceImage dimensionality of this image.
      Specified by:
      getNDim in interface ReadableImage
      Returns:
      the dimensionality.
    • getDimv

      public int[] getDimv() throws IllegalStateException
      Returns the dimensions of this image. An integer array of length N_DIMV is returned with elements 0 to dimc-1 containing useful information about the numbers of pixels in each dimension of the image. The lowest array element contain the most slowly-varying image component. For example in a 3-dimensional image, dimv[0] is the number of slices, dimv[1] the number of rows, and dimv[2] the number of columns.
      Returns:
      dimc an array of image dimensions.
      Throws:
      IllegalStateException - if there is something strange about the dimensionality of this image.
    • getDims

      public int[] getDims() throws IllegalStateException
      Description copied from interface: ReadableImage
      Returns the dimensions (numbers of samples in each image dimension) of this image.
      Specified by:
      getDims in interface ReadableImage
      Returns:
      an array with length equal to the image dimensionality, containing the numbers of pixels (samples) in each dimension of the image. By convention, element (nDim-1) contains the number of columns, element (nDim-2) the number of rows, etc. For example, in a 4-dimensional image, dims[0] is the number of frames, dims[1] the number of slices, dims[2] the number of rows and dims[3] the number of columns.
      Throws:
      IllegalStateException
    • getPixformat

      public UNCPixFormat getPixformat()
      Returns the pixel format (pixformat) of this image.
      Returns:
      a UNCPixFormat representing a particular pixel format.
    • getStoredPixelDataType

      public PixelDataType getStoredPixelDataType()
      Description copied from interface: ReadableImage
      Returns a PixelDataType representing the data type of this image, as the pixel values are stored on disk.
      Specified by:
      getStoredPixelDataType in interface ReadableImage
      Returns:
      the PixelDataType representing the data type of this image as stored on disk.
    • getFileDataOffset

      public int getFileDataOffset()
      Returns the byte offset into the disk-based file format where pixel data begins.
      Specified by:
      getFileDataOffset in class MultiSliceImage
      Returns:
      the byte offset to the start of pixel data for images that are written to disk.
    • getTitle

      public String getTitle()
      Returns the title of this image.
      Specified by:
      getTitle in interface ReadableImage
      Returns:
      the title String.
    • setTitle

      public void setTitle(String newTitle)
      Sets the title of this image. If the new title String is longer than is allowed by the UNC format, then it is truncated before being applied. If the image is read-only, then this method does nothing.
      N.B. For disk-based images, the changes in the title will not be reflected on disk unless the close() method is called.
      Specified by:
      setTitle in interface WritableImage
      Parameters:
      newTitle - the new title to be assigned to this image.
    • putPix

      public void putPix(Object array, int[] lowIdx, int[] highIdx) throws IllegalStateException
      Description copied from class: MultiSliceImage
      Put pixel values from a specified array to this image. array is an array of the correct type of element for this image from which pixel values will be copied; it must be cast to an Object and must have the right number of elements to copy to the pixel values requested. The lowIdx and highIdx int arrays should have at least nDim elements, and the elements specify the pixel number range for each dimension. For example, if an image has nDim = 3, and dims[] = {5, 256, 256}, then pixels for the middle slices 4 will be returned by setting lowIdx to {1, 0, 0} and highIdx to {4, 255, 255}.
      Specified by:
      putPix in interface WritableImage
      Overrides:
      putPix in class MultiSliceImage
      Parameters:
      array - a 1-dimensional array of pixel values of the correct java primitive data type to put to the image.
      lowIdx - an array of int specifying the low index of pixel values to put.
      highIdx - an array of int specifying the high index of pixel values to put.
      Throws:
      IllegalStateException - if an error occurs while accessing the pixel values.
    • putPix

      public void putPix(Object pix, int[] pixIdx) throws IOException
      Description copied from class: MultiSliceImage
      Puts a single pixel value to the image.
      Specified by:
      putPix in interface WritableImage
      Overrides:
      putPix in class MultiSliceImage
      Parameters:
      pix - the pixel value to put, as a suitable Object.
      pixIdx - an int[] of length at least equal to nDim for this image where each element corresponds to an index to the pixel in each dimension. The first element of pixIdx refers to the slowest-varying dimension, and the last relevant element refers to the fastest-varying dimension. For example, for a 3-D image, pixIdx[0] refers to the slice dimension, and pixIdx[2] refers to the column dimension.
      Throws:
      IOException - if an I/O error occurs while accessing the pixel values.
    • putSlice

      public void putSlice(Object array, int slice) throws IllegalStateException
      Description copied from class: MultiSliceImage
      Puts the pixel values to one slice of an n-dimensional image, where n > 1.

      N.B.Whenever the radiological orientation of the image can be determined, this method sets pixel values such that when the slice is viewed on-screen, the first pixel in the array belongs at the top left of the screen, and the last pixel in the array belongs at the bottom right of the screen. This is regardless of the sub-class of image (for example, the flipping of Analyze images is taken care of by this method).

      Specified by:
      putSlice in interface WritableImage
      Overrides:
      putSlice in class MultiSliceImage
      Parameters:
      array - a 1-dimensional array of the correct primitive java data type for this image, with dimensions [nRows * nCols] containing the pixel values to put.
      slice - the slice number. Must be 0 for a 2-dimensional image or from 0 to dims[0]-1 for a 3-dimensional image.
      Throws:
      IllegalStateException - if an I/O error occurs while putting the pixel values, or if the array is not of the correct primitive data type for this image.
    • getInfo

      public String getInfo(String name) throws InfoNotFoundException
      Description copied from interface: InfoStorer
      Returns a string representing the value of this information item in the general image information.

      For example, if there is a item with a name "pixel_x_size" and a value "0.91162" in the general info, and name "pixel_x_size" is supplied, then this method will return "0.91162".

      Specified by:
      getInfo in interface InfoStorer
      Parameters:
      name - the name of this information field.
      Returns:
      a String representation of the value of this information field.
      Throws:
      InfoNotFoundException - if the name is not found in the general info.
    • putInfo

      public void putInfo(String name, int value) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the general file info.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.
      Specified by:
      putInfo in interface InfoStorer
      Parameters:
      name - the name of the information field to put.
      value - an integer value to be associated with this name in the general file information.
      Throws:
      IOException - if the information cannot be added because of an I/O error.
    • putInfo

      public void putInfo(String name, float value) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the general file info. If an info item with the same name exists, then then value will be overwritten.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.
      Specified by:
      putInfo in interface InfoStorer
      Parameters:
      name - the name of the information to put.
      value - a floating point value to be associated with this name in the general file information.
      Throws:
      IOException - if the information cannot be addded because of an I/O error.
    • putInfo

      public void putInfo(String name, String value) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the general file info. If an info item with the same name exists, then then value will be overwritten.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.
      Specified by:
      putInfo in interface InfoStorer
      Parameters:
      name - the name of the information to put.
      value - a String to be associated with this name in the general file information.
      Throws:
      IOException - if the information cannot be addded because of an I/O error.
    • getInfo

      public String getInfo(String name, int dim, int n) throws InfoNotFoundException
      Description copied from interface: InfoStorer
      Returns a String representing the value of this information item in a particular dimension of this image. For example, if there is a item "pixel_x_size=0.91162" in the file info for this dimension, and a name "pixel_x_size" is supplied, then this method will return "0.91162".
      Specified by:
      getInfo in interface InfoStorer
      Parameters:
      name - the name of this information item.
      dim - the dimension of this image to look for the information. For example in a 3-dimensional image you would look in dimension 0 for slice-specific info.
      n - the element to look in. For example in a 3-dimensional image you would look in slice n to info that applied only to slice n.
      Returns:
      a String representation of the value of this information.
      Throws:
      InfoNotFoundException - if the name is not found in this dimension/element info.
    • getSliceInfo

      public String getSliceInfo(String name, int slice) throws InfoNotFoundException
      Description copied from interface: InfoStorer
      Returns a String representing the value of this information item in a particular slice of this image.

      The slice number is referenced from 0 to (number of slices - 1).

      Specified by:
      getSliceInfo in interface InfoStorer
      Parameters:
      name - the name of this information item.
      slice - the slice number.
      Returns:
      a String representation of the value of this information.
      Throws:
      InfoNotFoundException - if the name is not found for the specified slice.
    • getFrameInfo

      public String getFrameInfo(String name, int frame) throws InfoNotFoundException
      Description copied from interface: InfoStorer
      Returns a String representing the value of this information item in a particular frame of this image.

      The frame number is referenced from 0 to (number of frames - 1).

      Specified by:
      getFrameInfo in interface InfoStorer
      Parameters:
      name - the name of this information item.
      frame - the frame number.
      Returns:
      a String representation of the value of this information.
      Throws:
      InfoNotFoundException - if the name is not found for the specified frame.
    • putInfo

      public void putInfo(String name, int value, int dim, int n) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the dimension-specific information. If an info item with the same name exists, then then value will be overwritten.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.
      Specified by:
      putInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to put.
      value - an integer value to be associated with this name in the general file information.
      dim - the dimension of this image to put the information item. For example in a 3-dimensional image you would put to dimension 0 for slice-specific info.
      n - the element to put to. For example in a 3-dimensional image you would put to slice n to info that applied only to slice n.
      Throws:
      IOException - if the information cannot be addded because of an I/O error.
    • putInfo

      public void putInfo(String name, float value, int dim, int n) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the dimension-specific information. If an info item with the same name exists, then then value will be overwritten.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the close() method is called.
      Specified by:
      putInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to put.
      value - an floating-point value to be associated with this name in the dimension-specific information.
      dim - the dimension of this image to put the information. For example in a 3-dimensional image you would put to dimension 0 for slice-specific info.
      n - the element to put to. For example in a 3-dimensional image you would put to slice n to info that applied only to slice n.
      Throws:
      IOException - if the information cannot be addded because of an I/O error.
    • putInfo

      public void putInfo(String name, String value, int dim, int n) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the dimension-specific information. If an info item with the same name exists, then then value will be overwritten.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the close() method is called.
      Specified by:
      putInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to put.
      value - a String value to be associated with this name in the dimension-specific information.
      dim - the dimension of this image to put the information. For example in a 3-dimensional image you would put to dimension 0 for slice-specific info.
      n - the element to put to. For example in a 3-dimensional image you would put to slice n to info that applied only to slice n.
      Throws:
      IOException - if the information cannot be addded because of an I/O error.
    • putSliceInfo

      public void putSliceInfo(InfoList infoList, int slice) throws IOException
      Description copied from interface: InfoStorer
      Adds all the items in an InfoList to the slice-specific information. If an info item with the same name exists, then then value will be overwritten.

      The slice number is referenced from 0 to (number of slices - 1).
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.

      Specified by:
      putSliceInfo in interface InfoStorer
      Parameters:
      infoList - the list of InfoItems to put.
      slice - the slice number.
      Throws:
      IOException - if the information cannot be added because of an I/O error.
    • putFrameInfo

      public void putFrameInfo(InfoList infoList, int frame) throws IOException
      Description copied from interface: InfoStorer
      Adds all the items in an InfoList to the frame-specific information. If an info item with the same name exists, then the value will be overwritten.

      The frame number is referenced from 0 to (number of frames - 1).
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.

      Specified by:
      putFrameInfo in interface InfoStorer
      Parameters:
      infoList - the list of InfoItems to put.
      frame - the frame number.
      Throws:
      IOException - if the information cannot be added because of an I/O error.
    • putSliceInfo

      public void putSliceInfo(String name, String value, int slice) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the slice-specific information. If an info item with the same name exists, then then value will be overwritten.

      The slice number is referenced from 0 to (number of slices - 1).
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.

      Specified by:
      putSliceInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to put.
      value - a String to be associated with this name in the slice-specific info.
      slice - the slice number.
      Throws:
      IOException - if the information cannot be added because of an I/O error.
    • putFrameInfo

      public void putFrameInfo(String name, String value, int frame) throws IOException
      Description copied from interface: InfoStorer
      Adds an item to the frame-specific information. If an info item with the same name exists, then then value will be overwritten.

      The frame number is referenced from 0 to (number of frames).
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.

      Specified by:
      putFrameInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to put.
      value - a String to be associated with this name in the frame-specific info.
      frame - the frame number.
      Throws:
      IOException - if the information cannot be added because of an I/O error.
    • removeInfo

      public void removeInfo(String name) throws IOException
      Description copied from interface: InfoStorer
      Removes an item from the general file information. If an info item with the given name is not present in the general info, then this method does nothing.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.
      Specified by:
      removeInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to be removed.
      Throws:
      IOException - if the information cannot be removed.
    • removeInfo

      public void removeInfo(String name, int dim, int n) throws IOException
      Description copied from interface: InfoStorer
      Removes an item from the dimension-specific information. If an info item with the given name is not present in the dimension-specific, then this method does nothing.
      N.B. For disk-based images, the changes in the info will not be reflected on disk unless the ReadableImage.close() method is called.
      Specified by:
      removeInfo in interface InfoStorer
      Parameters:
      name - the name of the information item to put.
      dim - the dimension of this image to from which to remove the information. For example in a 3-dimensional image you would put to dimension 0 for slice-specific info.
      n - the element to from which to remove the info item. For example in a 3-dimensional image you would put to slice n to info that applied only to slice n.
      Throws:
      IOException - if the information cannot be removed.
    • copyInfo

      public void copyInfo(UNCImage toImage) throws IllegalStateException
      Copies all the info fields to another image. The general info will be copied to the toImage, overwriting any pre-existing info. Depending on the dimensionality of the two images, the dimension-specific info may also be copied.
      Parameters:
      toImage - the UNCImage to which info will be copied.
      Throws:
      IllegalStateException - if the image is read-only.
    • getInfoList

      public InfoList getInfoList()
      Description copied from interface: InfoStorer
      Returns an InfoList object which is the general info for this image.
      Specified by:
      getInfoList in interface InfoStorer
      Returns:
      an InfoList which is the general file info for this InfoStorer.
    • getInfoList

      public InfoList getInfoList(int dim, int n) throws IndexOutOfBoundsException
      Description copied from interface: InfoStorer
      Returns an InfoList object applying to a particular dimension/element for this image.
      Specified by:
      getInfoList in interface InfoStorer
      Parameters:
      dim - the dimension for which to get the information list.
      n - the element for which to get the information list.
      Returns:
      an InfoList object from a particular dimension of this InfoStorer.
      Throws:
      IndexOutOfBoundsException - if the dimensions supplied do not match this image.
    • getSliceInfoList

      public InfoList getSliceInfoList(int slice) throws IndexOutOfBoundsException
      Description copied from interface: InfoStorer
      Returns an InfoList object applying to a particular slice of this image.

      The slice number is referenced from 0 to (number of slices - 1).

      Specified by:
      getSliceInfoList in interface InfoStorer
      Parameters:
      slice - the slice number.
      Returns:
      an InfoList object from a particular slice of this InfoStorer.
      Throws:
      IndexOutOfBoundsException - if the slice supplied is inappropriate for the dimensions of this image.
    • getFrameInfoList

      public InfoList getFrameInfoList(int frame) throws IndexOutOfBoundsException
      Description copied from interface: InfoStorer
      Returns an InfoList object applying to a particular frame of this image.

      The frame number is referenced from 0 to (number of frames - 1).

      Specified by:
      getFrameInfoList in interface InfoStorer
      Parameters:
      frame - the frame number.
      Returns:
      an InfoList object from a particular frame of this InfoStorer.
      Throws:
      IndexOutOfBoundsException - if the frame supplied is inappropriate for the dimensions of this image.
    • setInfoList

      public void setInfoList(InfoList list) throws IOException
      Description copied from interface: InfoStorer
      Sets a new InfoList to the general file info of this image.
      Specified by:
      setInfoList in interface InfoStorer
      Parameters:
      list - the InfoList object to set to the general file info for this image.
      Throws:
      IOException - if the InfoList cannot be set.
    • setInfoList

      public void setInfoList(InfoList list, int dim, int n) throws IOException
      Description copied from interface: InfoStorer
      Sets a new InfoList a specific dimension of this image.
      Specified by:
      setInfoList in interface InfoStorer
      Parameters:
      list - the InfoList to associate with this image/dimension.
      dim - the dimension to which to set the information list.
      n - the element to which to set the information list.
      Throws:
      IOException - if the InfoList cannot be set.
    • setSliceInfoList

      public void setSliceInfoList(InfoList list, int slice) throws IOException
      Description copied from interface: InfoStorer
      Sets a new InfoList a specific slice of this image.
      Specified by:
      setSliceInfoList in interface InfoStorer
      Parameters:
      list - the InfoList to associate with this image/slice.
      slice - the slice for which to set the information list.
      Throws:
      IOException - if the InfoList cannot be set.
    • setFrameInfoList

      public void setFrameInfoList(InfoList list, int frame) throws IOException
      Description copied from interface: InfoStorer
      Sets a new InfoList a specific frame of this image.
      Specified by:
      setFrameInfoList in interface InfoStorer
      Parameters:
      list - the InfoList to associate with this image/frame.
      frame - the frame for which to set the information list.
      Throws:
      IOException - if the InfoList cannot be set.
    • appendInfoList

      public void appendInfoList(InfoList list) throws IOException
      Description copied from interface: InfoStorer
      Appends an InfoList to the existing general file info of this image.
      Specified by:
      appendInfoList in interface InfoStorer
      Parameters:
      list - the InfoList object to append to the general file info for this image.
      Throws:
      IOException - if the InfoList cannot be appended because of an I/O error.
    • appendInfoList

      public void appendInfoList(InfoList list, int dim, int n) throws IllegalStateException
      Description copied from interface: InfoStorer
      Appends an InfoList to that existing for a specific dimension of this image.
      Specified by:
      appendInfoList in interface InfoStorer
      Parameters:
      list - the InfoList to append.
      dim - the dimension to which to append the information list.
      n - the element to which to append the information list.
      Throws:
      IllegalStateException
    • anonymise

      public void anonymise(String patientName, String patientID, Date birthDate, boolean patSex, String patAddr, String patInsurancePlanID, String accessionNumber, boolean patOther, String physicianName, String physicianAddr, String institutionName, String institutionAddr, String deptName, String stationName, String telNumber, boolean removePrivateElements) throws IOException
      Description copied from interface: WritableImage
      Anonymise this WritableImage.
      Specified by:
      anonymise in interface WritableImage
      Parameters:
      patientName - if non-null, the patient name to substitute.
      patientID - if non-null, the patient ID to substitute.
      birthDate - if non-null, the birth date to substitute.
      patSex - if true, set the sex to "OTHER".
      patAddr - if non-null, the address to substitute.
      patInsurancePlanID - if non-null, the insurance plan ID to substitute.
      accessionNumber - if non-null, the accession number to substitute.
      patOther - if true, other patient-related items will be anonymised.
      physicianName - if non-null, the physician name to substitute.
      physicianAddr - if non-null, the physician's address to substitute.
      institutionName - if non-null, the institution name to substitute.
      institutionAddr - if non-null, the institution address to substitute.
      deptName - if non-null, the department name to substitute.
      stationName - if non-null, the station name to substitute.
      telNumber - if non-null, the telephone number to substitute for all telephone numbers.
      removePrivateElements - if true, all private DICOM elements will be removed.
      Throws:
      IOException - if an I/O error occurs during anonymisation.
    • getTotalNSlices

      public int getTotalNSlices()
      Description copied from interface: ReadableImage
      Returns the total number of slices in this image. If the image is less than 3-dimensional, this method returns 1; if it is 3-dimensional, it returns the number of slices; if it is 4- or more dimensional, it sums up the total number of planar slices in each dimension and returns the total. For example a 4-dimensional image with 4 slices and 10 frames, the total number of slices is 40.
      Specified by:
      getTotalNSlices in interface ReadableImage
      Returns:
      the number of planar image slices.
    • getNCols

      public int getNCols()
      Description copied from interface: ReadableImage
      Returns the number of image columns in this image.
      Specified by:
      getNCols in interface ReadableImage
      Returns:
      the number of image columns.
    • getNRows

      public int getNRows()
      Description copied from interface: ReadableImage
      Returns the number of image rows in this image.
      Specified by:
      getNRows in interface ReadableImage
      Returns:
      the number of image rows.
    • getNSlices

      public int getNSlices()
      Description copied from interface: ReadableImage
      Returns the number of physical slice locations in this image. If the image dimensionality is greater than or equal to three, then this method returns the number of samples in the third dimension. If the dimensionality is less than 3 two, it returns 1.
      Specified by:
      getNSlices in interface ReadableImage
      Returns:
      the number of physical slice locations.
    • getNFrames

      public int getNFrames()
      Description copied from interface: ReadableImage
      Returns the number of frames in a multi-frame image. If the image dimensionality is greater than or equal to four, then this method returns the number of samples in the fourth dimension. If the dimensionality is less than 4, it returns 1.
      Specified by:
      getNFrames in interface ReadableImage
      Returns:
      the number of image (movie) frames.
    • getPixelXSize

      public float getPixelXSize() throws ParameterNotSetException
      Description copied from interface: ReadableImage
      Returns the pixel size in the x (horizontal) direction for this image.
      Specified by:
      getPixelXSize in interface ReadableImage
      Returns:
      the pixel size in the x (horizontal) direction in mm.
      Throws:
      ParameterNotSetException - if the pixel size can't be found.
    • getPixelYSize

      public float getPixelYSize() throws ParameterNotSetException
      Description copied from interface: ReadableImage
      Returns the pixel size in the y (vertical) direction for this image.
      Specified by:
      getPixelYSize in interface ReadableImage
      Returns:
      the pixel size in the y (vertical) direction in mm.
      Throws:
      ParameterNotSetException - if the pixel size can't be found.
    • getPixelZSize

      public float getPixelZSize() throws ParameterNotSetException
      Description copied from interface: ReadableImage
      Returns the separation between the centres of image planes for this image.
      Specified by:
      getPixelZSize in interface ReadableImage
      Returns:
      the pixel size in the z (slice) direction in mm.
      Throws:
      ParameterNotSetException - if the pixel size can't be found.
    • getTimeBetweenFrames

      public float getTimeBetweenFrames() throws ParameterNotSetException
      Description copied from interface: ReadableImage
      Returns the time between frames in a 4- or higher dimensional image.
      Specified by:
      getTimeBetweenFrames in interface ReadableImage
      Returns:
      the time between frames in seconds.
      Throws:
      ParameterNotSetException - if the time between frames is not set, or if this image doesn't have a dimensionality of at least 4.
    • setPixelXSize

      public void setPixelXSize(float width) throws IOException
      Description copied from class: MultiSliceImage
      Sets the pixel size in the x (horizontal) direction for this image.
      Specified by:
      setPixelXSize in class MultiSliceImage
      Parameters:
      width - the width of a pixel.
      Throws:
      IOException - if and I/O error occurs.
    • setPixelYSize

      public void setPixelYSize(float height) throws IOException
      Description copied from class: MultiSliceImage
      Sets the pixel size in the y (vertical) direction for this image.
      Specified by:
      setPixelYSize in class MultiSliceImage
      Parameters:
      height - the height of a pixel.
      Throws:
      IOException - if an I/O error occurs.
    • setPixelZSize

      public void setPixelZSize(float thickness) throws IOException
      Description copied from class: MultiSliceImage
      Sets the pixel size in the z (slice) direction for this image.
      Specified by:
      setPixelZSize in class MultiSliceImage
      Parameters:
      thickness - the thickness of a pixel.
      Throws:
      IOException - if an I/O error occurs.
    • setTimeBetweenFrames

      public void setTimeBetweenFrames(float deltaT) throws IOException
      Description copied from class: MultiSliceImage
      Sets the time between frames in a 4- or higher dimensional image.
      Specified by:
      setTimeBetweenFrames in class MultiSliceImage
      Parameters:
      deltaT - the time between frames (in seconds).
      Throws:
      IOException - if an I/O error occurs.
    • getImagePositionPatient

      public org.jogamp.vecmath.Point3f getImagePositionPatient()
      Description copied from interface: ReadableImage
      Returns the coordinates of the center of the first pixel of the image, in mm, in patient coordinates. This method will only return if the image pixels form a regular array of pixels with parallel image planes; otherwise a ParameterNotSetException is thrown.
      Specified by:
      getImagePositionPatient in interface ReadableImage
      Returns:
      the Left,Posterior,Superior (LPS) coordinates of the first pixel in the image data matrix. Returns null if the position cannot be retrieved from this image.
    • getImagePositionPatient

      public org.jogamp.vecmath.Point3f getImagePositionPatient(int slice)
      Description copied from interface: ReadableImage
      Returns the coordinates of the center of the first pixel of the specified slice of this image, in mm, in patient coordinates.
      Specified by:
      getImagePositionPatient in interface ReadableImage
      Parameters:
      slice - the slice number (indexed from 0) for which to return the pixel coordinates.
      Returns:
      the Left,Posterior,Superior (LPS) coordinates of the first pixel in the specified slice of this image. Returns null if the position cannot be retrieved from this image.
    • setImagePositionPatient

      public void setImagePositionPatient(org.jogamp.vecmath.Point3f position, int slice)
      Description copied from interface: WritableImage
      Sets the coordinates of the center of the first pixel of the image, in mm, in patient (LPS) coordinates, for one slice of this image.
      Specified by:
      setImagePositionPatient in interface WritableImage
      Parameters:
      position - the Left,Posterior,Superior (LPS) coordinates of the first pixel of this specified slice in the image data matrix.
      slice - the slice for which to set the position.
    • getImageOrientationPatient

      public org.jogamp.vecmath.Vector3f[] getImageOrientationPatient()
      Description copied from interface: ReadableImage
      Returns the direction cosines of the row, column and slice directions (for increasing row, column and slice) of the image, in patient (L,P,S) coordinates.
      Specified by:
      getImageOrientationPatient in interface ReadableImage
      Returns:
      a Vector3f[], corresponding to the direction cosines of the image row, column and slice directions in Left,Posterior,Superior (LPS) coordinates. Returns null if the direction cosines cannot be retrieved from this image.
    • getImageOrientationPatient

      public org.jogamp.vecmath.Vector3f[] getImageOrientationPatient(int slice)
      Description copied from interface: ReadableImage
      Returns the direction cosines of the row, column and slice directions (for increasing row, column and slice) of the image, in patient coordinates.
      Specified by:
      getImageOrientationPatient in interface ReadableImage
      Parameters:
      slice - the slice for which to return the image orientation.
      Returns:
      a Vector3f[], corresponding to the direction cosines of the image row, column and slice directions in Left,Posterior,Superior (LPS) coordinates. Returns null if the direction cosines cannot be retrieved from this image.
    • setImageOrientationPositionPatient

      public void setImageOrientationPositionPatient(org.jogamp.vecmath.Vector3f[] orientation, org.jogamp.vecmath.Point3f position, boolean force)
      Description copied from class: MultiSliceImage
      Sets the direction cosines of the row, column and slice directions of the image, the coordinates of the center of the first pixel of the image, in patient (LPS) coordinates.

      N.B. the actual position and orientation set by this method may not be those specified. For example, for NIFTI-1 images, the actual orientation and position may depend on the user Preferences for whether to put pixel values in an order that is compatible with SPM. After using this method, you should use the ReadableImage.getImageOrientationPatient() and ReadableImage.getImagePositionPatient() methods to obtain the real orientation and positions set.

      If the orientation or position cannot be set for this image, this method does not report an error.

      Specified by:
      setImageOrientationPositionPatient in interface WritableImage
      Specified by:
      setImageOrientationPositionPatient in class MultiSliceImage
      Parameters:
      orientation - the direction cosines of the image row, column and (optionally) slice directions respectively in Left,Posterior,Superior (LPS) coordinates. If orientation is null, this method will attempt to clear any orientation information, if that is supported by the image format.
      position - the Left,Posterior,Superior (LPS) coordinates of the centre of the first pixel in the image data matrix. If position is null, this method will attempt to clear any positional information, if that is supported by the image format.
      force - if true, this method will force the orientation and position to be set as requested, regardless of the user Preferences. This can be useful if you read the orientation from an existing image, and you want to set the orientation exactly the same in a new image.
    • setImageOrientationPatient

      public void setImageOrientationPatient(org.jogamp.vecmath.Vector3f[] orientation, int slice) throws IndexOutOfBoundsException
      Description copied from class: MultiSliceImage
      Sets the direction cosines of the row, column and slice directions (for increasing row, column and slice) of the image, in patient (LPS) coordinates.

      If the orientation cannot be set for this image, this method does nothing.

      Specified by:
      setImageOrientationPatient in interface WritableImage
      Specified by:
      setImageOrientationPatient in class MultiSliceImage
      Parameters:
      orientation - the direction cosines of the image row, column and (optionally) slice directions respectively in Left,Posterior,Superior (LPS) coordinates.
      slice - the slice for which to set the orientation.
      Throws:
      IndexOutOfBoundsException - if the cosines array does not have the correct dimensions.
    • setPixelSpacing

      public void setPixelSpacing(Float[] spacing) throws IOException
      Description copied from interface: WritableImage
      Sets the distance (in mm) between pixel centres in the row, column and slice directions of the image, and the time between movie frames (for 4-D images) in seconds. The distances and time should always be positive values.
      Specified by:
      setPixelSpacing in interface WritableImage
      Parameters:
      spacing - a Float[] of length up to 4, corresponding to the distance between pixel centres in the row, column, slice and time directions, respectively. Spacing values will only be set for image dimensions where the spacing array is long enough and the array element is non-null. The first element of the array indicates the horizontal pixel size; the second is the vertical pixel size; the third is the pixel depth; fourth is the time between frames.
      Throws:
      IOException - if the pixel spacing cannot be set for this image.
    • getSliceThickness

      public Float getSliceThickness()
      Description copied from interface: ReadableImage
      Returns the slice thickness (in mm). This method is necessary because the slice thickness may not be the same as the inter-slice pixel spacing, if there is a gap between slices.
      Specified by:
      getSliceThickness in interface ReadableImage
      Returns:
      the slice thickness in mm, or null if the slice thickness is not set, or its value is corrupt.
    • setSliceThickness

      public void setSliceThickness(Float thickness) throws IOException
      Description copied from interface: WritableImage
      Sets the slice thickness (in mm). This method is necessary because the slice thickness may not be the same as the inter-slice pixel spacing, if there is a gap between slices.
      Specified by:
      setSliceThickness in interface WritableImage
      Parameters:
      thickness - the slice thickness in mm, or null to remove the slice thickness information.
      Throws:
      IOException - if the slice thickness cannot be set for this image.
    • getStudyID

      public String getStudyID()
      Description copied from interface: ReadableImage
      Returns the study ID for this ReadableImage.
      Specified by:
      getStudyID in interface ReadableImage
      Returns:
      the study ID. Returns null if the study ID can't be found.
    • setStudyID

      public void setStudyID(String studyID)
      Description copied from interface: WritableImage
      Sets the study ID for this image.
      N.B. For disk-based images, the changes in the study ID will not be reflected on disk unless the close() method is called.
      Specified by:
      setStudyID in interface WritableImage
      Parameters:
      studyID - the new study ID to be assigned to this image.
    • getPatientPosition

      public PatientPosition getPatientPosition()
      Description copied from interface: ReadableImage
      Returns the position in which the patient is lying in the scanning equipment. For example, PatientPosition.HFS (head-first supine).
      Specified by:
      getPatientPosition in interface ReadableImage
      Returns:
      the position in which the patient is lying in the scanning equipment, or null if the patient position cannot be determined.
    • setPatientPosition

      public void setPatientPosition(PatientPosition position)
      Description copied from interface: WritableImage
      Sets the position in which the patient is lying in the scanning equipment for this WritableImage.
      Specified by:
      setPatientPosition in interface WritableImage
      Parameters:
      position - the position in which the patient is lying in the scanning equipment. e.g. PatientPosition.HFS (head-first supine).
    • supportsIntensityRescaling

      public boolean supportsIntensityRescaling()
      Returns true because UNC images support intensity rescaling.
      Specified by:
      supportsIntensityRescaling in interface WritableImage
      Returns:
      true.
    • getIntensityRescale

      public float[] getIntensityRescale()
      Description copied from interface: ReadableImage
      Returns the values m and b in the relationship between pixel intensity (I) values and the output units specified in getRescaleUnits() in the expression:
      Output units = m*I + b.
      Specified by:
      getIntensityRescale in interface ReadableImage
      Returns:
      an array will be of length 2 where the first element is m and the second is b.
    • setIntensityRescale

      public void setIntensityRescale(float rescaleSlope, float rescaleIntercept) throws IOException
      Description copied from interface: WritableImage
      Sets the values m and b in the relationship between pixel intensity (I) values and the output units specified in WritableImage.setRescaleUnits(com.xinapse.dicom.RescaleUnits) in the expression:
      Output units = m*I + b.
      Specified by:
      setIntensityRescale in interface WritableImage
      Parameters:
      rescaleSlope - the value of m in the expression above.
      rescaleIntercept - the value of b in the expression above.
      Throws:
      IOException - if an I/O error occurs.
    • getRescaleUnits

      public com.xinapse.dicom.RescaleUnits getRescaleUnits()
      Description copied from interface: ReadableImage
      Returns the output units of Intensity Rescale Slope and Intensity Rescale Intercept, retrieved by getIntensityRescale().
      Specified by:
      getRescaleUnits in interface ReadableImage
      Returns:
      the RescaleUnits describing the physical meaning of the pixel intensity units. Returns the RescaleUnits.US if the physical meaning is unknown, or arbitrary.
    • setRescaleUnits

      public void setRescaleUnits(com.xinapse.dicom.RescaleUnits units) throws IOException
      Description copied from interface: WritableImage
      Sets the rescale units.
      Specified by:
      setRescaleUnits in interface WritableImage
      Parameters:
      units - the rescale units.
      Throws:
      IOException - if the rescale units cannot be set.
    • appendAuditInfo

      public void appendAuditInfo(String name, String value)
      Description copied from interface: WritableImage
      Appends audit trail information to this image.
      Specified by:
      appendAuditInfo in interface WritableImage
      Parameters:
      name - a String describing the name of the action that was performed on this image.
      value - a String describing the value of the action that was performed on this image.
    • setPatientName

      public void setPatientName(String patientName) throws IOException
      Description copied from interface: WritableImage
      Attempts to set the patient name for this image. If new patient name String is longer than is allowed by the image format, then it is truncated before being applied. No exception occurs if the image format does not support patient name recording.
      N.B. For disk-based images, the changes in the patient name will not be reflected on disk unless the close() method is called.
      Specified by:
      setPatientName in interface WritableImage
      Parameters:
      patientName - the new patient name to be assigned to this image.
      Throws:
      IOException - if the patient name cannot be set.
    • setPatientID

      public void setPatientID(String patientID) throws IOException
      Description copied from interface: WritableImage
      Sets the patient ID for this image. If the new patient ID String is longer than is allowed by the image format, then it is truncated before being applied. No exception occurs if the image format does not support patient ID recording.
      N.B. For disk-based images, the changes in the patient ID will not be reflected on disk unless the close() method is called.
      Specified by:
      setPatientID in interface WritableImage
      Parameters:
      patientID - the new patient ID to be assigned to this image.
      Throws:
      IOException - if the patient ID cannot be set.
    • setPatientDoB

      public void setPatientDoB(Date patientDoB) throws IOException
      Description copied from interface: WritableImage
      Sets the patient's date of birth for this image. No exception occurs if the image format does not support patient date of birth recording.
      N.B. For disk-based images, the changes in the patient's birth date will not be reflected on disk unless the close() method is called.
      Specified by:
      setPatientDoB in interface WritableImage
      Parameters:
      patientDoB - the new patient date of birth to be assigned to this image.
      Throws:
      IOException - if the patient date of birth cannot be set.
    • setPatientSex

      public void setPatientSex(com.xinapse.dicom.Sex sex) throws IOException
      Description copied from interface: WritableImage
      Sets the patient sex for this image.
      Specified by:
      setPatientSex in interface WritableImage
      Parameters:
      sex - the patient sex to be assigned to this image.
      Throws:
      IOException - if the patient sex cannot be set.
    • setScanDate

      public void setScanDate(Date scanDate) throws IOException
      Description copied from interface: WritableImage
      Sets the scan date/time for this image.
      N.B. For disk-based images, the changes in the scan date will not be reflected on disk unless the close() method is called.
      Specified by:
      setScanDate in interface WritableImage
      Parameters:
      scanDate - the new scan date/time to be assigned to this image.
      Throws:
      IOException - if the scan date cannot be set.
    • setPulseSequence

      public void setPulseSequence(String seqName) throws IOException
      Description copied from interface: WritableImage
      Sets the pulse sequence name for this image.
      N.B. For disk-based images, the changes in the scanning sequence will not be reflected on disk unless the close() method is called.
      Specified by:
      setPulseSequence in interface WritableImage
      Parameters:
      seqName - the new name of the pulse sequence to be assigned to this image.
      Throws:
      IOException - if the pulse sequence name cannot be set.
    • setScanningSequence

      public void setScanningSequence(PulseSequenceType seq) throws IOException
      Description copied from interface: WritableImage
      Sets the DICOM scanning sequence for this image.
      N.B. For disk-based images, the changes in the scanning sequence will not be reflected on disk unless the close() method is called.
      Specified by:
      setScanningSequence in interface WritableImage
      Parameters:
      seq - the new scanning sequence to be assigned to this image.
      Throws:
      IOException - if the scanning sequence cannot be set.
    • setSequenceVariant

      public void setSequenceVariant(PulseSequenceVariant seqVar) throws IOException
      Description copied from interface: WritableImage
      Sets the DICOM scanning sequence variant for this image.
      N.B. For disk-based images, the changes in the scanning sequence variant will not be reflected on disk unless the close() method is called.
      Specified by:
      setSequenceVariant in interface WritableImage
      Parameters:
      seqVar - the new scanning sequence variant to be assigned to this image.
      Throws:
      IOException - if the scanning sequence variant cannot be set.
    • setSeriesNumber

      public void setSeriesNumber(Integer seriesNumber) throws IOException
      Description copied from interface: WritableImage
      Sets the series number for this image.
      N.B. For disk-based images, the changes in the series number will not be reflected on disk unless the close() method is called.
      Specified by:
      setSeriesNumber in interface WritableImage
      Parameters:
      seriesNumber - the new series number to be assigned to this image.
      Throws:
      IOException - if the series number cannot be set.
    • setSeriesDescription

      public void setSeriesDescription(String seriesDescription) throws IOException
      Description copied from interface: WritableImage
      Sets a short description of the series (scan).
      N.B. For disk-based images, the changes in the series description will not be reflected on disk unless the close() method is called.
      Specified by:
      setSeriesDescription in interface WritableImage
      Parameters:
      seriesDescription - the new short description of the series, or null if none is available.
      Throws:
      IOException - if the description cannot be set.
    • getBodyPart

      public com.xinapse.dicom.BodyPart getBodyPart()
      Description copied from class: MultiSliceImage
      By default, body part recording is not supported, so this method always returns null.
      Specified by:
      getBodyPart in interface ReadableImage
      Overrides:
      getBodyPart in class MultiSliceImage
      Returns:
      null.
    • setBodyPart

      public void setBodyPart(com.xinapse.dicom.BodyPart bodyPart) throws IOException
      Description copied from class: MultiSliceImage
      By default, body part recording is not supported, so this method does nothing.
      Specified by:
      setBodyPart in interface WritableImage
      Overrides:
      setBodyPart in class MultiSliceImage
      Parameters:
      bodyPart - body the imaged body part.
      Throws:
      IOException - if body part cannot be set.
    • getLaterality

      public com.xinapse.dicom.Laterality getLaterality()
      Description copied from class: MultiSliceImage
      By default, laterality recording is not supported, so this method returns Laterality.BOTH.
      Specified by:
      getLaterality in interface ReadableImage
      Overrides:
      getLaterality in class MultiSliceImage
      Returns:
      Laterality.BOTH.
    • setLaterality

      public void setLaterality(com.xinapse.dicom.Laterality laterality) throws IOException
      Description copied from class: MultiSliceImage
      By default, laterality recording is not supported, so this method does nothing.
      Specified by:
      setLaterality in interface WritableImage
      Overrides:
      setLaterality in class MultiSliceImage
      Parameters:
      laterality - the image laterality.
      Throws:
      IOException - if laterality cannot be set.
    • setScanTR

      public void setScanTR(Float TR) throws IOException
      Description copied from interface: WritableImage
      Sets the scan repetition time for this image. No exception occurs if the image format does not support scan TR recording.
      N.B. For disk-based images, the changes in the scan TR will not be reflected on disk unless the close() method is called.
      Specified by:
      setScanTR in interface WritableImage
      Parameters:
      TR - the new scan TR to be assigned to this image. If null, the TR should be unset.
      Throws:
      IOException - if the scan TR cannot be set.
    • setScanTI

      public void setScanTI(Float TI) throws IOException
      Description copied from interface: WritableImage
      Sets the scan inversion time for this image. No exception occurs if the image format does not support scan TI recording.
      N.B. For disk-based images, the changes in the scan TI will not be reflected on disk unless the close() method is called.
      Specified by:
      setScanTI in interface WritableImage
      Parameters:
      TI - the new scan TI to be assigned to this image. If null, the TI should be unset.
      Throws:
      IOException - if the scan TI cannot be set.
    • setScanTE

      public void setScanTE(Float TE) throws IOException
      Description copied from interface: WritableImage
      Sets the scan echo time for this image. No exception occurs if the image format does not support scan TE recording.
      N.B. For disk-based images, the changes in the scan TE will not be reflected on disk unless the close() method is called.
      Specified by:
      setScanTE in interface WritableImage
      Parameters:
      TE - the new scan TE to be assigned to this image. If null, the TE should be unset.
      Throws:
      IOException - if the scan TE cannot be set.
    • setScanTE

      public void setScanTE(Float TE, int index) throws IOException
      Description copied from interface: WritableImage
      Sets the scan echo time for one dimension index of this image. For 3-D images, the dimension index is the slice dimension. For 4-D (or higher dimensionality) images, the dimension index is the frame dimension. No exception occurs if the image format does not support a scan TE recording.
      N.B. For disk-based images, the changes in the scan TE will not be reflected on disk unless the close() method is called.
      Specified by:
      setScanTE in interface WritableImage
      Parameters:
      TE - the new scan TE to be assigned to this image.
      index - the slice number for which to set the echo time.
      Throws:
      IOException - if the scan TE cannot be set because of an I/O error.
    • setSaturationFreqOffsetPPM

      public void setSaturationFreqOffsetPPM(Float freqOffset) throws IOException
      Description copied from interface: WritableImage
      Sets the saturation frequency offset in PPM for this image. No exception occurs if the image format does not support saturation frequency offset recording.
      N.B. For disk-based images, the changes in the saturation frequency offset will not be reflected on disk unless the close() method is called.
      Specified by:
      setSaturationFreqOffsetPPM in interface WritableImage
      Parameters:
      freqOffset - the new saturation frequency offset to be assigned to this image. If null, the saturation frequency offset should be unset.
      Throws:
      IOException - if the saturation frequency offset cannot be set.
    • setSaturationFreqOffsetPPM

      public void setSaturationFreqOffsetPPM(Float freqOffset, int index) throws IOException
      Description copied from interface: WritableImage
      Sets the saturation frequency offset for one dimension index of this image. For 3-D images, the dimension index is the slice dimension. For 4-D (or higher dimensionality) images, the dimension index is the frame dimension. No exception occurs if the image format does not support saturation frequency offset recording.
      N.B. For disk-based images, the changes in the saturation frequency offset will not be reflected on disk unless the close() method is called.
      Specified by:
      setSaturationFreqOffsetPPM in interface WritableImage
      Parameters:
      freqOffset - the new saturation frequency offset to be assigned to this image.
      index - the slice number for which to set the saturation frequency offset.
      Throws:
      IOException - if the saturation frequency offset cannot be set because of an I/O error.
    • setEchoTrainLength

      public void setEchoTrainLength(Integer etl) throws IOException
      Description copied from interface: WritableImage
      Sets the echo train length for this image. No exception occurs if the image format does not support a echo train length recording.
      N.B. For disk-based images, the changes in the echo train length will not be reflected on disk unless the close() method is called.
      Specified by:
      setEchoTrainLength in interface WritableImage
      Parameters:
      etl - the new scan echo train length to be assigned to this image. If null, the echo train length is unassigned.
      Throws:
      IOException - if the echo train length cannot be set because of an I/O error.
    • setFlipAngle

      public void setFlipAngle(Float flipAngle) throws IOException
      Description copied from interface: WritableImage
      Sets the excitation pulse flip angle for this image. No exception occurs if the image format does not support flip angle recording.
      N.B. For disk-based images, the changes in the scan flip angle will not be reflected on disk unless the close() method is called.
      Specified by:
      setFlipAngle in interface WritableImage
      Parameters:
      flipAngle - the new scan flip angle to be assigned to this image. If null, the flip angle should be unset.
      Throws:
      IOException - if the scan flip angle cannot be set.
    • getPatientName

      public String getPatientName()
      Description copied from interface: ReadableImage
      Returns the patient name for this image.
      Specified by:
      getPatientName in interface ReadableImage
      Returns:
      the patient name for this image, or null if the patient name can't be found.
    • getPatientID

      public String getPatientID()
      Description copied from interface: ReadableImage
      Returns the patient ID for this image.
      Specified by:
      getPatientID in interface ReadableImage
      Returns:
      the patientID for this image, or null if the patientID can't be found.
    • getPatientDoB

      public Date getPatientDoB()
      Description copied from interface: ReadableImage
      Returns the patient date of birth for this image.
      Specified by:
      getPatientDoB in interface ReadableImage
      Returns:
      the patient's date of birth for this image, or null if the patient's dob can't be found.
    • getPatientSex

      public com.xinapse.dicom.Sex getPatientSex()
      Description copied from interface: ReadableImage
      Returns the patient sex for this image.
      Specified by:
      getPatientSex in interface ReadableImage
      Returns:
      the patient's sex image, or Sex.OTHER if the patient's sex can't be found.
    • getScanDate

      public Date getScanDate()
      Description copied from interface: ReadableImage
      Returns the scan Date for this image.
      Specified by:
      getScanDate in interface ReadableImage
      Returns:
      the date/time at which this scan was performed, or null if the scan date can't be found.
    • getPulseSequence

      public String getPulseSequence()
      Description copied from interface: ReadableImage
      Returns the name of the pulse sequence with which this image was collected.
      Specified by:
      getPulseSequence in interface ReadableImage
      Returns:
      the name of the pulse sequence used to collect this image.
    • getScanningSequence

      public PulseSequenceType getScanningSequence()
      Description copied from interface: ReadableImage
      Returns the DICOM Scanning Sequence with which this image was collected.
      Specified by:
      getScanningSequence in interface ReadableImage
      Returns:
      the DICOM Scanning Sequence used to collect this image, or null if the scanning sequence isn't available.
    • getSequenceVariant

      public PulseSequenceVariant getSequenceVariant()
      Description copied from interface: ReadableImage
      Returns the DICOM Scanning Sequence Variant with which this image was collected.
      Specified by:
      getSequenceVariant in interface ReadableImage
      Returns:
      the DICOM Scanning Sequence Variant used to collect this image, or null if the sequence variant isn't available.
    • getSeriesNumber

      public Integer getSeriesNumber()
      Description copied from interface: ReadableImage
      Returns the series number for this ReadableImage.
      Specified by:
      getSeriesNumber in interface ReadableImage
      Returns:
      the series number. Returns null if the series number can't be found.
    • getSeriesDescription

      public String getSeriesDescription()
      Description copied from interface: ReadableImage
      Returns a short description of the series (scan), such as is provided by the DICOM series description.
      Specified by:
      getSeriesDescription in interface ReadableImage
      Returns:
      a short description of the series, or null if none is available.
    • getScanTR

      public Float getScanTR()
      Description copied from interface: ReadableImage
      Returns the scan repetition time for this image.
      Specified by:
      getScanTR in interface ReadableImage
      Returns:
      the scan TR for this image, or null if not set for this image.
    • getScanTI

      public Float getScanTI()
      Description copied from interface: ReadableImage
      Returns the scan inversion time for this image.
      Specified by:
      getScanTI in interface ReadableImage
      Returns:
      the scan TI for this image, or null if not set for this image.
    • getScanTE

      public Float getScanTE()
      Description copied from interface: ReadableImage
      Returns the scan echo time for this image if it has a single echo-time.
      Specified by:
      getScanTE in interface ReadableImage
      Returns:
      the scan TE for this image, or null if not set for this image.
    • getScanTE

      public Float getScanTE(int index) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the scan echo time for one dimension index of this image. For 3-D images, the dimension index is the slice dimension. For 4-D (or higher dimensionality) images, the dimension index is the frame dimension.
      Specified by:
      getScanTE in interface ReadableImage
      Parameters:
      index - the index for which to return the echo time.
      Returns:
      the scan TE for the specified index of this image, or null if not set for this image.
      Throws:
      IndexOutOfBoundsException - if the index is bad for this image.
    • getSaturationFreqOffsetPPM

      public Float getSaturationFreqOffsetPPM()
      Description copied from interface: ReadableImage
      Returns the scan saturation frequency offset for this image if it has a single saturation frequency offset in parts-per-million.
      Specified by:
      getSaturationFreqOffsetPPM in interface ReadableImage
      Returns:
      the scan saturation frequency offset for this image, or null if not set for this image.
    • getSaturationFreqOffsetPPM

      public Float getSaturationFreqOffsetPPM(int index) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the scan saturation frequency offset for one dimension index of this image in parts-per-million. For 3-D images, the dimension index is the slice dimension. For 4-D (or higher dimensionality) images, the dimension index is the frame dimension.
      Specified by:
      getSaturationFreqOffsetPPM in interface ReadableImage
      Parameters:
      index - the index for which to return the saturation frequency offset.
      Returns:
      the scan TE for the specified index of this image, or null if not set for this image.
      Throws:
      IndexOutOfBoundsException - if the index is bad for this image.
    • getEchoTrainLength

      public Integer getEchoTrainLength()
      Description copied from interface: ReadableImage
      Returns the scan echo train length for this image.
      Specified by:
      getEchoTrainLength in interface ReadableImage
      Returns:
      the echo train length for this image, or null if not set for this image.
    • getFlipAngle

      public Float getFlipAngle()
      Description copied from interface: ReadableImage
      Returns the excitation pulse flip angle for this image.
      Specified by:
      getFlipAngle in interface ReadableImage
      Returns:
      the excitation pulse flip angle for this image, or null if not set for this image.
    • getSliceDWbValue

      public Float getSliceDWbValue(int slice) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the diffusion-weighting b-value for one slice of this image.
      Specified by:
      getSliceDWbValue in interface ReadableImage
      Parameters:
      slice - the slice number for which to return the b-value.
      Returns:
      the diffusion-weighting b-value for the specified slice of this image, or null if the b-value cannot be found, or if the modality used to collect the image doesn't have a b-value defined
      Throws:
      IndexOutOfBoundsException - if the slice number is bad for this image.
    • getFrameDWbValue

      public Float getFrameDWbValue(int frame) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the diffusion-weighting b-value for one frame of this 4-D image.
      Specified by:
      getFrameDWbValue in interface ReadableImage
      Parameters:
      frame - the frame number for which to return the b-value.
      Returns:
      the diffusion-weighting b-value for the specified frame of this image, or null if the b-value cannot be found, or if the modality used to collect the image doesn't have a b-value defined
      Throws:
      IndexOutOfBoundsException - if the frame number is bad for this image, or it isn't a 4-D image.
    • setSliceDWbValue

      public void setSliceDWbValue(float bValue, int index) throws IOException
      Description copied from interface: WritableImage
      Sets the diffusion-weighting b-value for one slice of this image. No exception occurs if the image format does not support recording the b-value.
      N.B. For disk-based images, the changes in the b-value will not be reflected on disk unless the close() method is called.
      Specified by:
      setSliceDWbValue in interface WritableImage
      Parameters:
      bValue - the new b-value to be assigned to this image.
      index - the slice number for which to set the b-value.
      Throws:
      IOException - if the scan b-value cannot be set.
    • setFrameDWbValue

      public void setFrameDWbValue(float bValue, int frame) throws IOException
      Description copied from interface: WritableImage
      Sets the diffusion-weighting b-value for one "frame" of this 4-D image. No exception occurs if the image format does not support recording the b-value.
      N.B. For disk-based images, the changes in the b-value will not be reflected on disk unless the close() method is called.
      Specified by:
      setFrameDWbValue in interface WritableImage
      Parameters:
      bValue - the new b-value to be assigned to this image.
      frame - the frame number for which to set the b-value.
      Throws:
      IOException - if the scan b-value cannot be set.
    • getSliceDWGradientVector

      public org.jogamp.vecmath.Vector3f getSliceDWGradientVector(int slice) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the diffusion-weighting gradient-vector for one slice of this image.
      Specified by:
      getSliceDWGradientVector in interface ReadableImage
      Parameters:
      slice - the slice number for which to return the gradient-vector.
      Returns:
      the diffusion-weighting gradient-vector for the specified slice of this image, or null if the gradient vector cannot be found, or if the modality used to collect the image doesn't have a gradient vector defined.
      Throws:
      IndexOutOfBoundsException - if the slice number is bad for this image.
    • getFrameDWGradientVector

      public org.jogamp.vecmath.Vector3f getFrameDWGradientVector(int frame) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the diffusion-weighting gradient-vector for one frame of this image 4-D image.
      Specified by:
      getFrameDWGradientVector in interface ReadableImage
      Parameters:
      frame - the frame number for which to return the gradient-vector.
      Returns:
      the diffusion-weighting gradient-vector for the specified frame of this image, or null if the gradient vector cannot be found, or if the modality used to collect the image doesn't have a gradient vector defined.
      Throws:
      IndexOutOfBoundsException - if the frame number is bad for this image, or it isn't a 4-D image.
    • setSliceDWGradientVector

      public void setSliceDWGradientVector(org.jogamp.vecmath.Vector3f gradVec, int index) throws IOException
      Description copied from interface: WritableImage
      Sets the diffusion-weighting gradient vector for one slice of this image. No exception occurs if the image format does not support recording the gradient vector.
      N.B. For disk-based images, the changes in the gradient vector will not be reflected on disk unless the close() method is called.
      Specified by:
      setSliceDWGradientVector in interface WritableImage
      Parameters:
      gradVec - the new gradient vector to be assigned to this image.
      index - the slice number for which to set the gradient vector.
      Throws:
      IOException - if the scan gradient vector cannot be set.
    • setFrameDWGradientVector

      public void setFrameDWGradientVector(org.jogamp.vecmath.Vector3f gradVec, int frame) throws IOException
      Description copied from interface: WritableImage
      Sets the diffusion-weighting gradient vector for one "frame" of this 4-D image. No exception occurs if the image format does not support recording the gradient vector.
      N.B. For disk-based images, the changes in the gradient vector will not be reflected on disk unless the close() method is called.
      Specified by:
      setFrameDWGradientVector in interface WritableImage
      Parameters:
      gradVec - the new gradient vector to be assigned to this image.
      frame - the frame number for which to set the gradient vector.
      Throws:
      IOException - if the scan gradient vector cannot be set.
    • getSliceDWBMatrix

      public float[] getSliceDWBMatrix(int slice) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the diffusion-weighting b-matrix for one slice of this image.
      Specified by:
      getSliceDWBMatrix in interface ReadableImage
      Parameters:
      slice - the slice number for which to get the b-matrix.
      Returns:
      the diffusion-weighting b-matrix for this image if it is a magnetic resonance image, or null if the B-matrix cannot be found, or if the modality used to collect the image doesn't have a B-matrix defined. The 6 unique matrix elements are returned as a float[] with elements in the order bXX, bXY, bXZ, bYY, bYZ, bZZ.
      Throws:
      IndexOutOfBoundsException - if the slice number is bad for this image.
    • getFrameDWBMatrix

      public float[] getFrameDWBMatrix(int frame) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the diffusion-weighting b-matrix for one frame of this image.
      Specified by:
      getFrameDWBMatrix in interface ReadableImage
      Parameters:
      frame - the frame number for which to get the b-matrix.
      Returns:
      the diffusion-weighting b-matrix for this image if it is a magnetic resonance image, or null if the B-matrix cannot be found, or if the modality used to collect the image doesn't have a B-matrix defined. The 6 unique matrix elements are returned as a float[] with elements in the order bXX, bXY, bXZ, bYY, bYZ, bZZ.
      Throws:
      IndexOutOfBoundsException - if the frame number is bad for this image, or it isn't a 4-D image.
    • setSliceDWBMatrix

      public void setSliceDWBMatrix(float[] bMatrix, int slice) throws IOException
      Description copied from interface: WritableImage
      Sets the diffusion-weighting B-matrix for one slice of this image. No exception occurs if the image format does not support recording the B-matrix.
      N.B. For disk-based images, the changes in the B-matrix will not be reflected on disk unless the close() method is called.
      Specified by:
      setSliceDWBMatrix in interface WritableImage
      Parameters:
      bMatrix - the new B-matrix to be assigned to this image.
      slice - the slice number for which to set the B-matrix.
      Throws:
      IOException - if the scan B-matrix cannot be set.
    • setFrameDWBMatrix

      public void setFrameDWBMatrix(float[] bMatrix, int frame) throws IOException, IndexOutOfBoundsException
      Description copied from interface: WritableImage
      Sets the diffusion-weighting B-matrix for one "frame" of this 4-D image. No exception occurs if the image format does not support recording the B-matrix.
      N.B. For disk-based images, the changes in the B-matrix will not be reflected on disk unless the close() method is called.
      Specified by:
      setFrameDWBMatrix in interface WritableImage
      Parameters:
      bMatrix - the new B-matrix to be assigned to this image.
      frame - the frame number for which to set the B-matrix.
      Throws:
      IOException - if the scan B-matrix cannot be set.
      IndexOutOfBoundsException - if this is not a 4-D image.
    • getSliceTriggerDelayMS

      public Float getSliceTriggerDelayMS(int slice) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the trigger delay, in milliseconds, for one slice of this image.
      Specified by:
      getSliceTriggerDelayMS in interface ReadableImage
      Parameters:
      slice - the slice number for which to get the trigger delay.
      Returns:
      the trigger delay (in milliseconds) for this image, or null if the trigger delay cannot be found.
      Throws:
      IndexOutOfBoundsException - if the slice number is bad for this image, or it isn't a 4-D image.
    • getFrameTriggerDelayMS

      public Float getFrameTriggerDelayMS(int frame) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns the trigger delay, in milliseconds, for one frame of this image.
      Specified by:
      getFrameTriggerDelayMS in interface ReadableImage
      Parameters:
      frame - the frame number for which to get the trigger delay.
      Returns:
      the trigger delay (in milliseconds) for this image, or null if the trigger delay cannot be found.
      Throws:
      IndexOutOfBoundsException - if the frame number is bad for this image, or it isn't a 4-D image.
    • setSliceTriggerDelayMS

      public void setSliceTriggerDelayMS(float delay, int index) throws IOException
      Description copied from interface: WritableImage
      Sets the trigger delay (in milliseconds) for one slice of this image. No exception occurs if the image format does not support recording the trigger delay.
      N.B. For disk-based images, the changes in the trigger delay will not be reflected on disk unless the close() method is called.
      Specified by:
      setSliceTriggerDelayMS in interface WritableImage
      Parameters:
      delay - the new trigger delay (in milliseconds) to be assigned to this image slice.
      index - the slice number for which to set the trigger delay.
      Throws:
      IOException - if the trigger delay cannot be set.
    • setFrameTriggerDelayMS

      public void setFrameTriggerDelayMS(float delay, int frame) throws IOException
      Description copied from interface: WritableImage
      Sets the trigger delay (in milliseconds) for one "frame" of this 4-D image. No exception occurs if the image format does not support recording the trigger delay.
      N.B. For disk-based images, the changes in the trigger delay will not be reflected on disk unless the close() method is called.
      Specified by:
      setFrameTriggerDelayMS in interface WritableImage
      Parameters:
      delay - the new trigger delay to be assigned to this image.
      frame - the frame number for which to set the trigger delay.
      Throws:
      IOException - if the trigger delay cannot be set.
    • getDescription

      public String getDescription()
      Description copied from interface: ReadableImage
      Returns a String description of this image.
      Specified by:
      getDescription in interface ReadableImage
      Returns:
      a String describing this image.
    • getDescription

      public String getDescription(int slice) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns a String description of this one particular slice of this image.
      Specified by:
      getDescription in interface ReadableImage
      Parameters:
      slice - the slice to describe.
      Returns:
      a String describing the given slice of this image.
      Throws:
      IndexOutOfBoundsException
    • getHTMLDescription

      public String getHTMLDescription()
      Description copied from interface: ReadableImage
      Returns a String description of this image in HTML format.
      Specified by:
      getHTMLDescription in interface ReadableImage
      Returns:
      a String describing this image.
    • getHTMLDescription

      public String getHTMLDescription(int slice) throws IndexOutOfBoundsException
      Description copied from interface: ReadableImage
      Returns a String description of a slice of this image in HTML format.
      Specified by:
      getHTMLDescription in interface ReadableImage
      Parameters:
      slice - the slice number.
      Returns:
      a String describing this image slice.
      Throws:
      IndexOutOfBoundsException - if the slice is bad for this image.
    • getNativeColourMapping

      public ColourMapping getNativeColourMapping() throws InvalidColourMappingException
      Description copied from interface: ReadableImage
      Returns a ColourMapping if this image has an associated colour mapping.
      Specified by:
      getNativeColourMapping in interface ReadableImage
      Returns:
      a ColourMapping if this image has an associated colour mapping. Returns null if it does not.
      Throws:
      InvalidColourMappingException - if this image has an associated ColourMapping, but the ColourMapping cannot be successfully retrieved.
    • setNativeColourMapping

      public void setNativeColourMapping(ColourMapping colourMapping) throws IOException
      Description copied from interface: WritableImage
      Sets the ColourMapping for this image. No exception occurs if the image format does not support a colour mapping.
      N.B. For disk-based images, the changes in the ColourMapping may not be reflected on disk unless the close() method is called.
      Specified by:
      setNativeColourMapping in interface WritableImage
      Parameters:
      colourMapping - the new ColourMapping to be assigned to this image.
      Throws:
      IOException - if the ColourMapping cannot be set for this image.
    • getMin

      public Double getMin() throws InvalidImageException
      Description copied from interface: ReadableImage
      Returns the minimum pixel intensity in the image.
      Specified by:
      getMin in interface ReadableImage
      Returns:
      the maximum pixel intensity as a Double, or null if the intensity min hasn't been calculated for this image.
      Throws:
      InvalidImageException - if the intensity cannot be returned as a Double.
    • getMax

      public Double getMax() throws InvalidImageException
      Description copied from interface: ReadableImage
      Returns the maximum pixel intensity in the image.
      Specified by:
      getMax in interface ReadableImage
      Returns:
      the maximum pixel intensity as a Double, or null if the intensity max hasn't been calculated for this image.
      Throws:
      InvalidImageException - if the intensity cannot be returned as a Double.
    • getCommonName

      public static String getCommonName()
      Returns the common name for this type of image.
      Returns:
      the String "UNC".
    • getImageTypeName

      public String getImageTypeName()
      Description copied from interface: WritableImage
      Returns the normal human readable name for this type of image.
      Specified by:
      getImageTypeName in interface WritableImage
      Returns:
      a String with a one-word description of this type of image.
    • getCopy

      public WritableImage getCopy() throws IOException
      Description copied from interface: WritableImage
      Returns a copy of this WritableImage.
      Specified by:
      getCopy in interface ReadableImage
      Specified by:
      getCopy in interface WritableImage
      Returns:
      a copy of this ReadableImage.
      Throws:
      IOException - if the an I/O error occurs whilst copying.