Why Upscaling Old Footage Is a Temporal Problem, Not a Resolution One

calendar_today ago • schedule3 min read
— Originally published at upgolab.com

Everyone treats video upscaling as a resolution problem. Feed a 480p clip into a model, ask for 4K, and expect detail. Then the output arrives and it looks wrong in a way that is hard to name — faces shimmer, edges crawl, backgrounds boil. The clip is technically 4K. It also looks worse than the 480p original.

The reason is that the hard part was never the pixel count. It is consistency across time.

What a single frame doesn't tell you

An image upscaler sees one frame in isolation. It has no idea what the previous frame looked like, so it is free to invent. On frame 100 it decides a brick wall needs sharper mortar lines. On frame 101 it decides differently. Nothing enforces agreement between the two.

Played back at 24 fps, that disagreement reads as texture crawling. Your eye is very good at catching it, because real surfaces don't change structure between frames. Model detail that flickers is worse than blur that is stable — blur at least looks like a soft lens, while flicker looks like a rendering bug.

Where old footage makes it worse

Archival material is the worst case for exactly this reason:

  • Grain and sensor noise are random per frame. A model trained to sharpen will happily "restore" grain into structure, and each frame gets a different structure.
  • Compression blocks shift position with motion. The model interprets them as real edges and locks onto them, so macroblocks become 4K macroblocks.
  • Motion blur carries direction. Over-sharpening it produces a frozen streak that doesn't travel with the subject.
  • Interlacing and dropped frames give the model fewer valid temporal references, so it guesses more.

Every one of these is a temporal artifact. Cranking resolution up doesn't touch any of them.

The ordering that actually works

If the goal is a usable result, sequence matters more than the model:

  1. Stabilize first. Camera shake forces every frame to a different alignment. Stabilizing reduces how much the model has to re-guess between frames.
  2. Denoise before you sharpen. Remove grain while it is still grain. If you sharpen first, you promote noise to detail and then have to denoise your own fake detail away.
  3. Cap the scale factor. Going 480p to 4K in one pass is an 8.3x jump. The model has to hallucinate most of what you see. Two passes (480p to 1080p, 1080p to 4K) give it a checkpoint to stay consistent against.
  4. Check temporal consistency before you commit. Scrub the result frame by frame. If a surface changes structure without moving, you over-sharpened.

A practical ceiling

For old footage, 2x per pass is a sane limit. Past that the model stops extrapolating and starts inventing, and invention is what flickers. If the source is 360p, a realistic target is a clean 720p or 1080p — not 4K. A stable 1080p beats a boiling 4K every time on a real display, because the eye forgives softness and does not forgive instability.

This is also why browser tools are worth using for the experiment stage. Short clips, quick turnaround, no GPU: UpgoLAB runs the upscale in the browser so you can compare a 2x and a 4x pass on the same ten seconds before committing to a full render. The comparison is where the decision lives. The resolution number is just the output.

What to measure

Skip PSNR. It rewards smoothness and will happily score a blurry result over a sharp, stable one. Instead:

  • Scrub at 100% zoom on a static surface. Count how many times the texture changes structure in one second. Anything above zero means you went too far.
  • Watch a face through a pan. Detail that slides relative to the skin is fake.
  • Compare against the source at the same display size, not at 100%. The only test that matters is whether the upscale looks better than the original from where a viewer actually sits.

Treat resolution as the last lever, not the first. The clips that come out well are the ones where you fixed time before you touched pixels.

🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

I’m a Senior Dev and I’ve Forgotten How to Think Without a Prompt

Karol Modelski - Mar 19

A Textile Mill's Dyehouse Ramp Curve: Get One Step Wrong and the Sheet Belongs to the Master

aiomniu - Oct 18

Why Are There Only 13 DNS Root Servers For The Whole World? Is that a problem

richarddjarbeng - May 7

The Privacy Gap: Why sending financial ledgers to OpenAI is broken

Pocket Portfolio - Feb 23

The End of Data Export: Why the Cloud is a Compliance Trap

Pocket Portfolio - Apr 6
chevron_left
121 Points • 2 Badges
1Posts
0Comments
Web developer in Ho Chi Minh City. I write about AI image and video upscaling, sharpening old family... Show more

Related Jobs

Commenters (This Week)

2 comments
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!