Detections Module¶
The detections module provides functionality for detecting objects in imagery and managing detection data.
Core Classes¶
Collection of detection points from a detection algorithm or manual creation. |
Detection Algorithms¶
VISTA provides several detection algorithms:
Threshold Detection: Simple intensity-based detection
CFAR Detection: Constant False Alarm Rate detection for adaptive thresholding
See Object Detection for detailed information on each algorithm.
Basic Usage¶
Creating a Detector¶
from vista.detections import Detector
# Create a detector instance
detector = Detector(name="My Detector")
# Add detection parameters
detector.threshold = 10.0
Running Detection¶
from vista.algorithms.detectors.threshold import simple_threshold_detector
# Run detection on imagery
detections = simple_threshold_detector(
imagery.data,
threshold=10.0,
min_area=5
)
Module Reference¶
- class vista.detections.detector.Detector(name, frames, rows, columns, sensor, description='', color='r', marker='o', marker_size=10, line_thickness=2, visible=True, complete=False, labels=<factory>)[source]¶
Bases:
objectCollection of detection points from a detection algorithm or manual creation.
A Detector represents a set of detected objects or points of interest across multiple frames. Unlike Tracks, detections are unassociated points without temporal continuity. Each detection point can have its own set of labels.
- Parameters:
name (str) – Unique identifier for this detector
frames (NDArray[np.int_]) – Frame numbers where detections occur
rows (NDArray[np.float64]) – Row (vertical) pixel coordinates for each detection
columns (NDArray[np.float64]) – Column (horizontal) pixel coordinates for each detection
sensor (Sensor) – Sensor object associated with these detections
description (str, optional) – Description of detection algorithm or method, by default “”
- marker¶
Marker style (‘o’, ‘s’, ‘t’, ‘d’, ‘+’, ‘x’, ‘star’), by default ‘o’ (circle)
- Type:
str, optional
- labels¶
List of label sets, one set per detection point, by default empty list
Notes
Detections are unassociated points (unlike tracks which represent trajectories)
Multiple detections can exist at the same frame
Labels are per-detection, allowing individual detection categorization
Detection coordinates are always in pixel space (row/column)
- get_detections_at_frame(frame_num)[source]¶
Get detection coordinates at a specific frame using O(1) cached lookup.
- Parameters:
frame_num (int) – Frame number to query
- Returns:
rows (NDArray) – Row coordinates of detections at this frame
cols (NDArray) – Column coordinates of detections at this frame
- get_pen(width=None, **kwargs)[source]¶
Get cached PyQtGraph pen object, creating only if parameters changed.
- Parameters:
width (int, optional) – Line width override, uses self.line_thickness if None
- Returns:
PyQtGraph pen object
- Return type:
pg.mkPen
- classmethod from_dataframe(df, sensor, name=None)[source]¶
Create Detector from pandas DataFrame.
- Parameters:
- Returns:
New Detector object
- Return type:
Notes
Optional styling columns: “Color”, “Marker”, “Marker Size”, “Line Thickness”, “Visible”, “Labels”
Labels should be comma-separated strings in the “Labels” column.
- copy()[source]¶
Create a deep copy of this detector object.
- Returns:
New Detector object with copied arrays and styling attributes
- Return type:
- __init__(name, frames, rows, columns, sensor, description='', color='r', marker='o', marker_size=10, line_thickness=2, visible=True, complete=False, labels=<factory>)¶