View Full Version : AnisoTools v1.0 alpha 5
Hi,
http://manao4.free.fr/anisotools-v1.0a5.zip
It is a new set of filters that I'm working on. For the moment, there's only one filter, at_spatial, which is basically a spatial denoiser. It's slow, but not optimized yet (don't expect wonders from optimizations however).
You can have a look at the readme for more informations on the filter.
I release the filter at such an early stage in the development process mostly to have some feedback on it in some real case uses. Be aware that the filter is really tricky to configure.
The set might be extended later with a spatio-temporal denoiser (possibly mo-comped), and an inpainter.
Have fun.
Edited : updated link to the most recent version
Changelog : From v4 to v5 : @ fixed : random black pixels around black & white edgesFrom v3 to v4 : @ fixed : possible crash introduced in v1.0a3From v2 to v3 : + added : proper documentation (avisynth's style)
+ added : per plane specific parameters
+ added : edge and motion protection formulas.
@ fixed : support for edge = 0 or motion = 0.From v1 to v2 : * renamed at_spatial into at_denoise
* changed parameters influence
+ added temporal denoising
+ added motion compensated temporal denoising
- added resolution restriction to mod 16 horizontally & vertically
I'm a bit disappointed not seeing any comments / feedbacks.
Anyway, here's an alpha 2, which adds the mo-comped part to the algorithm. It got even slower, there's still no assembly, and now resolution must be a multiple of 16 both horizontally and vertically.
http://manao4.free.fr/anisotools-v1.0a2.zip
rfmmars
5th May 2008, 22:08
I'm a bit disappointed not seeing any comments / feedbacks.
Anyway, here's an alpha 2, which adds the mo-comped part to the algorithm. It got even slower, there's still no assembly, and now resolution must be a multiple of 16 both horizontally and vertically.
http://manao4.free.fr/anisotools-v1.0a2.zip
Sorry, I will give it a go when time permits, thanks for your efforts.
Richard
photorecall.net
Malcolm
5th May 2008, 23:48
Atm. i'm playing around with your filter (yesterday v1, today v2) and so far i think it's great. cannot tell more at this point.
Thanks a lot!
Malcolm
Mug Funky
6th May 2008, 11:30
hmm, crashes VDM on my AMD X-2, and errors out with an access violation on the quad P4 at work :(
this is with quicktime sources, converted to yv12 in the script, though i don't imagine that would make a difference.
should i track down a single core to try it on? or is that barking up the wrong tree?
btw, if it helps, virtualdubmod (on the AMD) seems to be getting the framecount before it disappears, at least judging from the seekbar appearing the way it does.
i'm eager to try this one out though. more inpainting tools are always welcome, as well as denoisers of all kinds :)
I'm at work right now, so I can't test anything. I'll however emphasize a restriction that would make the filter crash :
resolution must be a multiple of 16 both horizontally and vertically.
Apart from that, I don't see what could make it crash. It shouldn't care about multi cores, nor cpu type.
So Mug Funky, any news on your crash ? If your video is mod16, can you post your avisynth script and tell me the video's resolution, so that I can try to replicate the problem ?
predatorfreak
9th May 2008, 03:10
I like the direction this project is going and I've achieved some excellent results with the at_denoise filter, however, at the speed it runs, I can use MVDegrain3 and achieve better results. However, I am hopeful that as development continues, speed and quality will improve.
Naito
12th May 2008, 15:19
I did a quick test with AnsioTools.
Setup:
ffdshow-tryouts 1926
HuffYUV (FFVH), Colorspace YV12, Predictor Median, Adaptive Huffman Tables: yes
DGMPEG 1.5.0 RC5, TIVTC 1.05
AnsioTools 1.0a2, TNLMeans 1.03
VirtualDUb 1.8 Beta
WinXP SP2
Intel E6600 @ 3,3GHz, DDR2-6400 @ 1.100MHz
Sample:
NTSC-DVD "Neon Genesis Evangelion - Rebuild of Evangelion 1.0 - You are (not) alone"
9122 frames @ 23,976fps (6:20min)
.......
MPEG2Source("Cell Titel 06.d2v", cpu=0)
tfm(mode=4, slow=2, d2v="Cell Titel 06.d2v").tdecimate(mode=1).Crop(16, 16, -16, -16)
1.261,37 MB @ ~192fps
http://img3.imagebanana.com/img/8ebnicva/thumb/1206_raw.png (http://img3.imagebanana.com/view/8ebnicva/1206_raw.png)http://img3.imagebanana.com/img/60k5dnoe/thumb/5942_raw.png (http://img3.imagebanana.com/view/60k5dnoe/5942_raw.png)http://img3.imagebanana.com/img/tbb0oq9s/thumb/6086_raw.png (http://img3.imagebanana.com/view/tbb0oq9s/6086_raw.png)
.......
MPEG2Source("Cell Titel 06.d2v", cpu=0)
tfm(mode=4, slow=2, d2v="Cell Titel 06.d2v").tdecimate(mode=1).Crop(16, 16, -16, -16)
at_denoise(sstep=0.4, tstep=0.4, edge=0.4, motion=1, iterations=10, center=8)
946,54 MB (ca. -24,9%) @ ~3,76fps
http://img3.imagebanana.com/img/fkr28qsu/thumb/1206_at.png (http://img3.imagebanana.com/view/fkr28qsu/1206_at.png)http://img3.imagebanana.com/img/fwkaskys/thumb/5942_at.png (http://img3.imagebanana.com/view/fwkaskys/5942_at.png)http://img3.imagebanana.com/img/bxj1v624/thumb/6086_at.png (http://img3.imagebanana.com/view/bxj1v624/6086_at.png)
.......
MPEG2Source("Cell Titel 06.d2v", cpu=0)
tfm(mode=4, slow=2, d2v="Cell Titel 06.d2v").tdecimate(mode=1).Crop(16, 16, -16, -16)
tnlmeans(Ax=4, Ay=4, Az=1, Sx=2, Sy=2, Bx=1, By=1, ms=false, rm=4, a=0.6, h=0.15, sse=false)
1.056,29 MB (ca. -16,3%) @ ~0,47fps
http://img3.imagebanana.com/img/eyfj2ng6/thumb/1206_tnl.png (http://img3.imagebanana.com/view/eyfj2ng6/1206_tnl.png)http://img3.imagebanana.com/img/d1bezrw6/thumb/5942_tnl.png (http://img3.imagebanana.com/view/d1bezrw6/5942_tnl.png)http://img3.imagebanana.com/img/8rjrt6rq/thumb/6086_tnl.png (http://img3.imagebanana.com/view/8rjrt6rq/6086_tnl.png)
.......
Image 5942_at (2nd picture AnisoTools) shows a bit of gradient. It could be definitively done better, with a little more testing and tweaking on my side. But overall, very good. ATM TNLMeans is my first choice denoising Anime, and he is slow as hell. AnisoTools my be become a very good counterpart. I definitively keep my eye on it.
_____
Really interesting is iterations. Unlike other filters, I can adjust the "speed" of AnisoTools (But keep in mind, it affects the denoising-quality!). I tried something like "How many time I spend AnisoTools" and then tweaked sstep & tstep.
Good to know would be rule of thumb between step and iterations.
_____
A little bug: "edge=0" crashes VirtualDub / MPC.
_____
Feature Request:
* A switch for luma/chroma-planes.
* A switch how many frames proceeded temporal. (Don't even know the number of temporal frames in my little test.)
_____
Question: Is AnsioTools thread-safe using it with SetMTmode()? AnsioTools use only one cpu-core.
Manao
14th May 2008, 19:07
New version's up : http://manao4.free.fr/anisotools-v1.0a3.zip
Changelog : + added : proper documentation (avisynth's style)
+ added : per plane specific parameters
+ added : edge and motion protection formulas.
@ fixed : support for edge = 0 or motion = 0.
Naito : I'm afraid the gradients can't be avoided. Denoising creates them, since it removes dithering. TNLMeans also shows gradients, though they are less pronounced (perhaps because it denoises less).
The crash is fixed.
The rule of thumb between step & iteration is the following : if iteration isn't saturated (i.e, if raising iteration denoises more), then step * iterations constant should amount to roughly the same amount of filtering. Thus, 10 iterations with step 0.2 should be equivalent to 5 iterations with step 0.4.
I don't know how MT achieve threading, but I doubt at_denoise will be MT-friendly. It might work, but even if it does, it will most probably be slower.
Filtering is done recursively. The Nth iteration of the Kth frame is done using the Nth iteration of the frame K-1, and the N-1th iteration of the frame K+1. That means the filter uses implicitely 2N+1 frames temporally when filtering (thus, far more than any other filters).
@all :
Now that I expose the edge protection formula, I'm pretty sure you can achieve sharpening with that filter (though I'm clueless on how good/bad it can be).
Try to have "motion" as high as possible. With the same amount of denoising, temporal denoising should keep more details.
You could work in 16+ bits and then reintroduce appropriate dither in the end when going back to 8 bits.
Manao
14th May 2008, 21:02
I work in 16 bits internally. I don't want to add back dithering, because that encodes badly. Better add it at playback.
What, it won't get fast enough to run during playback? :)
InTrancer
16th May 2008, 12:02
i try to load it but in avsp i have this errors
Traceback (most recent call last):
File "AvsP.pyo", line 5819, in OnMenuVideoToggle
File "AvsP.pyo", line 8925, in ShowVideoFrame
File "AvsP.pyo", line 9467, in PaintAVIFrame
File "pyavs.pyo", line 322, in DrawFrame
File "pyavs.pyo", line 301, in _GetFrame
File "avisynth.pyo", line 277, in GetFrame
WindowsError: exception: access violation reading 0x0644C000
Traceback (most recent call last):
File "AvsP.pyo", line 7123, in OnPaintVideoWindow
File "AvsP.pyo", line 9467, in PaintAVIFrame
File "pyavs.pyo", line 322, in DrawFrame
File "pyavs.pyo", line 301, in _GetFrame
File "avisynth.pyo", line 277, in GetFrame
WindowsError: exception: access violation reading 0x0665C000
avs file
LoadPlugin("D:\Program Files\DGIndex\DGDecode.dll")
mpeg2source("H:\Kimi ga Nozomu Eien\DVD1\VIDEO_TS\s01.d2v", cpu=0)
ColorMatrix(mode="Rec.709->Rec.601", interlaced=false)
crop(4,0,-4,0)
at_denoise()
Manao
16th May 2008, 13:17
resolution must be a multiple of 16 both horizontally and vertically
crop(4,0,-4,0)
So try cropping after denoising
Comatose
14th June 2008, 10:26
dss2("luminary_us480_logo.wmv")
lanczosresize(768,432)
at_denoise()
It explodes. AvsP just starts erroring like mad.
Happens with everything I've tried so far. Tried clearing plugins folder, doesn't help.
superuser
30th June 2008, 18:23
just noticed this filter, thnxs for all the efforts and time. Will try this one out when I get back to my place.
Regards
Naito
10th August 2008, 19:16
I have troubles using the Alpha3.
Alpha2 works flawless for all my encodes. But if I try to switch to Alpha3, it randomly crashes. No clue why (strict mod16). One extreme example: One DVD with 2 episodes. The first episode only works with Alpha2 (Alpha3 crashes), the second with Alpha2 and Alpha3. Both episodes have the same script. :confused: (Also tested with at_denoise() only, and it crashes in the middle of the lossless-encoding.)
Preview in AvsP works some time, sometimes it doesn't. Really weird.
I'm sorry I can't more precise about this case. It's (for me) a random error. I will try to perform some tests, if you can maybe specify some general conditions.
OS: WinXP SP2, AviSynth 2.5.7, AvsP 2.0.2, VirtualDub 1.8
___
Changelog : From v2 to v3 T
+ added : proper documentation (avisynth's style)
BTW, within the zip form Alpha3 is only the old plain TXT from Alpha2.
Manao
10th August 2008, 21:36
You're not the first one to report such random crashes. I have never been able to reproduce them yet, even with a source crashing on someone else's computer, but the crash is more than probably at_denoise's fault. I'll check once more the code, perhaps (yet) another inspection will allow me to find the source of the problem.
anton_foy
14th August 2008, 10:03
Great work Manao! I really like it!
Maybe this is off-topic but you say it works 16-bit internally, does this mean it would be easier to rewrite this for AviSynth 2.6 and process in 16-bit later on?
There are more filters/plug-ins that work 16-bit internal for avisynth?
Manao
6th September 2008, 17:38
Thanks to kokotier, I was able to pinpoint the bug. The new version (http://manao4.free.fr/anisotools-v1.0a4.zip) shouldn't crash anymore.
anton_foy : avisynth 2.6 is already supported. It works internally in 16 bits because it needs more precision. That means that if the input was 16 bits, it would ideally need 24 bits internally.
Naito : documentation is in anisotools/documentation
kampfbrot
13th September 2008, 00:30
So, I tested the new alpha of your AnisoTools, or more at_denoise :)
I stepped across a little problem. With at_denoise() I get on bright areas strange black "lines" and dots near surrounding dark areas.
Can be good seen on the following screen. As far as I could see the problem got something to do with the iterations
http://img-up.net/img/anisoX9A6HzH.png
Script is following:
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\anisotools-25.dll")
AVISource("cgr22.avi")
Lanczos4Resize(704,400)
x=last
a=x.at_denoise(iterations=8).Subtitle("at_denoise /w iterations=8")
b=x.at_denoise(iterations=4).Subtitle("at_denoise /w iterations=4")
c=x.Subtitle("no at_denoise")
StackVertical(a,b,c)
So far, I'm not sure if I'm too stupid or if its a bug in Alpha 4 :D
Manao
13th September 2008, 13:27
It was a bug, it's fixed in this version (http://manao4.free.fr/anisotools-v1.0a5.zip).
As for the lack of filters in anisotools, there's an undocumented and probably buggy texture-based inpainter in it, but I advise strongly against using it. An edge-based inpainter should have followed (the two are needed for proper inpainting), I currently lack time and more importantly motivation (in that specific area).
AVIL
19th September 2008, 14:03
@Manao
A request:
Could be possible modify this filter to use YUY2 clips, converted with interleaved2planar ?
I'm a YUY2 fan.
Thanks
Aevell
29th November 2008, 14:21
Hi!
I tried at_denoise with settings:
at_denoise(sstep=3.0,iterations=8,edge=0.1)
The result is nice, but in fadeins and fadeouts it produces strange squares:
http://pic.ipicture.ru/uploads/081129/thumbs/uS8u9F5mQB.png (http://ipicture.ru/Gallery/Viewfull/9697460.html)
Is there any way to avoid this effect?
martino
29th November 2008, 15:26
Hi!
I tried at_denoise with settings:
at_denoise(sstep=3.0,iterations=8,edge=0.1)
The result is nice, but in fadeins and fadeouts it produces strange squares:
http://pic.ipicture.ru/uploads/081129/thumbs/uS8u9F5mQB.png (http://ipicture.ru/Gallery/Viewfull/9697460.html)
Is there any way to avoid this effect?
I had exactly the same problem, although forgot to mention it.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.