V8 — Controlled Temporal Artifact Screening
Date: 2026-07-12 · Reference: ref.mp4 (1280×720, 30fps, 60 frames) · Metrics: PSNR, SSIM, L1, LPIPS-alex, CVVDP JOD, CVVDP per-frame heatmap, temporal residual, high-frequency temporal residual.
0 · Objective
Screen whether CVVDP / VDP temporal channels can detect, localize, and rank controlled temporal artifacts. This is the cheapest and most interpretable probe — it directly answers where VDP works as a perceptual loss / diagnostic and where it fails.
1 · Methodology
- Clean reference video: 1280×720, 30fps, 60 frames (CVVDP example flickering/
ref.mp4).
- For each artifact type, generate 1–3 amplitude variants by applying a deterministic per-frame function (seeded).
- For each (artifact, amplitude), compute:
- PSNR, SSIM, L1 — per-frame, then mean.
- LPIPS-alex — per-frame, then mean.
- Temporal residual: |e_t − e_{t−1}| mean and p95, where e_t = test_t − ref_t.
- High-frequency temporal residual: same but on Laplacian(e_t).
- CVVDP JOD (display_name=standard_4k, fps=30).
- CVVDP per-frame heatmap mean / p95 / max.
- Aggregate per-family table and a verdict per family.
2 · Full Summary (sorted by JOD ascending)
| Artifact | Amp |
JOD | PSNR | SSIM | L1 |
LPIPS | t-resid mean | t-resid p95 |
HF-t mean | HF-t p95 |
HM mean | HM p95 | HM max |
| edge_popping |
1.00 |
4.600 |
26.668 |
0.753 |
0.0760 |
0.2135 |
0.02051 |
0.04892 |
0.00013 |
0.00043 |
0.677 |
0.844 |
1.024 |
| edge_popping |
0.50 |
6.312 |
29.554 |
0.885 |
0.0412 |
0.0776 |
0.01036 |
0.02406 |
0.00006 |
0.00020 |
0.432 |
0.572 |
0.744 |
| color_flicker |
1.00 |
6.887 |
19.750 |
0.943 |
0.0738 |
0.1639 |
0.01563 |
0.04686 |
0.00004 |
0.00010 |
0.374 |
0.513 |
0.637 |
| gamma_contrast_jitter |
1.00 |
7.487 |
23.816 |
0.934 |
0.0733 |
0.0228 |
0.01513 |
0.02353 |
0.00004 |
0.00013 |
0.260 |
0.307 |
0.441 |
| global_brightness_flicker |
0.20 |
7.601 |
25.709 |
0.970 |
0.0536 |
0.0106 |
0.01109 |
0.02080 |
0.00003 |
0.00009 |
0.222 |
0.280 |
0.354 |
| blur_jitter |
1.00 |
7.756 |
26.168 |
0.694 |
0.0431 |
0.3394 |
0.00538 |
0.01954 |
0.00006 |
0.00021 |
0.151 |
0.274 |
0.564 |
| local_brightness_flicker |
1.00 |
7.981 |
32.012 |
0.983 |
0.0110 |
0.0084 |
0.00642 |
0.00465 |
0.00001 |
0.00002 |
0.149 |
0.461 |
0.777 |
| gamma_contrast_jitter |
0.70 |
7.991 |
26.818 |
0.961 |
0.0500 |
0.0121 |
0.01013 |
0.01549 |
0.00003 |
0.00009 |
0.197 |
0.228 |
0.330 |
| texture_shimmer |
1.00 |
8.019 |
17.312 |
0.421 |
0.1072 |
0.5692 |
0.14825 |
0.37468 |
0.00260 |
0.00655 |
0.190 |
0.296 |
0.557 |
| color_flicker |
0.50 |
8.094 |
25.492 |
0.976 |
0.0391 |
0.0864 |
0.00851 |
0.02433 |
0.00002 |
0.00007 |
0.213 |
0.321 |
0.405 |
| temporal_dropout_detail |
1.00 |
8.343 |
25.253 |
0.848 |
0.0372 |
0.1235 |
0.00000 |
0.00000 |
0.00000 |
0.00000 |
0.116 |
0.239 |
0.534 |
| local_brightness_flicker |
0.60 |
8.415 |
34.951 |
0.987 |
0.0094 |
0.0054 |
0.00381 |
0.00286 |
0.00001 |
0.00001 |
0.107 |
0.332 |
0.618 |
| global_brightness_flicker |
0.10 |
8.452 |
30.880 |
0.984 |
0.0273 |
0.0053 |
0.00540 |
0.01103 |
0.00002 |
0.00006 |
0.139 |
0.172 |
0.210 |
| temporal_dropout_detail |
0.70 |
8.571 |
29.653 |
0.908 |
0.0264 |
0.0766 |
0.01413 |
0.05078 |
0.00015 |
0.00051 |
0.139 |
0.216 |
0.432 |
| temporal_dropout_detail |
0.30 |
8.729 |
34.954 |
0.955 |
0.0157 |
0.0331 |
0.00988 |
0.03496 |
0.00010 |
0.00035 |
0.106 |
0.150 |
0.292 |
| blur_jitter |
0.50 |
8.754 |
30.532 |
0.852 |
0.0272 |
0.1596 |
0.00357 |
0.01276 |
0.00005 |
0.00017 |
0.086 |
0.162 |
0.436 |
| gamma_contrast_jitter |
0.30 |
8.797 |
33.203 |
0.983 |
0.0215 |
0.0044 |
0.00450 |
0.00831 |
0.00002 |
0.00006 |
0.105 |
0.122 |
0.161 |
| local_brightness_flicker |
0.30 |
8.940 |
38.062 |
0.989 |
0.0081 |
0.0036 |
0.00183 |
0.00126 |
0.00000 |
0.00000 |
0.064 |
0.187 |
0.398 |
| texture_shimmer |
0.50 |
8.946 |
23.492 |
0.667 |
0.0527 |
0.2384 |
0.07100 |
0.17853 |
0.00124 |
0.00313 |
0.083 |
0.152 |
0.335 |
| global_brightness_flicker |
0.05 |
9.022 |
35.213 |
0.986 |
0.0152 |
0.0042 |
0.00261 |
0.00658 |
0.00001 |
0.00005 |
0.084 |
0.105 |
0.132 |
| small_moving_dots |
1.00 |
9.204 |
37.040 |
0.989 |
0.0072 |
0.0084 |
0.00039 |
0.00000 |
0.00000 |
0.00000 |
0.024 |
0.051 |
0.778 |
| color_flicker |
0.20 |
9.213 |
32.421 |
0.984 |
0.0190 |
0.0279 |
0.00392 |
0.01117 |
0.00001 |
0.00005 |
0.091 |
0.136 |
0.166 |
| small_moving_dots |
0.70 |
9.285 |
37.701 |
0.989 |
0.0071 |
0.0069 |
0.00030 |
0.00000 |
0.00000 |
0.00000 |
0.021 |
0.040 |
0.744 |
| small_moving_dots |
0.30 |
9.478 |
39.320 |
0.990 |
0.0070 |
0.0047 |
0.00010 |
0.00000 |
0.00000 |
0.00000 |
0.013 |
0.023 |
0.670 |
| jpeg_qp_jitter |
1.00 |
9.490 |
31.821 |
0.904 |
0.0213 |
0.0528 |
0.00874 |
0.03051 |
0.00016 |
0.00055 |
0.048 |
0.064 |
0.258 |
| jpeg_qp_jitter |
0.50 |
9.515 |
34.693 |
0.948 |
0.0154 |
0.0248 |
0.00601 |
0.02167 |
0.00012 |
0.00043 |
0.041 |
0.051 |
0.153 |
| texture_shimmer |
0.20 |
9.636 |
31.697 |
0.900 |
0.0205 |
0.0421 |
0.02302 |
0.05929 |
0.00040 |
0.00105 |
0.030 |
0.054 |
0.145 |
| jpeg_qp_jitter |
0.20 |
9.807 |
39.180 |
0.987 |
0.0082 |
0.0048 |
0.00055 |
0.00312 |
0.00001 |
0.00006 |
0.017 |
0.025 |
0.077 |
| blur_jitter |
0.20 |
9.854 |
40.482 |
0.990 |
0.0070 |
0.0031 |
0.00000 |
0.00000 |
0.00000 |
0.00000 |
0.008 |
0.016 |
0.055 |
3 · Per-Family Detail
global_brightness_flicker
All pixels multiplied by sinusoidal brightness factor.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.05 |
9.022 |
35.213 |
0.0042 |
0.00005 |
0.105 |
| 0.10 |
8.452 |
30.880 |
0.0053 |
0.00006 |
0.172 |
| 0.20 |
7.601 |
25.709 |
0.0106 |
0.00009 |
0.280 |
global_brightness_flicker · amp=0.05
JOD=9.022 · PSNR=35.213 · HFt-p95=0.0000
global_brightness_flicker · amp=0.10
JOD=8.452 · PSNR=30.880 · HFt-p95=0.0001
global_brightness_flicker · amp=0.20
JOD=7.601 · PSNR=25.709 · HFt-p95=0.0001
CVVDP heatmap videos
heatmap · global_brightness_flicker · amp=0.05
heatmap · global_brightness_flicker · amp=0.10
heatmap · global_brightness_flicker · amp=0.20
local_brightness_flicker
A drifting patch multiplied by sinusoidal factor.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.30 |
8.940 |
38.062 |
0.0036 |
0.00000 |
0.187 |
| 0.60 |
8.415 |
34.951 |
0.0054 |
0.00001 |
0.332 |
| 1.00 |
7.981 |
32.012 |
0.0084 |
0.00002 |
0.461 |
local_brightness_flicker · amp=0.30
JOD=8.940 · PSNR=38.062 · HFt-p95=0.0000
local_brightness_flicker · amp=0.60
JOD=8.415 · PSNR=34.951 · HFt-p95=0.0000
local_brightness_flicker · amp=1.00
JOD=7.981 · PSNR=32.012 · HFt-p95=0.0000
CVVDP heatmap videos
heatmap · local_brightness_flicker · amp=0.30
heatmap · local_brightness_flicker · amp=0.60
heatmap · local_brightness_flicker · amp=1.00
color_flicker
Per-frame multiplicative R/B chromaticity flicker.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.20 |
9.213 |
32.421 |
0.0279 |
0.00005 |
0.136 |
| 0.50 |
8.094 |
25.492 |
0.0864 |
0.00007 |
0.321 |
| 1.00 |
6.887 |
19.750 |
0.1639 |
0.00010 |
0.513 |
color_flicker · amp=0.20
JOD=9.213 · PSNR=32.421 · HFt-p95=0.0000
color_flicker · amp=0.50
JOD=8.094 · PSNR=25.492 · HFt-p95=0.0001
color_flicker · amp=1.00
JOD=6.887 · PSNR=19.750 · HFt-p95=0.0001
CVVDP heatmap videos
heatmap · color_flicker · amp=0.20
heatmap · color_flicker · amp=0.50
heatmap · color_flicker · amp=1.00
texture_shimmer
Per-frame additive Gaussian texture noise.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.20 |
9.636 |
31.697 |
0.0421 |
0.00105 |
0.054 |
| 0.50 |
8.946 |
23.492 |
0.2384 |
0.00313 |
0.152 |
| 1.00 |
8.019 |
17.312 |
0.5692 |
0.00655 |
0.296 |
texture_shimmer · amp=0.20
JOD=9.636 · PSNR=31.697 · HFt-p95=0.0011
texture_shimmer · amp=0.50
JOD=8.946 · PSNR=23.492 · HFt-p95=0.0031
texture_shimmer · amp=1.00
JOD=8.019 · PSNR=17.312 · HFt-p95=0.0065
CVVDP heatmap videos
heatmap · texture_shimmer · amp=0.20
heatmap · texture_shimmer · amp=0.50
heatmap · texture_shimmer · amp=1.00
edge_popping
Edge mask flicker: edges go dark every other period.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.50 |
6.312 |
29.554 |
0.0776 |
0.00020 |
0.572 |
| 1.00 |
4.600 |
26.668 |
0.2135 |
0.00043 |
0.844 |
edge_popping · amp=0.50
JOD=6.312 · PSNR=29.554 · HFt-p95=0.0002
edge_popping · amp=1.00
JOD=4.600 · PSNR=26.668 · HFt-p95=0.0004
CVVDP heatmap videos
heatmap · edge_popping · amp=0.50
heatmap · edge_popping · amp=1.00
blur_jitter
Per-frame Gaussian blur radius oscillates.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.20 |
9.854 |
40.482 |
0.0031 |
0.00000 |
0.016 |
| 0.50 |
8.754 |
30.532 |
0.1596 |
0.00017 |
0.162 |
| 1.00 |
7.756 |
26.168 |
0.3394 |
0.00021 |
0.274 |
blur_jitter · amp=0.20
JOD=9.854 · PSNR=40.482 · HFt-p95=0.0000
blur_jitter · amp=0.50
JOD=8.754 · PSNR=30.532 · HFt-p95=0.0002
blur_jitter · amp=1.00
JOD=7.756 · PSNR=26.168 · HFt-p95=0.0002
CVVDP heatmap videos
heatmap · blur_jitter · amp=0.20
heatmap · blur_jitter · amp=0.50
heatmap · blur_jitter · amp=1.00
jpeg_qp_jitter
Per-frame JPEG quality factor oscillates.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.20 |
9.807 |
39.180 |
0.0048 |
0.00006 |
0.025 |
| 0.50 |
9.515 |
34.693 |
0.0248 |
0.00043 |
0.051 |
| 1.00 |
9.490 |
31.821 |
0.0528 |
0.00055 |
0.064 |
jpeg_qp_jitter · amp=0.20
JOD=9.807 · PSNR=39.180 · HFt-p95=0.0001
jpeg_qp_jitter · amp=0.50
JOD=9.515 · PSNR=34.693 · HFt-p95=0.0004
jpeg_qp_jitter · amp=1.00
JOD=9.490 · PSNR=31.821 · HFt-p95=0.0006
CVVDP heatmap videos
heatmap · jpeg_qp_jitter · amp=0.20
heatmap · jpeg_qp_jitter · amp=0.50
heatmap · jpeg_qp_jitter · amp=1.00
gamma_contrast_jitter
Per-frame gamma exponent oscillates.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.30 |
8.797 |
33.203 |
0.0044 |
0.00006 |
0.122 |
| 0.70 |
7.991 |
26.818 |
0.0121 |
0.00009 |
0.228 |
| 1.00 |
7.487 |
23.816 |
0.0228 |
0.00013 |
0.307 |
gamma_contrast_jitter · amp=0.30
JOD=8.797 · PSNR=33.203 · HFt-p95=0.0001
gamma_contrast_jitter · amp=0.70
JOD=7.991 · PSNR=26.818 · HFt-p95=0.0001
gamma_contrast_jitter · amp=1.00
JOD=7.487 · PSNR=23.816 · HFt-p95=0.0001
CVVDP heatmap videos
heatmap · gamma_contrast_jitter · amp=0.30
heatmap · gamma_contrast_jitter · amp=0.70
heatmap · gamma_contrast_jitter · amp=1.00
small_moving_dots
Per-frame random black/white dots appear and move.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.30 |
9.478 |
39.320 |
0.0047 |
0.00000 |
0.023 |
| 0.70 |
9.285 |
37.701 |
0.0069 |
0.00000 |
0.040 |
| 1.00 |
9.204 |
37.040 |
0.0084 |
0.00000 |
0.051 |
small_moving_dots · amp=0.30
JOD=9.478 · PSNR=39.320 · HFt-p95=0.0000
small_moving_dots · amp=0.70
JOD=9.285 · PSNR=37.701 · HFt-p95=0.0000
small_moving_dots · amp=1.00
JOD=9.204 · PSNR=37.040 · HFt-p95=0.0000
CVVDP heatmap videos
heatmap · small_moving_dots · amp=0.30
heatmap · small_moving_dots · amp=0.70
heatmap · small_moving_dots · amp=1.00
temporal_dropout_detail
Occasional detail-loss event: frame blends with blurred copy.
| Amp | JOD | PSNR | LPIPS | HF-t p95 | HM p95 |
| 0.30 |
8.729 |
34.954 |
0.0331 |
0.00035 |
0.150 |
| 0.70 |
8.571 |
29.653 |
0.0766 |
0.00051 |
0.216 |
| 1.00 |
8.343 |
25.253 |
0.1235 |
0.00000 |
0.239 |
temporal_dropout_detail · amp=0.30
JOD=8.729 · PSNR=34.954 · HFt-p95=0.0003
temporal_dropout_detail · amp=0.70
JOD=8.571 · PSNR=29.653 · HFt-p95=0.0005
temporal_dropout_detail · amp=1.00
JOD=8.343 · PSNR=25.253 · HFt-p95=0.0000
CVVDP heatmap videos
heatmap · temporal_dropout_detail · amp=0.30
heatmap · temporal_dropout_detail · amp=0.70
heatmap · temporal_dropout_detail · amp=1.00
4 · Reference
5 · Per-Family Verdict
Verdict is heuristic, derived from the metrics table:
- CONTINUE: CVVDP JOD drops with amplitude AND CVVDP heatmap p95 grows with amplitude AND JOD is sensitive at small amplitudes.
- MODIFY: CVVDP detects artifact but only at large amplitudes, or only one channel is sensitive.
- STOP: CVVDP does not respond to this artifact, or only tracks PSNR / L1, or only improves its own JOD.
| Artifact | JOD drop (max amp) | HM p95 growth | HF-t growth | Verdict | Note |
| global_brightness_flicker | 1.42 | +168% | +93% | CONTINUE | CVVDP JOD + heatmap + HF-t residual all grow with amplitude. |
| local_brightness_flicker | 0.96 | +146% | +228% | MODIFY | CVVDP responds but only weakly / only one signal. |
| color_flicker | 2.33 | +276% | +110% | CONTINUE | CVVDP JOD + heatmap + HF-t residual all grow with amplitude. |
| texture_shimmer | 1.62 | +444% | +522% | CONTINUE | CVVDP JOD + heatmap + HF-t residual all grow with amplitude. |
| edge_popping | 1.71 | +48% | +117% | CONTINUE | CVVDP JOD + heatmap + HF-t residual all grow with amplitude. |
| blur_jitter | 2.10 | +1587% | +21165% | CONTINUE | CVVDP JOD + heatmap + HF-t residual all grow with amplitude. |
| jpeg_qp_jitter | 0.32 | +156% | +805% | STOP | CVVDP does not clearly localize this artifact. |
| gamma_contrast_jitter | 1.31 | +152% | +123% | CONTINUE | CVVDP JOD + heatmap + HF-t residual all grow with amplitude. |
| small_moving_dots | 0.27 | +118% | +0% | STOP | CVVDP does not clearly localize this artifact. |
| temporal_dropout_detail | 0.39 | +60% | -100% | STOP | CVVDP does not clearly localize this artifact. |
6 · Verdict Markdown
# V8 Verdict — Controlled Temporal Artifact Screening
Date: 2026-07-12
Per-family CVVDP verdict:
- **global_brightness_flicker**: CONTINUE — CVVDP JOD + heatmap + HF-t residual all grow with amplitude.
- **local_brightness_flicker**: MODIFY — CVVDP responds but only weakly / only one signal.
- **color_flicker**: CONTINUE — CVVDP JOD + heatmap + HF-t residual all grow with amplitude.
- **texture_shimmer**: CONTINUE — CVVDP JOD + heatmap + HF-t residual all grow with amplitude.
- **edge_popping**: CONTINUE — CVVDP JOD + heatmap + HF-t residual all grow with amplitude.
- **blur_jitter**: CONTINUE — CVVDP JOD + heatmap + HF-t residual all grow with amplitude.
- **jpeg_qp_jitter**: STOP — CVVDP does not clearly localize this artifact.
- **gamma_contrast_jitter**: CONTINUE — CVVDP JOD + heatmap + HF-t residual all grow with amplitude.
- **small_moving_dots**: STOP — CVVDP does not clearly localize this artifact.
- **temporal_dropout_detail**: STOP — CVVDP does not clearly localize this artifact.
Machine-readable artifacts:
- summary.json
- metrics.csv
- manifest.json