Upscaling old DVDs
I took some time at the weekend to upscale some old DVDs from the seventies, which had already been digitised but were still highly grainy. Given it's not something I do on a daily basis, I thought I'd share my learnings here mostly as a reference when I want to do it again.
PAL DVDs are MPEG-2 720 x 576 resolution (for 4:3, non-widescreen). This was great back in the day of CRT screens, but we all now have high-resolution LCD screens that are anywhere between 1920 x 1080 (FullHD) to 3840 × 2160 (4K). The difference is marked. And whilst most media players, AV received and TVs all have their own upscaling circuitry, they're all limited to having to do the upscaling in real-time within the power envelope of the device. This is always going to be limited. Upscaling the source video, you can have a computer spend far more time on each frame to get a higher quality output.
The question on how far you upscale your video is of course, down to your own requirements. For DVD I found that going to 1280x960 is working quiet well, but why stop there eh?
Workflow
- Copy DVD to local file (e.g. MKV file)
- De-interlace video without recompressing
- Run video through upscaler
- Recompress video to final destination format
MakeMKV is a fantastic tool for copying DVD titles to MKV files, it's fairly self explanatory and no special considerations need to be made for this step.
I've found that de-interlacing is a step that needs to be done up front as upscaling can cause more problems if they don't handle de-interlacing themselves. To do this I simple run the source file through Handbrake with the Decomb filter enabled and output as a MPEG-2 video with zero compression enabled, passing through audio etc. Care needs to be taken with aspect ratios, otherwise you land up with a different output resolution than the source. So for mine, I set the Anamorphic setting to custom and custom cropping (all set to 0) and made sure the height and width correspond with the source. This avoids any squeezing or stretching.
Upscaling is something that is improving all the time, at the moment I am using the rather fantastic Topaz Video Enhance AI program. It uses previously trained AI models to remove noise a more focused approach and apply sharpening intelligently depending on the content. It works fantastically on things like text without making the whole image look overly sharpened. There are a few models you can chose from, and for the content I'm using at the moment the Artemis LQ v12 model is doing a fantastic job of cleaning up the old analogue scans. During this step, I leave the output as MP4 and set the compression factor to zero to keep the output lossless. Repeated compression will degrade the video further, so before final output, not compressing the content is important. If you're actually using high-quality sources, then you may wish to use a different format out here.
The tricky bit is setting the sizing and resolution. You can either pick an upscaling percentage or do things a bit more customised. If you're doing it by hand you can set your scaling percentage, and then a crop box. If you don't work them out together, you can have a lot of black space, or a highly cropped video. For my PAL DVD content, I set the scaling to 167% (odd, right), which produces 1282 x 962, and I then adjust the crop box to 1280 x 960, and suffer the loss of a pixel on each side.
Finally the last encode needs to be done. I'm using Handbrake again to complete this step, but the exact settings that you will want to use is subjective. For reference, I'm finding these settings work well:
- MKV container
- Anamorphic set to loose with a Modulus of 16
- No filters (as we've already de-interlaced)
- H.265 Codec (no point in HDR etc for old content)
- Left the frame-rate to match source and constant for better compatibility
- Set an average bit rate, through experimentation based on what looks good for the content and resolution, 800kbps worked well for what I was encoding as there is a lot of white space. And enabled a 2-pass to allow the more complex scenes make better use of available bitrate
- Encoder preset I tend to use VeryFast or Slow depending on how good I want the compression to be
- Audio should be still available from the source as it's moved all the way through the workflow, subtitles are less likely.
Conclusion
The key bit in my workflow is centred around Topaz Video Enhance AI, which is quite astonishingly good at what it does. It's no hollywood thriller "enhance" magic, but it's certainly the closet thing I've seen to it and can pull out a lot of detail. Where it really excels it seems is noise and edge detection. I ran some old TV through it to see what it could do, and whilst it provided enhancement, it wasn't as astonishing as I've seen elsewhere. When something is low enough resolution that it has lost the detail or the image is blurred it can only go so far - but there always seems to be an improvement.
The downside is of course the processing time involved. It heavily makes use of GPU processing over CPU processing, my multi-core CPU was relatively idle during processing, which did mean I could dedicate that to encoding video at the same time but you'll soon run out of encoding work due to the length of time Topaz takes to process. I was getting through about 1/3 of a frame a second - time for a new GPU I think!