VISTA is a PyQt6-based desktop application for viewing, analyzing, and managing multi-frame imagery datasets along with associated detection and track overlays. It's designed for scientific and analytical workflows involving temporal image sequences with support for time-based and geodetic coordinate systems, sensor calibration data, and radiometric processing.
Documentation: https://awetomaton.github.io/VISTA/
Source Code: https://github.com/awetomaton/VISTA
pip install vista-imageryLaunch VISTA:
vistaOr install from source:
git clone https://github.com/awetomaton/VISTA.git
cd VISTA
pip install -e .For detailed installation instructions, see the Installation Guide.
- Load Imagery:
File > Opento load an HDF5 imagery file - Navigate: Use playback controls or arrow keys (Left/Right or A/D)
- Detect Objects:
Algorithms > Detectorsto run CFAR or threshold detection - Track Objects:
Algorithms > Trackingto link detections into tracks - Export Results: Export tracks/detections to CSV from the Data Manager
For a complete walkthrough, see the Quick Start Guide.
- Multi-frame imagery viewing with playback controls and histogram adjustment
- Detection algorithms: CFAR and simple threshold detectors
- Tracking algorithms: Simple, Kalman, Network Flow, and Tracklet trackers
- Background removal: Temporal median and Robust PCA
- Sensor calibration: Bias removal, non-uniformity correction
- Geodetic support: Pixel-to-geodetic coordinate conversion via ARF
- Manual annotation: Create/edit tracks and detections interactively
- Feature overlays: AOIs, placemarks, and shapefile import
See the User Guide for detailed feature documentation.
| Shortcut | Action |
|---|---|
| Left Arrow / A | Previous frame |
| Right Arrow / D | Next frame |
| CTRL / Z | Undo track / detection panel action |
| Spacebar | Play/Pause |
VISTA uses HDF5 for imagery and CSV for tracks/detections. For format specifications, see:
from vista.app import VistaApp
from vista.imagery.imagery import Imagery
import numpy as np
# Create imagery in memory
images = np.random.rand(10, 256, 256).astype(np.float32)
imagery = Imagery(name="Test", images=images, frames=np.arange(10))
# Launch VISTA
app = VistaApp(imagery=imagery)
app.exec()See the API Reference for complete programmatic documentation.
Create simulated data via the GUI (File > Simulate) or programmatically:
from vista.simulate.simulation import Simulation
sim = Simulation(name="Test", frames=50, rows=256, columns=256)
sim.simulate()
sim.save("test_data")Windows:
pyinstaller vista/app.py --onefile -n vista --icon=vista/icons/logo.ico --hidden-import pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyqt6 --hidden-import pyqtgraph.imageview.ImageViewTemplate_pyqt6 --hidden-import pyqtgraph.graphicsItems.ViewBox.axisCtrlTemplate_pyqt6 --add-data="vista/icons*;vista" --add-data="vista/simulate/data*;vista"macOS/Linux:
pyinstaller vista/app.py --onefile --windowed -n vista --icon=vista/icons/logo.icns --hidden-import pyqtgraph.graphicsItems.PlotItem.plotConfigTemplate_pyqt6 --hidden-import pyqtgraph.imageview.ImageViewTemplate_pyqt6 --hidden-import pyqtgraph.graphicsItems.ViewBox.axisCtrlTemplate_pyqt6 --add-data="vista/icons:vista/icons/" --add-data="vista/simulate/data:vista/simulate/data/"Contributions are welcome! See the Contributing Guide for details.
MIT License
VISTA uses PyQt6, pyqtgraph, NumPy, pandas, h5py, astropy, scikit-image, scipy, and other open-source libraries.