Class GeometryROI

java.lang.Object
qupath.lib.roi.GeometryROI
All Implemented Interfaces:
Serializable, ROI

public class GeometryROI extends Object implements Serializable
ROI based on Java Topology Suite Geometry objects. This gives a very flexible representation (except for a lack of support for ellipses), which needs only copy itself to return getGeometry(). Consequently it can be much more performant whenever the underlying Geometry is required frequently compared to other ROI types with a new Geometry must be constructed and validated.
Author:
Pete Bankhead
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from interface qupath.lib.roi.interfaces.ROI

    ROI.RoiType
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    contains(double x, double y)
    Test is the ROI contains specified x, y coordinates.
    Create a duplicate of the ROI.
    Get a list of points representing the vertices of the ROI.
    double
    Get the area of this ROI.
    double
    Returns the height of the ROI bounding box.
    double
    Returns the width of the ROI bounding box.
    double
    Returns the x coordinate for the top left of the ROI bounding box.
    double
    Returns the y coordinate for the top left of the ROI bounding box.
    int
    Get channel index, or -1 if the ROI relates to all available channels.
    double
    Returns the x coordinate for the ROI centroid.
    double
    Returns the y coordinate for the ROI centroid.
    Default implementation using JTS.
    Returns a org.locationtech.jts.geom.Geometry object.
    Get the ImagePlane, which contains the values for c, z and t in a single object.
    double
    Get ROI length.
    int
    Default implementation, calls ROI.getAllPoints() and then caches the result.
    Get a String representation of the kind of ROI we have, e.g.
    Get the RoiType, used to distinguish between points, lines and areas.
    double
    getScaledArea(double pixelWidth, double pixelHeight)
    Get scaled area of the ROI, for use with calibrated pixel sizes.
    double
    getScaledLength(double pixelWidth, double pixelHeight)
    Get the scaled length, for use with calibrated pixel sizes.
    Returns a java.awt.Shape representing this ROI, if possible.
    double
    Calculate the solidity, defined as ROI area / convex hull area.
    int
    Get time point index.
    int
    Get z-stack slice index.
    boolean
    Returns true if this ROI encloses an area.
    boolean
    True if the bounding box has zero area
    boolean
    Returns true if this ROI consists of line segments and does not enclose an area.
    boolean
    Returns true if this ROI represents distinct (unconnected) points.
    scale(double scaleX, double scaleY, double originX, double originY)
    Create a scaled version of this ROI.
     
    translate(double dx, double dy)
    Create a translated version of this ROI.
    Create a new ROI defining the same region on a different ImagePlane.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface qupath.lib.roi.interfaces.ROI

    scale
  • Method Details

    • getRoiName

      public String getRoiName()
      Description copied from interface: ROI
      Get a String representation of the kind of ROI we have, e.g. "Rectangle", "Ellipse", "Polygon"
      Specified by:
      getRoiName in interface ROI
      Returns:
    • getCentroidX

      public double getCentroidX()
      Description copied from interface: ROI
      Returns the x coordinate for the ROI centroid.
      Specified by:
      getCentroidX in interface ROI
      Returns:
    • getCentroidY

      public double getCentroidY()
      Description copied from interface: ROI
      Returns the y coordinate for the ROI centroid.
      Specified by:
      getCentroidY in interface ROI
      Returns:
    • getBoundsX

      public double getBoundsX()
      Description copied from interface: ROI
      Returns the x coordinate for the top left of the ROI bounding box.
      Specified by:
      getBoundsX in interface ROI
      Returns:
    • getBoundsY

      public double getBoundsY()
      Description copied from interface: ROI
      Returns the y coordinate for the top left of the ROI bounding box.
      Specified by:
      getBoundsY in interface ROI
      Returns:
    • getBoundsWidth

      public double getBoundsWidth()
      Description copied from interface: ROI
      Returns the width of the ROI bounding box.
      Specified by:
      getBoundsWidth in interface ROI
      Returns:
    • getBoundsHeight

      public double getBoundsHeight()
      Description copied from interface: ROI
      Returns the height of the ROI bounding box.
      Specified by:
      getBoundsHeight in interface ROI
      Returns:
    • getAllPoints

      public List<Point2> getAllPoints()
      Description copied from interface: ROI
      Get a list of points representing the vertices of the ROI.

      This is only really well-defined for ROIs where a single set of vertices represents the shape completely; the expected output for a ROI that contains holes or disconnected regions is (currently) undefined.

      Specified by:
      getAllPoints in interface ROI
      Returns:
    • duplicate

      public ROI duplicate()
      Description copied from interface: ROI
      Create a duplicate of the ROI.

      This method is deprecated, since ROIs are (or are moving towards being) immutable... making it pointless to duplicate them.

      Specified by:
      duplicate in interface ROI
      Returns:
    • getGeometry

      public Geometry getGeometry()
      Description copied from interface: ROI
      Returns a org.locationtech.jts.geom.Geometry object.
      Specified by:
      getGeometry in interface ROI
      Returns:
    • getShape

      public Shape getShape()
      Description copied from interface: ROI
      Returns a java.awt.Shape representing this ROI, if possible.

      Note that PointROI throws an UnsupportedOperationException as it cannot adequately be represented by a Shape object.

      Specified by:
      getShape in interface ROI
      Returns:
    • getRoiType

      public ROI.RoiType getRoiType()
      Description copied from interface: ROI
      Get the RoiType, used to distinguish between points, lines and areas.
      Specified by:
      getRoiType in interface ROI
      Returns:
    • getArea

      public double getArea()
      Description copied from interface: ROI
      Get the area of this ROI. For lines and points this returns 0.
      Specified by:
      getArea in interface ROI
      Returns:
      See Also:
    • getLength

      public double getLength()
      Description copied from interface: ROI
      Get ROI length. This is defined as
      • perimeter in the case of area ROIs
      • total length of line segments in the case of line or polyline ROIs
      • 0 in the case of point ROIs
      Specified by:
      getLength in interface ROI
      Returns:
      See Also:
    • getScaledArea

      public double getScaledArea(double pixelWidth, double pixelHeight)
      Description copied from interface: ROI
      Get scaled area of the ROI, for use with calibrated pixel sizes.
      Specified by:
      getScaledArea in interface ROI
      Parameters:
      pixelWidth -
      pixelHeight -
      Returns:
      See Also:
    • getScaledLength

      public double getScaledLength(double pixelWidth, double pixelHeight)
      Description copied from interface: ROI
      Get the scaled length, for use with calibrated pixel sizes.
      Specified by:
      getScaledLength in interface ROI
      Parameters:
      pixelWidth -
      pixelHeight -
      Returns:
      See Also:
    • contains

      public boolean contains(double x, double y)
      Description copied from interface: ROI
      Test is the ROI contains specified x, y coordinates. Only Area ROIs can return true, i.e. where ROI.isArea() returns true. All other ROIs (points, lines) return false.
      Specified by:
      contains in interface ROI
      Parameters:
      x -
      y -
      Returns:
    • translate

      public ROI translate(double dx, double dy)
      Description copied from interface: ROI
      Create a translated version of this ROI. The original ROI is unchanged.
      Specified by:
      translate in interface ROI
      Parameters:
      dx - horizontal translation
      dy - vertical translation
      Returns:
    • scale

      public ROI scale(double scaleX, double scaleY, double originX, double originY)
      Description copied from interface: ROI
      Create a scaled version of this ROI. Coordinates are multiplied by the given scaling factors, while the original ROI is unchanged.
      Specified by:
      scale in interface ROI
      Parameters:
      scaleX - horizontal scale value
      scaleY - vertical scale value
      originX - value subtracted from each x-ordinate prior to scaling, and added back afterwards
      originY - value subtracted from each y-ordinate prior to scaling, and added back afterwards
      Returns:
      See Also:
    • updatePlane

      public ROI updatePlane(ImagePlane plane)
      Description copied from interface: ROI
      Create a new ROI defining the same region on a different ImagePlane. The original ROI is unchanged.
      Specified by:
      updatePlane in interface ROI
      Parameters:
      plane - the new plane to use
      Returns:
    • getImagePlane

      public ImagePlane getImagePlane()
      Description copied from interface: ROI
      Get the ImagePlane, which contains the values for c, z and t in a single object.
      Specified by:
      getImagePlane in interface ROI
      Returns:
    • getZ

      public int getZ()
      Description copied from interface: ROI
      Get z-stack slice index.

      Default is 0 if the image it relates to is not a z-stack.

      Specified by:
      getZ in interface ROI
      Returns:
    • getT

      public int getT()
      Description copied from interface: ROI
      Get time point index.

      Default is 0 if the image it relates to is not a time series.

      Specified by:
      getT in interface ROI
      Returns:
    • getC

      public int getC()
      Description copied from interface: ROI
      Get channel index, or -1 if the ROI relates to all available channels.

      (This is not currently used, but may be in the future)

      Specified by:
      getC in interface ROI
      Returns:
    • isEmpty

      public boolean isEmpty()
      True if the bounding box has zero area
      Specified by:
      isEmpty in interface ROI
      Returns:
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getNumPoints

      public int getNumPoints()
      Default implementation, calls ROI.getAllPoints() and then caches the result. Subclasses may override for efficiency.
      Specified by:
      getNumPoints in interface ROI
      Returns:
    • isLine

      public boolean isLine()
      Description copied from interface: ROI
      Returns true if this ROI consists of line segments and does not enclose an area.
      Specified by:
      isLine in interface ROI
      Returns:
    • isArea

      public boolean isArea()
      Description copied from interface: ROI
      Returns true if this ROI encloses an area.
      Specified by:
      isArea in interface ROI
      Returns:
    • isPoint

      public boolean isPoint()
      Description copied from interface: ROI
      Returns true if this ROI represents distinct (unconnected) points.
      Specified by:
      isPoint in interface ROI
      Returns:
    • getConvexHull

      public ROI getConvexHull()
      Default implementation using JTS. Subclasses may replace this with a more efficient implementation.
      Specified by:
      getConvexHull in interface ROI
      Returns:
    • getSolidity

      public double getSolidity()
      Description copied from interface: ROI
      Calculate the solidity, defined as ROI area / convex hull area. Returns Double.NaN if the ROI does not represent an area.
      Specified by:
      getSolidity in interface ROI
      Returns: