View Full Version : surpass the denoise quality of single MVTools
feisty2
20th March 2015, 10:08
got some nice shit in my head about denoising, you know, stuff like NLMeans (temporal version) is indeed more quality wise than MDegrain (Motion Compensate), but way too slow so practically useless, and BM4D is still an experimental algorithm and only got a matlab program for it, and even slower than temporal NLMeans.
so I got this idea like, how about enhance the denoise quality with available tools for avisynth
we'll start with spatial filters
xxxsource ("rule6.mov")
NLM=nlmeanscl2 (a=10,b=0,s=4,lsb_inout=true,h=4.8,aa=3.2)
DFT=DFTTest (lsb_in=true, lsb=true, sigma=64, sbsize=33, sosize=0, smode=0, tosize=0, tbsize=1, tmode=0, y=true, u=False, v=False)
Gauss=Dither_y_gamma_to_linear (tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True).dither_resize16 (width*2,height*2,kernel="gauss",a1=100).dither_resize16 (width,height,kernel="gauss",a1=4).Dither_y_linear_to_gamma (tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True)
min1=softmindif16 (NLM, DFT, last)
spatialdenoised=softmindif16 (min1, Gauss, last)
Function softmindif16 (clip input1, clip input2, clip ref)
{
maxdif = Dither_max_dif16 (input1, input2, ref, y=3, u=1, v=1)
bin_stack = mt_lutxy (input1, maxdif, "x y == 255 0 ?", y=3, u=1, v=1)
bin_msb = bin_stack.Dither_get_msb ()
bin_lsb = bin_stack.Dither_get_lsb ()
bin = mt_logic (bin_msb, bin_lsb, "min", y=3, u=1, v=1)
bbin = bin.blur (1)
output = Dither_merge16_8 (input1, input2, bbin, luma=False, y=3, u=1, v=1)
return output
}
we got strong NLMeans first cuz it got this geometrical self plasticity kinda feature since it works based on geometrical similarity, which is good for clips suffering from MPEG ringings / blocks or out of ordinary sick film grains, it kinda connects broken edges, lines destroyed by noises
we got DFTTest, it keeps more details than NLMeans, but like all frequency filters, it produces ringings
and the final one, a simple blur filter, an insurance just in case those 2 above cost more details than dumb blurring
now we gathered all the best features of 3 filters with "softmindif16", it picks spots (soft spots, not exact pixels) closest to the source clip, and the spatial part, done
dif=dither_sub16 (last, spatialdenoised, dif=true)
we get the dif between the spatial denoised clip and the source clip, the source clip got divided into 2 parts, one clean and sort of over denoised part and one with huge amount of noises and some details
time for MVTools to show up :)
blankdif=dif.dither_lut16 ("32768")
tr = 6
pel = 4
dct = 5
thsad = 400
supersearch = spatialdenoised.ditherpost (mode=-1).nnedi3_rpow2 (rfactor=2).nnedi3_rpow2 (rfactor=2)
sclpdif = dif.ditherpost (mode=-1).nnedi3_rpow2 (rfactor=2).nnedi3_rpow2 (rfactor=2)
supercomp = dif.ditherpost (mode=-1).MSuper (pel=pel, chroma=true, hpad=32, vpad=32, pelclip=sclpdif, sharp=2, rfilter=2, levels=0)
supersoft = spatialdenoised.ditherpost (mode=-1).MSuper (pel=pel, chroma=False, hpad=32, vpad=32, pelclip=supersearch, sharp=2, rfilter=4, levels=0)
supersharp = spatialdenoised.ditherpost (mode=-1).MSuper (pel=pel, chroma=False, hpad=32, vpad=32, pelclip=supersearch, sharp=2, rfilter=2, levels=0)
vmulti = supersoft.MAnalyse (multi=True, overlap=16, blksize=32, search=3, chroma=False, truemotion=True, delta=tr, trymany=True,
\ searchparam=16, pelsearch=16, dct=dct, levels=0, divide=2, badrange=-24)
vmulti = supersoft.MRecalculate (vmulti, overlap=8, blksize=16, thsad=thsad/2, chroma=False, truemotion=True, tr=tr, search=3, searchparam=16, dct=dct, smooth=1, divide=2)
vmulti = supersharp.MRecalculate (vmulti, overlap=4, blksize=8, thsad=thsad/2, chroma=False, truemotion=True, tr=tr, search=3, searchparam=16, dct=dct, smooth=1, divide=2)
vmulti = supersharp.MRecalculate (vmulti, overlap=2, blksize=4, thsad=thsad/2, chroma=False, truemotion=True, tr=tr, search=3, searchparam=16, dct=dct, smooth=1, divide=0)
tmp = blankdif.ditherpost (mode=-1).MDeGrainN (supercomp, vmulti, tr, thSAD2=thsad/2, thSAD=thsad, thSCD1=480, thSCD2=130, plane=0, limit=255, lsb=True)
the script above keeps and denoises motion blocks that got a nice blockmatch and discards blocks that fail to blockmatch other blocks
kinda tricky and nice, we all know motion compensate gets nasty when there ain't no enough similar blocks to match, so the script just wipes nasty blocks away, we'll just take the spatial denoised result if motion compensate gets messed up
it happens to overcome the one thing we hated the most about motion compensate, hell yeah!
dither_add16 (spatialdenoised, tmp, dif=true)
Done!
feel free to test or modify or whatever the idea
much appreciated if you like to share your test results
Stereodude
20th March 2015, 17:47
C'mon, where are the comparison screenshots? ;)
feisty2
20th March 2015, 18:26
C'mon, where are the comparison screenshots? ;)
nah, I'm at my boyfriend's home and a tablet, 3 yrs ago cheesy laptop, those are all he got, no way I'm running crazy script like this on those kind of devices, I don't need another bread toaster or burnt egg if I'm ever gonna put a slice of bread or an egg on those low end computers :p
StainlessS
20th March 2015, 22:15
Feisty, you come across as a REAL bright young guy, BUT, somewhat befuddled by something, what is it ?
johnmeyer
20th March 2015, 23:19
StainlessS,
As one of the older people here (Truman & Churchill were running things when I was born), I was thinking exactly the same thing.
Also, I wanted to try his script and his ideas, but am not quite sure how to set it up. Therefore, it would be helpful if he were to provide some side-by-side before/after comparisons.
feisty2
21st March 2015, 07:24
I'll try to work out something more detailed soon, promise. :)
Stereodude
21st March 2015, 15:55
I had a nicer longer reply written up that got lost, but after several reboots, driver updates, and the like I no longer have anything much nice to say. NLmeanCL2 isn't a very user friendly plugin. I can't tell it to use the Nvidia OpenCL device in my system. It insists on using the Intel HD because that drives my display. I have to drive my monitor from the Nvidia card to use the Nvidia OpenCL device.
However, I've discovered your script crashes the video driver for either the Intel or Nvidia GPU OpenCL drivers on my system and Intel CPU emulation is unrealistically slow. How much VRAM is on your Nvidia card?
Groucho2004
21st March 2015, 16:01
I can't tell it to use the Nvidia OpenCL device in my system.
Which device is that?
Stereodude
21st March 2015, 16:03
BTW, is this line supposed to return a double height clip?
Gauss=Dither_y_gamma_to_linear (tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True).dither_resize16 (width*2,height*2,kernel="gauss",a1=100).dither_resize16 (width,height,kernel="gauss",a1=4).Dither_y_linear_to_gamma (tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True)
I had to change it to
Gauss=Dither_y_gamma_to_linear (tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True).dither_resize16 (width*2,height*2,kernel="gauss",a1=100).dither_resize16 (width,height/2,kernel="gauss",a1=4).Dither_y_linear_to_gamma (tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True)
in order to get the script to attempt to load. Otherwise Dither_max_dif16 function call inside softmindif16 would complain that Gauss was twice the height as min1.
Stereodude
21st March 2015, 16:05
Which device is that?
GT440. I updated both the HD 4600 (i7-4770k) and the GT440 to the latest drivers and I get a black screen followed by a tray notification that the driver has crashed and recovered when I try to use either as the OpenCL device. FWIW, I think it's ridiculous I have to plug my monitor into the Nvidia card instead of the Intel iGP to use the GT440 as the OpenCL device. Other OpenCL applications let you specify which OpenCL device in your system to use.
Groucho2004
21st March 2015, 16:07
GT440. I updated both the HD 4600 (i7-4770k) and the GT440 to the latest drivers and I get a black screen followed by a tray notification that the driver has crashed and recovered when I try to use either as the OpenCL device.
Have you tried "legacy=true" with NLMeansCL2?
Stereodude
21st March 2015, 16:21
Have you tried "legacy=true" with NLMeansCL2?
Not until you suggested it, but it crashes either way with both the GT440 and the HD4600.
NLMeansCL2: Houston, we've had a problem!
[clCreateContext (CL_OUT_OF_RESOURCES)]
Groucho2004
21st March 2015, 16:30
Not until you suggested it, but it crashes either way with both the GT440 and the HD4600.
NLMeansCL2: Houston, we've had a problem!
[clCreateContext (CL_OUT_OF_RESOURCES)]
Then you should report it in the NLMeansCL2 thread.
Stereodude
21st March 2015, 16:34
Maybe this will help someone else who can get NLMeansCL2 to work. Here's the script I tried with the load / import statements so you don't have to figure them out too.
LoadPlugin("C:\HDTV Tools\NLMeansCL2\NLMeansCL2.dll")
LoadPlugin("C:\HDTV Tools\MVtools\mvtools2.dll")
LoadPlugin("C:\HDTV Tools\MaskTools\mt_masktools-26.dll")
LoadPlugin("C:\HDTV Tools\Dither\win32\dither.dll")
LoadPlugin("C:\HDTV Tools\Dfttest\dfttest.dll")
Import("C:\HDTV Tools\Dither\dither.avsi")
Import("C:\HDTV Tools\Dither\mt_xxpand_multi.avsi")
Function softmindif16 (clip input1, clip input2, clip ref)
{
maxdif = Dither_max_dif16 (input1, input2, ref, y=3, u=1, v=1)
bin_stack = mt_lutxy (input1, maxdif, "x y == 255 0 ?", y=3, u=1, v=1)
bin_msb = bin_stack.Dither_get_msb ()
bin_lsb = bin_stack.Dither_get_lsb ()
bin = mt_logic (bin_msb, bin_lsb, "min", y=3, u=1, v=1)
bbin = bin.blur (1)
output = Dither_merge16_8 (input1, input2, bbin, luma=False, y=3, u=1, v=1)
return output
}
--insert source here--
NLM=nlmeanscl2 (a=10,b=0,s=4,lsb_inout=true,h=4.8,aa=3.2)
DFT=DFTTest(lsb_in=true, lsb=true, sigma=64, sbsize=33, sosize=0, smode=0, tosize=0, tbsize=1, tmode=0, y=true, u=False, v=False)
Gauss=Dither_y_gamma_to_linear(tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True).dither_resize16 (width*2,height*2,kernel="gauss",a1=100).dither_resize16(width,height/2,kernel="gauss",a1=4).Dither_y_linear_to_gamma(tv_range_in=False, tv_range_out=False, curve="srgb", sigmoid=True)
min1=softmindif16 (NLM, DFT, last)
spatialdenoised=softmindif16 (min1, Gauss, last)
dif=dither_sub16 (last, spatialdenoised, dif=true)
blankdif=dif.dither_lut16 ("32768")
tr = 6
pel = 4
dct = 5
thsad = 400
supersearch = spatialdenoised.ditherpost (mode=-1).nnedi3_rpow2 (rfactor=2).nnedi3_rpow2 (rfactor=2)
sclpdif = dif.ditherpost (mode=-1).nnedi3_rpow2 (rfactor=2).nnedi3_rpow2 (rfactor=2)
supercomp = dif.ditherpost (mode=-1).MSuper (pel=pel, chroma=true, hpad=32, vpad=32, pelclip=sclpdif, sharp=2, rfilter=2, levels=0)
supersoft = spatialdenoised.ditherpost (mode=-1).MSuper (pel=pel, chroma=False, hpad=32, vpad=32, pelclip=supersearch, sharp=2, rfilter=4, levels=0)
supersharp = spatialdenoised.ditherpost (mode=-1).MSuper (pel=pel, chroma=False, hpad=32, vpad=32, pelclip=supersearch, sharp=2, rfilter=2, levels=0)
vmulti = supersoft.MAnalyse (multi=True, overlap=16, blksize=32, search=3, chroma=False, truemotion=True, delta=tr, trymany=True,
\ searchparam=16, pelsearch=16, dct=dct, levels=0, divide=2, badrange=-24)
vmulti = supersoft.MRecalculate (vmulti, overlap=8, blksize=16, thsad=thsad/2, chroma=False, truemotion=True, tr=tr, search=3, searchparam=16, dct=dct, smooth=1, divide=2)
vmulti = supersharp.MRecalculate (vmulti, overlap=4, blksize=8, thsad=thsad/2, chroma=False, truemotion=True, tr=tr, search=3, searchparam=16, dct=dct, smooth=1, divide=2)
vmulti = supersharp.MRecalculate (vmulti, overlap=2, blksize=4, thsad=thsad/2, chroma=False, truemotion=True, tr=tr, search=3, searchparam=16, dct=dct, smooth=1, divide=0)
tmp = blankdif.ditherpost (mode=-1).MDeGrainN (supercomp, vmulti, tr, thSAD2=thsad/2, thSAD=thsad, thSCD1=480, thSCD2=130, plane=0, limit=255, lsb=True)
dither_add16 (spatialdenoised, tmp, dif=true)
Stereodude
21st March 2015, 16:44
Then you should report it in the NLMeansCL2 thread.
After a little more testing it seems that the arguments to nlmeanscl2 in feisty2's script may be at least part of the problem.
This simple script works on either GPU:
AVISource("source.avi", pixel_type="YV12")
nlmeanscl2(device_type="GPU", info=true)
where source.avi is 1920x1080.
My guess is I don't have enough VRAM for the arguments in feisty2's script and NLmeanCL2 doesn't error out gracefully upon that discovery.
Stereodude
21st March 2015, 17:12
Okay, so I tried it with a lower resolution clip from a DVD. I think something is wrong somewhere because the output is messed up.
http://i.imgur.com/OMzrYWL.jpg
My guess is my fix to the gauss line was wrong. However, with the script as originally posted I get an error of
Dither_maxdif16: clip "src2" has a height of 960 instead of 480.
min1 and Gauss don't have the same height. I'm not sure what the correct fix is.
feisty2
21st March 2015, 17:23
Those are meant to be processing stacked 16bit clips, If you're not in a hurry, I'm actually trying to improve the script to make it less aggressive, I can try to check out what's wrong with your script or you can wait for a new better version, gonna be a couple of days, I guess, :)
Sparktank
21st March 2015, 21:01
\NLMeansCL2\NLMeansCL2.dll
\MVtools\mvtools2.dll
\MaskTools\mt_masktools-26.dll
Dither\win32\dither.dll
\dfttest.dll
\dither.avsi
\mt_xxpand_multi.avsi
What versions are you using?
I presume Dither is the most recent update? (v1.26.5)
And most recent NLMeansCL2 v0.4.0 (2015-01-08) ?
There's a lot of different vrsions for mvtools2 now.
MVTools v2.5.11.3 (19.09.2011 by Fizick)
MVTools v2.5.11.9 (28.02.2012 by SVP (http://www.svp-team.com/wiki/Plugins:_MVTools2#Downloads))
MVTools v2.6.0.5 (July-17-12)[Mod16/Dither_package]
I doubt the SVP version. But does it make a difference between Fizick and cretindesalpes mod16 version?
And, masktools2 has 2 variations now:
MaskTools2 a48 (Manao; website dead)
MaskTools2 b1 (tp7; updated (http://avisynth.nl/index.php/MaskTools2))
I think there was another version out there that got lost in the QTGMC thread. But, that may be the tp7 udpate (b1).
I had issues with FFTW.dll.
I would get as far as "MVanalyse" in your script and get an error loading FFTW.dll.
Official Windows binaries for FFTW include only 3 DLL's:
single precision (libfftw3f-3.dll)
double precision (libfftw3-3.dll)
long-double precision (libfftw3l-3.dll)
cretindesalpes includes a modified libfftw3f-3.dll.
After some a lot of trial and error replacing various versions, I finally got passed the error.
But, then script consumed >97% CPU and hung for awhile.
I used:
MVTools v2.6.0.5 [Mod16/Dither_package]
MaskTools2 b1 update
libfftw3f-3.dll/fftw.dll (official FFTW site) (renamed libfftw3f-3 to just fftw.dll)
Tried on a 7min clip from a bluray remux.
Except, I didn't LoadPlugin, they were in the "plugins" directory, with fftw dll's copied to System32/sysWOW64.
I copied the same as you did (except for LP where they were autoloaded from plugin dir)
Avisynth version: AviSynth 2.60, build:Feb 20 2015 [03:16:45] (2.6.0.5) (MT)
Active MT Mode: 0
SetMemoryMax(512)
LoadPlugin("C:\AVS\dgdecnv2049\DGDecodeNV.dll")
Function softmindif16 (clip input1, clip input2, clip ref)
{
...copied_the_same...
}
DGSource("E:\Video\Godzilla_sample.dgi", crop_t=140, crop_b=148)
...copied_the_same...
Stereodude
21st March 2015, 22:28
What versions are you using?
I presume Dither is the most recent update? (v1.26.5)
And most recent NLMeansCL2 v0.4.0 (2015-01-08) ?
Yes and yes.
There's a lot of different vrsions for mvtools2 now.
MVTools v2.6.0.5 (July-17-12)[Mod16/Dither_package]
That one.
And, masktools2 has 2 variations now:
MaskTools2 a48 (Manao; website dead)
MaskTools2 b1 (tp7; updated (http://avisynth.nl/index.php/MaskTools2))
I think there was another version out there that got lost in the QTGMC thread. But, that may be the tp7 udpate (b1).
Apparently a very old one. MaskTools v2 - alpha 2. I tried b1 (masktools2-25.dll) but get the same error about the size of the clips being different (with the script as posted by feisty2).
I had issues with FFTW.dll.
I would get as far as "MVanalyse" in your script and get an error loading FFTW.dll.
Official Windows binaries for FFTW include only 3 DLL's:
single precision (libfftw3f-3.dll)
double precision (libfftw3-3.dll)
long-double precision (libfftw3l-3.dll)
cretindesalpes includes a modified libfftw3f-3.dll.
After some a lot of trial and error replacing various versions, I finally got passed the error.
But, then script consumed >97% CPU and hung for awhile.
I used:
MVTools v2.6.0.5 [Mod16/Dither_package]
MaskTools2 b1 update
libfftw3f-3.dll/fftw.dll (official FFTW site) (renamed libfftw3f-3 to just fftw.dll)
Tried on a 7min clip from a bluray remux.
Except, I didn't LoadPlugin, they were in the "plugins" directory, with fftw dll's copied to System32/sysWOW64.
I copied the same as you did (except for LP where they were autoloaded from plugin dir)
Avisynth version: AviSynth 2.60, build:Feb 20 2015 [03:16:45] (2.6.0.5) (MT)
Active MT Mode: 0
SetMemoryMax(512)
LoadPlugin("C:\AVS\dgdecnv2049\DGDecodeNV.dll")
Function softmindif16 (clip input1, clip input2, clip ref)
{
...copied_the_same...
}
DGSource("E:\Video\Godzilla_sample.dgi", crop_t=140, crop_b=148)
...copied_the_same...
I'm not sure which FFTW I have.
Sparktank
21st March 2015, 22:56
(script as posted by feisty2
http://i.imgur.com/pXGbWLJ.gif I forgot to test that script, too. Got sidetracked looking at the NLMeansCL2 issue.
feisty2
22nd March 2015, 10:39
http://i.imgur.com/9dfX9ep.png
http://i.imgur.com/VZHmTaC.png
http://i.imgur.com/JIYIUpN.png
http://i.imgur.com/BpK2Yo4.png
http://i.imgur.com/FcSkgAK.png
http://i.imgur.com/BoJbIxL.png
a few shots of the new version I'm working on, yet only spatial filters got covered, so those are not the final results, I'll get MVTools to do the temporal stuff and recover some details more or less
creaothceann
22nd March 2015, 11:55
Meh, too much detail loss right now imo.
http://i.imgur.com/T8xE6dl.gif
http://i.imgur.com/YjT4lJS.gif
http://i.imgur.com/6Nrcazr.gif
feisty2
22nd March 2015, 12:11
yeah, I said those are not the final results
EDIT: and I don't think you can save any significantly more detail from 01a if you want those mpeg blocks gone.. :)
feisty2
23rd March 2015, 09:00
final results
shots here
http://i.imgur.com/igw8DOv.png
http://i.imgur.com/2oMLBgA.png
http://i.imgur.com/rzfVgKw.png
http://i.imgur.com/LBMAbil.png
http://i.imgur.com/UKTVsG2.png
http://i.imgur.com/uaDtpMn.png
http://i.imgur.com/3w18ePi.png
http://i.imgur.com/RwQ6iue.png
http://i.imgur.com/CTkYJoa.png
http://i.imgur.com/h44Zqqf.png
http://i.imgur.com/HKUihu6.png
http://i.imgur.com/2oneV91.png
http://i.imgur.com/b2t8CEJ.png
http://i.imgur.com/4tCEw2d.png
http://i.imgur.com/zrZF9Wy.png
code's a mess, I'll post it when I cleaned it up
johnmeyer
24th March 2015, 00:32
Those are some intriguing results. Did you post the clip somewhere? Sorry if I missed it. I wanted to try out my own denoising scripts to see how they compare. In looking at your last clip, your technique seemed to work well on the details in the highlights, but in the shadows it seemed to smooth over too much detail. However, without having the actual clip, where I can look at the detail over several frames, I can't be sure of this. With MDegrain and MVTools2, I've seen this sort of failure, and if you have all day to let your script run, there are settings that can reduce the detail loss in shadows and in relatively detail-free areas (like sky).
So, I'm hopeful your technique may be useful, but I can't tell for sure until I have access to your clip.
feisty2
24th March 2015, 06:25
my settings are kinda aggressive cuz the source clip suffers from MPEG artifacts, not just film grains, I want them all gone, you can see the smdegrain results are not artifacts free, mvtools already costs hell lot of details and artifacts are still... artifacts, and that's the reason I wrote this thing, cuz artifacts are hard to motion match, but then I realized I could do something more, and that's it, I'll post a short sample and let you be the judge :)
feisty2
24th March 2015, 08:22
did some mild modifications yet again, final full version here (https://github.com/IFeelBloated/experimental-avs-functions/blob/master/tmp.avs)
@johnmeyer sample here (https://mega.nz/#!I4Y1iIhb!uT2EDcPCXl5hLL0xS8_A18fNPAiSU9gmQK5JiYZRLIo), load it in avisynth like this, "RawReader("Sample.rgb", "Y8", 736, 960, packing="8:0:8").ConvertToY8 ()", and shots I posted earlier are not the exact denoised only results, the source clip's kinda weird, it looks foggy or whatever cuz it doesn't fit the whole 0-65535 range, and it's not a tv_range thing, I don't know why it's like this so I applied a curve on those shots to make things clearer.
and, remember to tweak parameters in denoisers urself, those default values work nice on my test clip but they may not on your specific clips
and thsad in difcleanse16 is not the real denoise thsad, it's like the "valid thsad", blocks with thsad below this value would be kept and averaged, otherwise discarded, don't set it below 2000
EDIT: more shots, tweaked more parameters in smdegrain this time to make the contest between single mvtools (pure temporal filter) and my approach (spatio temporal filter) fair, and this time results are denoised only, no more curve stuff
http://i.imgur.com/rDoY034.png
http://i.imgur.com/G5FAmp8.png
http://i.imgur.com/0al2AeS.png
http://i.imgur.com/PAOn6kD.png
http://i.imgur.com/bBPyRAc.png
http://i.imgur.com/N3iE96e.png
http://i.imgur.com/5Ko04gR.png
http://i.imgur.com/3r62vKt.png
http://i.imgur.com/FhnAoED.png
http://i.imgur.com/v1Hqtj8.png
http://i.imgur.com/V9JoTIi.png
http://i.imgur.com/suwriym.png
http://i.imgur.com/PiosMPA.png
http://i.imgur.com/KJsW0nB.png
http://i.imgur.com/pZx9U1j.png
http://i.imgur.com/mCcVGBz.png
http://i.imgur.com/XEzMJut.png
http://i.imgur.com/7WSgUGV.png
WarlockD
24th March 2015, 18:50
Been trying your filter but the link you gave won't work. It was missing the "Grayscale16" function but I pulled that out from one of the Expermental Building block files.
Having a problem finding SmoothCurve16 though, any hits?
PS - My apologizes, it was a plugin I wasn't aware of:P Going to try this on a semi bad source I have I will post it in a bit
Overdrive80
24th March 2015, 21:21
My attempt to:
http://s2.postimg.org/hbtsxtsp5/Captura_de_pantalla_2015_03_24_21_18_04.png (http://postimg.org/image/6c8lm829x/full/)
http://pastebin.com/Awd7BvMG
Dogway
25th March 2015, 04:27
the source clip's kinda weird, it looks foggy or whatever cuz it doesn't fit the whole 0-65535 range, and it's not a tv_range thing
Log space?
Anyway for the guys wondering, I don't think feisty is proving how crap mvtools is, since all results look extremely washed out and synthetic. I think he wants to prove that at extreme conditions (tr=6) his approach is safer. I would never use a temporal radius of 6 in such low noise low contrast sources, and even not at thsad=400 in any way.
He is taking the best of the 3 worlds (dfttest, NLMeans, mvtools) and blending them, hence the question should be, at realistic denoising level, is this worth it (performance, etc)?
feisty2
25th March 2015, 05:08
since all results look extremely washed out and synthetic.
I want ALL MPEG artifacts gone, I could lower the strength down, but the artifacts would remain, if I gotta choose between details and artifacts free, I would go the latter, at regular denoise level, the approach would produce better results whenever motion estimation fails (high motion, fade...)
EDIT:
Log space?
No idea, gonna expand the range to 0-65535 when all other steps are done, if you don't clean the MPEG crap up now, they will jump out and bite when you try to expand the range
is this worth it (performance, etc)?
that's totally up to you :)
bxyhxyh
1st April 2015, 05:48
Hello feisty2, how was speed comparison?
colours
1st April 2015, 10:19
I want ALL MPEG artifacts gone
Blackness() is the most useful filter for that, imo. It's also a pretty destructive filter though, so use it with care.
feisty2
1st April 2015, 10:31
Blackness() is the most useful filter for that, imo. It's also a pretty destructive filter though, so use it with care.
humorous, but I was serious when I said that. ;)
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.