Loading repository data…
Loading repository data…
capt-clay10 / repository
GeoCamPal is a modular image analysis toolkit with a GUI and an open-source Python environment. It integrates specialised tools for camera calibration and image harmonisation, feature identification, including manual editing, labeled training data preparation, georeferencing , DEM generation, timestack creation, and wave-runup analysis.
GeoCamPal is a modular, GUI-driven Python toolbox for geospatial image-processing workflows. It brings together camera pre-processing, lens correction, image harmonisation, Ground control point-to-pixel coordinate conversion, georeferencing, feature identification, exploratory image analysis, DEM generation, timestack generation, and wave run-up analysis in a single application.
The software is designed for practical fixed-camera and coastal image-analysis workflows, while remaining useful for broader time-lapse, geospatial image processing, and image classification tasks.
| Tools | Modules |
|---|---|
| Pre-processing | Field-of-view generation, lens calibration, bad-image filtering, brightness harmonisation, colour harmonisation |
| Georeferencing | Pixel-to-GCP conversion, homography matrix creation, image rectification using several supported methods |
| Feature identification | HSV masking, AOI/profile filtering, colour-picker classification, manual polyline/polygon editing, GeoJSON and COCO-style export |
| Data exploration | Multi-time-series image selection, colour-space analysis, colour statistics, outlier detection |
| DEM generation | Shoreline/waterline-based DEM creation from GeoJSON features and water-level data |
| Time-stacking | Profile extraction, Hovmöller diagrams, raw timestack generation |
| Wave run-up | Run-up contour extraction, time-distance export, PSD analysis, optional Stockdon comparison |
The recommended option for most users is to download the latest Windows release from the Releases page.
No Python installation is required when using the stand-alone executable.
git clone https://github.com/capt-clay10/GeoCamPal.git
cd GeoCamPal
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py
GeoCamPal targets Python 3.8 or newer.
The launcher is the central hub for GeoCamPal. It groups the available tools into the following sections:
Only one tool window is opened at a time to keep console output and GUI state manageable.
The FOV Generator visualises single- or multi-camera field-of-view footprints on either a user-supplied GeoTIFF basemap or a clean standalone distance-ring plot. If a DEM is supplied, the tool can compute a line-of-sight viewshed so terrain obstructions are reflected in the visible footprint.
Typical inputs
Typical outputs
fov_map.pngfov_report.txtviewshed_mask.tif, when DEM-based viewshed export is usedThe Lens Correction module computes camera intrinsic parameters from checkerboard calibration images using OpenCV. It supports rectangular checkerboards where the cell width and cell height may differ.
Typical inputs
Typical outputs
lens_calibration.pklcalibration_report.txtThe Harmonise Images module provides a multi-stage image quality and correction workflow. Original images are not overwritten.
The filtering stage can flag images affected by:
Brightness harmonisation supports luminance-based gain correction with soft-knee handling and L-channel histogram matching. Optional sky masking can be used when computing reference luminance.
Colour harmonisation supports:
Both brightness and colour harmonisation include a preview-first workflow. A random sample is processed before committing changes to the full dataset.
Typical inputs
Typical outputs
bad_images.txtbad_images.json<input_folder>_filtered_good/<input_folder>_brightness_harmonised/<input_folder>_colour_harmonised/The Time Series Explorer matches images to one or more hydrodynamic or environmental time series using timestamps extracted from image filenames. Up to five time series can be combined using AND logic.
Supported criteria include:
| Criterion | Description |
|---|---|
| Peaks / Maxima | Select images closest to local maxima. |
| Troughs / Minima | Select images closest to local minima. |
| Above Threshold | Select images where the time-series value exceeds a threshold. |
| Below Threshold | Select images where the time-series value falls below a threshold. |
| Near Target Value | Select images near a user-defined value. |
| Spring Tide Peaks | Select images near spring high-water events. |
| Neap Tide Peaks | Select images near neap high-water events. |
| No Filter | Record values without filtering by that series. |
Typical inputs
Typical outputs
matched_images_<mode_tag>.txtimages_<mode_tag>/The Colour Space Explorer treats an image folder as a colour dataset. It can visualise channel distributions, two-dimensional scatter-density plots, colour timelines, and colour-profile outliers.
Supported colour spaces:
Available analyses include:
| Analysis Mode | Description |
|---|---|
| Channel histograms | Per-channel colour distributions. |
| 2-D scatter density | Joint distribution between selected colour channels. |
| Colour timeline | Channel statistics through image time. |
| Outlier detection | Flag images with anomalous colour statistics. |
Typical inputs
Typical outputs
color_stats.csvoutliers.txt, when outliers are detectedcolor_explorer_plots.pngThe Pixel-to-GCP Converter allows users to select image pixel coordinates corresponding to known ground-control points. The tool supports flexible GCP CSV column names and optional conversion from latitude/longitude to UTM coordinates.
Typical inputs
Typical outputs
A CSV containing pixel-to-world mappings, including fields such as:
Image_namePixel_XPixel_YGCP_IDcameraReal_XReal_YReal_ZEPSGThe Homography Matrix Creator computes 3 × 3 homography matrices from pixel-to-world GCP mappings.
It supports:
Typical inputs
GCP_ID, Pixel_X, Pixel_Y, Real_X, and Real_YTypical outputs
<output_name>.txt<output_name>_bestsubset.txt, when using the advanced subset-optimisation workflow