Class AbstractTileableDetectionPlugin<T>

Type Parameters:
T -
All Implemented Interfaces:
PathInteractivePlugin<T>, PathPlugin<T>
Direct Known Subclasses:
CellCountsCV, DoGSuperpixelsPlugin, SLICSuperpixelsPlugin, WatershedCellDetection, WatershedCellMembraneDetection, WatershedNucleiCV

public abstract class AbstractTileableDetectionPlugin<T> extends AbstractDetectionPlugin<T>
Abstract plugin used for detection tasks that support breaking large regions into smaller ones, and analyzing these in parallel - optionally with overlaps.

Particularly useful for tasks such as cell detection.

Author:
Pete Bankhead
  • Constructor Details

    • AbstractTileableDetectionPlugin

      public AbstractTileableDetectionPlugin()
  • Method Details

    • getPreferredPixelSizeMicrons

      protected abstract double getPreferredPixelSizeMicrons(ImageData<T> imageData, ParameterList params)
      Get the preferred pixel size that would be used for the specified ImageData and ParameterList.

      This is useful in deciding whether to break large regions into smaller, parallelizable tiles.

      Parameters:
      imageData -
      params -
      Returns:
    • createDetector

      protected abstract ObjectDetector<T> createDetector(ImageData<T> imageData, ParameterList params)
      Create a new ObjectDetector, compatible with the specified ImageData and ParameterList.
      Parameters:
      imageData -
      params -
      Returns:
    • getTileOverlap

      protected abstract int getTileOverlap(ImageData<T> imageData, ParameterList params)
      Get an appropriate overlap, in pixels, if analysis of the specified ImageData will be tiled.

      If the overlap is 0, then tile boundaries are likely to be visible in the results.

      If the overlap is > 0, then the overlap should also be > the expected largest size of a detected object - otherwise objects may be lost of trimmed when overlaps are resolved. This is because (currently) the resolution of overlapping detections involves taking the largest one, rather than (for example) merging them.

      (Merging may be permitted in later versions, but only where measurements are not made by the plugin - since merged objects may require different measurements, e.g. for area or mean than can be easily computed in a general way from the individual objects being merged).

      Parameters:
      imageData -
      params -
      Returns:
      The overlap size in pixels, or 0 if overlapped tiles are not supported.
    • addRunnableTasks

      protected void addRunnableTasks(ImageData<T> imageData, PathObject parentObject, List<Runnable> tasks)
      Intercepts the 'standard' addRunnableTasks to (if necessary) insert ParallelTileObjects along the way, thereby breaking an excessively-large parentObject into more manageable pieces.

      TODO: Avoid hard-coding what is considered a 'manageable size' or a preferred size for parallel tiles.

      Specified by:
      addRunnableTasks in class AbstractPlugin<T>
      Parameters:
      imageData -
      parentObject -
      tasks -