
CPU dense optical flow between Image frames using a selectable classical method (method = DIS, Farnebäck, or TV-L1), emitting one OpticalFlow (H, W, 2) tensor per frame at the source resolution, with no model service or GPU required.
Recorded video frames are turned into a dense motion field and rendered as a vector-field overlay for inspection.
A streamed video URL is reduced to dense flow that feeds per-zone motion statistics computed by an expression evaluator.
frame_diff + 1 frames have been seen (and on any frame whose size differs from the buffered ones) an all-zero (H, W, 2) tensor is emitted and the buffer reseeds. A restart clears the buffer.Image emits an empty (0, 0, 2) tensor without buffering the frame. Output is always at the source frame resolution.method selects the algorithm and which knobs apply: the dis_* params only affect DIS, and pyr_scale, levels, winsize, iterations, poly_n, poly_sigma only affect Farnebäck. TV-L1 takes no extra knobs. DIS is the default because it is both faster and more accurate than Farnebäck.model_width and model_height downscales both frames before flow, then resizes the field back to source and rescales the x and y components by source_width/model_width and source_height/model_height. Leaving them at 0 runs at native resolution.with_respect_to_second_frame (default true) gives forward flow; false swaps the frame pair and negates the result for backward flow. frame_diff widens the temporal gap between the two compared frames.Automated release