Posts: 2
Threads: 1
Joined: Jan 2025
04.01.2025, 17:37
I’ve been using Hybrid to deinterlace VHS video using QTGMC (VapourSynth) with the "Bob" and "Medium" presets. My primary goal is to achieve decent quality deinterlacing without resizing. The focus is purely on deinterlacing while preserving the original footage quality as much as possible.
The deinterlacing process works really well, however, I’ve noticed an issue with the color in the output. The colors in the deinterlaced video don’t match the original footage - they appear lighter, almost like there’s an increase in contrast or brightness for some reason.
To help diagnose the issue, I've attached two sample files:
- Sample.mpg (Original Interlaced)
- Deinterlanced.mpg (Output after deinterlacing)
Could you please take a look at the files and let me know what might be causing this color mismatch? Any suggestions or guidance would be greatly appreciated!
Sample:
https://drive.google.com/file/d/17wRfgdt...vCME1/view
Deinterlanced:
https://drive.google.com/file/d/1OK2o-lu...ld6jt/view
Hybrid Screenshots:
Posts: 11.514
Threads: 63
Joined: May 2017
Quote:The focus is purely on deinterlacing while preserving the original footage quality as much as possible.
Then you should not use medium or adjust the QTGMC settings.
read:
https://forum.videohelp.com/threads/4041...commend-it
Quote:Could you please take a look at the files and let me know what might be causing this color mismat
Adding the historgram to the preview and looking it:
![[Image: grafik.png]](https://i.ibb.co/4F65Y4m/grafik.png)
not everything is inside the valid 16-235 range for tv scale. So you might want to handle that beforehand.
If one blindly assumes the source is 0-255 and maps that to 16-255 you get the effect you see:
![[Image: grafik.png]](https://i.ibb.co/pQrQKzz/grafik.png)
I simulated this using:
clip = core.std.Levels(clip=clip, min_in=0, max_in=255, min_out=16, max_out=235)
You probably might want to use something like:
clip = core.std.Levels(clip=clip, min_in=16, max_in=235, min_out=16, max_out=235)
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
>>> Offline from 30th of June till 6th of July. <<<
(will be at the
RochHarz festival)
Posts: 2
Threads: 1
Joined: Jan 2025
Thank you so much for helping troubleshoot this issue!
In Hybrid, How did you apply the following setting, I could not figure it out!
Quote:clip = core.std.Levels(clip=clip, min_in=16, max_in=235, min_out=16, max_out=235)
Much thanks!
Posts: 11.514
Threads: 63
Joined: May 2017
Those are the default if 'Levels' is enabled:
Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
>>> Offline from 30th of June till 6th of July. <<<
(will be at the
RochHarz festival)
Posts: 137
Threads: 30
Joined: May 2023
(04.01.2025, 18:02)Selur Wrote: not everything is inside the valid 16-235 range for tv scale.
is this 16-235 range "created" to be used on Analog old CRT?
Posts: 11.514
Threads: 63
Joined: May 2017
07.01.2025, 17:46
(This post was last modified: 07.01.2025, 19:01 by Selur.)
It is a historical limitation which originates in broadcast tv.
Luma range 16-235 was also referred as 'tv legal'.
As far as I remember:
Signal stability: values of 0-15 and 236-255 were used for buffers&co to stabilize the transmissions.
Standards: ITU-R BT.601 and ITU-R BT.709 are defined for tv scale.
Compatibility: old TV only could properly display a limited luma range correctly
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
>>> Offline from 30th of June till 6th of July. <<<
(will be at the
RochHarz festival)
Posts: 137
Threads: 30
Joined: May 2023
very thank you for the explanation Selur