Note
Go to the end to download the full example as a Python script or as a Jupyter notebook.
Glasbey colormap#
A long-requested feature [1] for napari was to display labels/segmentation layers using a well-known discrete colormap such as Glasbey [2].
In this example, we demonstrate displaying segmentations using custom colormaps with the help of the glasbey Python library [3], which you can install with your favorite Python package manager, such as pip or conda. We display a segmentation using the napari built-in labels colormap, the original Glasbey colormap, a more modern version produced by limiting the lightness and chroma and optimizing for colorblind-safety, and finally with the matplotlib tab10 colormap.
import glasbey
import numpy as np
from skimage import data
from skimage.filters import threshold_otsu
from skimage.measure import label
from skimage.morphology import closing, remove_small_objects
from skimage.segmentation import clear_border
import napari
image = data.coins()[50:-50, 50:-50]
First, we segment the image.
Then, we create two color palettes using the glasbey library. One with the original glasbey parameters and 256 colors, and a more modern one with better lightness and chroma bounds for a less glary look.
Finally, we display the coins image and the overlaid segmentation. We do this in two viewers to show both colormaps.
viewer, image_layer = napari.imshow(image, name='coins')
# add the labels
label_layer_glas = viewer.add_labels(
label_image, name='segmentation', colormap=glas
)
viewer2, image_layer2 = napari.imshow(image, name='coins')
label_layer_modern = viewer2.add_labels(
label_image, name='segmentation-glasbey-19-mid-chroma', colormap=glas19mid,
)
if __name__ == '__main__':
napari.run()