fig-align-before-average · averaging an unregistered hand-held burst (a blurry double) vs averaging the same burst after alignment (sharp, clean, $1/\sqrt N$ benefit visible) ✅fig-ssd-search-surface · the SSD score over candidate $(dx,dy)$ shifts drawn as a single-welled basin whose minimum marks the true alignment 🟨fig-phase-correlation-spike · two shifted frames producing, via the inverse FFT of the normalized cross-power spectrum, a single sharp delta whose position is the inter-frame shift 🟨fig-coarse-to-fine-pyramid · alignment estimated cheaply at the coarsest pyramid level then propagated and refined down to full resolution, capturing large motions while avoiding local minima 🟨fig-channel-align-sergey · translational alignment in the wild: Prokudin-Gorsky's three color-separation plates stacked naively (color fringes) vs registered by SSD/NCC shift search (clean) ✅fig-structure-tensor-ellipse · the structure tensor as an eigen-ellipse classifying flat (both eigenvalues small) / edge (one large) / corner (both large) — the basis of Harris & Shi-Tomasi ✅fig-harris-corners · Harris corner detection on a real photo — the structure-tensor response R=det M − k·tr²M, thresholded + non-max-suppressed, corners overlaid (heatmap + detections) ✅fig-scale-space-dog · SIFT keypoint detection — a Gaussian scale space, its Difference-of-Gaussians, and extrema across space AND scale marked with their characteristic scale ✅
fig-dolly-zoom-sim · live dolly-zoom simulator (web edition): hold the subject size while focal length and camera distance trade off so only perspective / background scale changes; log focal (12–200 mm) + distance sliders, realistic Poly Haven environments, subject = head bust or one of six diverse Meshy humans. *Human 3D models generated with Meshy AI.* ✅fig-sift-descriptor · the $16\times16$ window → $4\times4$ grid of 8-bin orientation histograms → 128-D normalized vector that is the SIFT descriptor 🟨fig-descriptor-zoo · a compact zoo of descriptor families — SIFT gradient-orientation histograms, a binary (BRIEF/ORB) bit-string, HOG-like dense gradients, and a learned CNN vector ✅fig-descriptor-matching · matching descriptors between two views — keypoints in each, lines joining nearest-descriptor matches, mostly right with a couple of repeated-texture errors (motivates the ratio test) ✅fig-ratio-test · Lowe's ratio test — for one query keypoint, nearest (d1) vs second-nearest (d2) descriptor distances: a distinctive match has d1≪d2 (keep), an ambiguous one d1≈d2 (reject); plus the histogram of d1/d2 for true vs false matches, separated around ρ=0.8 ✅fig-track-vs-flow · two regimes of correspondence — dense flow (one pair, a vector at every pixel; dense but short) vs tracking (a few points threaded as trajectories across many frames; sparse but long) 🟨fig-klt-is-harris · one matrix, two readings — the same structure-tensor ellipse read as Harris ("good corner to detect?") and as KLT ("motion well-conditioned?"); detection and trackability are the same statement about $M$ 🟨fig-good-features-to-track · Shi–Tomasi points land only on corners — markers clustering on corners/junctions, never flat sky or single edges, with windows annotated by their eigenvalue pair; "good feature" = "well-conditioned $M$" = "corner" 🟨fig-klt-pyramid-iteration · Lucas-Kanade / KLT on a pyramid — a large real motion is a small pixel motion at the coarse level, estimated cheaply then warped and refined down with shrinking residuals ✅fig-track-drift-occlusion · three ways a long track fails — drift (window slides off as sub-pixel errors accumulate), occlusion (dissimilarity spikes → drop the feature), re-detection (a fresh Shi–Tomasi point spawned to replace a lost one) 🟨fig-modern-point-trackers · long-range point tracking (TAP/PIPs/CoTracker) — a query point followed across frames as one trajectory, persisting through occlusion (dashed), where classical KLT loses it ✅fig-ratio-test · Lowe's ratio test — for one query keypoint, nearest (d1) vs second-nearest (d2) descriptor distances: a distinctive match has d1≪d2 (keep), an ambiguous one d1≈d2 (reject); plus the histogram of d1/d2 for true vs false matches, separated around ρ=0.8 ✅fig-ransac-line-fit · the canonical why-RANSAC picture — points with gross outliers: least squares is dragged off, RANSAC's best minimal-sample line passes through the inlier majority (inlier band shaded) ✅fig-ransac-homography · two views with raw nearest-neighbor matches (many crossing = wrong) vs the RANSAC inlier set consistent with a single homography (clean, near-parallel) ✅fig-learned-feature-pipeline · SuperPoint-style joint detect-and-describe — a shared CNN encoder splitting into a detector head (keypoint heatmap) and a descriptor head (dense field), with a homographic-adaptation self-supervision inset ✅fig-superglue-attention · SuperGlue — two keypoint sets as graph nodes, self- and cross-attention edges, and a soft optimal-transport assignment matrix with a dustbin row/column for unmatched points ✅fig-dust3r-pointmap · DUSt3R/MASt3R — an image pair regressed into two dense pointmaps in one common frame, so correspondence, relative pose, and depth read off the aligned points (no keypoint stage) ✅fig-ann-tradeoff · approximate nearest neighbor — exact kd-tree backtracking vs an approximate bucket lookup, beside a recall-vs-query-time frontier (exact, FLANN, LSH, PQ/FAISS) ✅
fig-dolly-zoom-sim · live dolly-zoom simulator (web edition): hold the subject size while focal length and camera distance trade off so only perspective / background scale changes; log focal (12–200 mm) + distance sliders, realistic Poly Haven environments, subject = head bust or one of six diverse Meshy humans. *Human 3D models generated with Meshy AI.* ✅fig-patchmatch-propagation · PatchMatch's three steps on a nearest-neighbor field shown as a color image — random init (confetti) → propagation (coherent regions snap in) → random search (clean) ✅fig-flow-field-colorkey · from two frames to a dense field — a per-pixel flow shown with the standard color key (hue = direction, saturation = speed, after Baker et al. 2011); coherent regions read as one color, static background near-white ✅fig-brightness-constancy · the assumption $I(x,y,t)=I(x+u,y+v,t{+}1)$ and where it breaks — three insets failing it (a surface re-lit, a sliding specular highlight, an occlusion with no counterpart) ⬜fig-flow-constraint-line · one equation, a line of answers — $I_x u + I_y v + I_t = 0$ as a line in the $(u,v)$ plane; the gradient fixes only the normal component (normal flow), the along-edge tangent undetermined 🟨fig-aperture-problem · why one pixel is not enough — a straight edge through an aperture (three true motions, identical appearance, only normal recoverable) and the barber-pole illusion (diagonal stripes appearing to move straight up) 🟨fig-zoom-mechanism · a zoom at two focal lengths (short-f/wide vs long-f/tele): moving variator + compensator groups slide along the axis to change f while the focal plane (sensor) stays fixed; motion arrows between states ✅fig-flow-corner-edge-flat · the structure tensor $A^\top A$ deciding where flow is solvable — corner (two large eigenvalues, full 2-D flow), edge (rank-deficient, only normal flow), flat (indeterminate); the same picture that selected Harris corners 🟨fig-klt-pyramid-iteration · per-feature coarse-to-fine LK — for one patch, solve the $2\times2$ system at a blurred level, warp, recompute $I_t$, re-solve for a residual, propagate down; LK localized to a single window run down the pyramid ⬜fig-bbw-weights · one handle's blend-weight field on a 2-D limbed shape: naive inverse-distance weight LEAKS across the gap to far parts, vs. bounded biharmonic weight that is smooth, local, non-negative and stays in its own part (magma heat-maps) ✅fig-coarse-to-fine-flow · making large motion sub-pixel — a Gaussian pyramid where coarse displacement is fractional; at each level upsample-and-scale, warp, estimate the small residual and add; a Laplacian view of the flow 🟨fig-raft-skeleton · RAFT, the classical pipeline neuralized — learned feature + context encoders, an all-pairs 4-D correlation volume, and a recurrent GRU update operator iterating; the boxes line up with data term, cost volume, and warp-then-refine 🟨fig-flow-unrolling · the unrolling pattern — a classical iterative solver's loop (data term → update → repeat) beside its unrolled stack of identical learned modules (tied weights) trained end-to-end ✅fig-learned-vs-handdesigned · same inverse-problem skeleton, prior swapped: classical (data-fit + hand prior $\Phi$) vs learned ($f_\theta$ fit to data) (ML) ✅fig-cost-volume · the correlation/cost volume (learned analog of the SSD search surface) — a pixel's similarity to candidate matches in the other frame, a heatmap whose argmax is the match (local PWC-Net vs all-pairs RAFT) ✅fig-raft-skeleton · RAFT, the classical pipeline neuralized — learned feature + context encoders, an all-pairs 4-D correlation volume, and a recurrent GRU update operator iterating; the boxes line up with data term, cost volume, and warp-then-refine 🟨