This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

ColorAdjust ReColor Motion Distortion Issue
#1
Hi Dan,
What you’ve done with Hybrid is truly magnificent.
I wanted to report an issue regarding ColorAdjust with the ReColor option. I’m using the official Hybrid version (Hybrid_2026.03.21.1_SETUP), not the development build and VapoursynthR73_torch_2026.02.26.
The issue that still persists is significant distortions on moving objects when ReColor is enabled. I tried reducing the problem using:
qtgmc.QTGMC(clip, Preset="Very Slow", InputType=3, TR2=2, TFF=False, SourceMatch=0, Lossless=0)
and it reduced the issue a little, but the distortions are still visible.
It’s a shame because this is a really great feature, but this small problem affects the final result. We definitely need to find a solution!

https://drive.google.com/drive/folders/1...KwSv1D5ifD

PS: P.S. In the development version ColorAdjust with the ReColor, there is also a temporal consistency issue across the whole image, similar to a flickering effect from frame to frame + Distortion .

Best regards
Reply
#2
tempPreviewVapoursynthFile13_55_30_347.vpy-1307-0.png <- that looks more like some frame interpolation and a coloring issue.
No, debug output, no script, no source sample,... => no way to reproduce the problem or even know what you did.
At least I can't say anything about this, maybe Dan sees this and has some idea,...

Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Reply
#3
Hi Selur,

I hope you are doing well .

I wanted to share an example script regarding the issue I mentioned with HAVC_ColorAdjust. Maybe it could help identify the source of the problem.
# Imports
import vapoursynth as vs
# getting Vapoursynth core
import sys
import os
core = vs.core
# Import scripts folder
scriptPath = 'C:/Program Files/Hybrid2/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# loading plugins
core.std.LoadPlugin(path="C:/Program Files/Hybrid2/64bit/vsfilters/MiscFilter/MiscFilters/MiscFilters.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid2/64bit/vsfilters/SourceFilter/LSmashSource/LSMASHSource.dll")
# Import scripts
import vsdeoldify as havc
import validate
# Source: 'C:\Users\NASS\Desktop\LA\restoredcolor.mp4'
# Current color space: YUV420P8, bit depth: 8, resolution: 938x698, frame rate: 24fps, scanorder: progressive, yuv luminance scale: limited, matrix: 709, transfer: bt.709, primaries: bt.709, format: AVC
# Loading ' C:\Users\NASS\Desktop\LA\restoredcolor.mp4Ä using LWLibavSource
clip = core.lsmas.LWLibavSource(source="C:\Users\NASS\Desktop\LA\restoredcolor.mp4 ", format="YUV420P8", stream_index=0, cache=0, prefer_hw=0)
frame = clip.get_frame(0)
# setting color matrix to 709.
clip = core.std.SetFrameProps(clip, _Matrix=vs.MATRIX_BT709)
# setting color transfer (vs.TRANSFER_BT709), if it is not set.
if validate.transferIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Transfer=vs.TRANSFER_BT709)
# setting color primaries info (to vs.PRIMARIES_BT709), if it is not set.
if validate.primariesIsInvalid(clip):
clip = core.std.SetFrameProps(clip=clip, _Primaries=vs.PRIMARIES_BT709)
# setting color range to TV (limited) range.
clip = core.std.SetFrameProps(clip=clip, _ColorRange=vs.RANGE_LIMITED)
# making sure frame rate is set to 24fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=24, fpsden=1)
# making sure the detected scan type is set (detected: progressive)
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # scan type: progressive
# adjusting color space from YUV420P8 to RGB24 for vsColorAdjust
clip = core.resize.Bicubic(clip=clip, format=vs.RGB24, matrix_in_s="709", range_in_s="limited", range_s="full")
# stabilize colors using ColorAdjust (HAVC)
clip = havc.HAVC_ColorAdjust(clip, BlackWhiteTune="strong", BlackWhiteMode=6, Strength=1)
# adjusting output color from RGB24 to YUV420P8 for x264Model
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="709", range_in_s="full", range_s="limited") # additional resize to match target color sampling
# set output frame rate to 24fps (progressive)
clip = core.std.AssumeFPS(clip=clip, fpsnum=24, fpsden=1)
# output
clip.set_output()
# script was created by Hybrid 2026.03.21.1
Reply
#4
Seems like 'ReColor' is blending the wrong frames.
@Dan64: using this file with HAVC_ColorAdjust with ReColor=True the issue seems to be easily reproduceable/visible if vertical movement is present. (even in latest versions)

Cu Selur
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Reply
#5
Thank you for your feedback selur . Yes, the latest version has some consistency issues. That’s why I switched back to the official version, but for me, the main problem is the “distortions,” and I think they’re caused by the “Strength: Color temporal stabilization strength” setting.
Reply
#6
Hi selur, I haven't figured out how to avoid distortion yet.... , Is there a way to use ColorAdjust with ReColor without temporal stabilization? For example, to recolor the video using only the “Recolor” option?
Reply
#7
I not think so, but only Dan can answer that for sure.
----
Dev versions are in the 'experimental'-folder of my GoogleDrive, which is linked on the download page.
Reply
#8
Thanks, Selur! We’re waiting for Dan
Reply
#9
Hi Selur, I was able to solve the problem (chroma_resize), thanks!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)