Selur's Little Message Board

Full Version: Shrink Clip without aliasing
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,

Is there a way to Resize a Clip (Downsize from 1920x1080 to 1280x720) without aliasing?

I use BicubicResize for this, i tried Billinear Resize, but there are some Details that get blur a bit with that.

I need to use MAA after Sharpening

i use this in the following order:

Bicubic Resize from 1920x1080 to 1280x720
TemporalDegrain2 TR1
CAS 0,73
FTT3D Neo with Sharpening
MAA antialiasing
YAHR
Deband

usually its enough to use MAA filter after Resize to 1280x720 before TemporalDegrain2, but the aliasing appears after sharpening.

When i use the same Filter order with Billinear Resize, the aliasing is almost gone.

Is there any other Resize Method i can maybe use without some details get blur /unsharp?

What is Resample or NNEDI3 Resize? I read Avisynth Wiki but i dont really get it

I never Upscale, i only Downscale clips like from 1920x1080 to 1280x720 mostly

Greetings

EDIT: ah NNEDI3 is for Upscaling.
Quote:Is there any other Resize Method i can maybe use without some details get blur /unsharp?
When downscaling some details need to go since you lower the amount of pixels.
So: No

Also, unless you use some anime descaling method, I would never use bilinear and I usually wouldn't use bicubic either.
SplineResizing is usually a good approach when not doing specific resizing.

That said, using Frame->Resize->Resizer->fmtconv and switching through the different resizers while having the preview (with auto refresh) open should easily allow seeing the effect of different resizers on you sepecific content.

In general, I also would recommend to use denoising before any resizing, otherwise the resizing will change the nature of the noise.

Cu Selur

Ps.: if you sure you want no aliasing&co you could always use nearest neighbor / point resize.
Thanks for your awnser!

I am processing acually "The Orville"

So Spline, I will try that, its Spline 16 how i see in the Vaypurscript Script under Filtering, in Aviysynth wiki, there are Spline 36 and Spline 64 too. isnt Spline 64 not the most accuratet according to the Avisynth wiki?
[Image: RfqJBsm.png]
No clue, what the Avisynth Wiki writes about what. Spline16 <> to Spline under 'Frame->Resize->Resizer->fmtconv->Resizer'.
Hybrid also supports spline36/64/144.


Argh, just noticed there's a bug in fmtconv resizer. Sad

Cu Selur
Vom Avisynth Wiki:

Spline16Resize, Spline36Resize and Spline64Resize are three Spline based resizers. They are the (cubic) spline based resizers from Panorama tools that fit a spline through the sample points and then derives the filter kernel from the resulting blending polynomials. See this thread for the technical details.

The rationale for Spline is to be as sharp as possible with less ringing artifacts than LanczosResize produces. Spline16Resize uses √16 or 4 sample points, Spline36Resize uses √36 or 6 sample points, etc ... The more sample points used, the more accurate the resampling. Several resizer comparison pages are given in the External Links section.

Spline64Resize may be the most accurate of the Resize filters.Dersch
Spline16Resize is sharper and rings just a bit (which may be desirable with soft sources),
and looks pleasing to the eye when enlarging or reducing in moderate amounts.doom9
Spline36Resize is somewhere in between the other two.

I habe mal alle ausprobiert, Spline 36 scheint am besten abzuschneiden, muss ich mal weiter testen, aber erstmal danke.

Bug? Was für ein Bug?
Quote:more sample points used, the more accurate the resampling.
so 144 should be more accurate

Quote:Bug? Was für ein Bug?
fmtconv resizer werden nicht benutzt Smile

for easy comparision:
Code:
# Imports
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# Loading Plugins
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
core.std.LoadPlugin(path="i:/Hybrid/64bit/vsfilters/Support/libimwri.dll")
# source: 'C:/Users/Selur/Desktop/orville.png'
# current color space: RGB24, bit depth: 8, resolution: 1920x1080, fps: 25, color matrix: 709, yuv luminance scale: limited, scanorder: progressive
# Loading C:\Users\Selur\Desktop\orville.png using vsImageReader
clip = core.imwri.Read(["C:/Users/Selur/Desktop/orville.png"])
clip = core.std.Loop(clip=clip, times=100)
# Input color space is assumed to be RGB24
clip = clip if not core.text.FrameProps(clip,'_Transfer') else core.std.SetFrameProps(clip, _Transfer=1)
clip = clip if not core.text.FrameProps(clip,'_Primaries') else core.std.SetFrameProps(clip, _Primaries=1)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
# making sure frame rate is set to 25
clip = core.std.AssumeFPS(clip=clip, fpsnum=25, fpsden=1)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=0)
# Resizing using 10 - bicubic spline
resized=[];
resizers = ["point", "linear", "cubic", "lanczos", "blackman", "blackmanminlobe", "spline", "spline36", "spline64"]
for i in range(len(resizers)):
  ckernel = resizers[i];
  tmp = core.fmtc.resample(clip=clip, kernel=str(ckernel), w=1280, h=720, interlaced=False, interlacedd=False) # resolution 1280x720
  tmp = core.text.Text(tmp,text=str(ckernel))
  resized.append(tmp)

tmp = core.fmtc.resample(clip=clip, kernel="spline", taps=6, w=1280, h=720, interlaced=False, interlacedd=False) # resolution 1280x720
tmp = core.text.Text(tmp,text="spline144")
resized.append(tmp)

clip = core.std.Interleave(clips=resized)

# Output
clip.set_output()
(adjust paths, open script in vsViewer)
Send you a link to a dev vesion which should fix the fmtconv resizer usage.
SSIMD and DPID might also be interessting.

Cu Selur