This is a 2D-native reading of the same spread-spectrum DCT watermark as the 3D bar-grid lab — instead of two extruded bar grids and a gauge, you get four native 2D plots: the received image itself, a magnitude heatmap of its DCT coefficients, a matched-filter scatter of extracted-vs-key values (the actual statistic the detector computes), and a live robustness curve sweeping JPEG quality end-to-end.
2D DCT-II: F(u,v) = C(u)C(v) Σx Σy f(x,y) cos[(2x+1)uπ/2N] cos[(2y+1)vπ/2N]
Embed: F'(u,v) = F(u,v) + α·|F(u,v)|·W(u,v) for the K largest |F(u,v)| (excl. DC)
Extract: Ŵ(u,v) = (F'att(u,v) − F(u,v)) / (α·|F(u,v)|)
Detect: ρ = (Ŵ·W) / (‖Ŵ‖‖W‖) declare "watermarked" if ρ > 0.35
- Scatter plot (bottom-left) — every one of the K=32 marked coefficients plotted as (key value, extracted value). A tight cloud hugging the y=x diagonal is exactly what "high correlation" looks like geometrically; attacks scatter the cloud into a formless blob before ρ ever has to be read off a gauge.
- Robustness curve (bottom-right) — holding your current noise and crop sliders fixed, the detector re-runs the full embed→attack→detect pipeline at every JPEG quality from 10 to 100 and plots ρ(Q) as a line, with a marker at your current quality. This reveals the whole attack-robustness trade-off at once, not just the single operating point.
- α (embedding strength) — how strongly the pseudo-random key W is added to the largest-magnitude AC coefficients, hidden in perceptually significant components exactly as Cox et al. proposed.
- JPEG quality / noise σ / border crop — the same three real-world corruption channels as the 3D lab: re-quantization, additive pixel noise, and edge cropping.
Real-world relevance: this correlation-detector math underlies content-authenticity systems (e.g. C2PA-style provenance and invisible-watermark tools like SynthID) that try to keep AI-generated media traceable — and the scatter cloud is literally what a matched-filter detector "sees" before collapsing it to one number.