MCPcopy Create free account
hub / github.com/AIRMEC/HECTOR / create_tissue_mask

Function create_tissue_mask

extract_features.py:340–367  ·  view source on GitHub ↗
(wsi, seg_level, method='otsu')

Source from the content-addressed store, hash-verified

338 return img
339
340def create_tissue_mask(wsi, seg_level, method='otsu'):
341 # Determine the best level to determine the segmentation on
342 level_dims = wsi.level_dimensions[seg_level]
343
344 img = np.array(wsi.read_region((0, 0), seg_level, level_dims))
345
346 # Get the total surface area of the slide level that was used
347 level_area = level_dims[0] * level_dims[1]
348
349 # Minimum surface area of tissue polygons (in pixels)
350 # Note that this value should be sensible in the context of the chosen tile size
351 min_area = level_area / 500
352
353 if method=='stain_deconv':
354 tissue_mask = segment_tissue_deconv_stain(img)
355 tissue_mask = mask_to_polygons(tissue_mask, min_area)
356 else:
357 contours, hierarchy = segment_tissue(img)
358 foreground_contours, hole_contours = detect_foreground(contours, hierarchy)
359 tissue_mask = construct_polygon(foreground_contours, hole_contours, min_area)
360
361 # Scale the tissue mask polygon to be in the coordinate space of the slide's level 0
362 scale_factor = wsi.level_downsamples[seg_level]
363 tissue_mask_scaled = scale(
364 tissue_mask, xfact=scale_factor, yfact=scale_factor, zfact=1.0, origin=(0, 0)
365 )
366
367 return tissue_mask_scaled
368
369def create_tissue_tiles(wsi, tissue_mask_scaled, tile_size_microns, offsets_micron=None):
370

Callers 1

extract_save_featuresFunction · 0.85

Calls 5

mask_to_polygonsFunction · 0.85
segment_tissueFunction · 0.85
detect_foregroundFunction · 0.85
construct_polygonFunction · 0.85

Tested by

no test coverage detected