Class AreaROI
- All Implemented Interfaces:
Serializable,ROI
It may be decomposed into one or more polygons (vertices), in which case the sign of the area is important in indicating whether the region should be considered 'positive' or a hole.
The underlying idea is based on java.awt.Area, but implemented so as to avoid a dependency on AWT.
However, because this implementation is relatively simple, it doesn't do the complicated checking and computations of AWT Areas - and so ought not be used directly. Rather, AWTAreaROI is strongly to be preferred.
The real usefulness of this class is in enabling Serialization of all ROIs to avoid a dependency on AWT, since potentially a deserialized version of this could then be used to create different kinds of Area (e.g. java.awt.Area or some JavaFX alternative.)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface qupath.lib.roi.interfaces.ROI
ROI.RoiType -
Method Summary
Modifier and TypeMethodDescriptionbooleancontains(double x, double y) Deprecated.Test is the ROI contains specified x, y coordinates.protected ShapeDeprecated.Create aShapeobject to represent the ROI.Deprecated.booleanDeprecated.Deprecated.Beware this method! This will return all polygon points (useful e.g.doublegetArea()Deprecated.Get the area of this ROI.doubleDeprecated.Returns the height of the ROI bounding box.doubleDeprecated.Returns the width of the ROI bounding box.doubleDeprecated.Returns the x coordinate for the top left of the ROI bounding box.doubleDeprecated.Returns the y coordinate for the top left of the ROI bounding box.intgetC()Get channel index, or -1 if the ROI relates to all available channels.doubleDeprecated.Get the x coordinate of the ROI centroid;doubleDeprecated.Get the y coordinate of the ROI centroid;Default implementation using JTS.Deprecated.Returns a org.locationtech.jts.geom.Geometry object.Get the ImagePlane, which contains the values for c, z and t in a single object.doubleDeprecated.Get ROI length.intDefault implementation, callsROI.getAllPoints()and then caches the result.Deprecated.Get a String representation of the kind of ROI we have, e.g.Deprecated.Get the RoiType, used to distinguish between points, lines and areas.doublegetScaledArea(double pixelWidth, double pixelHeight) Deprecated.Get scaled area of the ROI, for use with calibrated pixel sizes.doublegetScaledLength(double pixelWidth, double pixelHeight) Deprecated.Get the scaled length, for use with calibrated pixel sizes.getShape()Deprecated.Returns a java.awt.Shape representing this ROI, if possible.protected ShapeGet a (possibly cached) shape representation of the ROI.doubleCalculate the solidity, defined as ROI area / convex hull area.intgetT()Get time point index.intgetZ()Get z-stack slice index.inthashCode()Deprecated.booleanintersects(double x, double y, double width, double height) Deprecated.Test if the ROI intersects a specified region.protected booleanintersectsBounds(double x, double y, double width, double height) Quick check whether the specified rectangle intersects with the bounds of this ROI.booleanisArea()Returns true if this ROI encloses an area.booleanisEmpty()True if the bounding box has zero areabooleanisLine()Returns true if this ROI consists of line segments and does not enclose an area.booleanisPoint()Returns true if this ROI represents distinct (unconnected) points.intDeprecated.Get the number of vertices used to represent this area.scale(double scaleX, double scaleY, double originX, double originY) Deprecated.Create a scaled version of this ROI.toString()translate(double dx, double dy) Deprecated.Create a translated version of this ROI.updatePlane(ImagePlane plane) Deprecated.Create a new ROI defining the same region on a differentImagePlane.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface qupath.lib.roi.interfaces.ROI
getScaledArea, getScaledLength, intersects, scale
-
Method Details
-
nVertices
public int nVertices()Deprecated.Get the number of vertices used to represent this area. There is some 'fuzziness' to the meaning of this, since curved regions will be flattened and the same complex areas may be represented in different ways - nevertheless it provides some measure of the 'complexity' of the area.- Returns:
-
getArea
public double getArea()Deprecated.Description copied from interface:ROIGet the area of this ROI. For lines and points this returns 0. -
getLength
public double getLength()Deprecated.Description copied from interface:ROIGet 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
-
getRoiName
Deprecated.Description copied from interface:ROIGet a String representation of the kind of ROI we have, e.g. "Rectangle", "Ellipse", "Polygon"- Specified by:
getRoiNamein interfaceROI- Returns:
-
getCentroidX
public double getCentroidX()Deprecated.Get the x coordinate of the ROI centroid;Warning: If the centroid computation was too difficult (i.e. the area is particularly elaborate), then the center of the bounding box will be used instead! (However this should not be relied upon as it is liable to change in later versions)
- Specified by:
getCentroidXin interfaceROI- Returns:
-
getCentroidY
public double getCentroidY()Deprecated.Get the y coordinate of the ROI centroid;Warning: If the centroid computation was too difficult (i.e. the area is particularly elaborate), then the center of the bounding box will be used instead! (However this should not be relied upon as it is liable to change in later versions)
- Specified by:
getCentroidYin interfaceROI- Returns:
-
contains
public boolean contains(double x, double y) Deprecated.Description copied from interface:ROITest is the ROI contains specified x, y coordinates. Only Area ROIs can return true, i.e. whereROI.isArea()returns true. All other ROIs (points, lines) return false. -
intersects
public boolean intersects(double x, double y, double width, double height) Deprecated.Description copied from interface:ROITest if the ROI intersects a specified region.Note that this test is intended as a fast initial filter; a more detailed test using
ROI.getGeometry()is recommended when exact results are needed.- Specified by:
intersectsin interfaceROI- Parameters:
x- the x coordinate of the region bounding boxy- the y coordinate of the region bounding boxwidth- the width of the region bounding boxheight- the height of the region bounding box- Returns:
- true if the ROI intersects the region, false otherwise
-
duplicate
Deprecated.Description copied from interface:ROICreate a duplicate of the ROI.This method is deprecated, since ROIs are (or are moving towards being) immutable... making it pointless to duplicate them.
-
translate
Deprecated.Description copied from interface:ROICreate a translated version of this ROI. The original ROI is unchanged. -
scale
Deprecated.Description copied from interface:ROICreate a scaled version of this ROI. Coordinates are multiplied by the given scaling factors, while the original ROI is unchanged.- Specified by:
scalein interfaceROI- Parameters:
scaleX- horizontal scale valuescaleY- vertical scale valueoriginX- value subtracted from each x-ordinate prior to scaling, and added back afterwardsoriginY- value subtracted from each y-ordinate prior to scaling, and added back afterwards- Returns:
- See Also:
-
getScaledArea
public double getScaledArea(double pixelWidth, double pixelHeight) Deprecated.Description copied from interface:ROIGet scaled area of the ROI, for use with calibrated pixel sizes.- Specified by:
getScaledAreain interfaceROI- Parameters:
pixelWidth-pixelHeight-- Returns:
- See Also:
-
getScaledLength
public double getScaledLength(double pixelWidth, double pixelHeight) Deprecated.Description copied from interface:ROIGet the scaled length, for use with calibrated pixel sizes.- Specified by:
getScaledLengthin interfaceROI- Parameters:
pixelWidth-pixelHeight-- Returns:
- See Also:
-
getBoundsX
public double getBoundsX()Deprecated.Description copied from interface:ROIReturns the x coordinate for the top left of the ROI bounding box.- Specified by:
getBoundsXin interfaceROI- Returns:
-
getBoundsY
public double getBoundsY()Deprecated.Description copied from interface:ROIReturns the y coordinate for the top left of the ROI bounding box.- Specified by:
getBoundsYin interfaceROI- Returns:
-
getBoundsWidth
public double getBoundsWidth()Deprecated.Description copied from interface:ROIReturns the width of the ROI bounding box.- Specified by:
getBoundsWidthin interfaceROI- Returns:
-
getBoundsHeight
public double getBoundsHeight()Deprecated.Description copied from interface:ROIReturns the height of the ROI bounding box.- Specified by:
getBoundsHeightin interfaceROI- Returns:
-
getAllPoints
Deprecated.Beware this method! This will return all polygon points (useful e.g. for convex hull calculations), but since the area itself isn't necessarily polygonal then tracing through the points does *not* necessarily result in the same shape as that which the area represents.- Specified by:
getAllPointsin interfaceROI- Returns:
-
updatePlane
Deprecated.Description copied from interface:ROICreate a new ROI defining the same region on a differentImagePlane. The original ROI is unchanged.- Specified by:
updatePlanein interfaceROI- Parameters:
plane- the new plane to use- Returns:
- Throws:
UnsupportedOperationException- because AreaROI is a legacy class that is no longer supported
-
equals
Deprecated. -
hashCode
public int hashCode()Deprecated. -
getGeometry
Deprecated.Description copied from interface:ROIReturns a org.locationtech.jts.geom.Geometry object.- Specified by:
getGeometryin interfaceROI- Returns:
-
getShape
Deprecated.Description copied from interface:ROIReturns 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.
-
createShape
Deprecated.Create aShapeobject to represent the ROI.- Returns:
- a new Shape object
-
getRoiType
Deprecated.Description copied from interface:ROIGet the RoiType, used to distinguish between points, lines and areas.- Specified by:
getRoiTypein interfaceROI- Returns:
-
getImagePlane
Description copied from interface:ROIGet the ImagePlane, which contains the values for c, z and t in a single object.- Specified by:
getImagePlanein interfaceROI- Returns:
-
getZ
public int getZ()Description copied from interface:ROIGet z-stack slice index.Default is 0 if the image it relates to is not a z-stack.
-
getT
public int getT()Description copied from interface:ROIGet time point index.Default is 0 if the image it relates to is not a time series.
-
getC
public int getC()Description copied from interface:ROIGet channel index, or -1 if the ROI relates to all available channels.(This is not currently used, but may be in the future)
-
getShapeInternal
Get a (possibly cached) shape representation of the ROI. This may be mutable, and so should not be passed outside the class.- Returns:
-
isEmpty
public boolean isEmpty()True if the bounding box has zero area -
intersectsBounds
protected boolean intersectsBounds(double x, double y, double width, double height) Quick check whether the specified rectangle intersects with the bounds of this ROI. This can be used to avoid a more expensive intersection check.- Parameters:
x- x coordinate of the rectangle to testy- y coordinate of the rectangle to testwidth- width of the rectangle to testheight- height of the rectangle to test- Returns:
- true if the bounds intersect, false otherwise
-
toString
-
getNumPoints
public int getNumPoints()Default implementation, callsROI.getAllPoints()and then caches the result. Subclasses may override for efficiency.- Specified by:
getNumPointsin interfaceROI- Returns:
- Implementation Note
- the default implementation assumes that ROIs are immutable.
-
isLine
public boolean isLine()Description copied from interface:ROIReturns true if this ROI consists of line segments and does not enclose an area. -
isArea
public boolean isArea()Description copied from interface:ROIReturns true if this ROI encloses an area. -
isPoint
public boolean isPoint()Description copied from interface:ROIReturns true if this ROI represents distinct (unconnected) points. -
getConvexHull
Default implementation using JTS. Subclasses may replace this with a more efficient implementation.- Specified by:
getConvexHullin interfaceROI- Returns:
-
getSolidity
public double getSolidity()Description copied from interface:ROICalculate the solidity, defined as ROI area / convex hull area. Returns Double.NaN if the ROI does not represent an area.- Specified by:
getSolidityin interfaceROI- Returns:
-