# ahojnnes/scikit-image architecture

> Architecture diagram of the GitHub repository ahojnnes/scikit-image, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ahojnnes/scikit-image
- Repository: https://github.com/ahojnnes/scikit-image

## Overview

scikit-image is a Python image-processing library. Users supply or load image arrays, apply processing and analysis algorithms, and use the resulting images, labels, measurements, or visualizations. Its major capabilities are organized as domain modules rather than a single enforced pipeline, so the graph shows independent processing branches. The tree and README support these subsystem boundaries; sampled source confirms examples of color conversion, thresholding, geometric transforms, feature detection, measurements, drawing, and region-adjacency graphs, but does not establish wiring among all modules.

Main entry points: [`skimage/io`](https://github.com/ahojnnes/scikit-image/tree/master/skimage/io) (Image I/O), [`skimage/viewer`](https://github.com/ahojnnes/scikit-image/tree/master/skimage/viewer) (Interactive viewer), [`skimage/data`](https://github.com/ahojnnes/scikit-image/tree/master/skimage/data) (Sample data), [`skimage/color/colorconv.py`](https://github.com/ahojnnes/scikit-image/blob/master/skimage/color/colorconv.py) (Color conversion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_input["Image input"]
  node_io["Image I/O"]
  node_data["Sample data"]
end

subgraph group_processing["Image processing"]
  node_color["Color conversion<br/>[colorconv.py]"]
  node_filters["Filtering"]
  node_exposure["Intensity adjustment"]
  node_transform["Geometric transforms"]
  node_restoration["Restoration"]
  node_morphology["Morphology"]
end

subgraph group_analysis["Image analysis"]
  node_segmentation["Segmentation"]
  node_feature["Feature detection"]
  node_measure["Measurement"]
  node_graph["Image graphs"]
end

subgraph group_output["Results and viewing"]
  node_draw["Raster drawing<br/>[draw.py]"]
  node_viewer["Interactive viewer"]
end

subgraph group_shared["Shared utilities"]
  node_util["Array utilities"]
end

node_user(("Python user"))

node_user -->|"loads images"| node_io
node_user -->|"requests samples"| node_data
node_user -->|"calls conversions"| node_color
node_user -->|"calls filters"| node_filters
node_user -->|"adjusts intensity"| node_exposure
node_user -->|"transforms images"| node_transform
node_user -->|"restores images"| node_restoration
node_user -->|"applies morphology"| node_morphology
node_user -->|"segments images"| node_segmentation
node_user -->|"detects features"| node_feature
node_user -->|"measures regions"| node_measure
node_user -->|"builds image graphs"| node_graph
node_user -->|"draws primitives"| node_draw
node_user -->|"opens viewer"| node_viewer
node_user -->|"uses array helpers"| node_util
node_io -.->|"displays images"| node_viewer

click node_io "https://github.com/ahojnnes/scikit-image/tree/master/skimage/io"
click node_data "https://github.com/ahojnnes/scikit-image/tree/master/skimage/data"
click node_color "https://github.com/ahojnnes/scikit-image/blob/master/skimage/color/colorconv.py"
click node_filters "https://github.com/ahojnnes/scikit-image/tree/master/skimage/filters"
click node_exposure "https://github.com/ahojnnes/scikit-image/tree/master/skimage/exposure"
click node_transform "https://github.com/ahojnnes/scikit-image/tree/master/skimage/transform"
click node_restoration "https://github.com/ahojnnes/scikit-image/tree/master/skimage/restoration"
click node_morphology "https://github.com/ahojnnes/scikit-image/tree/master/skimage/morphology"
click node_segmentation "https://github.com/ahojnnes/scikit-image/tree/master/skimage/segmentation"
click node_feature "https://github.com/ahojnnes/scikit-image/tree/master/skimage/feature"
click node_measure "https://github.com/ahojnnes/scikit-image/tree/master/skimage/measure"
click node_graph "https://github.com/ahojnnes/scikit-image/tree/master/skimage/future/graph"
click node_draw "https://github.com/ahojnnes/scikit-image/blob/master/skimage/draw/draw.py"
click node_viewer "https://github.com/ahojnnes/scikit-image/tree/master/skimage/viewer"
click node_util "https://github.com/ahojnnes/scikit-image/tree/master/skimage/util"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_io,node_data,node_user toneBlue
class node_color,node_filters,node_exposure,node_transform,node_restoration,node_morphology toneAmber
class node_segmentation,node_feature,node_measure,node_graph toneMint
class node_draw,node_viewer toneRose
class node_util toneIndigo
```

## Components

### Image input

- [Image I/O](https://github.com/ahojnnes/scikit-image/tree/master/skimage/io): `skimage/io`
- [Sample data](https://github.com/ahojnnes/scikit-image/tree/master/skimage/data): `skimage/data`

### Image processing

- [Color conversion](https://github.com/ahojnnes/scikit-image/blob/master/skimage/color/colorconv.py): `skimage/color/colorconv.py`
- [Filtering](https://github.com/ahojnnes/scikit-image/tree/master/skimage/filters): `skimage/filters`
- [Intensity adjustment](https://github.com/ahojnnes/scikit-image/tree/master/skimage/exposure): `skimage/exposure`
- [Geometric transforms](https://github.com/ahojnnes/scikit-image/tree/master/skimage/transform): `skimage/transform`
- [Restoration](https://github.com/ahojnnes/scikit-image/tree/master/skimage/restoration): `skimage/restoration`
- [Morphology](https://github.com/ahojnnes/scikit-image/tree/master/skimage/morphology): `skimage/morphology`

### Image analysis

- [Segmentation](https://github.com/ahojnnes/scikit-image/tree/master/skimage/segmentation): `skimage/segmentation`
- [Feature detection](https://github.com/ahojnnes/scikit-image/tree/master/skimage/feature): `skimage/feature`
- [Measurement](https://github.com/ahojnnes/scikit-image/tree/master/skimage/measure): `skimage/measure`
- [Image graphs](https://github.com/ahojnnes/scikit-image/tree/master/skimage/future/graph): `skimage/future/graph`

### Results and viewing

- [Raster drawing](https://github.com/ahojnnes/scikit-image/blob/master/skimage/draw/draw.py): `skimage/draw/draw.py`
- [Interactive viewer](https://github.com/ahojnnes/scikit-image/tree/master/skimage/viewer): `skimage/viewer`

### Shared utilities

- [Array utilities](https://github.com/ahojnnes/scikit-image/tree/master/skimage/util): `skimage/util`

### Other components

- **Python user**

## Connections

- Python user → Image I/O: loads images
- Python user → Sample data: requests samples
- Python user → Color conversion: calls conversions
- Python user → Filtering: calls filters
- Python user → Intensity adjustment: adjusts intensity
- Python user → Geometric transforms: transforms images
- Python user → Restoration: restores images
- Python user → Morphology: applies morphology
- Python user → Segmentation: segments images
- Python user → Feature detection: detects features
- Python user → Measurement: measures regions
- Python user → Image graphs: builds image graphs
- Python user → Raster drawing: draws primitives
- Python user → Interactive viewer: opens viewer
- Python user → Array utilities: uses array helpers
- Image I/O → Interactive viewer: displays images
