Class ModelImage

All Implemented Interfaces:
Serializable, Cloneable

public class ModelImage extends ModelStorageBase
This class extends the generic buffer class ModelStorageArray and is used to store n-dimensional images and buffer class that supports boolean, byte, short, int, long, float, double, etc. data types. After the buffer is created the minimum and maximum parameters are calculated. ModelImage is a specific buffer to addressing issues relating to images.
Version:
1.0
Author:
Matthew J. McAuliffe Ph.D.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Use serialVersionUID for interoperability.
      See Also:
    • IMAGE_A

      public static final int IMAGE_A
      Used to indicate that this image object is Image A when two images are displayed in the same frame. See also imageOrder in this class.
      See Also:
    • IMAGE_B

      public static final int IMAGE_B
      Used to indicate that this image object is Image B when two images are displayed in the same frame. See also imageOrder in this class.
      See Also:
    • frameList

      private transient Vector<ViewImageUpdateInterface> frameList
      List of frames where this image is displayed. This is an important list, for example when the LUT of table is changed the list is used to notify all the frames displaying this image that they should update their view of the image. The transient keyword is used to indicate that the frame list should NOT be cloned when the image is cloned. The new cloned image should build up its own list of frame(s) where it is displayed.
    • imageName

      private String imageName
      ImageName is patient's name when using DICOM images. It is filename for any other image something other than filename must be used for DICOM because one DICOM image is made of many seperate files. ** Not necessarily the file name.
    • imageNameArray

      private String[] imageNameArray
      If imageNameArray is not null, then a different image name will appear on every slice
    • imageOrder

      private int imageOrder
      Indicates the image order when two images are displayed in the same frame.
    • mask

      private BitSet mask
      Mask is a binary object that is true interior to a VOI and false otherwise used in algorithms to process only on VOIs if indicated by the user.
    • maskBU

      private BitSet maskBU
      Backup of mask for undoing.
    • useMask

      private boolean useMask
    • matrixHolder

      private MatrixHolder matrixHolder
      Holds all of the images associated matrices.
    • provenanceHolder

      private transient ProvenanceHolder provenanceHolder
      Holds the data provenance (image history) The transient keyword is used to indicate that the provenanceHolder should not be cloned when the image is cloned. The new cloned image creates its own provenanceHolder
    • talairach

      private TalairachTransformInfo talairach
      Reference to talairach transform information.
    • dtiParameters

      private DTIParameters dtiParameters
      Reference to DWI bvalue and gradient information.
    • UI

      private transient ViewUserInterface UI
      The user interface has a vector of all image models loaded into MIPAV. I put the reference to it here so that when an image is created it can added tothe vector in the user interface.
    • voiVector

      private VOIVector voiVector
      List of VOIs that are displayed with this image.
  • Constructor Details

    • ModelImage

      public ModelImage(ModelStorageBase.DataType type, int[] dimExtents, String name)
      Creates a new ModelImage object, registering it to the default user interface.
      Parameters:
      type - indicates type of buffer as DataType enum (ie. boolean, byte ...)
      dimExtents - array indicating image extent in each dimension.
      name - name of the image.
    • ModelImage

      public ModelImage(int type, int[] dimExtents, String name)
      Creates a new ModelImage object, registering it to the default user interface.
      Parameters:
      type - indicates type of buffer(ie. boolean, byte ...)
      dimExtents - array indicating image extent in each dimension.
      name - name of the image.
    • ModelImage

      public ModelImage(int type, int[] dimExtents, String name, ViewUserInterface _UI)
      Deprecated.
      Only one ViewUserInterface should be instantiated for an instance of MIPAV running, so _UI should be ViewUserInterface.getReference()
      Creates a new ModelImage object that is registered to the provided user interface. Should not be used when an instance of the interface exists.
      Parameters:
      type - indicates type of buffer(ie. boolean, byte ...)
      dimExtents - array indicating image extent in each dimension.
      name - name of the image.
      _UI - should be ViewUserInterface.getReference()
    • ModelImage

      public ModelImage(ModelSimpleImage simpleImage, String name)
      Creates a new ModelImage object based on an existing ModelSimpleImage, only exists as a FLOAT datatype.
      Parameters:
      simpleImage - legacy ModelSimpleImage
      name - name of the image.
  • Method Details

    • isColorImage

      public static boolean isColorImage(int dataType)
      Accessor that returns whether or not the given data type is a color data type.
      Parameters:
      dataType - The data type from a ModelImage to determine if it is of one of the three types of color images supported.
      Returns:
      true if color, false if not color.
    • addImageDisplayListener

      public void addImageDisplayListener(ViewImageUpdateInterface obj)
      Add a listener to this class so that notifyListener can be used to notify all listeners to update the display of the image.
      Parameters:
      obj - "object' to be added to the list
    • addVOIs

      public void addVOIs(VOIVector VOIs)
      adds VOI vector for with new VOIs.
      Parameters:
      VOIs - VOIs to add to image
    • anonymize

      public void anonymize(boolean[] list, boolean doRename)
      Anonymize the image by altering the sensitive data of each slice to something generic. Original version that passes into the new version so that backwards compatibility still exists.
      See Also:
    • anonymize

      public void anonymize(boolean[] list, boolean doRename, boolean removeValue)
      New version of anonymize that allows you to replace the original tag value with a blank string or zero depending on the data type. To blank out the value, removeValue should be set to true.
    • anonymizeSequenceTags

      public void anonymizeSequenceTags(boolean[] list, Vector<FileDicomSQItem> seqs, boolean removeValue)
      Method to anonymize the tags found in the DICOM supplement 55 that may appear in sequence tags. A list of sequence tags should be passed in so that you do not have to figure out which tags are sequences every time.
      See Also:
    • removePrivateTags

      public void removePrivateTags(FileDicomKey[] keys)
      Method to remove private tags from the file. No option is given to anonymize the values. Requires an array of DICOM keys.
      See Also:
    • removePrivateTagsWhite

      public void removePrivateTagsWhite(FileDicomKey[] keys)
    • removePrivateSequenceTags

      public final void removePrivateSequenceTags(FileDicomKey[] keys, Vector<FileDicomSQItem> seqs)
      Method to anonymize private tags that may appear in sequence tags. A list of sequence tags should be passed in so that you do not have to figure out which tags are sequences every time.
      See Also:
    • removePrivateSequenceTagsWhite

      public final void removePrivateSequenceTagsWhite(FileDicomKey[] keys, Vector<FileDicomSQItem> seqs)
    • anonymizePublicTags

      public void anonymizePublicTags(FileDicomKey[] keys, boolean removeValue)
      Method to anonymize public tags that do not appear in the DICOM Supplement 55. Like in the other anonymize methods, you may instead choose to replace the value with a blank string.
      See Also:
    • anonymizePublicSequenceTags

      public final void anonymizePublicSequenceTags(FileDicomKey[] keys, Vector<FileDicomSQItem> seqs, boolean removeValue)
      Method to anonymize public tags not in the DICOM Supplement 55 that may appear in sequence tags. A list of sequence tags should be passed in so that you do not have to figure out which tags are sequences every time.
      See Also:
    • calcMinMax

      public void calcMinMax()
      Calculates the min and max values for the image array.
      Overrides:
      calcMinMax in class ModelStorageBase
    • setExtents

      public void setExtents(int[] dims)
      Description copied from class: ModelStorageBase
      Sets the dimExtents for this structure.
      Overrides:
      setExtents in class ModelStorageBase
      Parameters:
      dims - new dimensions for image
    • changeExtents

      public void changeExtents(int[] dimExtents)
      Changes the image dimensionality or extents.
      Parameters:
      dimExtents - new dimensions for mask, maskBU, and fileInfo
    • clearMask

      public void clearMask()
      Sets the entire mask object to false.
    • clone

      public Object clone()
      Copies the image and all data associated with the image (i.e. VOIs). Invokes the clone(String newName) method with newName set to null;
      Overrides:
      clone in class ModelStorageBase
      Returns:
      the new copy of the image
    • clone

      public Object clone(String newName)
      Copies the image and all data associated with the image (i.e. VOIs). Sets the name of the new image to newName.
      Parameters:
      newName - String containing the name for the cloned image. If null then 'this' image name is appended with "_clone".
      Returns:
      the new copy of the image
    • copyFileTypeInfo

      public void copyFileTypeInfo(ModelImage fromImage)
      Deep copies the file type info from the fromImage to the current image object.
      Parameters:
      fromImage - image from which to copy file type info
    • createMask

      public void createMask(int length)
      Creates mask and maskBU of new length.
      Parameters:
      length - int
    • displayAboutInfo

      public void displayAboutInfo(JDialogBase dialog, int z, int t, boolean dicom, boolean xml)
      Displays all information about an image.
      Parameters:
      dialog - dialog object where image information is to be displayed
      z - index of file information -- each image slice can have separate file information (i.e. like DICOM).
      t - t slice of the fileinfo to display.
      dicom - boolean indicating if this is a DICOM file
      xml - boolean indicating if this is a XML file
    • disposeLocal

      public void disposeLocal()
      Unregisters image and disposes of image memory and associated objects.
      Overrides:
      disposeLocal in class ModelStorageBase
    • disposeLocal

      public void disposeLocal(boolean garbageCollect)
      Unregisters image and disposes of image memory and associated objects.
      Parameters:
      garbageCollect - boolean - A flag indicating whether or not garbage collection is invoked.
    • matched

      public boolean matched(int[] axisOrderOut, boolean[] axisFlipOut)
    • export

      public final ModelImage export(int[] axisOrderOut, boolean[] axisFlipOut, boolean bClone, ViewJProgressBar progressBar, int startValue, int finalValue)
      Exports data based on the mapping the current ModelImage to a new ModelImage oriented based on the axisOrder and axisFlip arrays.
      Parameters:
      axisOrderOut - The mapping of current ModelImage to the new ModelImage axes.
      axisFlip - Invert flags for the new axes.
      Returns:
      A new ModelImage. Extents, resolutions, units, origins and orientations are all updated.
    • calcStartLocations

      private void calcStartLocations(float[] newLoc, int[] axisOrder, boolean[] axisFlip)
      Calculates the new start locations based on image orientation.
      Parameters:
      newLoc - float[] buffer to store the new start locations
    • calcAxisOrientation

      private int calcAxisOrientation(int[] newOrient, int[] axisOrder, boolean[] axisFlip)
      Calculate the new image AxisOrientation, based on re-ordering the axes using axisOrder and axisFlip.
      Parameters:
      newOrient - new image AxisOrientation (R2L or L2R, P2A or A2P, etc...)
      axisOrder - re-ordering of axes
      axisFlip - inverting new axes.
    • generateBinaryImage

      public ModelImage generateBinaryImage()
      Forms a solid (without holes) binary image from all VOIs in the image.
      Returns:
      image image of boolean type with VOI objects = 1 and background = 0
    • generateBinaryImage

      public ModelImage generateBinaryImage(boolean XOR, boolean onlyActive)
      Forms a binary image from VOIs.
      Parameters:
      XOR - indicates that nested VOI contours will be exclusive ORed with other contours of the VOI
      onlyActive - Only mask regions that are active (i.e. selected VOIs)
      Returns:
      image image of boolean type with VOI objects = 1 and background = 0
    • generateShortImage

      public ModelImage generateShortImage(int offset)
      Generates a solid (no holes) short image of regions defined by VOIs.
      Parameters:
      offset - offset value added to ID - normally 1 used to label the masked regions
      Returns:
      ModelImage mask image of type short
    • generateShortImage

      public ModelImage generateShortImage(int offset, boolean XOR, boolean onlyActive)
      Exports a short mask of the VOI[index]. VOI[0] = 1 ... VOI[n] = n
      Parameters:
      offset - offset value added to ID - normally 1. ID is used to label the masked regions
      XOR - indicates that nested VOI contours will be exclusive ORed with other contours of the VOI
      onlyActive - Only mask regions that are active (i.e. selected VOIs)
      Returns:
      ModelImage mask image of type short
    • generateUnsignedByteImage

      public ModelImage generateUnsignedByteImage(int offset)
      Generates a solid (no holes) unsigned byte image of regions defined by VOIs.
      Parameters:
      offset - offset value added to ID - normally 1. ID is used to label the masked regions
      Returns:
      ModelImage mask image of type unsigned byte
    • generateUnsignedByteImage

      public ModelImage generateUnsignedByteImage(int offset, boolean XOR, boolean onlyActive)
      Exports an unsigned byte mask of the VOI[index]. VOI[0] = 1 ... VOI[n] = n
      Parameters:
      offset - offset value added to ID - normally 1. ID is used to label the masked regions
      XOR - indicates that nested VOI contours will be exclusive ORed with other contours of the VOI
      onlyActive - Only mask regions that are active (i.e. selected VOIs)
      Returns:
      ModelImage mask image of type unsigned byte
    • generateVOIMask

      public BitSet generateVOIMask()
      Generates a BitSet mask of all the VOIs and sets ImageModel mask.
      Returns:
      binary mask of all VOIs returned as a BitSet object
    • generateVOIMask

      public BitSet generateVOIMask(boolean XOR)
      Generates a BitSet mask of all the VOIs and sets ImageModel mask.
      Parameters:
      XOR - indicates that nested VOI contours will be exclusive ORed with other contours of the VOI
      Returns:
      binary mask of all VOIs returned as a BitSet object
    • generateVOIMask

      public short[] generateVOIMask(short[] mask, int index)
      Generates a mask of the type short - without XORing VOI contours.
      Parameters:
      mask - mask of VOI of type short
      index - indicates a specific VOI used to create the mask
      Returns:
      mask short mask of the VOI
    • generateVOIMask

      public BitSet generateVOIMask(boolean XOR, boolean onlyActive)
      Generates a BitSet mask of all the VOIs and sets ImageModel mask.
      Parameters:
      XOR - indicates that nested VOI contours will be exclusive ORed with other contours of the VOI
      onlyActive - Only mask regions that are active (i.e. selected )
      Returns:
      binary mask of all VOIs returned as a BitSet object
    • generateVOIMask

      public short[] generateVOIMask(short[] mask, int index, boolean XOR)
      Exports a short mask of the VOI[index].
      Parameters:
      mask - mask of VOI of type short
      index - indicates a specific VOI used to create the mask
      XOR - indicates that nested VOI contours will be exclusive ORed with other contours of the VOI
      Returns:
      mask short mask of the VOI
    • getAnimateFrame

      public ViewJFrameAnimate getAnimateFrame()
      Method that returns the animate frame if it exists else returns null.
      Returns:
      animate frame
    • getHistogramFrame

      public JFrameHistogram getHistogramFrame()
      Method that returns the Histogram frame if it exists else returns null.
      Returns:
      Histogram frame associated with this image, or null.
    • getHistoLUTFrame

      public ViewJFrameHistoLUT getHistoLUTFrame()
      Deprecated.
      Method that returns the HistoLUT frame if it exists else returns null.
      Returns:
      histoLUTFrame
    • getHistoRGBFrame

      public ViewJFrameHistoRGB getHistoRGBFrame()
      Deprecated.
      Method that returns the HistoRGB frame if it exists else returns null.
      Returns:
      histoRGBFrame
    • getImageCenter

      public WildMagic.LibFoundation.Mathematics.Vector3f getImageCenter()
      Calculates translation offset for transforming image about the center of the image.
      Returns:
      Center of image in pixels.
    • getImageCentermm

      public WildMagic.LibFoundation.Mathematics.Vector3f getImageCentermm(boolean useScanner)
      Calculates translation offset for transforming image about the center of the image in the resolution space.
      Parameters:
      useScanner - DOCUMENT ME!
      Returns:
      Center of the image in millimeters (or other physical dimension).
    • getImageDirectory

      public String getImageDirectory()
      Returns the directory where the image file is located.
      Returns:
      The directory where the image file resides.
    • getImageFileName

      public String getImageFileName()
      Returns the file name of the image.
      Returns:
      the String that represents the filename (as stored in the fileinfo)
    • getImageFrameVector

      public Vector<ViewImageUpdateInterface> getImageFrameVector()
      Accessor that returns.
      Returns:
      image frame vector
    • getImageModality

      public int getImageModality()
      Returns the type of image.
      Returns:
      type of image (MRI, CT, ...)
    • getImageName

      public String getImageName()
      Accessor that returns the name of the image.
      Returns:
      the String representing the filename if DICOM image then ImageName is the patients' name else, imageName is the file name (see the contructor for more)
    • getImageOrder

      public int getImageOrder()
      For multiple image viewers this indicates order of the image.
      Returns:
      integer indicating image order
    • getLightBoxFrame

      public ViewJFrameLightBox getLightBoxFrame()
      Method that returns the lightbox frame if it exists else returns null.
      Returns:
      lightbox frame
    • getMask

      public BitSet getMask()
      Accessor that returns.
      Returns:
      mask that indicates which pixels/voxels will be processed.
    • getMaskBU

      public BitSet getMaskBU()
      Accessor that returns.
      Returns:
      a bakeup of mask that indicates which pixels/voxels will be processed.
    • useMask

      public void useMask(boolean bOn)
    • useMask

      public boolean useMask()
    • getMatrix

      public TransMatrix getMatrix()
      Accessor that returns transformation matrix.
      Returns:
      transformation matrix
    • getMatrixHolder

      public MatrixHolder getMatrixHolder()
      DOCUMENT ME!
      Returns:
      DOCUMENT ME!
    • getProvenanceHolder

      public ProvenanceHolder getProvenanceHolder()
    • getPackedColor

      public final int getPackedColor(int iIndex)
      If no LUT or RGB color table is defined, this returns the packed int value for the color at iIndexs for the input ModelImage kImage:
      Parameters:
      iIndex - pixel index
      Returns:
      RGB color value.
    • getParentFrame

      public ViewJFrameImage getParentFrame()
      Returns the parent frame of this image. Should always exist.
      Returns:
      The parent frame of this image.
    • getPlane

      public final float[] getPlane(WildMagic.LibFoundation.Mathematics.Vector3f topLeft, WildMagic.LibFoundation.Mathematics.Vector3f topRight, WildMagic.LibFoundation.Mathematics.Vector3f botLeft, WildMagic.LibFoundation.Mathematics.Vector3f botRight)
      Deprecated.
      Extract an arbitrary slice plane from the image using tri-linear interpolation. Performs bounds checking and returns a full plane of the image (up to the slicesize * 2).
      Parameters:
      topLeft - the top left point of the plane; must be in the image coord system.
      topRight - the top right point of the plane; must be in the image coord system.
      botLeft - the bottom left point of the plane; must be in the image coord system.
      botRight - the bottom right point of the plane; must be in the image coord system. not really used..
      Returns:
      a float buffer containing the extracted plane (size == image.getSliceSize() 2).
    • getRegistrationFrame

      public ViewJFrameRegistration getRegistrationFrame()
      Method that returns the registration frame if it exists else returns null.
      Returns:
      registration frame
    • getScannerCoordLPS

      public void getScannerCoordLPS(int x, int y, int z, float[] scannerCoord)
      Deprecated.
      see MipavCoordinateSystems.fileToScanner
      Takes input x,y,z coordinate and returns that point transformed into the scanner's (DICOM) coordinate system. L = Left - first axis is positive to the left P = Posterior - second axis is positive to the posterior S = Superior - third axis is positive to the superior
      Parameters:
      x - Absolute x value in slice.
      y - Absolute y value in slice.
      z - Absolute z value in slice.
      scannerCoord - the point transformed into the scanner's (DICOM) coordinate system.
    • getScannerCoordRAS

      public void getScannerCoordRAS(int x, int y, int z, float[] scannerCoord)
      Deprecated.
      see MipavCoordinateSystems.fileToScanner
      Takes input x,y,z coordinate and returns that point transformed into the RAS coordinate system. R = Right - first axis is positive to the right A = Anterior - second axis is positive to the anterior S = Superior - third axis is positive to the superior
      Parameters:
      x - Absolute x value in slice.
      y - Absolute y value in slice.
      z - Absolute z value in slice.
      scannerCoord - the point transformed into the scanner's (DICOM) coordinate system.
    • getTalairachTransformInfo

      public TalairachTransformInfo getTalairachTransformInfo()
      Accessor that returns the talairach transform information.
      Returns:
      TalairachTransformInfo talairach info
    • getTriImageFrame

      public ViewJFrameTriImage getTriImageFrame()
      Method that returns the tri image frame if it exists else returns null.
      Returns:
      tri image frame
    • getUserInterface

      public ViewUserInterface getUserInterface()
      Deprecated.
      DOCUMENT ME!
      Returns the reference to the user interface.
      Returns:
      the reference to the user interface.
    • getVOIs

      public VOIVector getVOIs()
      Accessor that returns.
      Returns:
      VOI vector
    • getVOIsCopy

      public VOIVector getVOIsCopy()
    • groupVOIs

      public void groupVOIs()
      Forms a single VOI structure from all the active VOIs presently loaded in the imageModel.
    • isColorImage

      public boolean isColorImage()
      Accessor that returns whether or not the image is a color image.
      Returns:
      true if color, false if not color.
    • is2DImage

      public boolean is2DImage()
    • is3DImage

      public boolean is3DImage()
    • is4DImage

      public boolean is4DImage()
    • isComplexImage

      public boolean isComplexImage()
      Accessor that returns whether or not the image is a COMPLEX or DCOMPLEX image.
      Returns:
      true if complex, false if not complex.
    • isDicomImage

      public boolean isDicomImage()
      Accessor that returns whether or not the image is a DICOM image.
      Returns:
      true if DICOM, false if not DICOM.
    • isPowerOfTwo

      public boolean isPowerOfTwo()
      Returns true if the ModelImage 3D dimensions combine to be a power of two.
      Returns:
      true if the ModelImage 3D dimensions combine to be a power of two.
    • isSlicePowerOfTwo

      public boolean isSlicePowerOfTwo()
      Returns true if the ModelImage 2D dimensions (slice size) combine to be a power of two.
      Returns:
      true if the ModelImage 2D dimensions (slice size) combine to be a power of two.
    • isMincImage

      public boolean isMincImage()
      Accessor that returns whether or not the image is a MINC image.
      Returns:
      true if MINC, false if not MINC.
    • isGE_Signa4XImage

      public boolean isGE_Signa4XImage()
      Accessor that returns whether or not the image is a GE_SIGNA4X image.
      Returns:
      true if GE_SIGNA4X, false if not GE_SIGNA4X.
    • isGE_GenesisImage

      public boolean isGE_GenesisImage()
      Accessor that returns whether or not the image is a GE_GENESIS image.
      Returns:
      true if GE_GENESIS, false if not GE_GENESIS.
    • notifyImageDisplayListeners

      public void notifyImageDisplayListeners()
      Used to notify all frames that display this image model need to be updated.
    • notifyImageDisplayListeners_notTriFrame

      public void notifyImageDisplayListeners_notTriFrame()
      Used to notify all frames except the triImage frames that display this image model need to be updated.
    • notifyImageDisplayListeners

      public void notifyImageDisplayListeners(ModelLUT LUT, boolean forceShow)
      Used to notify all frames that display this image model need to be updated.
      Parameters:
      LUT - new LUT used to display image (can be null);
      forceShow - force the display method(s) to reload image data and display image slower but needed if image model changes.
    • notifyImageDisplayListeners

      public void notifyImageDisplayListeners(boolean forceShow, int alphaBlend, ModelRGB RGBT)
      Deprecated.
      Used to notify all frames that display this image model need to be updated for RGB (color) images.
      Parameters:
      forceShow - force the display method(s) to reload image data and display image slower but needed if image model changes.
      alphaBlend - the amount to blend between two images displayed in the same frame.
      RGBT - ModelRGB
    • notifyImageDisplayListeners

      public void notifyImageDisplayListeners(boolean forceShow, ModelRGB RGBT)
      Used to notify all frames that display this image model need to be updated for RGB (color) images.
      Parameters:
      forceShow - force the display method(s) to reload image data and display image slower but needed if image model changes.
      RGBT - ModelRGB
      alphaBlend - the amount to blend between two images displayed in the same frame.
    • notifyImageDisplayListeners

      public void notifyImageDisplayListeners(ModelLUT LUT, boolean forceShow, int alphaBlend, int interpMode)
      Used to notify all listeners that the image is to be redisplayed.
      Parameters:
      LUT - new LUT used to display image (can be null);
      forceShow - force the display method(s) to reload image data and display image slower but needed if image model changes.
      alphaBlend - indicates the amount of blending between two images (image 1's blending value) 1.0 - all of image 1; 0.5 - half image 1 and half image 2
      interpMode - image interpolation method (Nearest or Smooth)
    • notifyImageExtentsListeners

      public void notifyImageExtentsListeners()
      Used to notify all frames that display this image model that this image's extents have changed. The display of this image may also need to be updated.
    • print

      public void print()
      Prints basic image parameters to the System.out.
    • readTransformMatrix

      public TransMatrix readTransformMatrix(boolean composite)
      Read matrix from a file.
      Parameters:
      composite - if true make a composite matrix of the by multipling this matrix with the one to be read from the file. If false replace this object matrix with a new matrix read from the file.
      Returns:
      DOCUMENT ME!
    • reallocate

      public void reallocate(int type)
      Reallocates ModelImage with new type and all image data lost.
      Overrides:
      reallocate in class ModelStorageBase
      Parameters:
      type - new type of image that is to be allocated
    • reallocate

      public void reallocate(int type, boolean useDisplayError)
      Reallocates ModelImage with new type and all image data lost.
      Parameters:
      type - new type of image that is to be allocated
      useDisplayError - if true, MipavUtil.displayError, if false, System.err.println
    • registerVOI

      public void registerVOI(VOI voi)
      Method that register an VOI to this image.
      Parameters:
      voi - Region of interest (VOI) to be registered with the image model
    • restoreVOIs

      public void restoreVOIs(VOIVector VOIs)
      Sets VOI vector for with new VOIs.
      Parameters:
      VOIs - VOIs to image VOIs
    • isRegistered

      public int isRegistered(VOI voi)
    • removeImageDisplayListener

      public void removeImageDisplayListener(ViewImageUpdateInterface obj)
      Remove a listener from the class.
      Parameters:
      obj - "object' to be added to the list
    • resetVOIs

      public void resetVOIs()
      Resets VOI vector for new VOIs.
    • saveImage

      public boolean saveImage(String directory, String fileName, int fileType, boolean isActive)
      Save the image to a file. The file type the image is to be save in is passed into this method.
      Parameters:
      directory - location where the image is to stored.
      fileName - the name of the file (without the extension).
      fileType - The format of the image file (i.e. Analyze, XML, DICOM etc.)
      isActive - Whether saving is being done in a separate thread
      Returns:
      true if succeeded in saving.
    • saveImage

      public boolean saveImage(String directory, String fileName, int fileType, boolean isActive, boolean bDisplayProgress)
      Save the image to a file. The file type the image is to be save in is passed into this method.
      Parameters:
      directory - location where the image is to stored.
      fileName - the name of the file (without the extension).
      fileType - The format of the image file (i.e. Analyze, XML, DICOM etc.)
      isActive - Whether saving is being done in a separate thread
      bDisplayProgress - when true display the progress bar for writing.
      Returns:
      true if succeeded in saving.
    • saveImage

      public boolean saveImage(String directory, String fileName, int fileType, boolean isActive, boolean bDisplayProgress, boolean quiet)
      Save the image to a file. The file type the image is to be save in is passed into this method.
      Parameters:
      directory - location where the image is to stored.
      fileName - the name of the file (without the extension).
      fileType - The format of the image file (i.e. Analyze, XML, DICOM etc.)
      isActive - Whether saving is being done in a separate thread
      bDisplayProgress - when true display the progress bar for writing.
      Returns:
      true if succeeded in saving.
    • saveTransformMatrix

      public void saveTransformMatrix(TransMatrix matrix)
      Saves the transformation matrix to file.
      Parameters:
      matrix - DOCUMENT ME!
    • saveImage

      public static void saveImage(ModelImage kImage, String fName, String dName)
      Save the gradient magnitude image into the MIPAV default dir.
      Parameters:
      gmImage - ModelImage gradient magnitude image to save
    • saveImage

      public static void saveImage(ModelImage kImage, String fName, String dName, boolean displayProgressBar)
    • saveImage

      public static void saveImage(ModelImage kImage)
    • saveTransformMatrix

      public void saveTransformMatrix(String fileName, TransMatrix matrix)
      Save the images transformation matrix in the working directory with the supplied fileName.
      Parameters:
      fileName - - fileName of transformation matrix
      matrix - DOCUMENT ME!
    • setImageDirectory

      public void setImageDirectory(String dir)
      Sets the image directory.
      Parameters:
      dir - string representing the directory
    • setImageModality

      public void setImageModality(int type)
      Sets the image type (MRI, CT, ...).
      Parameters:
      type - integer representing the type
    • setImageNameArray

      public void setImageNameArray(String[] imageNameArray)
      Accesor to set imageNameArray
      Parameters:
      imageNameArray -
    • getImageNameArray

      public String[] getImageNameArray()
    • setImageName

      public void setImageName(String name)
      Accessor that sets the name of the image. This method also updates the file name in the fileInfos to match the new image name.
      Parameters:
      name - the String representing the filename
    • setImageName

      public void setImageName(String name, boolean updateFileName)
      Accessor that sets the name of the image.
      Parameters:
      name - the String representing the filename
      updateFileName - whether to update the file name stored in the image's fileInfos to match the new image name
    • getDTIParameters

      public DTIParameters getDTIParameters()
    • setDTIParameters

      public void setDTIParameters(DTIParameters dtiParameters)
      Sets the DTIParamters object
      Parameters:
      dti - params object that stores dwi parameters (i.e. gradients and bvalues)
    • setImageNamePrivate

      public void setImageNamePrivate(String name)
      Accessor that sets the name of the image. NOT TO BE USED BY ANYONE EXCEPT ViewUserInterface.registerImage. Use setImageName instead!!!
      Parameters:
      name - the String representing the filename
    • setImageOrder

      public void setImageOrder(int order)
      For multiple image viewers this indicates order of the image.
      Parameters:
      order - integer indicating image order
    • setImageOrientation

      public void setImageOrientation(int orient)
      Sets the image orientation (sagittal, axial, ...).
      Parameters:
      orient - integer representing the orientation
    • setMask

      public void setMask(BitSet _mask)
      Sets the mask which indicate which pixels/voxels to process.
      Parameters:
      _mask - mask in the form of a BitSet, 1 indicates pixel should be processed 0 indicates pixel should not be processed
    • setMaskBU

      public void setMaskBU(BitSet mask)
      Sets the mask which indicate which pixels/voxels to process.
      Parameters:
      mask - mask in the form of a BitSet, 1 indicates pixel should be processed 0 indicates pixel should not be processed
    • setMatrix

      public void setMatrix(TransMatrix matrix)
      Accessor that adds a matrix to the matrix holder.
      Parameters:
      matrix - transformation matrix structure.
    • setSlice

      public void setSlice(int slice)
      Sets the slice in all frames displaying this image.
      Parameters:
      slice - Indicates the z dim. slice that should be displayed.
    • setTalairachTransformInfo

      public void setTalairachTransformInfo(TalairachTransformInfo tal)
      Accessor that sets the talairach transform information.
      Parameters:
      tal - TalairachTransformInfo talairach info
    • setTimeSlice

      public void setTimeSlice(int tSlice)
      Sets the time slice in all frames displaying this image.
      Parameters:
      tSlice - Indicates the t (time) dim. slice that should be displayed.
    • setUserInterface

      public void setUserInterface(ViewUserInterface _UI)
      Sets user interface.
      Parameters:
      _UI - reference to user interface
    • setVOIs

      public void setVOIs(VOIVector VOIs)
      Sets VOI vector for with new VOIs.
      Parameters:
      VOIs - VOIs to image VOIs
    • toString

      public String toString()
      Gives a readable representation of the ModelImage, including file name and extents.
      Overrides:
      toString in class Object
      Returns:
      the string representation
    • trimVOIs

      public void trimVOIs()
    • updateVOIs

      public void updateVOIs()
    • ungroupVOIs

      public void ungroupVOIs()
      Forms separate VOIs from all the VOI structures presently loaded in the imageModel.
    • unregisterAllVOIs

      public void unregisterAllVOIs()
      Unregisters all VOIs from this image model.
    • unRegisterImage

      public void unRegisterImage()
      Unregisters the image from the user interface.
    • unregisterVOI

      public void unregisterVOI(VOI voi)
      Method that unregisters an VOI.
      Parameters:
      voi - Volume of interest (VOI) to be removed from the image model
    • updateFileInfo

      public static boolean updateFileInfo(ModelImage destImage, ModelImage srcImage, int[] axisOrder, boolean[] axisFlip, ViewJProgressBar progressBar, int startValue, int finalValue)
    • matrixToDICOMString

      private static String matrixToDICOMString(TransMatrix matrix)
      Convert the matrix to the String format (decimal string) to be stored in the DICOM tag (0020,0037) image (patient) orientation.
      Parameters:
      matrix - Transformation matrix to be converted.
      Returns:
      The string version of the transformation matrix (i.e. the directional cosines for the first two rows of the matrix delimited by "\")
    • positionToDICOMString

      private static String positionToDICOMString(double pt0, double pt1, double pt2)
      Convert the image position to the String format (decimal string) to be stored in the DICOM tag (0020,0032) image (patient) orientation.
      Parameters:
      pt0 - X position of patient.
      pt1 - Y position of patient.
      pt2 - Z position of patient.
      Returns:
      The string version of the patient position delimited by "\".
    • updateFileName

      public void updateFileName(String newImageName)
      Give the image a new image name, updates frame (if not null), and file infos.
      Parameters:
      newImageName - The new name for the image
    • updateImageOrigin

      public void updateImageOrigin(TransMatrix xfrm)
      Updates the images origin.
      Parameters:
      xfrm - the transformation maxtrix used to transform the origin
    • makeUnitsOfMeasureIdentical

      public void makeUnitsOfMeasureIdentical()
      Make all spatial units the same, all time units the same, and all frequency units the same
    • make2UnitsOfMeasureIdentical

      public void make2UnitsOfMeasureIdentical(int newUnitDim, int oldUnitDim)
      Parameters:
      newUnitDim -
      oldUnitDim - dimension which will have unit of measure converted to unit of measure of dimension newUnitDim and will have the resolution correspondingly converted.
    • getConversionFactor

      public static double getConversionFactor(int newUnit, int oldUnit)
    • finalize

      protected void finalize() throws Throwable
      Calls disposeLocal of this class to ensure this class nulls the references to global class variables so that memory will be recovered.
      Overrides:
      finalize in class ModelStorageBase
      Throws:
      Throwable - Throws an error if there is a problem with the finalization of this object.
    • makeImageName

      public static String makeImageName(String imageName, String ext)
      Helper method for making the result image's name. Strips the current extension from the original name, adds the given extension, and returns the new name.
      Parameters:
      imageName - Source image name that will be modified to have a new extension.
      ext - Extension to add which gives information about what algorithm was performed on the image.
      Returns:
      The new image name.
    • disposeThisImage

      private void disposeThisImage()
      Disposes of image memory and LUT Frame.
    • fixFileTypeInfo

      private void fixFileTypeInfo(ModelImage image)
      Fixes file information to resultant image structure. When one image's file information is copied to anothers this method sets the modality to OTHER and file directory to an empty string.
      Parameters:
      image - source image
    • setClonedImageName

      private void setClonedImageName(String name)
      Accessor that sets the name of the image without registering the image.
      Parameters:
      name - the String representing the filename
    • exportDataUseMask

      public final void exportDataUseMask(int start, int length, boolean rescale, byte[] values) throws IOException
      Export data into values array.
      Parameters:
      start - indicates starting position in data array
      length - length of data to be copied from data array
      values - array where data is to be deposited
      Throws:
      IOException - Throws an error when there is a locking or bounds error.
    • exportDataUseMask

      public final void exportDataUseMask(int start, int length, float[] values) throws IOException
      Export data into values array.
      Parameters:
      start - indicates starting position in data array
      length - length of data to be copied from data array
      values - array where data is to be deposited
      Throws:
      IOException - Throws an error when there is a locking or bounds error.
    • exportDiagonal

      public final void exportDiagonal(int tSlice, int slice, int[] extents, WildMagic.LibFoundation.Mathematics.Vector3f[] verts, float[] values, boolean bInterpolate, boolean bUseMask, Vector<BitSet> surfaceMask, boolean[] surfaceValues) throws IOException
      Throws:
      IOException