diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1da15bf --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2021, Kevin Cutler +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a206b5a --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# ncolor +Fast remapping of intance labels 1,2,3,...,M to N repeating, disjoint labels, 1,2,3,...,N. The four-color-theorem guarantees that at most four colors is required for any 2D segmentation/map, but this algorithm will opt for 5 or 6 to give an acceptable result quickly. Also works for 3D labels (<8 colors typically required) and perhaps higher dimensions as well. diff --git a/example.ipynb b/example.ipynb new file mode 100644 index 0000000..5cc961b --- /dev/null +++ b/example.ipynb @@ -0,0 +1,120 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "id": "7418ef57-3ed3-4d71-b09c-06db2e283651", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "plt.style.use('dark_background')\n", + "import matplotlib as mpl\n", + "%matplotlib inline\n", + "mpl.rcParams['figure.dpi'] = 300" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "30a3c190-5045-4840-b4c2-6d263b7a3178", + "metadata": {}, + "outputs": [], + "source": [ + "import skimage.io\n", + "mask = skimage.io.imread('/Volumes/DataDrive/final_train/5I_crop_ensemble_0_masks.tif')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "8f85ebf1-19a9-4bd7-afca-e077d99f9018", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 599.5, 599.5, -0.5)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "dark" + }, + "output_type": "display_data" + } + ], + "source": [ + "# ncolor.__dict__\n", + "import ncolor.ncolor as ncolor\n", + "nc = ncolor.label(mask)\n", + "plt.imshow(nc,interpolation='None')\n", + "plt.axis('off')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3fd6807-a5d6-408a-a8a1-fae9dcfa1d5b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98835a5d-081e-4bee-b2bc-595e01638033", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbdcfb3f-2eb0-4218-9d39-755d3e89ec79", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60af2068-6890-4f61-91ff-8c16c3bf3b27", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ncolor/__init__.py b/ncolor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ncolor/ncolor.py b/ncolor/ncolor.py new file mode 100644 index 0000000..98d00cd --- /dev/null +++ b/ncolor/ncolor.py @@ -0,0 +1,156 @@ +#4-color algorthm based on https://forum.image.sc/t/relabel-with-4-colors-like-map/33564 with extensions and improvements + +import numpy as np +from numba import njit +import scipy +from scipy.ndimage.morphology import binary_dilation, binary_erosion +import edt +import random +import fastremap +from skimage import measure + +def label(lab,n=4,conn=2): + # needs to be in standard label form + # but also needs to be in int32 data type to work properly; the formatting automatically + # puts it into the smallest datatype to save space + lab = format_labels(lab).astype(np.int32) + idx = connect(lab, conn) + idx = mapidx(idx) + colors = render_net(idx, n=n, rand=10) + lut = np.ones(lab.max()+1, dtype=np.uint8) + for i in colors: lut[i] = colors[i] + lut[0] = 0 + return lut[lab] + +def neighbors(shape, conn=1): + dim = len(shape) + block = scipy.ndimage.generate_binary_structure(dim, conn) + block[tuple([1]*dim)] = 0 + idx = np.where(block>0) + idx = np.array(idx, dtype=np.uint8).T + idx = np.array(idx-[1]*dim) + acc = np.cumprod((1,)+shape[::-1][:-1]) + return np.dot(idx, acc[::-1]) + +@njit(fastmath=True) +def search(img, nbs): + s, line = 0, img.ravel() + rst = np.zeros((len(line),2), img.dtype) + for i in range(len(line)): + if line[i]==0:continue + for d in nbs: + if line[i+d]==0: continue + if line[i]==line[i+d]: continue + rst[s,0] = line[i] + rst[s,1] = line[i+d] + s += 1 + return rst[:s] + +def connect(img, conn=1): + buf = np.pad(img, 1, 'constant') + nbs = neighbors(buf.shape, conn) + rst = search(buf, nbs) + if len(rst)<2: + return rst + rst.sort(axis=1) + key = (rst[:,0]<<16) + key += rst[:,1] + order = np.argsort(key) + key[:] = key[order] + diff = key[:-1]!=key[1:] + idx = np.where(diff)[0]+1 + idx = np.hstack(([0], idx)) + return rst[order][idx] + +def mapidx(idx): + dic = {} + for i in np.unique(idx): dic[i] = [] + for i,j in idx: + dic[i].append(j) + dic[j].append(i) + return dic + +# create a connection mapping +def render_net(conmap, n=4, rand=12, depth=0, max_depth=5): + thresh = 1e4 + if depth0 and count0]: + mask = labels==j + lbl = measure.label(mask) + regions = measure.regionprops(lbl) + regions.sort(key=lambda x: x.area, reverse=True) + if len(regions) > 1: + print('Warning - found mask with disjoint label.') + for rg in regions[1:]: + if rg.area <= min_area: + labels[rg.coords[:,0], rg.coords[:,1]] = 0 + print('secondary disjoint part smaller than min_area. Removing it.') + else: + print('secondary disjoint part bigger than min_area, relabeling. Area:',rg.area, + 'Label value:',np.unique(labels[rg.coords[:,0], rg.coords[:,1]])) + labels[rg.coords[:,0], rg.coords[:,1]] = np.max(labels)+1 + + rg0 = regions[0] + if rg0.area <= min_area: + labels[rg0.coords[:,0], rg0.coords[:,1]] = 0 + print('Warning - found mask area less than', min_area) + print('Removing it.') + + fastremap.renumber(labels,in_place=True) # convenient to have unit increments from 1 to N cells + labels = fastremap.refit(labels) # put into smaller data type if possible + return labels \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..5a22241 --- /dev/null +++ b/setup.py @@ -0,0 +1,35 @@ +import setuptools +from setuptools import setup + +install_deps = ['numpy>=1.20.0', 'scipy', 'numba', + 'edt','fastremap','scikit-image'] + +with open("README.md", "r") as fh: + long_description = fh.read() + +setup( + name="ncolor", + license="BSD", + author="Kevin Cutler", + author_email="kevinjohncutler@outlook.com", + description="label matrix coloring algorithm", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/kevinjohncutler/ncolor", + setup_requires=[ + 'pytest-runner', + 'setuptools_scm', + ], + packages=setuptools.find_packages(), + use_scm_version=True, + install_requires = install_deps, + # tests_require=[ + # 'pytest' + # ], + include_package_data=True, + classifiers=( + "Programming Language :: Python :: 3", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + ) +)