AquaMVS
Multi-view-stereo (MVS) reconstruction of underwater surfaces viewed through a flat water surface, with Snell's law refraction modeling.
Status
v1.3.5 released. AquaMVS is feature-complete for the v1.0 milestone and available on PyPI. The API is considered stable; breaking changes will follow semantic versioning.
What it does
AquaMVS is a companion library to AquaCal. It consumes calibration output and synchronized video from above-water cameras to produce time-series 3D surface reconstructions. The pipeline handles the unique challenge of cameras positioned in air observing underwater geometry, accounting for refraction at the air-water interface using Snell's law.
Key Features
- Refractive ray casting through air-water interface (Snell's law)
- Dual matching pathways: LightGlue (sparse) and RoMa v2 (dense) for different accuracy/speed tradeoffs
- Multi-view depth fusion with geometric consistency filtering
- Surface reconstruction (Poisson, heightfield, Ball Pivoting Algorithm)
- Mesh export (PLY, OBJ, STL, GLTF) with simplification
- Full CLI and Python API for pipeline users and custom workflow developers
Quick Start
from aquamvs import Pipeline
pipeline = Pipeline("config.yaml")
pipeline.run()
See the full documentation for configuration details, API reference, and examples.
Installation
AquaMVS requires several prerequisites (PyTorch, LightGlue, RoMa v2) to be installed first. AquaCal is installed automatically as a dependency.
See INSTALL.md for complete installation instructions.
Quick summary:
# 1. Install PyTorch from pytorch.org
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
# 2. Install git-based prerequisites (LightGlue, RoMa v2)
pip install -r requirements-prereqs.txt
# 3. Install AquaMVS (pulls AquaCal automatically)
pip install aquamvs
Documentation
Full documentation is available at https://aquamvs.readthedocs.io/
Topics include:
- Installation guide
- Configuration reference
- API documentation
- Usage examples
- Extension points for custom workflows
Citation
If you use AquaMVS in your research, please cite:
Lancaster, T. (2026). AquaMVS: Multi-view stereo reconstruction with refractive geometry.
GitHub: https://github.com/McGrathLab/AquaMVS
Example dataset: https://doi.org/10.5281/zenodo.18702024
License
AquaMVS is released under the MIT License. See LICENSE for details.
Third-party components and commercial use
AquaMVS vendors no third-party source code or model weights; all optional components are installed separately at the user's request. The out-of-the-box configuration is fully MIT/permissive: the default matcher is RoMa v2 (MIT) and the default feature extractor is ALIKED (BSD-3-Clause).
The optional SuperPoint extractor (reachable via LightGlue by setting
extractor_type: superpoint) is provided under Magic Leap's non-commercial
academic-research-only license. It is not a default. Commercial users
should select ALIKED (BSD-3) or DISK (Apache-2.0) instead of SuperPoint.
See THIRD_PARTY_LICENSES.md for the full breakdown.
Metadata
Release files for aquamvs 1.7.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aquamvs-1.7.2.tar.gz | 144.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aquamvs-1.7.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 270.3 kB
Release files / aquamvs-1.7.2.tar.gz
| Download URL | aquamvs-1.7.2.tar.gz |
|---|---|
| Size | 144.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4a45bb7ad9b727a4dcf1a087b81e585a4aa4899db8955f9b6aa51a23ebf3c6cb
|
|
BLAKE2b-256 checksum How to use checksums |
f86da44d34eddf3cd701d3bcfa68625f2aa4348539daa3bc56fba2ec1f898f7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 24, 2026.
Transparency logRelease files / aquamvs-1.7.2-py3-none-any.whl
| Download URL | aquamvs-1.7.2-py3-none-any.whl |
|---|---|
| Size | 126.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03925992da06c4b87caf8f2afa6fb8701ab39d44aa7186cb939e8973a2f9e014
|
|
BLAKE2b-256 checksum How to use checksums |
815734e673ee5da01d33262ebaff2eb0190ba0078fcf4086daee072df5dd8133
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 24, 2026.
Transparency log