Skip to main content

Image segmentation and processing library with CLI support

Project description

segimage

A Python library for image segmentation and processing with command-line interface support.

Features

  • MATLAB .mat file support: Read and process MATLAB data files
  • Multiple output formats: Convert to standard image formats (PNG, JPG, TIFF) and graph formats (GraphML, GML, etc.)
  • Command-line interface: Easy-to-use CLI for batch processing
  • Extensible architecture: Easy to add new processing methods

Installation

From PyPI (when published)

pip install segimage

From source

git clone https://github.com/yourusername/segimage.git
cd segimage
# With uv (recommended for devs)
uv pip install -e '.[dev]'
# or using pip
pip install -e '.[dev]'

Quick Start

Command Line Usage

The library provides a command-line interface that can be used directly:

# Convert a MATLAB .mat file to PNG format (default)
segimage process input.mat output_directory --process-type mat_to_image

# Convert to JPG format
segimage process input.mat output_directory -t mat_to_image -f jpg

# With verbose output
segimage process input.mat output_directory -t mat_to_image -f png -v

# Color clustering (top-K frequent colors)
segimage process input.png output_directory -t color_cluster -K 4 --palette rainbow

# LBP visualization (8-neighbor local binary pattern)
segimage process input.png output_directory -t lbp --palette bw

# SLICO superpixels
segimage process input.png output_directory -t slico --n-segments 300 --compactness 10

# Create a pixel adjacency graph (8-connected) and save as GraphML
segimage process input.png output_directory -t graph -f graphml

# Show supported formats
segimage formats

# Show library information
segimage info

Python API Usage

from pathlib import Path
from segimage import ImageProcessor

# Initialize the processor
processor = ImageProcessor()

success = processor.process_image(
    Path("input.png"),
    Path("out/input_clustered.png"),
    "color_cluster",
    K=4,
    palette="rainbow",
)

if success:
    print("Conversion successful!")
else:
    print("Conversion failed!")

Supported Formats

Input Formats

  • .mat - MATLAB data files
  • .npy - NumPy array files
  • .tif, .tiff - TIFF images
  • .png, .jpg, .jpeg - Common image formats

Output Formats

  • .png - PNG images (default, lossless)
  • .jpg, .jpeg - JPEG images (compressed)
  • .tif, .tiff - TIFF images
  • .npy - NumPy array files
  • Graphs: .graphml, .gml, .lg/.lgl, .edgelist/.edges/.txt, .pickle/.pkl
    • Note: Companion .meta files are only written for image outputs

Processing Types

Currently supported processing types:

  • mat_to_image (default): Convert MATLAB .mat files to standard image formats
  • color_cluster: Group pixels by most frequent exact colors into up to K clusters
  • lbp: Visualize 8-neighbor Local Binary Pattern values per pixel (palettes: bw, rainbow)
  • slico: SLICO superpixels using scikit-image's SLIC with slic_zero=True
  • graph: Build an 8-connected pixel adjacency graph and save to graph formats (GraphML, GML, etc.)

SLICO usage examples

# Run SLICO with defaults
segimage process input.png output_dir -t slico

# Customize superpixel parameters
segimage process input.png output_dir -t slico --n-segments 500 --compactness 10 --sigma 1 --start-label 1

Python API:

from pathlib import Path
from segimage import ImageProcessor

processor = ImageProcessor()
processor.process_image(
    Path("input.png"),
    Path("out/input_slico.png"),
    "slico",
    n_segments=280,
    compactness=2.0,
    sigma=1.0,
    start_label=1,
)

LBP usage examples

# Black-and-white palette
segimage process input.png output_dir -t lbp --palette bw

# Rainbow palette (rank-normalized)
segimage process input.png output_dir -t lbp --palette rainbow

Color clustering examples

# Cluster by top-3 most frequent colors (two top colors + remaining)
segimage process input.png output_dir -t color_cluster -K 3 --palette bw

# Rainbow palette for clusters
segimage process input.png output_dir -t color_cluster -K 5 --palette rainbow

Graph creation examples

# Create 8-neighbor pixel graph and save as GraphML
segimage process input.png output_dir -t graph -f graphml

# Save as GML instead
segimage process input.png output_dir -t graph -f gml

Examples

Basic MATLAB to PNG conversion

segimage process data/2018.mat output/ --process-type mat_to_image

Convert to JPG format

segimage process input.mat output/ -t mat_to_image -f jpg

Convert to TIFF format

segimage process input.mat output/ -t mat_to_image -f tif

Verbose processing

segimage process input.mat output/ -t mat_to_image -f png -v

How It Works

The library automatically:

  1. Reads MATLAB .mat files and extracts numeric data
  2. Handles complex data structures including object arrays and structured arrays
  3. Normalizes data to appropriate ranges for image formats
  4. Converts to PIL Image objects for proper image processing
  5. Saves in standard formats that macOS and other systems recognize as images
  6. Preserves metadata in companion .meta files

Development

Setup development environment

# Recommended: uv (fast installer and runner)
uv pip install -e '.[dev]'

# Or using pip
pip install -e '.[dev]'

Run tests

uv run -m pytest -q
# or
pytest -q

Code formatting

uv run black src/
# or
black src/

Project Structure

segimage/
├── src/
│   └── segimage/
│       ├── __init__.py      # Main package exports
│       ├── processor.py     # Core image processing logic and router
│       ├── cli/             # CLI entrypoint and commands
│       │   ├── main.py      # Click group and shared options
│       │   └── commands/    # Subcommands: process, formats, inspect, info
│       └── processors/      # Pluggable processors (color_cluster, lbp, slico, graph)
├── pyproject.toml          # Project configuration
└── README.md              # This file

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the terms specified in the LICENSE file.

Support

For issues and questions, please use the GitHub issue tracker.

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

segimage-0.0.2.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

segimage-0.0.2-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file segimage-0.0.2.tar.gz.

File metadata

  • Download URL: segimage-0.0.2.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for segimage-0.0.2.tar.gz
Algorithm Hash digest
SHA256 1fb7cbf0d2f492bcd4b17c8dc8caef0afac9eba6a6f8c8cbe1d4b0e3fd07c1a3
MD5 c7d3438e601c6b04430c321e5b150e1a
BLAKE2b-256 1d9ae1938e6a12cb289f7d955a37367c791c78492a7ec5880a75b9de9547213a

See more details on using hashes here.

Provenance

The following attestation bundles were made for segimage-0.0.2.tar.gz:

Publisher: publish-pypi.yml on lucaslopes/segimage

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

File details

Details for the file segimage-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: segimage-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for segimage-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5662a3128232d531d06bdb6dcf121a20d269c46177db1594a2beffd4f9c6214e
MD5 4f75bd724dae9f41b925dd739fafbbe2
BLAKE2b-256 c79cbbd2654aa39a2a91e7515cd962ecbec0bdf6901b1a5c59090fd4c8ffef43

See more details on using hashes here.

Provenance

The following attestation bundles were made for segimage-0.0.2-py3-none-any.whl:

Publisher: publish-pypi.yml on lucaslopes/segimage

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