medialaxis3d


Namemedialaxis3d JSON
Version 1.0.2 PyPI version JSON
download
home_pageNone
SummaryModule to perform 3D skeletonization using Medial Axis Transform
upload_time2025-08-01 17:23:25
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords mat skeletonization 3d
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # medialaxis3d

This package extends the [scikit-image](https://scikit-image.org/) function [medial_axis](https://scikit-image.org/docs/stable/api/skimage.morphology.html#skimage.morphology.medial_axis)
to the 3D case.

## Install

```bash
pip install medialaxis3d
```

### Dependencies
Automatically installed with `pip`:

- `numpy`
- `scipy`
- `cython`

Optional only for visualization

- `napari`

## Documentation 

WIP

## Quickstart

Use it without returning the medial distance.

```Python
>>> import numpy as np
>>> import skimage as ski
>>> import medialaxis3d
>>> import napari

>>> rng = np.random.default_rng(1278)

>>> image = ski.data.binary_blobs(length = 128,
>>>                           blob_size_fraction = 0.2,
>>>                           n_dim = 3,
>>>                           volume_fraction = 0.6,
>>>                           rng = rng)

>>> skeleton = medialaxis3d.medial_axis_3d(image, 
>>>                                        return_distance = False, 
>>>                                        size = 8, 
>>>                                        rng = rng)

>>> viewer = napari.Viewer()
>>> viewer.add_image(image, 
>>>                  rendering = "attenuated_mip", 
>>>                  attenuation = 0.5, 
>>>                  scale = [1, 1, 1])
>>> viewer.add_image(skeleton, 
>>>                  interpolation3d = "nearest", 
>>>                  colormap = "magenta", 
>>>                  scale = [1, 1, 1])
>>> napari.run()
```

<img src="https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist1.png" width="32%"/> <img src="https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist2.png" width="32%"/> <img src="https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist3.png" width="32%"/>

or use it to return the distance as well.

```Python
>>> import numpy as np
>>> import skimage as ski
>>> import medialaxis3d
>>> import napari

>>> rng = np.random.default_rng(1278)
>>> image = ski.data.binary_blobs(length = 128,
                              blob_size_fraction = 0.2,
                              n_dim = 3,
                              volume_fraction = 0.6,
                              rng = rng)

>>> skeleton, distance = medialaxis3d.medial_axis_3d(image, 
>>>                                                  return_distance = True, 
>>>                                                  size = 8, 
>>>                                                  rng = rng)

>>> viewer = napari.Viewer()
>>> viewer.add_image(image, 
>>>                  rendering = "attenuated_mip", 
>>>                  attenuation = 0.5, 
>>>                  scale = [1, 1, 1])
>>> viewer.add_image(skeleton*distance, 
>>>                  interpolation3d = "nearest", 
>>>                  colormap = "turbo", 
>>>                  scale = [1, 1, 1])
>>> napari.run()
```

<img src="https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist1.png" width="32%"/> <img src="https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_dist2.png" width="32%"/> <img src="https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_dist3.png" width="32%"/>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "medialaxis3d",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Giovanni Bocchi <giovanni.bocchi1@unimi.it>",
    "keywords": "MAT, skeletonization, 3D",
    "author": null,
    "author_email": "Giovanni Bocchi <giovanni.bocchi1@unimi.it>",
    "download_url": "https://files.pythonhosted.org/packages/9c/75/9ac550084d291c052aae2f864fca4fe4d7f1957d419f6faf49e0fdfeac45/medialaxis3d-1.0.2.tar.gz",
    "platform": null,
    "description": "# medialaxis3d\n\nThis package extends the [scikit-image](https://scikit-image.org/) function [medial_axis](https://scikit-image.org/docs/stable/api/skimage.morphology.html#skimage.morphology.medial_axis)\nto the 3D case.\n\n## Install\n\n```bash\npip install medialaxis3d\n```\n\n### Dependencies\nAutomatically installed with `pip`:\n\n- `numpy`\n- `scipy`\n- `cython`\n\nOptional only for visualization\n\n- `napari`\n\n## Documentation \n\nWIP\n\n## Quickstart\n\nUse it without returning the medial distance.\n\n```Python\n>>> import numpy as np\n>>> import skimage as ski\n>>> import medialaxis3d\n>>> import napari\n\n>>> rng = np.random.default_rng(1278)\n\n>>> image = ski.data.binary_blobs(length = 128,\n>>>                           blob_size_fraction = 0.2,\n>>>                           n_dim = 3,\n>>>                           volume_fraction = 0.6,\n>>>                           rng = rng)\n\n>>> skeleton = medialaxis3d.medial_axis_3d(image, \n>>>                                        return_distance = False, \n>>>                                        size = 8, \n>>>                                        rng = rng)\n\n>>> viewer = napari.Viewer()\n>>> viewer.add_image(image, \n>>>                  rendering = \"attenuated_mip\", \n>>>                  attenuation = 0.5, \n>>>                  scale = [1, 1, 1])\n>>> viewer.add_image(skeleton, \n>>>                  interpolation3d = \"nearest\", \n>>>                  colormap = \"magenta\", \n>>>                  scale = [1, 1, 1])\n>>> napari.run()\n```\n\n<img src=\"https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist1.png\" width=\"32%\"/> <img src=\"https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist2.png\" width=\"32%\"/> <img src=\"https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist3.png\" width=\"32%\"/>\n\nor use it to return the distance as well.\n\n```Python\n>>> import numpy as np\n>>> import skimage as ski\n>>> import medialaxis3d\n>>> import napari\n\n>>> rng = np.random.default_rng(1278)\n>>> image = ski.data.binary_blobs(length = 128,\n                              blob_size_fraction = 0.2,\n                              n_dim = 3,\n                              volume_fraction = 0.6,\n                              rng = rng)\n\n>>> skeleton, distance = medialaxis3d.medial_axis_3d(image, \n>>>                                                  return_distance = True, \n>>>                                                  size = 8, \n>>>                                                  rng = rng)\n\n>>> viewer = napari.Viewer()\n>>> viewer.add_image(image, \n>>>                  rendering = \"attenuated_mip\", \n>>>                  attenuation = 0.5, \n>>>                  scale = [1, 1, 1])\n>>> viewer.add_image(skeleton*distance, \n>>>                  interpolation3d = \"nearest\", \n>>>                  colormap = \"turbo\", \n>>>                  scale = [1, 1, 1])\n>>> napari.run()\n```\n\n<img src=\"https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_nodist1.png\" width=\"32%\"/> <img src=\"https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_dist2.png\" width=\"32%\"/> <img src=\"https://raw.githubusercontent.com/jb-sharp/medialaxis3d/main/screenshots/example_dist3.png\" width=\"32%\"/>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Module to perform 3D skeletonization using Medial Axis Transform",
    "version": "1.0.2",
    "project_urls": {
        "Bug Reports": "https://github.com/jb-sharp/medialaxis3d/issues",
        "Homepage": "https://github.com/jb-sharp/medialaxis3d",
        "Source": "https://github.com/jb-sharp/medialaxis3d"
    },
    "split_keywords": [
        "mat",
        " skeletonization",
        " 3d"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "987b932ed21941027c4b87ca04e645f042be76dd1205b170a563cf7162e941f4",
                "md5": "d64cfd708880d9454cc8b2e85517bf89",
                "sha256": "148dcdc5c5ecc0918d7221b4090f5f928e5690f662ea895d4fae628a0a37f4c2"
            },
            "downloads": -1,
            "filename": "medialaxis3d-1.0.2-cp313-cp313-manylinux_2_39_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d64cfd708880d9454cc8b2e85517bf89",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 278979,
            "upload_time": "2025-08-01T17:23:23",
            "upload_time_iso_8601": "2025-08-01T17:23:23.522008Z",
            "url": "https://files.pythonhosted.org/packages/98/7b/932ed21941027c4b87ca04e645f042be76dd1205b170a563cf7162e941f4/medialaxis3d-1.0.2-cp313-cp313-manylinux_2_39_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9c759ac550084d291c052aae2f864fca4fe4d7f1957d419f6faf49e0fdfeac45",
                "md5": "a623826776f044d4dc19d79c4c4929e7",
                "sha256": "8a42ade4c45b02f53160c108d7292df3ae48e5003f252543e232b5fe19a94561"
            },
            "downloads": -1,
            "filename": "medialaxis3d-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "a623826776f044d4dc19d79c4c4929e7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 183806,
            "upload_time": "2025-08-01T17:23:25",
            "upload_time_iso_8601": "2025-08-01T17:23:25.631583Z",
            "url": "https://files.pythonhosted.org/packages/9c/75/9ac550084d291c052aae2f864fca4fe4d7f1957d419f6faf49e0fdfeac45/medialaxis3d-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-01 17:23:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jb-sharp",
    "github_project": "medialaxis3d",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "medialaxis3d"
}
        
Elapsed time: 1.12591s