fill-voids
Fill voids in 3D binary images fast.
Decision gist · record as of 2026-08-14
Yes, if you work with binary image morphology and need better performance than scipy.ndimage.binary_fill_holes. The package is actively maintained, has no vulnerabilities, and offers prebuilt wheels for common platforms. The LGPL-3.0-or-later license is permissive for research and open-source use but requires derivative works to remain open; verify compatibility with your project's licensing model. Medium install friction is acceptable for the performance gain in image processing workflows.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires numpy and fastremap as runtime dependencies; C++ compiler needed if installing from source on unsupported platforms.
- Medium install friction due to compiled C++ components; prebuilt wheels available for Python 3.10, 3.11, and 3.12 on macOS, Linux (manylinux, musllinux), and Windows.
- Falls back to source build if no wheel matches your platform, requiring a C++ compiler and python3-dev headers.
License · maintenance · safety
LGPL-3.0-or-later (copyleft) — Licensed under LGPL-3.0-or-later (copyleft). Derivative works and modifications must be released under compatible terms; static linking or closed-source use requires explicit permission or relicensing.
last release 2026-04-30 (106 days) · last repo commit 2026-04-29 · 30 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 113,036 downloads/mo, #12,353 on PyPI
Alternatives
Verify before relying
import fill_voids
import numpy as np
img = np.zeros((512, 512), dtype=np.uint8)
filled = fill_voids.fill(img, in_place=False)
filled, N = fill_voids.fill(img, return_fill_count=True)- Performance improvement magnitude vs. scipy.ndimage.binary_fill_holes on typical workloads
- Memory overhead of in_place=False mode on large images
- Whether Python 3.9 and 3.13 are supported at runtime despite classifier presence
What it is and what it does
fill-voids is a Python library that fills interior holes in binary images using a fast scan-line flood-fill algorithm. It works on both 2D and 3D arrays and is designed to be significantly faster and more memory-efficient than scipy's binary_fill_holes, which uses slower serial dilations. The library is written in C++ with Python bindings, and it exposes both a Python API and a C++ header for direct use.
The algorithm marks foreground pixels, scans from image boundaries to identify background regions connected to the exterior, then flood-fills those regions. Everything not visited by the flood fill is marked as foreground, effectively filling all interior voids. It uses performance tricks like libdivide for coordinate computation and directional scanning to exploit memory locality. The package is actively maintained, supports Python 3.10, 3.11, and 3.12 with prebuilt wheels, and has no known security vulnerabilities.
Use it for
- Cleaning up connectomics segmentation masks by filling small holes in labeled regions before downstream analysis.
- Preprocessing binary medical images to remove noise artifacts before feature extraction or registration.
- Morphological post-processing in computer vision pipelines where speed matters on large 3D volumetric data.
- Filling voids in 2D binary masks for image segmentation refinement in scientific imaging workflows.
- Real-time or batch processing of densely labeled 3D datasets where scipy's performance is a bottleneck.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you work with binary image morphology and need better performance than scipy.ndimage.binary_fill_holes.
The package is actively maintained, has no vulnerabilities, and offers prebuilt wheels for common platforms. The LGPL-3.0-or-later license is permissive for research and open-source use but requires derivative works to remain open; verify compatibility with your project's licensing model. Medium install friction is acceptable for the performance gain in image processing workflows.
Install
fill-voids on PyPI
Before you install
Medium install friction due to compiled C++ components; prebuilt wheels available for Python 3.10, 3.11, and 3.12 on macOS, Linux (manylinux, musllinux), and Windows. Falls back to source build if no wheel matches your platform, requiring a C++ compiler and python3-dev headers.
Requires numpy and fastremap as runtime dependencies; C++ compiler needed if installing from source on unsupported platforms.
License in practice
Licensed under LGPL-3.0-or-later (copyleft). Derivative works and modifications must be released under compatible terms; static linking or closed-source use requires explicit permission or relicensing.
Quickstart
import fill_voids
import numpy as np
img = np.zeros((512, 512), dtype=np.uint8)
filled = fill_voids.fill(img, in_place=False)
filled, N = fill_voids.fill(img, return_fill_count=True)
Verify before relying
- Performance improvement magnitude vs. scipy.ndimage.binary_fill_holes on typical workloads
- Memory overhead of in_place=False mode on large images
- Whether Python 3.9 and 3.13 are supported at runtime despite classifier presence
Package facts
| License | LGPL-3.0-or-later copyleft |
| Python support | Not specified |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 2 packagesnumpyfastremap |
| Maintenance | Actively maintained 106 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 113,036 / month, #12,353 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Topic :: Scientific/Engineering |
Evidence: fill_voids-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl; fill_voids-2.1.2-cp310-cp310-macosx_11_0_arm64.whl; fill_voids-2.1.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; fill_voids-2.1.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; fill_voids-2.1.2-cp310-cp310-musllinux_1_2_aarch64.whl; fill_voids-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl; fill_voids-2.1.2-cp310-cp310-win_amd64.whl; fill_voids-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl; fill_voids-2.1.2-cp311-cp311-macosx_11_0_arm64.whl; fill_voids-2.1.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; fill_voids-2.1.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; fill_voids-2.1.2-cp311-cp311-musllinux_1_2_aarch64.whl; fill_voids-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl; fill_voids-2.1.2-cp311-cp311-win_amd64.whl; fill_voids-2.1.2-cp312-cp312-macosx_10_13_x86_64.whl; fill_voids-2.1.2-cp312-cp312-macosx_11_0_arm64.whl; fill_voids-2.1.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; fill_voids-2.1.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; fill_voids-2.1.2-cp312-cp312-musllinux_1_2_aarch64.whl; fill_voids-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “binary image hole filling”
- fill-voidsFills interior voids in 2D and 3D binary images using a fast…
- simple-lama-inpaintingPerforms image inpainting using the LaMa model, filling in masked…
- DataRecorderDataRecorder provides buffered writing tools for saving data to files…
Give your agent the search over MCP, or paste the wish link into any chat.
More Scientific/Engineering packages
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
pandas provides fast, flexible data structures (Series and DataFrame) for loading, cleaning, transforming, and analyzing labeled or relational data in Python.
scipy provides numerical algorithms for mathematics, science, and engineering—including optimization, integration, linear algebra, Fourier transforms, signal and image processing, and ODE solvers—built on numpy arrays.
scikit-learn provides a comprehensive Python library for supervised and unsupervised machine learning, including classification, regression, clustering, dimensionality reduction, and model evaluation tools built on NumPy and SciPy.
Install it if you need to train, evaluate, or deploy supervised or unsupervised learning models.
dill extends Python's pickle module to serialize and deserialize a much wider range of Python objects, including functions, lambdas, classes, and interpreter sessions, to byte streams for storage or network transmission.
Multiprocess is an enhanced fork of Python's standard multiprocessing library that uses dill for better serialization, allowing you to spawn processes with a threading-like API and share complex objects between them.
Install it if you use multiprocessing and encounter pickle serialization limits with lambdas or complex objects.
See also connected-components-3d · simple-lama-inpainting · pixeloe · isosurfaces · fastremap · batchgenerators · PyMatting · opensimplex · blendmodes · empty-files