Tools & data · Prototype

FishMorph

Measure fish images, save landmarks and masks, and compare a 3D model with reference profiles. A local Python workbench with a browser interface.

Screenshots from the bundled synthetic demo. The example images and specimen records are generated fixtures.

Role
System design, implementation and testing with AI coding tools
Period
2026
Status
Local Python application
Platform
Python 3.11+, local browser UI

Overview

Import images, mark landmarks and body outlines, then save measurements with the specimen record. FishMorph retains the original image and keeps a history of annotation changes.

The bundled demo uses synthetic fish, so it is easy to try without supplying photographs.

Image measurements

Landmarks and a reviewed body outline give length-relative measurements and profiles. Multiple photographs of one specimen stay grouped together rather than being counted as separate animals.

Measurements depend on the available landmarks and scale. An unscaled photograph cannot give physical length or reveal the width of an unseen side.

Reproduce this check
python3 -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
.venv/bin/fishmorph --project ./demo-data serve

Mesh comparison

Load a mesh to render orthographic views on the CPU, then mark matching landmarks and compare its proportions with a reference profile. The saved projection matrices make each view reproducible.

Color comparison needs calibrated reference data. A neutral model render and an ordinary field photograph usually cannot provide that comparison.

Testing

The packaged application passed 68 tests. Its demo contains eight reference specimens, nine images and a model comparison.

Browser checks covered annotation saving, measurements, zoom, masks and JSON export at desktop and phone widths. Exported JSON matched the analysis stored in SQLite.

Reproduce this check
.venv/bin/python -m pytest -q

Images and measurements

The code and bundled synthetic examples are MIT licensed. Imported photographs and meshes keep their original licenses.

Manual landmarks and masks need review. The examples test the software workflow; they do not establish biological accuracy.

Scope & limitations

Manual landmarks and masks require review. Unscaled images cannot establish physical length; field color is not absolute pigmentation. Synthetic tests do not establish biological validity.

Display settings

Choose a layout and palette. Your settings are saved in this browser.

Palette
Homepage layout
Motion

Harmonic drawing

The drawing in the middle of the ring. Drag across it or use the sliders.

3
25