Active Vision
A fixed camera accepts whatever the scene offers. Active vision moves the camera — zooming, refocusing, circling — to collect the views that answer the question cheapest.
Why Does This Exist?
Fixed viewpoints leave questions permanently open: the mug handle hides behind the body, the license plate stays sub-pixel, the defect sits in shadow. No classifier, however large, recovers pixels the camera never captured. Passive perception treats missing information as fate.
Active vision treats it as a shopping list. Pan, tilt, zoom, focus, and base motion become perception actions chosen to maximize expected uncertainty reduction per unit cost. Foveated sensors (sharp center, coarse periphery, like eyes) make the choice continuous: where to look next is the perception algorithm. The loop it serves is embodied vision; its route-planning cousin is visual navigation (donor table: link when that wave lands).
The one idea you need first. Next-best-view (NBV) scores each candidate camera move by expected information gain minus motion cost: . Entropy in bits measures the current confusion; a move that collapses odds to earns about half a bit. The policy takes the argmax and re-plans after every observation.
Think of It Like This
Reading a tiny label
Nobody reads a medicine label from across the room by squinting harder. You walk over, tilt it to the light, and lean in — three perception actions chosen to kill specific uncertainties (distance, glare, angle). If the first tilt glares, you tilt the other way; the plan updates per observation.
Active vision is that walk formalized. Zoom is leaning in; exposure bracketing is tilting to the light; circling is checking the back for the ingredient list. Squinting harder is the passive baseline: more parameters staring at the same inadequate pixels.
How It Actually Works
The system maintains a belief (object identity odds, occupancy grid, or pose distribution) and a sensor model predicting what each candidate view would show. For each candidate it computes expected posterior entropy by simulating observations, subtracts motion and time cost, and executes the winner. Foveated designs add a continuous gaze policy: saccade to the highest-gain region, process the fovea finely and the periphery coarsely, repeat until confidence crosses threshold.
Greedy one-step gain works when views are independent; cluttered scenes need short-horizon lookahead, because the best immediate view can strand the camera behind obstacles.
Worked example
Object identity is (entropy bit). Two candidate moves:
- Zoom (cost ): expected odds . Entropy bits. Gain bits; rate bits per cost.
- Pan (cost ): expected odds . Entropy bits. Gain bits; rate per cost.
Zoom wins per cost ( versus ) despite costing double — information per freight, not per trip. Raise zoom's cost to and pan wins instead.
Code
The point of this snippet is the NBV rule: entropy arithmetic picks the view, and cost changes the winner.
import math
def entropy(p: float) -> float: return -(p * math.log2(p) + (1.0 - p) * math.log2(1.0 - p))
def rate(before: float, after_p: float, cost: float) -> float: return (entropy(before) - entropy(after_p)) / cost
print(round(rate(0.5, 0.9, 2.0), 3)) # -> 0.266print(round(rate(0.5, 0.7, 1.0), 3)) # -> 0.119Watch Out For
Greedy views that strand the camera
One-step gain maximization drives cameras into corners: the close-up behind the door, the zoom with no retreat path. Each move looked optimal alone; the sequence wastes the budget backtracking.
Add short-horizon lookahead (two to three moves) or a coverage bonus for keeping options open. Perception actions consume the same battery as task actions, so plan them jointly, not greedily.
Open-loop plans versus shaky actuators
NBV plans assume the camera lands where commanded. Real pan-tilt heads overshoot, drones drift, and every observation arrives slightly off-pose — silently invalidating the simulated gains the choice rested on.
Close the loop: re-localize after each move and re-plan from the true pose. Budget calibration error into the sensor model rather than assuming commanded equals achieved.
The Quick Version
- Active vision chooses camera moves by expected uncertainty reduction per unit cost.
- The worked fixture prices zoom at bits per cost against for pan, so zoom wins.
- Foveated designs make gaze a continuous policy: sharp center, coarse periphery, saccade to gain.
- Greedy one-step choices strand cameras; add lookahead and keep retreat paths open.
- Actuators miss commanded poses, so re-localize and re-plan after every move.