Package jhd.FloodFill

Class HybridFloodFill

java.lang.Object
jhd.FloodFill.Offsets
jhd.FloodFill.HybridFloodFill

public class HybridFloodFill
extends Offsets
Class for simulation of non-wetting imbibition into random porous media with both resolved and unresolved porosity
Author:
John H Dunsmuir
  • Constructor Details

    • HybridFloodFill

      public HybridFloodFill()
      Constructor for HybridFloodFill
  • Method Details

    • characterize

      public HybridFloodFill.PorosityReport characterize​(java.lang.Object[] oImageArr, int width, int height, int depth, double pixWidth, double pixHeight, double pixDepth)
      Parameters:
      oImageArr - An Object[] as returned by ImageJ ImagePlus imp.getStack().getImageArray(); (must be float data where unresolved porosity 0<phi<1 and resolved porosity phi=1)
      width - int The image width in pixels
      height - int The image height in pixels
      depth - int The image depth in pixels
      pixWidth - float The width of the pixel in user units;
      pixHeight - float The height of the pixel in user units;
      pixDepth - float The depth of the pixel in user units;
      Returns:
      A PorosityReport data structure.
    • phiMapToHybridMap

      public double phiMapToHybridMap​(java.lang.Object[] oImageArr, int width, int height, int depth, double pixWidth, double pixHeight, double pixDepth)
      Converts a porosity image 0<phi<1 to a hybrid porosity image with unresolved porosity 0<phi<1 and with resolved porosity converted to a Euclidean distance map with 1<phi<floodMax
      Parameters:
      oImageArr - An Object[] as returned by ImageJ ImagePlus imp.getStack().getImageArray(); (must be float data where unresolved porosity 0<phi<1 and resolved porosity phi=1)
      width - int The image width in pixels
      height - int The image height in pixels
      depth - int The image depth in pixels
      pixWidth - float The width of the pixel in user units;
      pixHeight - float The height of the pixel in user units;
      pixDepth - float The depth of the pixel in user units;
      Returns:
      The longest floodable pore radius, -1 if error occurs.
    • hybridFloodFill

      public HybridFloodFill.FloodReport hybridFloodFill​(java.lang.Object[] oImageArr, int width, int height, int depth, double pixWidth, double pixHeight, double pixDepth, java.lang.String pixUnit, double floodMin, int neighbors)
      Parameters:
      oImageArr - An Object[] (must be float data ) as returned by ImageJ ImagePlus imp.getStack().getImageArray(); (must be float data where unresolved porosity 0<phi<1 and resolved porosity phi=1)˙ The method wraps the hybrid flood fill algorithm, characterize, EDM, Flood, and GDT.
      width - int The image width in pixels
      height - int The image height in pixels
      depth - int The image depth in pixels
      pixWidth - float The width of the pixel in user units;
      pixHeight - float The height of the pixel in user units;
      pixDepth - float The depth of the pixel in user units;
      pixUnit - The units of pixel size e.g. microns, millimeters, etc.
      floodMin - float The minimum voxel value to be flooded
      neighbors - int The connectedness face(6), face and edge(18), face, edge and corners(26)
      Returns:
      A FloodReport data structure. The input image becomes a map of tortuosity of the floodable paths
    • hybridFloodFill

      public HybridFloodFill.FloodReport hybridFloodFill​(java.lang.Object[] oImageArr, int width, int height, int depth, double pixWidth, double pixHeight, double pixDepth, java.lang.String pixUnit, double floodMin, int neighbors, boolean doEDM, boolean doGDT)
      Parameters:
      oImageArr - An Object[] (must be float data ) as returned by ImageJ ImagePlus imp.getStack().getImageArray(); (must be float data where unresolved porosity 0<phi<1 and resolved porosity phi=1)˙ The method toggles the characterize, EDM, and GDTcomponents the hybrid flood fill algorithm to accelerate bulk processing.
      width - int The image width in pixels
      height - int The image height in pixels
      depth - int The image depth in pixels
      pixWidth - float The width of the pixel in user units;
      pixHeight - float The height of the pixel in user units;
      pixDepth - float The depth of the pixel in user units;
      pixUnit - The units of pixel size e.g. microns, millimeters, etc.
      floodMin - float The minimum voxel value to be flooded
      neighbors - int The connectedness face(6), face and edge(18), face, edge and corners(26)
      doEDM - (true) Converts porosity=1 the exact Euclidean distances, set to false if the EDM has been pre-computed.
      doGDT - (true) Convert the flooded volume to tortuosity
      Returns:
      A FloodReport data structure. The input image becomes a map of tortuosity of the floodable paths