AquaMVS
Multi-view-stereo (MVS) reconstruction of underwater surfaces viewed through a flat water surface, with Snell's law refraction modeling.
Status
AquaMVS is 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).
# RoMa v2 must be installed --no-deps, or pip replaces your torch (see INSTALL.md)
pip install -r requirements-prereqs.txt
pip install --no-deps -r requirements-romav2.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
Validation
AquaMVS's geometric accuracy has been validated against independent ChArUco calibration-board ground truth, recovered from the boards without using the MVS reconstruction it assesses. On the ground-truth set (13 cameras, 10 board poses, AquaMVS 1.7.2 with RoMa v2 and an AquaCal 2.1.0 calibration), the reconstruction gives:
| Metric | Value |
|---|---|
| Board flatness (RMS) | 1.11 mm |
| Rigid-fit corner error (inlier RMSE) | 1.08 mm |
| Lateral / range error (RMS) | 0.53 / 1.78 mm |
| Absolute scale error | +0.064 % |
- Analysis code, reproducing every figure and number in the paper: McGrathLab/AquaMVS_gtanalysis
- Ground-truth dataset: 10.5281/zenodo.21134748
AquaMVS 1.7.3 reproduces the 1.7.2 reconstruction bit for bit (checked on the ground-truth set's first frame); its changes are to installation, headless rendering and CPU device handling.
Citation
If you use AquaMVS in your research, please cite the software (machine-readable metadata in CITATION.cff; GitHub's "Cite this repository" button uses it):
Lancaster, T. (2026). AquaMVS: Multi-view stereo reconstruction of underwater surfaces
with refractive modeling [Computer software]. https://github.com/McGrathLab/AquaMVS
Example dataset: https://doi.org/10.5281/zenodo.18702024
A paper describing AquaMVS is under review; this section will cite it once published.
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.3
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.3.tar.gz | 146.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aquamvs-1.7.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 273.7 kB
Release files / aquamvs-1.7.3.tar.gz
| Download URL | aquamvs-1.7.3.tar.gz |
|---|---|
| Size | 146.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1cf46daf2d7f88c5bb6d4cecd37073662ed9e4425412b1ff42be52d00a1ced20
|
|
BLAKE2b-256 checksum How to use checksums |
e3eb2570702c2d38bbb25be0b6db82e56442afdf13172a02e88fabc692d73747
|
| 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 Oct 1, 2026.
Transparency logRelease files / aquamvs-1.7.3-py3-none-any.whl
| Download URL | aquamvs-1.7.3-py3-none-any.whl |
|---|---|
| Size | 127.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f28c3c6fbbe85999075c8af6dafa8537f3bc9c31f566cb9b1f1861cbef4e672
|
|
BLAKE2b-256 checksum How to use checksums |
2c71d64d7905cf406f85c413317ab9ea33ce1deae10cc039869b74132dc93485
|
| 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 Oct 1, 2026.
Transparency log