Log in

View Full Version : Dogway's Filters Packs


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

kedautinh12
5th November 2021, 09:40
I seen DNR is best result just look detail of bath towel in left-top corner

Blankmedia
5th November 2021, 15:06
I have some problem with oyster_deringing

I've added float "h" in the function :

oyster_Deringing(clip src, clip ref, int "radius", float "h", float "sigma", float "mse0",


I've change the lesser or equel for greater or equal to 0 here:
Assert(h>=0, "Oyster.Deringing: h has to be greater than 0!")

Now "strength2" isn't being defined before being called in line 364.

If I put strength2 = 1.1 before the function call in line 364 I get script error:invalid arguments to function oy_loop.

Dogway
5th November 2021, 18:04
Thanks for the report! I will have a look and report back, but Oyster and Plum are both WIP (work in progress) so I'm not positive it works even when fixed. To start with the BM3D plugin isn't fully ported so many settings are missing which may be critical for the correct output, and second I'm not sure mvtools is as robust in AviSynth+ as it is in VapourSynth, one example is 32-bit support which has some issues as reported here (https://forum.doom9.org/showthread.php?p=1956391#post1956391).


EDIT: ok updated (https://github.com/Dogway/Avisynth-Scripts/blob/master/EX%20mods/DeblockPack.avsi). Good luck making it work, it hangs on my rig. I guess iterating KNLMeansCL four times isn't actually avisynth friendly.

tormento
5th November 2021, 20:37
Check below with the great sample clip from tormento.
A great sample from a great movie.

Anyway, look at the lower white part corner of the top left towel.

Detalis disappear everywhere but in the LFR only.

Dogway
6th November 2021, 12:45
Sorry guys, but I don't see what you guys are seeing.

DNR..........................................................................DNR+LFR+DCTR
http://i.imgur.com/LPOlEfkm.png (https://i.imgur.com/LPOlEfk.png)............http://i.imgur.com/t65diLpm.png (https://i.imgur.com/t65diLp.png)

Anyway I have some ideas to improve the DCTFlicker pass.

On another note, yes MatchClip() which is required for prefilter=5 and some other functions as a replacement for Utils-r41's MatchColorFormat() is not yet released (due in TransformsPack). I'm trying to catch up with all the frameprops changes by pinterf.

tormento
6th November 2021, 14:25
Sorry guys, but I don't see what you guys are seeing.
https://i2.lensdump.com/i/g4oTZq.md.png (https://lensdump.com/i/g4oTZq)

This part (present in raw) plain and simply disappears. The only one with some hint of it is DNR+LFR only.

Plus, I am having the error:

Script error: There is no function named 'MatchClip'.
(D:/Programmi/Media/AviSynth+/plugins64/SMDegrain-3.3.5d~Dogway.avsi, line 887)
(D:/Programmi/Media/AviSynth+/plugins64/SMDegrain-3.3.5d~Dogway.avsi, line 217)

Perhaps I have deleted some necessary plugin. Which is which? :)

kedautinh12
7th November 2021, 03:48
I seen only DNR better than DNR+LFR in perfome part of bath towel deatails

Blankmedia
7th November 2021, 04:25
My pleasure! I like seafood so it was compelling to use.

Dogway
7th November 2021, 18:08
Ok, maybe I did wrong by presenting all the steps, but I like to keep transparent always. My point was DNR+LFR+DCTR improving over DNR/DNR+LFR, which I think it does. There are dozens of different ways to fix the pointed issue, one of them is raising the cutoff but it wasn't my intention to show an example of perfect denoising, because it simply doesn't exist as stated by Didée. I'm trying hard and have some things in mind to improve low frequency denoising.

@tormento, read my previous post. MatchClip is included in yet-to-be-released TransformsPack, which got delayed due to latest avisynth changes in frameprops. Hopefully I can release tomorrow. It replaces MatchColorFormat from Utils-r41 so one less dependency. It's only needed for prefilter=5 though.

tormento
7th November 2021, 19:06
read my previous post
Yep I read.

Please, next time, don't implement functions you need to write yet :)

Dogway
7th November 2021, 20:00
It's written but not released. I was holding back all my scripts for over a week solely because MatchClip (read about the conventions disaster here (https://forum.doom9.org/showthread.php?p=1956654#post1956654)), so I pulled the trigger.

If you are too desperate use this (disclaimer, use latest avs+):

# Matches 'a' to 'b' clip format (size, length, color model, Jab, bitdepth)
function MatchClip (clip a, clip b, string "kernel", string "matrix", bool "length", bool "fast") {

krn = Default (kernel, "Spline16")
fst = Default (fast, true)
mfc = Default (length, false) # Match also framecount

YUY2 = b.IsYUY2()
rgbb = b.isRGB() rgba = a.isRGB()
w = b.width() wa = a.width()
h = b.height() ha = a.height()
fc = b.FrameCount() fca = a.FrameCount()
p_type = b.PixelType() p_typea = a.PixelType()
bib = b.BitsPerComponent() bia = a.BitsPerComponent()

isHD = (w > 1099 || h > 599) isHDa = (wa > 1099 || ha > 599)
isUHD = (w > 2599 || h > 1499) isUHDa = (wa > 2599 || ha > 1499)
mat = Default(matrix, rgbb != rgba ? isUHD ? "Rec2020" : isHD ? "Rec709" : "Rec601" : Undefined())

a
bib > bia ? ConvertBits(bib, fulls=rgba) : last

if (!fst) {

ConvertFormat(w, h, fmt_i=p_typea, fmt_o=p_type, cs_in=mat, cs_out="", kernel=krn, gamma=false, tv_range_in=!rgba, tv_range_out=!rgbb, fulls=rgba, fulld=rgbb, show=false)

} else {

rgbp = rgbb && b.isPlanar()
isScl = w != wa || h != ha
mod = rgba && rgbb || isy(a) && isy(b) ? 1 : 2

yv411 = b.isYV411() yv411a = a.isYV411()
yv444 = b.is444() yv444a = a.is444()
fmt = Format_fuzzy_search(b, p_type, bib)
fmta = Format_fuzzy_search(a, p_typea, bia)
bc = bicubic_coeffs(krn)
krn = bc[1]>=0. ? "Bicubic" : krn

cplace = rgbb || yv444 || yv411 ? "MPEG1" : isUHD ? "top_left" : "MPEG2"
cplacea = rgba || yv444a || yv411a ? "MPEG1" : isUHDa ? "top_left" : "MPEG2"
not42 = LeftStr(fmta[1],2) != "42"

# Match dimensions
isScl ? w > h ? RatioResize(w,mode="adjust2w",kernel=krn,mod=mod,b=bc[0],c=bc[1]) : \
RatioResize(h,mode="adjust2h",kernel=krn,mod=mod,b=bc[0],c=bc[1]) : last
PadResize(w,h,mode="dilate", mod=mod)

# ConvertBackToYUY2 bug: https://forum.doom9.org/showthread.php?p=1038027#post1038027
isy(b) ? rgba ? DotClip([0.298967,0.586421,0.114612]) : ConvertToY(mat) : \
rgbb ? rgbp ? Eval( "ConvertToPlanarRGB (mat,interlaced=false"+(yv411a ? "" : ",ChromaInPlacement=cplacea")+", chromaresample=krn)") : \
Eval( "ConvertTo" +string(fmt[3])+"(mat,interlaced=false"+(yv411a ? ")" : ",ChromaInPlacement=cplacea, chromaresample=krn)")) : \
yv411 ? Eval( "ConvertToYV411 (false,mat," +(not42 ? "" : """ChromaInPlacement=cplacea,""")+"chromaresample=krn)") : \
YUY2 && rgba ? Eval("""ConvertBackToYUY2 (mat """) : \
Eval( "ConvertToYUV"+string(fmt[1])+"(false,mat," +(not42 ? "" : "ChromaInPlacement=cplacea,")+" chromaresample=krn"+(yv444 ? ")" : ",ChromaOutPlacement=cplace)"))
}

bia > bib ? ConvertBits(bib, dither= 1, fulls=rgbb) : last
mfc ? fca > fc ? Trim(last, fc-1) : last+BlankClip(b,fc-1) : last

# Planar to Interleaved
YUY2 && !rgba ? ConvertToYUY2() : last }

tormento
8th November 2021, 08:20
If you are too desperate use this
Not desperate but I can't simply use prefilter=5 with newer features of SMDegrain.

It works, thanks.

tormento
8th November 2021, 17:59
use this
Another needed function:

Script error: There is no function named 'Format_fuzzy_search'.
(D:/Programmi/Media/AviSynth+/plugins64/MatchClip~Dogway.avsi, line 35)
(D:/Programmi/Media/AviSynth+/plugins64/MatchClip~Dogway.avsi, line 56)

Dogway
8th November 2021, 18:07
That's in TransformsPack. I'm finishing the script (QC) just waiting for pinterf input so I don't do things twice.

Dogway
11th November 2021, 20:59
Updated DCTFilter, hope it's fine now:

http://i.imgur.com/kTUnI6cm.png (https://i.imgur.com/kTUnI6c.png)

I will upload tomorrow with TransformsPack, which isn't finished of course but it's fine to play with already.

tormento
19th November 2021, 11:12
Updated DCTFilter, hope it's fine now
Much better. Thanks.

Did you alredy implemented atan2 expr from Avisynth+ 3.7.1 test build 27 (20211117) in your scripts? I saw some legacy comments but the functions are still there.

Dogway
19th November 2021, 17:46
Yes, I forgot to add in the changelog. So far it's only used for the cylindrical models in TransformsPack. It's a tiny bit faster than my approx. but it's internal and more precise so a winner for me. I don't think 'atan' is yet optimized but I didn't see it used in any of my scripts.

I will keep the legacy functions for reference, this is also some kind of algo spread sheet for learning.

Dogway
19th November 2021, 19:28
By the way, I want to introduce SoftLimiter() a filter I have been working on for the last days. It's an inclusive limiter, that means not only it drops out out of range values, but also will include out of range values in a rolloff manner. This is adaptive in the sense that further out of range values will rolloff stronger.
There's also a dynamic mode where you don't need to input the range floor/ceil after inspection. It uses ShowChannels() which works only over 8-bit so precision is not very granular.
dyn=0 is static (default), dyn=1 uses accumulative loose min/max, which is a set and forget safe mode, dyn=2 is more granular and probably better when the source range floor/ceil varies, and dyn=3 which is very granular.

https://i.imgur.com/ffXj0dj.gif

For comparison this is SoftLimiter2() by raffriff42

https://i.imgur.com/9cjbzSF.gif

And here an example with a tailored sample with range floor at 11 and ceil at 245:
Limiter()
http://i.imgur.com/4aZcTGpm.png (https://i.imgur.com/4aZcTGp.png)
SoftLimiter()
http://i.imgur.com/N8ifh7Jm.png (https://i.imgur.com/N8ifh7J.png)


I also optimized the HSV, IPT and OkLab conversion functions and they are ready to shine, now work over any bitdepth.
Here's a comparison for the hue perceptual uniformity. Since Luma and Chroma channels are mapped differently I matched those by eye.

HSV
https://i.imgur.com/wurpiNS.png
IPT
https://i.imgur.com/JdAUcxA.png
OkLab
https://i.imgur.com/LpIuxYN.png

tormento
19th November 2021, 20:55
I also optimized the HSV, IPT and OkLab conversion functions and they are ready to shine, now work over any bitdepth.
:thanks:

VoodooFX
19th November 2021, 23:13
And here an example with a tailored sample with range floor at 11 and ceil at 245...
Looks nice. What is that Limiter() there? Could you compare SafeColorLimiter (https://github.com/FranceBB/SafeColorLimiter) too?

Dogway
19th November 2021, 23:30
Limiter() is there just for comparison purposes, it simply chops off out of range values. SafeColorLimiter() is the same as Limiter() but with HBD support so I didn't add.
There are still a few small bits that can be improved, like 'tolerance' response, pass arguments in dynamic mode, or finer precision in the min/max values, so I will refine those at a later point.

StainlessS
20th November 2021, 02:58
What is that Limiter() there?
Are you asking what the Limiter() plugin is, if so then here[its avs builtin]:- http://avisynth.nl/index.php/Limiter

VoodooFX
20th November 2021, 03:26
[its avs builtin]:- http://avisynth.nl/index.php/Limiter
Now I remember using it for something few years ago...
What ColorYUV(levels="pc->tv) does in comparison?

poisondeathray
20th November 2021, 07:54
Now I remember using it for something few years ago...
What ColorYUV(levels="pc->tv) does in comparison?


ColorYUV(levels="pc->tv") does the same as levels(0,1,255,16,235,false) - it scales the clip 0-255 to 16-235. Notice slope of curve is changed, and "banding" is introduced as some values are duplicated (steps in the waveform)

Limiter just cuts off values, all values <16 become 16. >235 become 235. The slope of curve in values 16-235 is unchanged

https://i.postimg.cc/CL8QnRWC/coloryuv-levels-limiter.png

soft rolloff is a welcome adjustment option, instead of "harsh" transitions

Dogway
20th November 2021, 18:02
Are you asking what the Limiter() plugin is, if so then here[its avs builtin]:- http://avisynth.nl/index.php/Limiter

Ah so nice, I included a tweaked panel of the debug example in the wiki.
Also updated SoftLimiter() with a straight input remap. The curve fitting wasn't accurate plus I assessed it in 8-bit.

http://i.imgur.com/Unv9YULm.png (https://i.imgur.com/Unv9YUL.png)

Boulder
20th November 2021, 19:21
Testing SoftLimiter(show=true) gives me the error "StackVertical: image widths don't match", lines 2235 and 2239.

Dogway
20th November 2021, 19:27
Thanks, what I presumed, incompatibilities with mod sizes. Will have a look

EDIT: Fixed. Test now, I also optimized the code a bit.

Shinkiro
20th November 2021, 22:11
SMDgraim broken
https://i.imgur.com/QoNcvIZ.jpeg
I can't figure out what he wants from me.

Dogway
20th November 2021, 22:22
Strange, what version of avs+ are you on? propNumElements() works for me outside runtime environments.

Shinkiro
20th November 2021, 22:34
Dogway
3.7.1 r4351

SMDegrain v3.3.4d works without errors, other versions have not checked

Dogway
20th November 2021, 22:53
You mean r3351? Can you try newer version? I think props for frame index#0 was added recently.
Try test build 27 from its thread (https://forum.doom9.org/showthread.php?t=181351).

Shinkiro
20th November 2021, 22:59
With the new version it works, thanks!

tormento
21st November 2021, 10:04
I was trying to clean up the BD of Brazil (small clip here (https://send.cm/d/6JAx)) from excessive noise and I am really torn between

SMDegrain (tr=6, thSAD=600, refinemotion=true, contrasharp=false, PreFilter=4, plane=4, chroma=true, LFR=true, DCTFlicker=true)

and

SMDegrain (tr=6, thSAD=600, refinemotion=true, contrasharp=false, PreFilter=5, plane=4, chroma=true)

The first gives more detail behind fog or clouds but it has some dancing noise or textures in the most disturbed areas of the video, mostly visible in clouds or walls.

The second is more stable but loses some details.

The bitrate of both is similar, i.e. 3716 kb/s vs 3623 kb/s (on whole movie).

Some years ago a plugin to calm grain (I can't remember the exact name) was out and I was used to implement it in my scripts.

Can you stabilize in some way more the noise before reapplying with LFR=true, DCTFlicker=true?

Moreover I have some slight color change between the two, such as on the falling pictures on this clip (https://send.cm/d/6JCG):

https://i3.lensdump.com/i/gSAVYH.md.png (https://lensdump.com/i/gSAVYH)https://i2.lensdump.com/i/gSAQqx.md.png (https://lensdump.com/i/gSAQqx)

Look at the pictures falling on the left.

Dogway
21st November 2021, 12:08
I will have a closer look later today or tomorrow with more time since currently I'm porting NIS sharpen but I made some templates for noisy sources, maybe you can try, tweaking the parameters in red.

Mild to strong:
pre=smdegrain(tr=1,mode="temporalsoften",blksize=32,thSAD=900,LFR=400,prefilter=5,DCTFlicker=true,contrasharp=false,refinemotion=true)
smdegrain(tr=2,mode="MDegrain",blksize=32,prefilter=pre,thSAD=400,LFR=false,contrasharp=true,refinemotion=true)

Very strong (ie. 300, 21 grams):
smdegrain(tr=2,mode="temporalsoften",blksize=32,thSAD=900,LFR=300,DCTFlicker=true,contrasharp=false,refinemotion=true)
smdegrain(tr=1,mode="MDegrain",blksize=32,thSAD=300,LFR=false,contrasharp=true,refinemotion=true)

For calming grain I think the most popular were FluxSmoothT and STPresso. There were Deen, etc but they are older and based on the same concept (thresholded medians). You can try those or some of my implementations like ex_FluxSmoothT() or STTWM(), or ex_FluxSmoothST() if using as prefilter.

Boulder
21st November 2021, 12:55
Thanks, what I presumed, incompatibilities with mod sizes. Will have a look

EDIT: Fixed. Test now, I also optimized the code a bit.

I'm still getting the error with RC27. Tried without any cropping (i.e. 1080p) and with 240 pixels cropped off the left and right sides.

Boulder
21st November 2021, 14:29
Ex_makediff also seems to be broken, "I don't know what 'fmt' means." is the error, lines 1895 and 1910 in transformspack.avsi.

Tested by loading the 1080p source and with these as the only lines after that:
ConvertBits(16)
ex_makediff(last, SPresso(bias=20, biasc=40, rgmodec=4, limit=0.3, limitc=0.6), aug=true)

There's something strange happening with the SPresso limit, if I use limit=0.29, the output seems to change drastically.

Dogway
21st November 2021, 21:53
Thanks, yes stupid typo for 'aug=true'. Should be format=PixelType(RGB) in TransformsPack

As for SoftLimiter() debug panel I tested with decimal resizing (using RatioResize) for a few minutes and I had no issues. What's the exact resolution of the clip so I can check?

I did some tests for SPresso and didn't get such behaviour, the parameter response was smooth so it might be clip dependent. I would need a small sample.

Boulder
22nd November 2021, 06:44
As for SoftLimiter() debug panel I tested with decimal resizing (using RatioResize) for a few minutes and I had no issues. What's the exact resolution of the clip so I can check?
It's 1920x1080, reproducable if I just load the source with DGSource and then use SoftLimiter(show=true).


I did some tests for SPresso and didn't get such behaviour, the parameter response was smooth so it might be clip dependent. I would need a small sample.

Try with this one. The same one can also be used for the SoftLimiter test.
https://drive.google.com/file/d/1oPbCKTTqRbNP2rLejg-WdvIIZvdxgj4g/view?usp=sharing

You can use this script to see how it looks, if you change the value of limit between 0.29 and 0.3, the difference is quite big compared to 0.3 and 0.31. It doesn't seem to matter if the source is 8 or 16 bits.

DGSource("spresso_testclip.dgi")
limit = 0.3
convertbits(16)
ex_makediff(last, mcdegrainsharp(last, c2=SPresso(bias=20, biasc=40, rgmodec=4, limit=limit, limitc=limit*2), frames=1), aug=50, uv=128)

Function MCDegrainSharp(clip c, clip "c2", int "frames", float "bblur", float "csharp", bool "bsrch",bool "Precise",Int "Limit",Int "LimitC") {
# From:- http://forum.doom9.org/showthread.php?p=1737045#post1737045
# Based on MCDegrain By Didee, http://forum.doom9.org/showthread.php?t=161594
# Also based on DiDee observations in this thread: http://forum.doom9.org/showthread.php?t=161580
# "Denoise with MDegrainX, do slight sharpening where motionmatch is good, do slight blurring where motionmatch is bad"
# In areas where MAnalyse cannot find good matches, the blur() will be dominant.
# In areas where good matches are found, the sharpen()'ed pixels will overweight the blur()'ed pixels
# when the pixel averaging is performed.
#
# Mod by StainlessS to add Precise, 3 Sept 2015.
# Mod by StainlessS, Default bblur mod for HD. bs (blocksize) mod for HD. Added Limit, LimitC. 17 Feb 2020.
frames = Default(frames, 2)
# bblur = Default(bblur, (c.width>1920) ? 0.75 : (c.width>1280) ? 0.7 : (c.width>960 ) ? 0.65 : 0.6)
csharp = Default(csharp, 0.6)
bsrch = Default(bsrch, true)
Precise= Default(Precise,False) # Use MRecalculate
Limit = Default(Limit,255)
LimitC = Default(LimitC,Limit)

bs = (c.width>1920) ? 32 : (c.width>1280) ? 24 : (c.width>960 ) ? 16 : 8
super = bsrch ? c2.MSuper(pel=2, sharp=1) : c.MSuper(pel=2, sharp=1)
super_rend = c.sharpen(csharp).MSuper(pel=2, sharp=1,levels=1) # Only 1 Level required for sharpened Super (not MAnalyse-ing)
backward_vec1 = MAnalyse(super, isb = true, delta = 1, blksize=bs, overlap=bs/2)
forward_vec1 = MAnalyse(super, isb = false, delta = 1, blksize=bs, overlap=bs/2)
backward_vec1 = (Precise) ? MRecalculate(super, backward_vec1, blksize=bs/2, overlap=bs/4,thSAD=100) : backward_vec1
forward_vec1 = (Precise) ? MRecalculate(super, forward_vec1 , blksize=bs/2, overlap=bs/4,thSAD=100) : forward_vec1
#
(frames<=0) ? c :\
(frames==1) ? c2.MDegrain1(super_rend, backward_vec1,forward_vec1,thSAD=400,Limit=Limit,LimitC=LimitC) :\
(frames==2) ? c2.MDegrain2(super_rend, backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,Limit=Limit,LimitC=LimitC) \
: c2.MDegrain3(super_rend, backward_vec1,forward_vec1,backward_vec2,forward_vec2,backward_vec3,forward_vec3,thSAD=400,Limit=Limit,LimitC=LimitC)
return(last)
}

Dogway
22nd November 2021, 20:16
Ok uploaded an update. The debug panel in SoftLimiter() is hopefully fixed. Also fixed the typo for ex_makediff(aug=true).
SharpenersPack is also updated with a new sharpener NVSharpen(), this is Nvidia's NIS sharpener, but I didn't like it too much. And reworked/optimized SSSharpenEX() for good I hope.

Now I will have a look at the SPresso thing and Tormento's clip.
I have a somewhat big change pending in the case masks should use fullscale bitdepth, just waiting for confirmation. In my opinion it shouldn't despite masks being PC range (except when source is also PC range).

tormento
23rd November 2021, 13:32
SharpenersPack is also updated with a new sharpener
Did you work out some other unsharpener? I have tried many solutions but I don't see lot of improvements on bitrate output side. Always too high.

P.S: Do you plan to introduce the new development MVTools options soon or will you wait for a stable release?

Dogway
23rd November 2021, 21:34
I ported new nvidia's sharpener, read its blog (https://www.nvidia.com/en-us/geforce/news/nvidia-image-scaler-dlss-rtx-november-2021-updates/), here the repo (https://github.com/NVIDIAGameWorks/NVIDIAImageScaling/tree/main/NIS). It's open source to compete against AMD's FSR. Someone else can port their scaler as that isn't possible with avisynth syntax.

I didn't like it much though, it's a bit naive, simple minmax edge mask that is later discretized, minmax limiting and a simple unsharp mask fixed at 3x3 window.
Bitrate increase is understandable, you are increasing acutance which raises SAD, but when I encode I only care about output quality. I guess if you want to maximize quality for bitrate using LSFmod's options is best suited because you can tell it to localize sharpening only where it cares most.

I didn't read much of the new MVTools developments by DTL, I read about some concessions on using only 8x8 blocks, that's not optimal for HD, furthermore I would really like to see adaptive block sizes like H.265, a clear sky wouldn't need less than 32 block sizes whereas a city landscape would do better with 8. I will wait for stable.

I will have a look now to the pending issues.

tormento
23rd November 2021, 21:56
I ported new nvidia's sharpener
I wrote _un_sharpeners :)

Can't find any suitable to some excessively sharpened movies.

Dogway
23rd November 2021, 22:03
ah, that's easy, use blur with clamping. ex_luts("clamp") as alternative to dehaloers or custom convolutions.




You can use this script to see how it looks, if you change the value of limit between 0.29 and 0.3, the difference is quite big compared to 0.3 and 0.31. It doesn't seem to matter if the source is 8 or 16 bits.

I'm testing in frame 46 with:
limit = 0.30
convertbits(16)
a=SPresso(bias=20, biasc=40, rgmodec=4, limit=limit, limitc=limit*2)
ex_makediff(a, aug=100, UV=128)
And there's a barely noticeable change between 0.29 and 0.30, compared to 0.30 to 0.31. But I mean this is augmented x100.
When using your call, yes some blocks seem to change more with 0.29 to 0.30 but this also happens with with older SPresso scripts, this is the nature of hard thresholding/limiting. I implemented soft thresholding on a few of my filters (not all). Anyway, I'm going to use old=true to my ex_MinBlur() call so it's an exact match to older SPresso. I will edit the script again when pinterf adds the sign operator.

Boulder
24th November 2021, 05:15
I'm testing in frame 46 with:
limit = 0.30
convertbits(16)
a=SPresso(bias=20, biasc=40, rgmodec=4, limit=limit, limitc=limit*2)
ex_makediff(a, aug=100, UV=128)
And there's a barely noticeable change between 0.29 and 0.30, compared to 0.30 to 0.31. But I mean this is augmented x100.
When using your call, yes some blocks seem to change more with 0.29 to 0.30 but this also happens with with older SPresso scripts, this is the nature of hard thresholding/limiting. I implemented soft thresholding on a few of my filters (not all). Anyway, I'm going to use old=true to my ex_MinBlur() call so it's an exact match to older SPresso. I will edit the script again when pinterf adds the sign operator.

Thank you for the explanation. In fact, it's fine to keep it as it is now that I know how it is. I often use quite small values for limit in my denoiser to just push the hardest grain edges back a bit.

tormento
24th November 2021, 10:00
use blur with clamping. ex_luts("clamp")
Is that the exact command to use? ex_luts("clamp")?

Boulder
24th November 2021, 17:47
I found a rather peculiar problem with SoftLimiter and apparently multithreading.

This script causes strange seeking which quite often crashes RequestLinear with "RequestLinear: internal error (frame not cached)!". I'm currently on test 27 of Avisynth+'s latest builds.
DGSource("source.dgi")
RequestLinear(clim=100, debug=true)
SoftLimiter(dyn=2)
Prefetch(threads=24, frames=12) # good for 12-core 3900X

https://pastebin.com/TgjREc0f, see for example line 588.

videoh
24th November 2021, 18:40
Since DGSource() supports random access, why is RequestLinear() needed? What is it doing?

Boulder
24th November 2021, 19:46
This strange glitch, https://github.com/pinterf/mvtools/issues/37, does not occur if I use RequestLinear there.

videoh
24th November 2021, 20:09
DGIndex and DGIndexNV both use the same random access logic, so if you can find a way to produce this error with DGIndex then perhaps pinterf will be able to look at it. We should chip in to get him an nVidia GPU, if anyone can find one.

Dogway
24th November 2021, 22:42
Is that the exact command to use? ex_luts("clamp")?

It's the same that I posted (https://forum.doom9.org/showthread.php?p=1953074#post1953074) a while ago, antialiasing, dehaloers, masked blurs are all good for that.