View Full Version : VagueDenoiser 0.35.1: a 2D Wavelet denoiser/smoother
Fizick
26th September 2005, 19:01
No any Pentium4 user?
New v.0.35.1 - september 26,2005 - Added YUY2 and RGB format for auxclip
Kisa_AG
27th September 2005, 08:25
Hello Fizick!
No any Pentium4 user?
I'm a Pentium 4 user!
Here are informaton about my computer:
Intel Pentium 4 (Willamette), 1.70GHz, MMX, SSE, SSE2, Front Side Bus Frequency 100.2 MHz, Bus Speed 400.9 MHz
I tried both filter versions but didn't find any speed improvements. I used DV source with 53 seconds duration. Here is my AVS:
LoadPlugin("C:\Program Files\Multimedia_Soft\Video\AVS_Plugins\vaguedenoiser0343\VagueDenoiser.dll")
#LoadPlugin("C:\Program Files\Multimedia_Soft\Video\AVS_Plugins\vaguedenoiser0351\VagueDenoiser.dll")
AVISource("D:\Multimedia\Part11.avi")
ConvertToYV12
Vaguedenoiser(threshold=2,wavelet=2,percent=100)
I loadad this AVS into VirtualDub 1.6.10 and saved as AVI with DV compression. Both versions of your filter gave me the same result
3:25 - VirtualDub
2:47 - CPU time in Task Manager.
Fizick
27th September 2005, 16:22
Greeting to new Russian doom9 user!
So, SSE optimization of old version was really not effective.
(why you do not overclock your PC ? :)
Kisa_AG
28th September 2005, 10:59
Fizick.
Greeting to new Russian doom9 user!
Thanks!
why you do not overclock your PC ?
It's difficult question, I don't know... I have two PCs, P4-1700 and P4-2660, and both work with the original CPU clock. Maybe I prefer stability over speed improvment.
onesoul
18th January 2006, 05:27
Does anyone have latest version (v0.35.1) of vaguedenoiser?
Wilbert
18th January 2006, 22:43
I attached VagueDenoiser v0.35, and v0.35.1:
onesoul
18th January 2006, 23:05
Thank you nonetheless Wilbert :).
ARDA
18th January 2006, 23:27
Why do not follow Fizick's links just some posts up
My plugins are at my site http://bag.hotmail.ru and its mirror at http://www.avisynth.org/fizick
Regards ARDA
DarkFoon
18th January 2006, 23:33
@ARDA
because now he is charging for his filters, so you cannot get them from those links anymore.
ARDA
18th January 2006, 23:37
My apologizes, I stay corrected I didn't check to download before posting
Regards ARDA
Fizick
19th January 2006, 01:32
because now he is charging for his filters, so you cannot get them from those links anymore.
It is not quite true.
1. I temporary removed them. And wait some donations. Read more info in my site.
2. Now I got some donations and begin to restore my site (partially).
royia
16th September 2010, 22:39
How does it compare to other spatial denoisers?
Is there a 64bit version?
StainlessS
20th September 2010, 06:43
Hi Royia
Nobody else seems to wanna answer U so, all I can say is
VagueDenoiser is the ONLY purely spacial denoiser I ever use,
not terribly fast but it is very good at what it does.
Not an in-depth appraisal, maybe there are better ones, but
when I like summick, I stick with it.
Usedocne
20th September 2010, 19:17
How does it compare to other spatial denoisers?
Is there a 64bit version?
Spatial denoiser comparison (bit old though):
http://www.aquilinestudios.org/avsfilters/spatial.html
I don't think there's a 64bit version. Maybe someone has compiled one though (for personal use)?
royia
20th September 2010, 19:34
I see.
There are Edge Preserving Wavelets which should result in a great Spatial Denoiser.
I'll give this one a try.
If I'm not mistaken the developer is still active in the forum, maybe he might provide a 64bit version.
Magik Mark
12th August 2016, 23:36
Can somebody help us compile a 64bit version? It has been awhile
FranceBB
21st August 2016, 18:54
@Magik Mark... no luck trying to compile the x86 version either, but I don't get why...
-------------- Build: Win32 Release in VagueDenoiser (compiler: Microsoft Visual C++ 2010)---------------
[ 6.7%] cl.exe /nologo /I"C:\Programmi\Microsoft SDKs\Windows\v7.0A\include" /I"C:\Programmi\Microsoft Visual Studio 10.0\VC\include" /c Brislawn.cpp /FoRelease\Brislawn.o
Brislawn.cpp
Brislawn.cpp(234) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(234) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(234) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(237) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(238) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(239) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(240) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(241) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(242) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(243) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(244) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(245) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(246) : error C2065: 'i' : undeclared identifier
Brislawn.cpp(247) : error C2065: 'i' : undeclared identifier
Process terminated with status 2 (0 minute(s), 2 second(s))
14 error(s), 0 warning(s) (0 minute(s), 2 second(s))
And GCC as well...
-------------- Build: Win32 Release in VagueDenoiser (compiler: GNU GCC Compiler)---------------
[ 6.7%] mingw32-g++.exe -m32 -c "C:\Documents and Settings\l\Desktop\src\Brislawn.cpp" -o Release\Brislawn.o
In file included from C:\Documents and Settings\l\Desktop\src\wavelet.h:21:0,
from C:\Documents and Settings\l\Desktop\src\brislawn.h:4,
from C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:1:
C:\Documents and Settings\l\Desktop\src\avisynth.h: In member function 'BYTE* VideoFrame::GetWritePtr() const':
C:\Documents and Settings\l\Desktop\src\avisynth.h:347:20: error: '_ASSERT' was not declared in this scope
_ASSERT(FALSE);
^
C:\Documents and Settings\l\Desktop\src\avisynth.h: In member function 'BYTE* VideoFrame::GetWritePtr(int) const':
C:\Documents and Settings\l\Desktop\src\avisynth.h:356:22: error: '_ASSERT' was not declared in this scope
_ASSERT(FALSE);
^
C:\Documents and Settings\l\Desktop\src\avisynth.h: At global scope:
C:\Documents and Settings\l\Desktop\src\avisynth.h:540:7: error: conflicting type attributes specified for 'virtual GenericVideoFilter::~GenericVideoFilter()'
class GenericVideoFilter : public IClip {
^
C:\Documents and Settings\l\Desktop\src\avisynth.h:392:21: error: overriding 'virtual IClip::~IClip()'
virtual __stdcall ~IClip() {}
^
In file included from C:\Documents and Settings\l\Desktop\src\brislawn.h:4:0,
from C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:1:
C:\Documents and Settings\l\Desktop\src\wavelet.h:85:41: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(16)) transformFuncPtr Transform;
^
C:\Documents and Settings\l\Desktop\src\wavelet.h:86:41: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(16)) invertlowFuncPtr InvertLow;
^
C:\Documents and Settings\l\Desktop\src\wavelet.h:87:42: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(16)) inverthighFuncPtr InvertHigh;
^
C:\Documents and Settings\l\Desktop\src\wavelet.h:90:2: error: '_inline' does not name a type
_inline void Wavelet::copy(float register*p1, float register*p2, int length)
^
C:\Documents and Settings\l\Desktop\src\wavelet.h:95:2: error: '_inline' does not name a type
_inline void Wavelet::copy(float register*p1, int pitch1, float register*p2, int length)
^
C:\Documents and Settings\l\Desktop\src\wavelet.h:116:2: error: '_inline' does not name a type
_inline void Wavelet::copy(float register*p1, float register*p2, int pitch2, int length)
^
C:\Documents and Settings\l\Desktop\src\wavelet.h: In destructor 'Wavelet::~Wavelet()':
C:\Documents and Settings\l\Desktop\src\wavelet.h:73:20: error: '_mm_free' was not declared in this scope
_mm_free(temp_out);
^
In file included from C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:1:0:
C:\Documents and Settings\l\Desktop\src\brislawn.h: At global scope:
C:\Documents and Settings\l\Desktop\src\brislawn.h:19:2: error: '_inline' does not name a type
_inline void transform2d (float *input, int hsize, int vsize, int nsteps);
^
C:\Documents and Settings\l\Desktop\src\brislawn.h:20:2: error: '_inline' does not name a type
_inline void invert2d (float *input, int hsize, int vsize, int nsteps);
^
C:\Documents and Settings\l\Desktop\src\brislawn.h:21:2: error: '_inline' does not name a type
_inline void invert_step(float register* input, float register* output,
^
C:\Documents and Settings\l\Desktop\src\brislawn.h:23:2: error: '_inline' does not name a type
_inline void transform_step(float register* input, float register* output,
^
C:\Documents and Settings\l\Desktop\src\brislawn.h:25:2: error: '_inline' does not name a type
_inline void symmetric_extension(float *output, int size, int right_ext);
^
C:\Documents and Settings\l\Desktop\src\brislawn.h:26:2: error: '_inline' does not name a type
_inline void antisymmetric_extension(float *output, int size, int right_ext);
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp: In constructor 'Brislawn::Brislawn(int, int, int)':
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:22:63: error: '_mm_malloc' was not declared in this scope
temp_in = (float*) _mm_malloc((32+max(x,y))*sizeof(float),128);
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp: At global scope:
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:29:74: error: no 'void Brislawn::transform2d(float*, int, int, int)' member function declared in class 'Brislawn'
void Brislawn::transform2d(float *input, int hsize, int vsize, int nsteps)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:66:31: error: no 'void Brislawn::transform_step(float*, float*, int, int)' member function declared in class 'Brislawn'
int size, int lowSize)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:72:71: error: no 'void Brislawn::invert2d(float*, int, int, int)' member function declared in class 'Brislawn'
void Brislawn::invert2d(float *input, int hsize, int vsize, int nsteps)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:112:65: error: no 'void Brislawn::invert_step(float*, float*, int)' member function declared in class 'Brislawn'
void Brislawn::invert_step(float* input, float* output, int size)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:152:75: error: no 'void Brislawn::symmetric_extension(float*, int, int)' member function declared in class 'Brislawn'
void Brislawn::symmetric_extension (float *output, int size, int right_ext)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:177:79: error: no 'void Brislawn::antisymmetric_extension(float*, int, int)' member function declared in class 'Brislawn'
void Brislawn::antisymmetric_extension (float *output, int size, int right_ext)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:204:43: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(32)) float analysisLow[10] = {
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:207:44: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(32)) float analysisHigh[10] = {
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:210:44: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(32)) float synthesisLow[10] = {
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:213:45: warning: 'align' attribute directive ignored [-Wattributes]
__declspec(align(32)) float synthesisHigh[10] = {
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp: In function 'void transform_c(float*, float*, unsigned int)':
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:234:7: error: name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]
for (i=10;i<10+lowSize;i++)
^
C:\Documents and Settings\l\Desktop\src\Brislawn.cpp:234:7: note: (if you use '-fpermissive' G++ will accept your code)
Process terminated with status 1 (0 minute(s), 3 second(s))
22 error(s), 7 warning(s) (0 minute(s), 3 second(s))
If I use -fpermissive it says "use obsolete binding at "i"", which means that it only exits "inside" something and something else is trying to call it from "outside" and fails to compile as well.
This is kinda bad as I had in mind to use the new avisynth.h and compile it with new assembly optimizations... :(
Groucho2004
21st August 2016, 21:33
Can somebody help us compile a 64bit version? It has been awhile
Try this one (https://www.dropbox.com/sh/6kb3723po5oqd4b/AADbP8gIJ3YrHVoLU3joqJDma?dl=0).
Groucho2004
21st August 2016, 21:42
no luck trying to compile the x86 version either, but I don't get why...
Your C2065 errors are caused by scope problems. Either fix the the problems in the source file or use the "/Zc:forScope-" switch. This is a very common issue with "older" code since compilers like VC6 weren't very strict about scope rules.
If you want to use GCC for Avisynth plugins you'll have to re-write the code using the Avisynth C-API first.
I suggest you learn at least some basics about programming and compilers before attempting to port 32 bit code to 64 bit.
Magik Mark
23rd August 2016, 01:21
Try this one (https://www.dropbox.com/s/ifbkorpaequejim/VagueDenoiser0351_64.7z?dl=0).
Thanks a lot! so far so good. Quality so far is similar to knlmeans without the strain to the gpu
Sent from my iPhone using Tapatalk
feisty2
23rd August 2016, 05:57
They are not even on the same level of quality, "similar"?
real.finder
28th September 2016, 12:38
Try this one (https://www.dropbox.com/s/ifbkorpaequejim/VagueDenoiser0351_64.7z?dl=0).
the link is dead
Groucho2004
28th September 2016, 12:45
the link is dead
Sorry, moved here (https://www.dropbox.com/sh/6kb3723po5oqd4b/AADbP8gIJ3YrHVoLU3joqJDma?dl=0).
romangal
18th June 2020, 22:58
Sorry but just had a test of Neo_VagueDenoiser. Ive discovered it doesnt work correctly. First: If i add BlankClip in avisynth neo_VD doesnt work with this error message: "One Clip has audio and the other doesnt" Other filters work ok the same settings. Second: Audio is missing if i use Neo_VD. I dont know it is strange but the audio is disappearing.
StainlessS
18th June 2020, 23:06
Well I dont know what you are doing (And I think the Neo_vagueDenoiser might be in devs forum), but maybe something like this
C = Avisource("D:\...\...\my_file.avi") # whatever
Blank = C.BlankClip() # Use C clip as template where blankclip args are omitted [ie Blank same type audio as C clip, but silent audio]
#do whatever you are doing with both identical properties clips.
EDIT: If you still have problems then you must post your script. [guessin' is fun but takes a helluva lot longer to solve]
EDIT: [Neo] VagueDenoiser:- http://forum.doom9.org/showthread.php?t=181310
romangal
20th June 2020, 00:12
Well I dont know what you are doing (And I think the Neo_vagueDenoiser might be in devs forum), but maybe something like this[/url]
I have video VHS capture standard 720[576. Interlaced.
I think i understand what is happening. My script is Deinterlace - Neo_VD - Trim(... ...)++BlankClip()++Trim(...) And right after an error appears trying to open script: "One clip has audio other doesnt."
But without BlankClip script is opening ok, but with no audio. I suppose, thats why this error occured: Trim - has no audio but BlankClip has audio(channels and audio_rate)
Anyway, The question is why after neo_vd enabled the clip opened ok but with no audio. Other filters(ttempsmooth, fluxsmooth, _2dCleanYuy2 work with no problems):confused:
MeteorRain
20th June 2020, 00:38
There's a dual synth platform issue underneath the code that would kill the audio during processing. I shall release a quick fix to that.
real.finder
20th June 2020, 01:27
There's a dual synth platform issue underneath the code that would kill the audio during processing. I shall release a quick fix to that.
what about this? https://forum.doom9.org/showthread.php?p=1910272#post1910272
StainlessS
20th June 2020, 02:44
Deinterlace - Neo_VD - Trim(... ...)++BlankClip()++Trim(...)
While above gives a couple of clues, it is hardly a script.
Deinterlace
Neo_VD
Blank = Last.BlankClip(Length=SomeNumber) # using last clip as template for properties, ie audio
Trim(... ...) ++ Blank ++ Trim(...)
Using your 'clues', new clip Blank adopts same audio properties as the then current Last clip. [Otherwise Blank would recieve default audio properties, probably not same as required].
anyways, according to MeteorRain and real.Finder, you have other non self inflicted problems, when they are sorted out, then you need use BlankClip as above.
MeteorRain
20th June 2020, 04:19
what about this? https://forum.doom9.org/showthread.php?p=1910272#post1910272
Not sure which route I should go. Truncating gives correct but inaccurate results, while rounding gives "incorrect" but accurate results.
real.finder
20th June 2020, 15:43
Not sure which route I should go. Truncating gives correct but inaccurate results, while rounding gives "incorrect" but accurate results.
maybe adding new parameter for that, and make it do Truncating by default (user can change it to rounding it he like it)
MeteorRain
21st June 2020, 09:15
maybe adding new parameter for that, and make it do Truncating by default (user can change it to rounding it he like it)
Today I examined your code again and I noticed the problem. The problem is you did a convertbits(8) which I think is the cause of the problem. If you rounded it down to 8, the difference would have been much smaller.
In other words, because you truncated LSB, any fractional part between 0.0 and 1.0 (out of 8-bit) was wiped down to 0, while they were correctly rounded down in a 8-bit VD.
real.finder
21st June 2020, 17:16
Today I examined your code again and I noticed the problem. The problem is you did a convertbits(8) which I think is the cause of the problem. If you rounded it down to 8, the difference would have been much smaller.
In other words, because you truncated LSB, any fractional part between 0.0 and 1.0 (out of 8-bit) was wiped down to 0, while they were correctly rounded down in a 8-bit VD.
ok, so I did this
function luma_histogram(clip c)
{
VersionNumber() < 2.60 ? c. mt_lut (expr="x 16 &u 17 x 15 &u - 1 x 15 &u + ? 14 *", u=-128, v=-128) : c.mt_lut(expr="x 16 &u 17 x 15 &u - 1 x 15 &u + ? 14 *", u=-128, v=-128, scale_inputs="allf")
}
ColorBars
converttoyv12
AddGrainC
Interleave(neo_vd.convertbits(16).luma_histogram(),convertbits(16).neo_vd().luma_histogram())
it's still big! edit: but it's better than before!
real.finder
21st June 2020, 18:46
even with this
function luma_histogram(clip c)
{
VersionNumber() < 2.60 ? c. mt_lut (expr="x 16 &u 17 x 15 &u - 1 x 15 &u + ? 14 *", u=-128, v=-128) : c.mt_lut(expr="x 16 &u 17 x 15 &u - 1 x 15 &u + ? 14 *", u=-128, v=-128, scale_inputs="allf")
}
ColorBars
converttoyv12
AddGrainC
Interleave(neo_vd.convertbits(16).luma_histogram(),convertbits(16).neo_vd().luma_histogram())
ConvertToStacked()
DitherPost(mode=-1) #-1 mean round down to 8bit
but this did it!
function luma_histogram(clip c)
{
VersionNumber() < 2.60 ? c. mt_lut (expr="x 16 &u 17 x 15 &u - 1 x 15 &u + ? 14 *", u=-128, v=-128) : c.mt_lut(expr="x 16 &u 17 x 15 &u - 1 x 15 &u + ? 14 *", u=-128, v=-128, scale_inputs="allf")
}
ColorBars
converttoyv12
AddGrainC
Interleave(neo_vd.luma_histogram(),convertbits(16).neo_vd().ConvertToStacked().DitherPost(mode=-1).luma_histogram())
so it's bug in convertbits(8)? convertbits(8,dither=1) seems ok, so I think -1 (default) is not ok, pinterf :)
edit: maybe make -1 like DitherPost one (round down to 8bit) and new -2 like how -1 in convertbits do now
edit2: -1 in convertbits now is like ConvertToStacked().Dither_get_msb() which is bad! very bad
MeteorRain
21st June 2020, 22:12
> neo_vd().convertbits(16)
and
> convertbits(16).neo_vd()
are different things. 8-bit VD has much less accuracy than 16-bit VD so the difference will still be big.
> neo_vd()
and
> convertbits(16).neo_vd()."round-down-to-8"
will give similar result.
ConvertBits, according to the manual (wiki), is to do bit-shifting by default. It's only meant to be used when lsb IS 0. So I think you simply used the wrong function, or used the function in the wrong way. And I don't think it makes sense to change the default behavior of convertbits.
real.finder
21st June 2020, 22:33
with convertbits(8,fulls=true) it kinda similar in case of noise but there are big difference
romangal
22nd June 2020, 00:55
Using your 'clues', new clip Blank adopts same audio properties as the then current Last clip. [Otherwise Blank would recieve default audio properties, probably not same as required].
anyways, according to MeteorRain and real.Finder, you have other non self inflicted problems, when they are sorted out, then you need use BlankClip as above.
Ok, I understand. Thanks! :thanks:
MeteorRain
22nd June 2020, 04:50
I have uploaded r2 which should fix the audio issue. Please try it, and let me know any issues.
romangal
23rd June 2020, 15:13
I have uploaded r2 which should fix the audio issue. Please try it, and let me know any issues.
I have tried. The sound is playing ok! There is no problem now. But i have to notice that it is quite unstable now. I dont know what exactly happens, but sometimes(not always), when i open script with mediaplayerclassic or virtualdub (appcrash) or avspmod, neo_vd is hanging all of them. I use neo_vd msvc x86.
Thank you - Works nice mostly and fast that is incredible for such a strong and difficult filter as Vague Denoiser.:thanks:
MeteorRain
23rd June 2020, 20:47
That doesn't sound good. Do you have a minimal script that triggers the issue? Or does it happen regardless?
romangal
28th June 2020, 13:34
That doesn't sound good. Do you have a minimal script that triggers the issue? Or does it happen regardless?
This is a CrashInfo.txt. It occurs when i twice open the same script with F2 -reopen video(the first one is ok).
The name of module with mistake is ntdll.dll But if i disable NEO_VD no error is appearing.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.