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 or simulate Imagery:
- (a)
File > Opento load an HDF5 imagery file - (b)
File > Simulateto simulate example data
- 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
- View frame imagery in image or geodetic space with tile servers to show imagery in geospatial context
- Background removal: Temporal median, Running sub-space tracker, Robust PCA, GoDec
- Signal Enhancement: Decimating or running Coaddition
- Detection algorithms: simple threshold detectors, CFAR, PSTNN
- Tracking algorithms: Simple, Kalman, Network Flow, and Tracklet trackers
- Sensor calibration: Bias removal, non-uniformity correction
- Geodetic support: Pixel-to-geodetic coordinate conversion
- Manual annotation: Create/edit/label 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 |
| Delete | Remove selected sensors, imagery, tracks, detectors, detection points |
| Drag and Drop on Sensors / Imagery panels | Load sensor / imagery data |
| Drag and Drop on Tracks Panels | Load tracks data |
| Drag and Drop on Detections Panels | Load detections data |
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.