Skip to main content

Tools for processing and cleaning segmentation images using palette mapping and neural networks

Project description

RGB to Segmentation

A Python package for processing and cleaning segmentation images. This package provides tools to convert RGB images to segmentation masks using palette-based color mapping and neural network-based refinement.

Features

  • Palette-based Cleaning: Clean noisy segmentation images by mapping pixels to the nearest colors in a predefined palette, with optional morphological operations to refine boundaries.
  • Neural Network Refinement: Use a trained pixelwise classifier to refine segmentation masks using PyTorch Lightning.
  • Command-Line Interface: Unified CLI for cleaning with method selection, plus separate training command.
  • Programmatic API: Direct access to cleaning and training functions for integration into other workflows.

Installation

Install from PyPI:

pip install rgb-to-segmentation

Or install from source:

git clone https://github.com/alexsenden/rgb-to-segmentation.git
cd rgb-to-segmentation
pip install .

Usage

Cleaning Noisy Segmentation Images

Use the segment-clean command to clean segmentation images using various methods:

Palette-based cleaning:

segment-clean --method palette --input_dir /path/to/input --output_dir /path/to/output --colour_map "0,0,0;255,0,0;0,255,0"

Neural network-based cleaning:

segment-clean --method nn --input_dir /path/to/input --output_dir /path/to/output --model_path /path/to/model.ckpt --colour_map "0,0,0;255,0,0;0,255,0"

You can also provide colours via file with --colour_map_file /path/to/colours.txt (one r,g,b per line). The CLI parses colours and constructs the palette/colour map internally, mirroring the Python API which accepts parsed structures (NumPy array for palette, dictionary for colour map).

Options:

  • --method: Cleaning method ('palette' or 'nn')
  • --input_dir: Path to input directory containing images
  • --output_dir: Directory where cleaned images will be written
  • --inplace: Overwrite input images in place
  • --exts: Comma-separated list of allowed image extensions
  • --name_filter: Only process files whose name contains this substring

For palette method:

  • --colour_map: Semicolon-separated list of RGB triples
  • --colour_map_file: Path to a file listing RGB triples
  • --morph_kernel_size: Size of morphological kernel for boundary cleaning

For nn method:

  • --model_path: Path to trained model file
  • --colour_map: Semicolon-separated list of RGB triples
  • --colour_map_file: Path to a file listing RGB triples

Training the Neural Network Model

Train a pixelwise classifier to refine segmentation masks:

segment-train --image_dir /path/to/noisy_images --label_dir /path/to/labels --output_dir /path/to/model_output --colour_map "0,0,0;255,0,0;0,255,0"

Options:

  • --image_dir: Path to directory containing noisy images
  • --label_dir: Path to directory containing target RGB labels
  • --output_dir: Directory where model weights will be saved
  • --colour_map: Semicolon-separated list of RGB triples
  • --colour_map_file: Path to a file listing RGB triples
  • --model_type: The type of model to train (default: pixelwise)

Note that one label image may have multiple corresponding noisy masks. Labels are matched to noisy masks whose filenames contain the label file basename (pre-extension name, i.e. my_image.png -> my_image).

API

You can also use the package programmatically:

import numpy as np
from rgb_to_segmentation import clean, nn, train, utils

# Palette cleaning
colours = utils.parse_colours_from_string("0,0,0;255,0,0;0,255,0")
palette = np.asarray(colours, dtype=np.uint8)
clean.clean_segmentation(input_dir="/path/to/input", output_dir="/path/to/output", palette=palette)

# NN inference
colours = utils.parse_colours_from_string("0,0,0;255,0,0;0,255,0")
colour_map = {i: rgb for i, rgb in enumerate(colours)}
nn.run_inference(input_dir="/path/to/input", output_dir="/path/to/output", model_path="/path/to/model.ckpt", colour_map=colour_map)

# Train model
colours = utils.parse_colours_from_string("0,0,0;255,0,0;0,255,0")
colour_map = {i: rgb for i, rgb in enumerate(colours)}
train.train_model(image_dir="/path/to/images", label_dir="/path/to/labels", output_dir="/path/to/output", colour_map=colour_map)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rgb_to_segmentation-0.0.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rgb_to_segmentation-0.0.1-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file rgb_to_segmentation-0.0.1.tar.gz.

File metadata

  • Download URL: rgb_to_segmentation-0.0.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rgb_to_segmentation-0.0.1.tar.gz
Algorithm Hash digest
SHA256 28824a2fb8c841525b640cdfbc35525a869c0d312ce86c35cbd03fa056ed233c
MD5 909f4d10557eaf477460d89bba5c6f67
BLAKE2b-256 a5ba1d25b63b9d19cc08d297e801da05d44af749d1c4eb126463b0a0163ee102

See more details on using hashes here.

Provenance

The following attestation bundles were made for rgb_to_segmentation-0.0.1.tar.gz:

Publisher: pypi-publish.yml on alexsenden/rgb-to-segmentation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rgb_to_segmentation-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for rgb_to_segmentation-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8b602b88446d11c855fcc8e2b45e51ff088c8cdc1c0004dfbbd12900a1f62a97
MD5 23944895e61c3ceddb4bbb381fe675db
BLAKE2b-256 1e3300fa80f4e5f09063154e637060703f16b44481e389d1a261b67db0e49498

See more details on using hashes here.

Provenance

The following attestation bundles were made for rgb_to_segmentation-0.0.1-py3-none-any.whl:

Publisher: pypi-publish.yml on alexsenden/rgb-to-segmentation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page