Point Tracker

Point Tracker operator properties for Script Engine. Tracks a coloured point across frames and reports its position, while also measuring brightness in a separate sensor area. Useful for stabilising a camera feed against small drift, automatically nudging a layer to compensate for camera shake, monitoring a calibration marker on a stage to detect that the camera has been bumped, watching exposure on a known reference area to detect lighting changes, and storing a reference position/luminance for later comparison. Pick a colour and starting position, then use the auto-correct features to keep the layer locked on the marker.

Property Type Access Description
PickKeyColorCommand Command get Open the colour-picker overlay so the marker can be sampled directly from the live image. Click on the marker in the preview to set both its colour and its starting position in one step.
BeaconColor AdvancedColorPicker get/set Colour of the marker the tracker is locked onto. Pick a saturated, distinctive colour for best results. Use the pick command rather than entering values by hand.
Red int get/set Red channel of the picked colour. [min=0, max=255]. Internal storage for the legacy colour picker. Use BeaconColor instead.
Green int get/set Green channel of the picked colour. [min=0, max=255]. Internal storage for the legacy colour picker. Use BeaconColor instead.
Blue int get/set Blue channel of the picked colour. [min=0, max=255]. Internal storage for the legacy colour picker. Use BeaconColor instead.
Alpha int get/set Alpha channel of the picked colour. [min=0, max=255]. Internal storage for the legacy colour picker. Use BeaconColor instead.
ScanAreaCenterX int get/set Centre X of the search area, in pixels. Where the tracker starts looking. Set automatically when the marker is picked from the preview.
ScanAreaCenterY int get/set Centre Y of the search area, in pixels. Where the tracker starts looking. Set automatically when the marker is picked from the preview.
ScanAreaSize BeaconScanAreaSize get/set Size of the box the tracker searches inside. [default=100x100 pixels]. Smaller boxes are faster and ignore distractions further away, but the marker must stay within the box. Larger boxes cope with faster movement at the cost of catching unrelated colour.
Tolerance int get/set How forgiving the colour match is. [min=0, max=300, default=300]. Higher values accept more variation in hue/saturation. Lower values demand a closer match. If the tracker grabs onto the wrong objects, lower this; if it loses the marker under changing lighting, raise it.
MinimumPixelCount int get/set Minimum number of matching pixels needed before the tracker considers the marker found. [min=1, max=10000, default=24]. Raise to ignore tiny patches of stray colour. Lower to detect very small markers in distant shots.
MinX int get Left edge of the bounding box around the matched pixels (read-only).
MinY int get Top edge of the bounding box around the matched pixels (read-only).
MaxX int get Right edge of the bounding box around the matched pixels (read-only).
MaxY int get Bottom edge of the bounding box around the matched pixels (read-only).
TrackerOutput TrackerOutput get/set What the operator draws on the output image. [default=Input]. Input passes the image through unchanged. Detected pixels highlights matched pixels. Tracker area outlines the search box. Center point shows a crosshair on the detected centre. Use Detected pixels or Tracker area while tuning, then switch to Input for production.
MatchingPixels int get How many pixels in this frame matched the marker colour (read-only). Compare against MinimumPixelCount to understand whether Found will be true.
Found bool get True when enough matching pixels were found this frame (read-only). The recommended trigger flag for scripts. Watch this to detect that the marker is currently visible.
PointCenterX float get Centre X of the detected marker, in pixels (read-only).
PointCenterY float get Centre Y of the detected marker, in pixels (read-only).
StorePositionCommand Command get Store the current detected centre as a reference position. Run this once after framing the shot. The tracker then reports drift relative to that stored position and can auto-correct it via Move Layer Automatically.
StoredBeaconPosX float get/set The reference X position saved by Store Position. Used as the baseline that Position Change values are measured against.
StoredBeaconPosY float get/set The reference Y position saved by Store Position. Used as the baseline that Position Change values are measured against.
StoragePropertyName string get/set Name used to share the position with other operators via shared application settings. Defaults to the operator name. Change to coordinate multiple trackers or to expose the value to scripts under a known key.
StoredDateTime DateTime get/set When the reference position was last saved. Useful for warning operators that calibration is stale.
PositionChangeX float get Horizontal drift from the stored reference position, in pixels (read-only). Positive means the marker has moved right, negative means left.
PositionChangeY float get Vertical drift from the stored reference position, in pixels (read-only). Positive means the marker has moved down, negative means up.
PositionChangeXAvg float get Horizontal drift averaged across the last 10 frames (read-only). Smoother than the instantaneous value — recommended for layer correction.
PositionChangeYAvg float get Vertical drift averaged across the last 10 frames (read-only). Smoother than the instantaneous value — recommended for layer correction.
MoveLayerAutomation MoveLayerAutomation get/set How the layer is moved to compensate for marker drift. [default=None]. None means the operator only reports values. Yes, use instant values reacts immediately and may look jittery. Yes, use average values (10 frames) is smoother and recommended for live use.
MoveLayerFallback MoveLayerFallback get/set What to do when the marker can't be detected. [default=Restore to default]. Restore to default snaps the layer back to its untracked position. Keep last correction holds the most recent correction in place — better when brief drop-outs are expected.
ShowLuminanceSensorArea bool get/set Outline the luminance sensor rectangle on the output image. [default=false]. Useful while positioning the sensor area. Turn off in production unless this visualisation is wanted.
LumaAreaLeft int get/set Left edge of the luminance sensor rectangle, in pixels. [min=0, max=3840, default=auto]. Place the sensor on a stable, evenly-lit reference area such as a calibration card.
LumaAreaTop int get/set Top edge of the luminance sensor rectangle, in pixels. [min=0, max=3840, default=auto].
LumaAreaWidth int get/set Width of the luminance sensor rectangle, in pixels. [min=0, max=640, default=256].
LumaAreaHeight int get/set Height of the luminance sensor rectangle, in pixels. [min=0, max=640, default=192].
Luminance float get Current measured luminance of the sensor area, 0..1 (read-only).
LuminanceString string get Current luminance shown as a percentage string (read-only).
StoreLuminanceCommand Command get Save the current luminance reading as the reference brightness. Run this once after the lighting is set. The tracker then reports drift relative to this value and can compensate it via Luminance autocorrect.
StoredLuminance float get/set The reference luminance saved by Store Luminance, 0..1.
StoredLuminanceString string get/set Stored reference luminance, formatted as a percentage string.
LuminanceChange float get Ratio of current luminance to stored luminance (read-only). 1 means lighting is unchanged; values below 1 mean darker, above 1 mean brighter.
LuminanceChangeString string get Current luminance change formatted as a percentage string (read-only).
LuminanceAutoCorrect bool get/set Automatically scale the layer's brightness to match the stored reference. [default=false]. Useful when ambient light shifts during a long shoot and you want the layer to keep its original look.
ErrorOnMarkerLost bool get/set Log an error if the marker is lost while a reference position is stored. [default=false]. Useful in unattended setups so an alert is raised when the camera or marker is bumped out of view.
ErrOnPositionChanged bool get/set Log a warning when the marker drifts past the position threshold. [default=true]. Combine with PositionErrorThresHoldPixels to define how much movement counts as drift.
ErrOnLuminanceChanged bool get/set Log a warning when measured luminance differs from the stored reference. [default=true]. Combine with LuminanceErrorThresHoldPercentage to define how much change counts as a problem.
PositionErrorThresHoldPixels int get/set How many pixels of drift are allowed before a position warning is logged. [min=2, max=20, default=8]. Lower values are stricter and good for tightly-framed shots. Higher values tolerate camera shake.
LuminanceErrorThresHoldPercentage int get/set How many percent the luminance may differ before a brightness warning is logged. [min=2, max=20, default=6]. Lower values are stricter; higher values tolerate normal lighting variation.
ResetCmd Command get Reset all settings to their defaults (tolerance, scan area size, sensor area, error thresholds, stored references).

Inherits from: AbstractOperator, AbstractAudioMetering.

See also: Point Tracker in Operators — user-facing introduction, screenshots, and section summaries.