**Note** from Bead: Image Pose Uxui · [canonical source](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/2026-07-03/notes/04-geometric-plenoptic-function.md) · session 2026-07-03 · discussion: Talk: Image Pose Uxui
Provenance: Stephen extended the shared Claude chat and pointed this bead at its ending — captured verbatim to [artifacts/claude-share-abbd40a4-plenoptic.md](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/2026-07-03/artifacts/claude-share-abbd40a4-plenoptic.md) (via the [capture-shared-chat skill](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/../../../skills/); 8 turns: temporal-coherence stereo → splats; modal/object-level matching; top-down splat-seeks-image handshake; and the ending this note unpacks).
## The idea (from the chat's final turn) Define **G(x, θ)** — the signal the *geometry itself* (DEM, Google 3D tiles) projects to viewpoint x looking along θ, independent of illumination. G has a **local spatial spectrum W(x, θ, ω) at every point of the light field**, and its evolution under observer motion has known structure: 1. **The smooth part — depth is a shear.** In light-field coordinates (camera position s, image coordinate u), a patch at depth d puts its energy on a Fourier-domain line of slope ∝ 1/d. A terrain's depth *range* fills a **wedge ("bowtie")** between 1/d_min and 1/d_max (Chai et al., plenoptic sampling). Moving the camera shears the spectrum continuously — near content races through frequency space, far ridges crawl. The wedge width IS the Nyquist rate over pose space: flat plains need few stored views, canyons many. 2. **The discontinuous part — ridgelines are fold catastrophes.** A visibility event (ridge crossing, occlusion) injects broadband energy (a silhouette step) and discretely adds/removes an entire spectral wedge (the hidden valley appears with all its parallax slopes). So pose space decomposes into an **aspect graph of view-cells**: within a cell W varies smoothly (interpolable by a parameterized shear); across a boundary it jumps. Ridgelines are the *skeleton* of the representation, not noise. 3. **Storage.** Per 3D tile, per view-cell: a compact spectral signature (wedge params — depth range, dominant orientations, characteristic wavelengths) + the event surfaces on cell boundaries. A spectral pyramid indexed by **pose**, not just z/x/y — which drops onto the livetil.es tile architecture (bead `3d011d4e`): the place publishes its own expected spectrum. 4. **Why it matters here.** This is the *predicted* side of the coherence handshake, valid across continuous motion: residual spectral **shear** → range correction; residual **rotation of the spectral fabric** → heading; and the **timing of a predicted ridge-crossing** → a knife-edge position fix (visibility events are step functions in pose space — sharper than any smooth texture correlation).
## Relation to what this bead already established - Note 02 §2's "the correlation surface IS the light field over the pan/tilt slice" is the **rotational slice** of G. The plenoptic frame extends it to **camera translation**, where note 03 measured the breakdown (PSR 5–6 across the three real vantages): translation doesn't shift the spectrum, it **shears** it — which is *why* a single global correlation fails and *what* to measure instead. - Sketch 4's patch-flow "parallax split" is the first-order version of the wedge: patch vectors that disagree by depth are the EPI slopes sampled coarsely. - The rotate-vs-translate distinction becomes exact in the EPI spectrum: **rotation is depth-blind** (all content shears identically — the spectrum stays a line); **translation fans the line into the wedge**.
## Sketch set 2 (rendered, live-computing): [geometric-plenoptic-sketches.html](https://redfish.acequia.io/guerin/.agents/74c30681-2b0c-48b2-b2a8-9e21190a4926/2026-07-03/artifacts/sketches/geometric-plenoptic-sketches.html) 5. **the bowtie** — sweep a camera through the layered scene, accrete an epipolar-plane image (EPI) from a chosen scanline, show its live 2D FFT forming the wedge; slope guides at the painter's true parallax factors; rotate-mode collapses the wedge to a line. *Question (`viewcell-signature`): what is the stored per-view-cell signature — keyframe spectra, wedge parameters, or an EPI-slope ("depth spectrum") histogram?* Transition: the sweep itself (EPI accretes row by row, wedge condenses). 6. **the aspect cells** — the same sweep instrumented: adjacent-pose spectral coherence (PSR) as a 1D trace; occlusion events appear as dips; threshold segments the path into view-cells. *Question (`event-anchors`): are visibility events storage boundaries, localization fixes, or first-class addresses in the tile pyramid?* Transition: perturb the threshold, watch cells merge/split; scrub the path. 7. **the convergence harness on the real shots** — the offered next step, as a sketch with its own decision: loads `saved-views/shot-N.jpg` + ground-truth poses, perturbs a crop-pose (Δpan, Δtilt, Δzoom), recovers by phase-correlation jump+glide, and paints a **measured basin map** over (Δpan × Δzoom) on real pixels — the translation axis should be a wide corridor, the zoom axis a narrow one (the Fourier–Mellin gap made visible). *Question (`harness-scope`): v1 measures pan/tilt only, adds log-polar scale, or goes full 6-DOF against live engine renders (CDP loop)?* Transition: perturb → jump → glide → locked, plus the basin map filling in. All three carry in-sketch ballots that PUT `sketch-answer` requests into this bead's `request/` dock, per the [sketch-ux method](https://redfish.acequia.io/skills/sketch-ux/SKILL.md).
## Open threads the chat adds beyond these sketches (parked, not lost) - **Temporal coherence** (two cameras, FFT along time, coherence → splat opacity) — a different instrument from this bead's spatial correlation; belongs with the geo.camera / object-tracker line. - **Modal segmentation** (Abe Davis vibrometry; objects = shared temporal spectra) — ditto. - **Top-down splat-seeks-image** — the transactional handshake is this bead's photo↔render loop generalized to per-object expectations; the pose-residual-through-projection-Jacobian is exactly solver.js's LM step.