[](https://www.python.org/)
| Sr | Photograph | Faded + damaged | Telea | Navier–Stokes | **Iterative masked mean** | Harmonic diffusion |
|---|---|---|---|---|---|---|
| 1 | girl in a red hat · strong red cast | 16.3 dB | 20.7 dB | 20.7 dB | **20.8 dB** | 20.3 dB |
| 2 | young woman · dark background | 14.6 dB | 19.3 dB | **19.5 dB** | 19.4 dB | 19.1 dB |
| 3 | man outdoors · bright sky behind | 12.2 dB | 17.5 dB | 17.9 dB | 18.1 dB | **18.6 dB** |
| 4 | two men indoors · flat corridor light | 15.5 dB | 20.2 dB | 20.4 dB | 20.0 dB | **21.1 dB** |
`mermaid flowchart LR A[Clean photo
known exactly] --> B[Fade it
dye loss, yellowing, flat tone] B --> C[Scratch it
exact damage mask retained] C --> D[3 damage detectors
find the mask for themselves] C -.the TRUE mask.-> F D --> E[4 inpainting methods] E --> F[Score: PSNR on the
DAMAGED PIXELS ONLY] C --> G[6 fade corrections] G --> H[Score: cast error vs the
original, and LAB chroma] F --> I{Where did the
decibels actually go?} H --> I
style C fill:#fef3c7,stroke:#d97706 style F fill:#fee2e2,stroke:#dc2626 `
Because the damage is generated, three things are known that a real archive scan cannot give you:
That second row is the project. Every restoration demo shows a before and an after; almost none shows what the same pipeline would have produced if it had been handed a perfect mask, which is the only way to tell whether the method or the detector is the limiting factor.
---








Code and full results on GitHub (code private)
Every number is read from the file the run produced. github.com/hammasbuilds · kaggle.com/muhammadhammas13