Tissue Detection

Created on Wed Sep 18 03:29:24 2019.

@author: mtageld

histomicstk.saliency.tissue_detection.get_slide_thumbnail(gc, slide_id)[source]

Get slide thumbnail using girder client.

  • gc (object) – girder client to use

  • slide_id (str) – girder ID of slide


RGB slide thumbnail at lowest level

Return type

np array

histomicstk.saliency.tissue_detection.get_tissue_boundary_annotation_documents(gc, slide_id, labeled, color='rgb(0,0,0)', group='tissue', annprops=None)[source]

Get annotation documents of tissue boundaries to visualize on DSA.

  • gc (object) – girder client to use

  • slide_id (str) – girder ID of slide

  • labeled (np array) – mask of tissue regions using slide thumbnail. This could either be a binary mask or a mask where each unique value corresponds to one tissue region. It will be binalized anyways. This can be obtained using get_tissue_mask().

  • color (str) – color to assign to boundaries. format like rgb(0,0,0)

  • group (str) – label for annotations

  • annpops (dict) – properties of annotation elements. Contains the following keys F, X_OFFSET, Y_OFFSET, opacity, lineWidth. Refer to get_single_annotation_document_from_contours() for details.


each dict is an annotation document that you can post to DSA

Return type

list of dicts

histomicstk.saliency.tissue_detection.get_tissue_mask(thumbnail_im, deconvolve_first=False, stain_unmixing_routine_kwargs=None, n_thresholding_steps=1, sigma=0.0, min_size=500)[source]

Get binary tissue mask from slide thumbnail.

  • thumbnail_im (np array) – (m, n, 3) nd array of thumbnail RGB image or (m, n) nd array of thumbnail grayscale image

  • deconvolve_first (bool) – use hematoxylin channel to find cellular areas? This will make things ever-so-slightly slower but is better in getting rid of sharpie marker (if it’s green, for example). Sometimes things work better without it, though.

  • stain_matrix_method (str) – see deconv_color method in seed_utils

  • n_thresholding_steps (int) – number of gaussian smoothign steps

  • sigma (float) – sigma of gaussian filter

  • min_size (int) – minimum size (in pixels) of contiguous tissue regions to keep


  • np int32 array – each unique value represents a unique tissue region

  • np bool array – largest contiguous tissue region.

histomicstk.saliency.tissue_detection.threshold_multichannel(im, thresholds, channels=None, just_threshold=False, get_tissue_mask_kwargs=None)[source]

Threshold a multi-channel image (eg. HSI image) to get tissue.

The relies on the fact that oftentimes some slide elements (eg blood or whitespace) have a characteristic hue/saturation/intensity. This thresholds along each HSI channel, then optionally uses the get_tissue_mask() method (gaussian smoothing, otsu thresholding, connected components) to get each contiguous tissue piece.

  • im (np array) – (m, n, 3) array of Hue, Saturation, Intensity (in this order)

  • thresholds (dict) – Each entry is a dict containing the keys min and max

  • channels (list) – names of channels, in order (eg. hue, saturation, intensity)

  • just_threshold (bool) – if Fase, get_tissue_mask() is used to smooth result and get regions.

  • get_tissue_mask_kwargs (dict) – key-value pairs of parameters to pass to get_tissue_mask()


  • np int32 array – if not just_threshold, unique values represent unique tissue regions

  • np bool array – if not just_threshold, largest contiguous tissue region.