View Full Version : New Filter: Interpolating Bob
kevina
25th September 2003, 21:26
I just released a new filter, Interpolating Bob. You can find it at http://kevin.atkinson.dhs.org/ibob/.
The filter works identically to the Avisynth builtin Bob filter except that it uses linear interpolation instead of bicubic resizing.
The advantages of IBob over the builtin Bob is:
1) The lines of the dominate field are untouched. In particular
assumetff()
orig = last
ibob()
assumetff().separatefields().selectevery(4,0,3).weave()
compare(last,orig)
Will report 0 difference between the original and the bob than unbobed
video (when the video format is yuy2, with yv12 the chroma will be
slightly different). With the builtin bob this is not the case.
2) A bit faster than the builtin bob.
In can be made even faster by 1) dynamically compiling key parts to
reduce register pressure and take advantage of the "base + index +
displacement" addressing mode, and by 2) using vector extensions.
bilu
26th September 2003, 10:00
Will try it ASAP.
Will you integrate it into SmartDecimate?
Bilu
YY1020
26th September 2003, 16:18
Originally posted by bilu
Will try it ASAP.
Will you integrate it into SmartDecimate?
Bilu
I think that won't integrate into SmartDecimate.
Didée
27th September 2003, 01:50
Ah, that might be of actual interest for me. (http://forum.doom9.org/showthread.php?s=&threadid=61792) ;)
Very nice. Thank you, Kevin.
/puts ibob into the basket.
BTW, Kevin, there is no need to hack something into SmartDecimate to serve my actual script. It works like a charm.
kevina
27th September 2003, 07:58
Thanks all.
I have no plans to intergrate it in SmartDecimate as that will serve nothing.
Theoretically Bob() should be higher quality than IBob() (cubic verses linear). If any one cares to compare the two I would be interested in the results.
It is most usefull when you need to do something like Bob/Filter/UnBob
where Filter is a temporal but noninterlaced aware filter. SeparateFields won't work quite right for filters which consider more than one frame at a time (ie temporal ones) since the scanlines are not in the right place.
Si
27th September 2003, 16:55
Kevin
You've piqued my interest with the "bob/filter/unbob" concept. :)
What advantage do you see/have you found over Viewfields/filter/Unviewfields concept as promoted by many others (OK then - me :p )
regards
Simon
vhelp
27th September 2003, 17:23
@ kevin,
Would you please provide a working AVS sample script please ???
The one you provided is incomplete. I can't get the IBob.dll
to work w/ my DV cam footage source files :(
I keep getting this error:
** LoadPlugin: unable to load "LoadPlugin("c:\dlls252\IBob.dll")"
I also have the avisynth_c.dll in this same folder.
Here is my script:
x="h:\20.39.00.avi"
LoadPlugin("c:\dlls252\ReInterpolate411.dll")
LoadPlugin("c:\dlls252\IBob.dll")
segmentedAVISource(x)
ConvertToYUY2()
#Reinterpolate411()
assumetff()
orig = last
ibob()
assumetff().separatefields().selectevery(4,0,3).weave()
compare(last,orig)
Really appreciate, thanks again.
-vhelp
Didée
27th September 2003, 17:24
@ vhelp: You must load it with LoadCPlugin(...).
What advantage do you see/have you found over Viewfields/filter/Unviewfields concept as promoted by many others I see it the following way:
(assuming 'filter' is a spatio-temporal one)
- with Un/ViewFields, the spatial part works strong, but the temporal part works by comparing only every other field (field n is compared with fields n-2 and n+2), since the direct temporal neighbors are above and below.
- with ibob, both the spatial and the temporal part are comparing pixels against interpolated ones only. But here, the temporal part works more precise, since pixels from fields that are direct temporal neighbors are compared.
So, it depends on what exactly you're going to do. Each method has its pro's and con's.
- Didée
vhelp
27th September 2003, 17:39
Hi Didée,
I must be stupid, but after trying your response of LoadCPlugin(...)
it did not work :(
After using:
LoadCPlugin("c:\dlls252\IBob.dll")
I got, Script error: there is no function named "LoadCPlugin"
I thought we were all using AVS v2.52 these days.. have we gone
backward now ?? Oh well, thanks anyways :)
-vhelp
Wilbert
27th September 2003, 17:44
See YV12 FAQ - Q6. You need "AVISynth C API(by kevina20723)". Load this dll before loading the ibob.dll.
Si
27th September 2003, 18:25
the temporal part works more precise, since pixels from fields that are direct temporal neighbors are compared.
But they are not - since some of the temporal neighbours are interpolated (imaginary) pixels.
It will give different results but not "more precise" :p
regards
Simon
bilu
27th September 2003, 19:39
@Kevin
Your new filter is FAST!!! :D
But I still prefer DGBob on SmartDecimate because it works better on static scenes.
Bilu
kevina
27th September 2003, 19:51
@bilu
It's not meant to replace a Smart Bob such as DgBob() but rather a dumb bob such as the builtin Bob() for reasons stated earlier.
@siwalters
It depends on want you mean on precise. It will be comparing against "imaginary" pixels but once you UnBob the imaginary pixels are not used. If you are using some sort of conditional temporal filter which just compares against the imaginary pixels but doesn't necessary use them, the results will defently be more "precise", especally around scene changes and the like.
Si
27th September 2003, 20:14
It depends on want you mean on precise.
I'm not arguing "precise" - I'm arguing "more precise" (And I'm arguing it with Didee :) )
If you are using some sort of conditional temporal filter which just compares against the imaginary pixels but doesn't necessary use them, the results will defently be more "precise
Now I'm in the ring with you :) (its like a bad tag match :) )
I was asking where/when/how you'd see it in being better than just a simpler splitfields action. You've seem to be saying you can imagine it being better in some situation but you don't have such a situation to hand -- mmm :)
I'm sure you can do better than that (or can you :p )
regards
Simon
kevina
2nd October 2003, 03:15
I was asking where/when/how you'd see it in being better than just a simpler splitfields action. You've seem to be saying you can imagine it being better in some situation but you don't have such a situation to hand -- mmm :)
Well it can make a diffrence with my Conditional Temporal Median Filter (http://kevin.atkinson.dhs.org/temporal_median/). It can handle interlaced material but it handles it much like your Un/ViewFields (I belive). When using the Bob/UnBob approach it can remove a bit more noise around scene changes and objects that stopped moving. Neither method works better than the other as one removes noise the other doesn't and vice versa. For best results you can use the Un/ViewFields and then Bob/UnBob. Since my filter does not touch areas that are not noise the negative effect by applying the filter twice is minimal. Although the chroma will suffer a bit with the Bob/Unbob.
mf
2nd October 2003, 13:57
Originally posted by kevina20723
I just released a new filter, Interpolating Bob. You can find it at http://kevin.atkinson.dhs.org/ibob/.
The filter works identically to the Avisynth builtin Bob filter except that it uses linear interpolation instead of bicubic resizing.
The advantages of IBob over the builtin Bob is:
1) The lines of the dominate field are untouched.
Interesting. Almost like my idea (http://forum.doom9.org/showthread.php?s=&threadid=55934) :D :p.
Mug Funky
22nd October 2003, 14:25
my only prob with this is that it pretty much always gets the field order wrong... maybe cause i'm a PAL baby?
i get around it with:
ibob().selectevery(2,1,0)
but that aside, this is a nice little tool. i've given up trying to duplicate its functionality with scripts. no matter what resizer i use (except pointresize) it will change both fields.
keep up the goodwerk!
kevina
22nd October 2003, 16:01
Does Bob() Also get the field order wrong?
Katie Boundary
21st April 2016, 03:39
Ah, that might be of actual interest for me. (http://forum.doom9.org/showthread.php?s=&threadid=61792) ;)
Very nice. Thank you, Kevin.
/puts ibob into the basket.
It puts the Ibob in the basket or else it gets the hose again!
wonkey_monkey
21st April 2016, 11:13
bob() itself can leave the original fields untouched, if you want it to:
Bob(0.0, 1.0) preserves the original fields for RGB and YUY2 and preserves the Luma but not the Chroma for YV12.
Edit: didn't realise this 13 year old thread had been resurrected for an off-topic dumb joke.
Katie Boundary
22nd April 2016, 06:21
https://scontent-dfw1-1.xx.fbcdn.net/hphotos-xat1/v/t1.0-9/13051675_1680727822191673_1247421397692654430_n.jpg?oh=1592c76b68d4f02facfa79444b9ea781&oe=57784465
But seriously, I don't see any difference in results between hermite bob, catrom bob, and ibob, so this is my go-to bob-deinterlacer for the moment.
EDIT: never mind. Some of my materials end up with frequent color errors after running them through ibob.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.