Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
40eb879
Fix Pixel Transformation translation on Rectification 2d Report
tomyste Mar 21, 2025
5c31628
update link readme.md
antoineunc Mar 21, 2025
310643b
update report links
tomyste Mar 21, 2025
a8b5d6f
Fix level input on cross sections
tomyste Mar 21, 2025
74a83dd
Merge pull request #51 from oruscam/fix/issue-50-xsections-level
tomyste Mar 21, 2025
705c44a
Merge pull request #49 from oruscam/update/issue-46-update-link-report
tomyste Mar 21, 2025
827d6a1
Merge pull request #48 from oruscam/fix/issue-47-Rectification2dReport
tomyste Mar 21, 2025
571e124
update readme.md
antoineunc Mar 21, 2025
1d96c22
branch '3.0.1' of github.com:APatal/RIVeR into 3.0.1
antoineunc Mar 21, 2025
e3fc91d
fix link readme.md
antoinepatalano Mar 21, 2025
ba239d9
update sample_report.html
antoineunc Mar 21, 2025
82fea39
add Hydrohub aknowledgments
antoineunc Mar 21, 2025
95f7c48
few updates in readme.md
antoineunc Mar 21, 2025
ed8abd5
update links in readme.md
antoineunc Mar 21, 2025
8e6c03b
update releases in readme.md
antoineunc Mar 21, 2025
25d0ff6
add gif in readme.md
antoineunc Mar 21, 2025
a2ff1cd
add link to gif in readme.md
antoineunc Mar 21, 2025
bd1ea89
add french in readme.md
antoineunc Mar 25, 2025
c45db6c
Set minimun python version supported to 3.11
nico-stefani Mar 26, 2025
6bf8f15
Update bumpver settings
nico-stefani Mar 26, 2025
0187c25
Bump version to 3.0.1
nico-stefani Mar 26, 2025
b037662
Merge pull request #53 from oruscam/bug/44-fix-required-python-version
nico-stefani Mar 26, 2025
90b8b5c
Update CHANGELOG.md
tomyste Mar 27, 2025
a1aafdc
Merge pull request #54 from oruscam/update/issue-52-changelog.md
tomyste Mar 27, 2025
c4ea72a
Update CHANGELOG.md
tomyste Mar 27, 2025
d906304
Merge pull request #55 from oruscam/update/issue-52-changelog.md
tomyste Mar 27, 2025
be122f0
Fix background color on select-cell ipcamgrid
tomyste Mar 27, 2025
4a0c281
Merge pull request #57 from oruscam/fix/issue-56-header-cell-background
tomyste Mar 27, 2025
ec46f90
Unify changelogs
nico-stefani Mar 30, 2025
e44b939
Merge pull request #58 from oruscam/change/45-update-readme
nico-stefani Mar 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,23 @@ All notable changes to the RIVeR project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [3.0.0] - 2025-03-29
# [3.0.1] - 2025-03-31

## GUI

### Fixed
- Cross Sections Input Level
- Rectification 2d report translations
- Rectification Footer Links

## CLI

### Changed

- Updated min required Python version to 3.11


# [3.0.0] - 2025-03-29
### Added
- Complete rewrite of the application in Python and JavaScript
- New tree-based navigation system with step sidebar
Expand Down
5 changes: 0 additions & 5 deletions gui/CHANGELOG.md

This file was deleted.

2 changes: 1 addition & 1 deletion gui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://code.createjs.com/1.0.0/createjs.min.js"></script>
<title>RIVeR 3.0.0</title>
<title>RIVeR 3.0.1</title>
</head>
<body>
<div id="root"></div>
Expand Down
2 changes: 1 addition & 1 deletion gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "river-gui",
"productName": "RIVeR",
"private": true,
"version": "3.0.0",
"version": "3.0.1",
"type": "module",
"description": "Software for calculating water discharge from videos using LSPIV technique",
"author": {
Expand Down
5 changes: 2 additions & 3 deletions gui/src/components/Forms/FormRectification3D.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,15 @@ export const FormRectification3D = () => {

<div className="input-container-2 mt-1">
<button
className={`wizard-button me-1 button-rectification ${cameraSolution?.mode === "direct-solve" || mode === "direct-solve" ? "wizard-button-active" : ""}`}
className={`wizard-button me-1 button-rectification ${cameraSolution === undefined ? "mb-2" : ""} ${cameraSolution?.mode === "direct-solve" || mode === "direct-solve" ? "wizard-button-active" : ""}`}
id="direct-solve"
type="button"
onClick={handleOnClickAction}
disabled={
ipcam.importedPoints === undefined || selectedCounter < 6
}
>
{" "}
{t("ControlPoints3d.directSolve")}{" "}
{t("ControlPoints3d.directSolve")}
</button>
<button
className={`wizard-button button-rectification ${cameraSolution === undefined ? "mb-2" : ""} ${cameraSolution?.mode === "optimize-solution" || mode === "optimize-solution" ? "wizard-button-active" : ""}`}
Expand Down
3 changes: 1 addition & 2 deletions gui/src/components/Forms/form.css
Original file line number Diff line number Diff line change
Expand Up @@ -545,5 +545,4 @@ transform-origin: 14px 22px;
align-items: center;
justify-content: center;
margin-right: 5%;
}

}
4 changes: 2 additions & 2 deletions gui/src/components/Report/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const Footer = () => {
return (
<div id="report-footer-container">
<div>
<a href="" target="_blank" rel="noopener noreferrer">
<a href="https://x.com/Orus_cam" target="_blank" rel="noopener noreferrer">
<img
id="report-footer-river-logo"
src={riverLogo}
Expand All @@ -32,7 +32,7 @@ export const Footer = () => {
<p> {t("Report.date")}: {date} </p>
</div>
<div>
<a href="https://github.com" target="_blank" rel="noopener noreferrer">
<a href="https://github.com/oruscam/RIVeR" target="_blank" rel="noopener noreferrer">
<img
id="report-footer-github-logo"
src={githubLogo}
Expand Down
4 changes: 2 additions & 2 deletions gui/src/components/Report/ObliquePixelTransformation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ export const ObliquePixelTransformation = ({
<table>
<thead>
<tr>
<th> {t("CorntrolPoints.distance")} </th>
<th> {t("CorntrolPoints.length")} </th>
<th> {t("ControlPoints.distance")} </th>
<th> {t("ControlPoints.length")} </th>
</tr>
</thead>
<tbody>
Expand Down
4 changes: 2 additions & 2 deletions gui/src/components/components.css
Original file line number Diff line number Diff line change
Expand Up @@ -670,5 +670,5 @@
position: sticky;
top: 0;
overflow: none;
}

background-color: black;
}
4 changes: 2 additions & 2 deletions gui/src/helpers/getBathimetryValues.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ export const getIntersectionPoints = (
): Point[] => {
let intersectionPoints: Point[] = [];
for (let i = 0; i < data.length - 1; i++) {
const currentPoint = data[i];
const nextPoint = data[i + 1];
let currentPoint = {...data[i]};
let nextPoint = {...data[i + 1]};

currentPoint.y = parseFloat(currentPoint.y.toFixed(2));
nextPoint.y = parseFloat(nextPoint.y.toFixed(2));
Expand Down
4 changes: 2 additions & 2 deletions gui/src/translations/en/global.json
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,8 @@
"title": "Control Points",
"drawPoints": "Draw Points",
"importDistances": "Import Distances",
"distance": "Distancia",
"length" : "Longitud",
"distance": "Distance",
"length" : "Length",
"Errors": {
"required" : "All the distances fields are obligatory. Please check Control Points form",
"notNull": "All the distances fields must be greater than 0. Please check Control Points form",
Expand Down
9 changes: 5 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "river-cli"
version = "3.0.0"
version = "3.0.1"
description = "A CLI application for Large Scale Particle Image Velocimetry (LSPIV)."
readme = "readme.md"
authors = [
Expand All @@ -30,7 +30,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
]
keywords = ["cli", "lspiv", "flow", "discharge", "velocity" , "analysis", "hydraulic", "models"]
requires-python = ">=3.12"
requires-python = ">=3.11"

[project.urls]
Homepage = "https://github.com/aPatal/RIVeR/"
Expand Down Expand Up @@ -97,7 +97,7 @@ docstring-code-format = false
docstring-code-line-length = "dynamic"

[tool.bumpver]
current_version = "3.0.0"
current_version = "3.0.1"
version_pattern = "MAJOR.MINOR.PATCH"
commit_message = "bump version {old_version} -> {new_version}"
commit = true
Expand All @@ -107,4 +107,5 @@ push = true
[tool.bumpver.file_patterns]
"pyproject.toml" = ['current_version = "{version}"', 'version = "{version}"']
"river/__init__.py/" = ["{version}"]
"gui/package.json" = ["\"version\": \"{version}\"", "\"productName\": \"RIVeR {version}\""]
"gui/package.json" = ["\"version\": \"{version}\""]
"gui/index.html" = ["RIVeR {version}"]
139 changes: 118 additions & 21 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,43 @@

<figure>
<img src="river/docs/_static/river_logo.svg" width=250 align="center">
</figure>
<br clear="left"/>
<br>
<div align="center">
<img src="https://raw.githubusercontent.com/oruscam/RIVeR/main/river/docs/_static/river_logo.svg" width="350px">
<br />
<br />

<p>
<strong>Modern LSPIV toolkit for water-surface velocity analysis and flow discharge measurements</strong>
</div>


[![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cageo.2017.07.009-blue)](https://doi.org/10.1016/j.cageo.2017.07.009)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
[![Python Version](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![Python Version](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
[![React Version](https://img.shields.io/badge/react-18.0+-61DAFB.svg)](https://reactjs.org/)

---

# 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.
**RIVeR** (Rectification of Image Velocity Results) is a modern, open-source toolkit for Large Scale Particle Image Velocimetry (**LSPIV**) distributed by [ORUS](https://x.com/Orus_cam). 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.


<figure>
<img src="river/docs/_static/screenshot_results.png" width=500 align="center">
<figcaption>Example of RIVeR velocimetry analysis of river flow</figcaption>
<img src="https://raw.githubusercontent.com/oruscam/RIVeR/main/river/docs/_static/screenshot_results.png" width=500>
<p ><i>Example of RIVeR velocimetry analysis of river flow</i></p>
</figure>

---

## 💧 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.
<figure>
<img src="https://raw.githubusercontent.com/oruscam/RIVeR/main/river/docs/_static/oblique_rectification.gif" width=500>
<p><i>Demonstration of interactive oblique image rectification process in RIVeR</i></p>
</figure>

---

## ✨ Key Features

Expand All @@ -38,23 +50,97 @@ Originally developed in MATLAB in 2015 and well-received by the hydrology commun
* Interactive result visualization with customizable vector fields
* Georeferencing and coordinate transformations
* Multi Cross-sectional flow analysis
* Automated beautiful report generation ([like this one !](river/docs/_static/sample_report.html))
* Automated beautiful report generation ([like this one !](https://oruscam.github.io/RIVeR/sample_report.html))
* Multi-platform support (**Windows**, **macOS**, **Linux**)


---

## 🌍 Multi-Language Support

- RIVeR available in multiple languages!
- English 🇺🇸
- Spanish 🇦🇷
- French 🇫🇷
- [More coming soon!]

* Multi-platform support (Windows, macOS, Linux)
---
## 📥 Download Compiled Releases

## 🚀 Getting Started
If you don't want to bother with code at all (we get it, sometimes you just want things to work!), pre-compiled standalone versions are available:

| ⊞ Windows | ⌘ macOS | ◆ Linux |
|:---:|:---:|:---:|
| [v3.0.0](https://github.com/oruscam/RIVeR/releases/download/v3.0.0/RIVeR-Windows-3.0.0-Setup.zip) | [Download](https://github.com/oruscam/RIVeR/releases/download/latest/RIVeR-macOS.dmg) | [Download](https://github.com/oruscam/RIVeR/releases/download/latest/RIVeR-Linux.AppImage) |


These packages include both the GUI and CLI tools in a ready-to-use application. No Python or JavaScript knowledge required!


These packages include both the GUI and CLI tools in a ready-to-use application. Simply download, extract (if needed), and run the application - no Python or JavaScript knowledge required!

---
## 🧑‍💻 Developer Installation & Usage

For those who prefer to work with the source code or contribute to RIVeR's development, here's how to get started:

### Prerequisites

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


### Development Installation
```bash
git clone https://github.com/oruscam/RIVeR.git
cd RIVeR
pip install -e .
```
### CLI Installation
RIVeR CLI provides a comprehensive set of commands for performing LSPIV analysis through the command line.

```bash
pip install river-cli
```
#### Basic Usage
```bash
river-cli [OPTIONS] COMMAND [ARGS]...
```
To see all available commands and options:
```bash
river-cli --help
```
#### Example Workflow
```bash
# 1. Extract frames from video
river-cli video-to-frames river_video.mp4 ./frames --every 2

# 2. Generate transformation matrix
river-cli get-uav-transformation-matrix 100 200 300 400 0 0 10 10 --image-path ./frames/frame_001.jpg

# 3. Create masks for PIV analysis
river-cli create-mask-and-bbox 3 ./frames/frame_001.jpg ./xsections.json ./transformation_matrix.json --save-png-mask

# 4. Run PIV analysis
river-cli piv-analyze ./frames --mask ./mask.json --workdir ./results

# 5. Calculate discharge
river-cli update-xsection ./xsections.json ./results/piv_results.json ./transformation_matrix.json --step 2 --fps 30 --id-section 0
```

### Graphical User Interface (GUI)

RIVeR also provides a user-friendly graphical interface built with React. The GUI offers an intuitive way to perform LSPIV analysis without using command-line tools.

Key GUI features include:
- Interactive workflow interface
- Visual cross-section creation
- Real-time PIV analysis visualization
- Result export capabilities

For detailed information about installation, usage, and features of the GUI, please see the dedicated [GUI documentation](gui/README.md).

---

## 📂 Project Structure

Expand Down Expand Up @@ -93,10 +179,11 @@ river/
│ └── 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:
Browse through our collection of Jupyter Notebook examples to learn how to use RIVeR for various analyses (requires development installation):

- [Introduction to RIVeR](examples/00_introduction.ipynb)
- [Video Frame Extraction](examples/01_video_to_frames.ipynb)
Expand All @@ -107,7 +194,7 @@ Browse through our collection of Jupyter Notebook examples to learn how to use R
- [PIV Analysis Workflow](examples/04_piv_analysis.ipynb)
- [Discharge Calculation](examples/05_discharge_calculation.ipynb)

These interactive examples provide step-by-step guidance for common RIVeR workflows.
These interactive examples provide step-by-step guidance for common RIVeR workflows. To run them, make sure you've completed the development installation described above.
## 🔬 Citation

If you use RIVeR in your research, please cite:
Expand All @@ -125,7 +212,7 @@ If you use RIVeR in your research, please cite:
publisher={Elsevier}
}
```

---
## 👥 Authors

### Core Team
Expand All @@ -136,15 +223,25 @@ If you use RIVeR in your research, please cite:
- **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.

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please [open an issue](https://github.com/oruscam/RIVeR/issues) first to discuss what you would like to change.

---

## 📜 License
RIVeR is licensed under the [GNU Affero General Public License v3.0](LICENSE) (AGPL-3.0).

---

## 💭Acknowledgments
- Contributing organizations:
- [UNC (National University of Córdoba)](https://www.unc.edu.ar/) - [Faculty of Exact, Physical and Natural Sciences](https://fcefyn.unc.edu.ar/)
- [INA (National Institute of Water, Argentina)](https://www.argentina.gob.ar/ina)
- [CONICET (National Scientific and Technical Research Council)](https://www.conicet.gov.ar/)


- Original MATLAB version (2017)
- UNC/ORUS research team
- Contributing organizations: UNC, ORUS, INA, CONICET
- [PIVlab project](https://la.mathworks.com/matlabcentral/fileexchange/27659-pivlab-particle-image-velocimetry-piv-tool-with-gui): The pioneering PIV analysis tool that inspired aspects of RIVeR's development
- [WMO HydroHub](https://wmo.int/media/update/winner-of-wmo-hydrohub-innovation-call-latin-america-and-caribbean?book=21576): For funding the development of RIVeR 3 (2024-2025)
- [PIVlab project](https://la.mathworks.com/matlabcentral/fileexchange/27659-pivlab-particle-image-velocimetry-piv-tool-with-gui): The pioneering PIV analysis tool that inspired aspects of RIVeR's development
2 changes: 1 addition & 1 deletion river/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "3.0.0"
__version__ = "3.0.1"
Binary file added river/docs/_static/oblique_rectification.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading