label matrix coloring algorithm
Project description
ncolor
Fast remapping of instance labels 1,2,3,...,M to a smaller set of repeating, disjoint labels, 1,2,...,N. The four-color-theorem guarantees that at most four colors are required for any 2D segmentation/map, but this algorithm will opt for 5 or 6 to give an acceptable result if it fails to find a 4-color mapping quickly. Also works for 3D labels (<8 colors typically required) and perhaps higher dimensions as well.
Usage
If you have an integer array called masks
, you may transform it into an N-color representation as follows:
import ncolor
ncolor_masks = ncolor.label(masks)
If you need the number of unique labels returned:
ncolor_masks, num_labels = ncolor.label(masks,return_n=True)
If you need to convert back to 0,...,N
object labels:
labels = ncolor.format_labels(ncolor_masks,clean=True)
Note that format_labels
with clean=True
will also remove small labels (<9px) by default. This behavior can be changed with the min_area
parameter.
The integer array ncolor_masks
can be visualized using any color map you prefer. The example in this README uses the viridis colormap. See example.ipynb
for more details.
Thanks to Ryan Peters (@ryanirl) for suggesting the expand_labels
function. This is applied by default to 2D images (optionally for 3D images with expand=True
, but this can give bad results since objects in 3D have a lot more wiggle room to make contact when expanded). This preprocessing step eliminates cases where close (but not touching) or dispersed objects previously received the same label. I dug a layer back to use ndimage.distance_transform_edt
for a speed boost. If undesired for 2D images, use expand=False
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ncolor-1.3.0.tar.gz
.
File metadata
- Download URL: ncolor-1.3.0.tar.gz
- Upload date:
- Size: 46.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d60be3da1172a040db9e9a7c7fc22d0088acd88ceebb5f46806aa57e51bd2c62 |
|
MD5 | cae07d1ee877c07cabb81ac75b650090 |
|
BLAKE2b-256 | 58712008ba6f792fe6c8ad5690846b602a8ee65a8068bc35931515265da7b587 |
File details
Details for the file ncolor-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: ncolor-1.3.0-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f19dfe7edb2957a87481c51b8423d8984cf7fe8541330bed30aeff99db51fcf |
|
MD5 | ff371a75639cd42395fd43b49043966e |
|
BLAKE2b-256 | 9a2f7da00b3399845769a66941ec61e5a6d9101ff06e098ec1ccdfa6034a8a8e |