Skip to main content

A CLI application for Large Scale Particle Image Velocimetry (LSPIV).

Project description



DOI License: AGPL v3 Python Version React Version

RIVeR: Rectification of Image Velocity Results

RIVeR (Rectification of Image Velocity Results) is a modern, open-source toolkit for Large Scale Particle Image Velocimetry (LSPIV). Built with Python and React, it provides a user-friendly interface for water-surface velocity analysis and flow discharge measurements in rivers and large-scale hydraulic models.

Example of RIVeR velocimetry analysis of river flow

๐Ÿ’ง Overview

RIVeR is a specialized tool for applying Large Scale Particle Image Velocimetry (LSPIV) techniques as a non-contact method to estimate discharge in rivers and channels from video footage. The software guides the process through intuitive defaults and pre-configured settings, enabling users to generate discharge calculations without extensive prior knowledge of the technique. The workflow guides users through a series of straightforward steps culminating in comprehensive visual reports.

Originally developed in MATLAB in 2015 and well-received by the hydrology community, RIVeR has now been reimplemented in Python and JavaScript to improve accessibility, performance, and cross-platform compatibility.

โœจ Key Features

  • Process footage from multiple sources:

    • UAV/drone aerial imagery
    • Oblique view camera (from riverbank)
    • Fixed station cameras (contiunous monitoring)
  • Frame extraction from videos with customizable parameters

  • FFT-based PIV analysis with multi-pass support for increased accuracy

  • Interactive result visualization with customizable vector fields

  • Georeferencing and coordinate transformations

  • Multi Cross-sectional flow analysis

  • Automated beautiful report generation (like this one !)

  • Multi-platform support (Windows, macOS, Linux)

๐Ÿš€ Getting Started

Prerequisites

  • Python 3.12+
  • pip package manager
  • Git (for cloning the repository)

CLI Installation

pip install river-cli

๐Ÿ“‚ Project Structure

river/
.
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ examples       # Jupyter examples
โ”‚   โ”œโ”€โ”€ 00_introduction.ipynb
โ”‚   โ”œโ”€โ”€ 01_video_to_frames.ipynb
โ”‚   โ”œโ”€โ”€ 02a_nadir_transformation.ipynb
โ”‚   โ”œโ”€โ”€ 02b_oblique_transformation.ipynb
โ”‚   โ”œโ”€โ”€ 02c_fixed_station_transformation.ipynb
โ”‚   โ”œโ”€โ”€ 03_cross_sections.ipynb
โ”‚   โ”œโ”€โ”€ 04_piv_analysis.ipynb
โ”‚   โ”œโ”€โ”€ 05_discharge_calculation.ipynb
โ”‚   โ”œโ”€โ”€ data
โ”‚   โ”œโ”€โ”€ results
โ”‚   โ””โ”€โ”€ utils
โ”œโ”€โ”€ gui
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ readme.md
โ”œโ”€โ”€ requirements.txt
โ””โ”€โ”€ river
    โ”œโ”€โ”€ cli
    โ”œโ”€โ”€ core
    โ”‚   โ”œโ”€โ”€ compute_section.py       # Section computation utilities
    โ”‚   โ”œโ”€โ”€ coordinate_transform.py   # Coordinate system transformations
    โ”‚   โ”œโ”€โ”€ define_roi_masks.py      # ROI and mask definitions
    โ”‚   โ”œโ”€โ”€ exceptions.py            # Custom exceptions
    โ”‚   โ”œโ”€โ”€ image_preprocessing.py   # Image preparation tools
    โ”‚   โ”œโ”€โ”€ matlab_smoothn.py        # Smoothing algorithms
    โ”‚   โ”œโ”€โ”€ piv_fftmulti.py         # FFT-based PIV processing
    โ”‚   โ”œโ”€โ”€ piv_loop.py             # PIV processing loop
    โ”‚   โ”œโ”€โ”€ piv_pipeline.py         # Main PIV pipeline
    โ”‚   โ””โ”€โ”€ video_to_frames.py      # Video frame extraction
    โ””โ”€โ”€ docs

๐Ÿ“š Jupyter Examples

Browse through our collection of Jupyter Notebook examples to learn how to use RIVeR for various analyses:

These interactive examples provide step-by-step guidance for common RIVeR workflows.

๐Ÿ”ฌ Citation

If you use RIVeR in your research, please cite:

@article{patalano2017river,
    title={Rectification of Image Velocity Results (RIVeR): A simple and user-friendly toolbox
           for large scale water surface Particle Image Velocimetry (PIV) and
           Particle Tracking Velocimetry (PTV)},
    author={Patalano, Antoine and Garcรญa, Carlos Marcelo and Rodrรญguez, Andrรฉs},
    journal={Computers \& Geosciences},
    volume={105},
    pages={103--114},
    year={2017},
    publisher={Elsevier}
}

๐Ÿ‘ฅ Authors

Core Team

  • Antoine Patalano - Project Lead, Feature Development - [UNC/ORUS]
  • Leandro Massรณ - Feature Development - [UNC/ORUS]

Development Team

  • Nicolas Stefani - CLI & Backend Development
  • Tomas Stefani - Frontend Development

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

๐Ÿ“œ License

RIVeR is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

๐Ÿ’ญAcknowledgments

  • Original MATLAB version (2017)
  • UNC/ORUS research team
  • Contributing organizations: UNC, ORUS, INA, CONICET
  • PIVlab project: The pioneering PIV analysis tool that inspired aspects of RIVeR's development

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

river_cli-3.0.0.tar.gz (66.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

river_cli-3.0.0-py3-none-any.whl (70.2 kB view details)

Uploaded Python 3

File details

Details for the file river_cli-3.0.0.tar.gz.

File metadata

  • Download URL: river_cli-3.0.0.tar.gz
  • Upload date:
  • Size: 66.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for river_cli-3.0.0.tar.gz
Algorithm Hash digest
SHA256 d70e9a99ad4382646147c245592babc032bb5bc7bdcf816ffc13a312d2527bf1
MD5 2a82af2cda288ec3863469eea64bde21
BLAKE2b-256 1ffea7d7c554d9e690ff192d86eb4b832f0592ce272538cf65fba758287cca32

See more details on using hashes here.

File details

Details for the file river_cli-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: river_cli-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 70.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for river_cli-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc32bb5cbd5d20d9e510724bb73dde15f735f431805593b4868cf94070c07ffa
MD5 f25764845a52ab7cf5316d8a792d3768
BLAKE2b-256 158c25142af6cf4514290aeb703bffc4453a53c78b501f0b945791b7f38165e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page