Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add colorize_labels tool #111

Merged
merged 1 commit into from
Mar 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions tools/colorize_labels/.shed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
categories:
- Imaging
description: Colorize label map
long_description: Colorize label map for visualization.
name: colorize_labels
owner: imgteam
homepage_url: https://github.com/bmcv
remote_repository_url: https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/colorize_labels
43 changes: 43 additions & 0 deletions tools/colorize_labels/colorize_labels.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import argparse

import numpy as np
import skimage.io
import skimage.util
import superdsm.render


def color_hex_to_rgb_tuple(hex):
if hex.startswith('#'):
hex = hex[1:]
return (
int(hex[0:2], 16),
int(hex[2:4], 16),
int(hex[4:6], 16),
)


if __name__ == '__main__':

parser = argparse.ArgumentParser()
parser.add_argument('input', type=str)
parser.add_argument('--bg_label', type=int)
parser.add_argument('--bg_color', type=str)
parser.add_argument('--cmap', type=str, default='hsv')
parser.add_argument('--seed', type=int)
parser.add_argument('--output', type=str)
args = parser.parse_args()

im = skimage.io.imread(args.input)
im = np.squeeze(im)
assert im.ndim == 2

im_colorized = superdsm.render.colorize_labels(
labels=im,
bg_label=args.bg_label,
cmap=args.cmap,
bg_color=np.divide(color_hex_to_rgb_tuple(args.bg_color), 255),
shuffle=args.seed,
)

im_colorized = skimage.util.img_as_ubyte(im_colorized)
skimage.io.imsave(args.output, im_colorized)
64 changes: 64 additions & 0 deletions tools/colorize_labels/colorize_labels.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<tool id="colorize_labels" name="Colorize label map" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.05">
<description>with SuperDSM</description>
<macros>
<token name="@TOOL_VERSION@">0.2.0</token>
<token name="@VERSION_SUFFIX@">0</token>
</macros>
<edam_operations>
<edam_operation>operation_3443</edam_operation>
</edam_operations>
<xrefs>
<xref type="bio.tools">superdsm</xref>
<xref type="biii">superdsm</xref>
</xrefs>
<requirements>
<requirement type="package" version="0.2.0">superdsm</requirement>
<requirement type="package" version="1.20">numpy</requirement>
<requirement type="package" version="0.18.1">scikit-image</requirement>
</requirements>
<command><![CDATA[

## Inputs

python '$__tool_directory__/colorize_labels.py' '$input'
--seed $seed
--bg_label $bg_label
--bg_color '$bg_color'

## Outputs

--output output.png

]]>
</command>
<inputs>
<param name="input" type="data" format="tiff,png" label="Input image (label map)" />
<param argument="--seed" type="integer" value="0" label="Randomization seed" />
<param argument="--bg_label" type="integer" value="0" label="Background label" />
<param argument="--bg_color" type="color" value="#000000" label="Background color"/>
</inputs>
<outputs>
<data format="png" name="output" from_work_dir="output.png" />
</outputs>
<tests>
<test>
<param name="input" value="input1.tif"/>
<param name="bg_label" value="0"/>
<param name="bg_color" value="#5a5a5a"/>
<output name="output" value="output1.png" ftype="png" compare="sim_size" delta_frac="0.1"/>
</test>
</tests>
<help>
Colorize a 2-D label map for visualization.

Label maps are produced by segmentation and other image analysis steps.
Direct inspection of label maps can be difficult,
because labels usually correspond to gray values which are difficult to
distinguish visually from each other and from the image background.
To facilitate the visual inspection of label maps, this tools converts
label maps to color images, by assigning each label a unique color.
</help>
<citations>
<citation type="doi">10.1109/TPAMI.2022.3185583</citation>
</citations>
</tool>
Binary file added tools/colorize_labels/test-data/input1.tif
Binary file not shown.
Binary file added tools/colorize_labels/test-data/output1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.