18.06.2025, 01:13
I have tripod shot dv avi footage with vertical banding (seemingly from chroma conversion issues with DV NTSC). I have all other settings for vapoursynth deinterlacing, denoise, and sharpening set.
Since there is no reinterpolation411 filter in vapoursynth or avisynth, A.I. has built the below script that mimics the C++ and DLL coding.
# ReInterpolate411-style chroma restoration for NTSC DV 4:1:1
def beforeDeinterlace(clip):
# Separate planes
y = core.std.ShufflePlanes(clip, 0, vs.GRAY)
u = core.std.ShufflePlanes(clip, 1, vs.GRAY)
v = core.std.ShufflePlanes(clip, 2, vs.GRAY)
# Reduce to even columns
u_even = core.std.SelectEvery(u, cycle=2, offsets=[0])
v_even = core.std.SelectEvery(v, cycle=2, offsets=[0])
# Resize to full width via horizontal interpolation
u_interp = core.resize.Bicubic(u_even, width=clip.width, height=clip.height, src_left=0.25)
v_interp = core.resize.Bicubic(v_even, width=clip.width, height=clip.height, src_left=0.25)
# Merge back to YUV
return core.std.ShufflePlanes([y, u_interp, v_interp], [0, 0, 0], vs.YUV)
I'm thinking I'd apply to all clips in my library. I'm archiving old Home videos.
I inserted in the custom tab and inserted before deinterlace.
A.I. is saying the script hybrid generates has errors so I would appreciate help inserting the script properly (or confirming).
This may be my last msg before A.I. causes me to hang myself... (not literally, maybe)
I'm open to any best workflow filtering for optimum result. Shot from 2000-era Sony miniDV camcorder.
Since there is no reinterpolation411 filter in vapoursynth or avisynth, A.I. has built the below script that mimics the C++ and DLL coding.
# ReInterpolate411-style chroma restoration for NTSC DV 4:1:1
def beforeDeinterlace(clip):
# Separate planes
y = core.std.ShufflePlanes(clip, 0, vs.GRAY)
u = core.std.ShufflePlanes(clip, 1, vs.GRAY)
v = core.std.ShufflePlanes(clip, 2, vs.GRAY)
# Reduce to even columns
u_even = core.std.SelectEvery(u, cycle=2, offsets=[0])
v_even = core.std.SelectEvery(v, cycle=2, offsets=[0])
# Resize to full width via horizontal interpolation
u_interp = core.resize.Bicubic(u_even, width=clip.width, height=clip.height, src_left=0.25)
v_interp = core.resize.Bicubic(v_even, width=clip.width, height=clip.height, src_left=0.25)
# Merge back to YUV
return core.std.ShufflePlanes([y, u_interp, v_interp], [0, 0, 0], vs.YUV)
I'm thinking I'd apply to all clips in my library. I'm archiving old Home videos.
I inserted in the custom tab and inserted before deinterlace.
A.I. is saying the script hybrid generates has errors so I would appreciate help inserting the script properly (or confirming).
This may be my last msg before A.I. causes me to hang myself... (not literally, maybe)
I'm open to any best workflow filtering for optimum result. Shot from 2000-era Sony miniDV camcorder.