Skip to main content

Tree Disk Rings

PyPI - Version

A Python package for analyzing tree rings in cross-sectional images. Originally forked from hmarichal93/cstrd_ipol.

Installation

pip install tree-disk-rings

Usage

Python API

import treediskrings

# Configure the analyzer
treediskrings.configure(
    input_image="input/tree-disk4.png",
    cx=1204,
    cy=1264,
    save_results=True,
)

# Run the analysis
(
    img_in,          # Original input image
    img_pre,         # Preprocessed image
    devernay_edges,  # Detected edges
    devernay_curves_f,  # Filtered curves
    devernay_curves_s,  # Smoothed curves
    devernay_curves_c,  # Connected curves
    devernay_curves_p,  # Final processed curves
) = treediskrings.run()

Command Line Interface (CLI)

Basic usage:

tree-disk-rings --input_image input/tree-disk4.png --cx 1204 --cy 1264

Save intermediate results:

tree-disk-rings --input_image input/tree-disk4.png --cx 1204 --cy 1264 --save_results

Advanced usage with custom parameters:

tree-disk-rings \
    --input_image input/F02c.png \
    --cx 1204 \
    --cy 1264 \
    --output_dir custom_output/ \
    --sigma 4.0 \
    --th_low 10 \
    --th_high 25 \
    --min_chain_length 2 \
    --save_results \
    --debug

CLI Arguments

Argument Type Required Default Description
--input_image str Yes - Path to input image
--cx int Yes - Pith x-coordinate
--cy int Yes - Pith y-coordinate
--output_dir str No ./output Output directory path
--sigma float No 3.0 Gaussian kernel parameter for edge detection
--th_low float No 5.0 Low threshold for gradient magnitude
--th_high float No 20.0 High threshold for gradient magnitude
--height int No 0 Height after resizing (0 to keep original)
--width int No 0 Width after resizing (0 to keep original)
--alpha float No 30.0 Collinearity threshold in degrees. Defines the maximum allowable angle between an edge's direction and its gradient.
--nr int No 360 Number of rays
--min_chain_length int No 2 Minimum chain length
--debug flag No False Enable debug mode
--save_results flag No False Save intermediate images, labelme and config file

Development

Setting up Development Environment

  1. Create and activate virtual environment:
poetry config virtualenvs.in-project true
poetry env use python
poetry install
eval $(poetry env activate)
  1. Running tests:
pytest
  1. Compile the external C code:
cd ./externals/devernay_1.0 && make clean && make

Metadata

Release files for tree-disk-rings 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tree-disk-rings 0.6.1
File Size Uploaded
tree_disk_rings-0.6.1.tar.gz 92.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tree-disk-rings 0.6.1
File Interpreter ABI Platform
tree_disk_rings-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 197.8 kB

Release files / tree_disk_rings-0.6.1.tar.gz

Download URL tree_disk_rings-0.6.1.tar.gz
Size 92.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e438cef838f7bf6b05cb056fd3c4e419cb2606b1cd4f8da06e26bdcaa52169b7
BLAKE2b-256 checksum
How to use checksums
cfef65baee35e26ab60d46c36e5d6621f91085e12b651bc50208ca45f545bd3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 3, 2025.

Transparency log

Release files / tree_disk_rings-0.6.1-py3-none-any.whl

Download URL tree_disk_rings-0.6.1-py3-none-any.whl
Size 105.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b599fb34350bc51287484748a1fb89b3b7fd134bb441a6f3a98549f029e0c1b2
BLAKE2b-256 checksum
How to use checksums
5f6891716a13a54f64c7d6b4377125f98b1ce1d9f9142dfcac8f20e62b6be0f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 3, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.3

2 release files

0.4.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page