PDA

View Full Version : Plain deinterlacing or Bob+SelectEvery: what do you prefer and why?


Pages : 1 [2]

Chainmax
25th January 2007, 21:57
IIRC, SecureBob is said to sometimes exhibit slight up-and-down bobbing on static scenes, so I'd recommend SecureBob for high motion footage and TDeint+EEDI2 for low motion footage.
During enhancent of a shoddy DVD transfer, I noticed that SecureBob is better at removing aliasing so keep that in mind as well.

Bankis
26th January 2007, 11:43
got it, this time I have good quality NTSC DVD
what do you call low and high motion footage? such concepts aren't new for me (encoding and params for scripts are - learning/reading), but is there criteria to decide if material is high/low footage? or to use old good trials and errors method? ;)

question for Didee - haven't anyone tried to rewrite MCBob as plugin - that should increase (at least in theory) processing speed and decrease processing time

Chainmax
26th January 2007, 12:19
Those terms are actually pretty much literal: high motion is anything with lots of fast movement whereas low motion contains mostly static scenes.

Didée
26th January 2007, 14:24
haven't anyone tried to rewrite MCBob as plugin

Funny you.:) Possible it is, but highly difficult. I can't imagine anyone would try to put such a complex script into a single plugin. That's unrealistic.
A more realistic possibility would be to make helper plugins for some specific operations of the script (i.e. those "grey-centered" in/expand thingies).
But then, right now it's too early even for that: the whole script still is more or less "proof of concept", practically everything in it is likely to change.

One point for a possible speedup is this:
As of now, MCBob does "everything" on full-sized frames (fields blown up by dumb bobbing), but lots of operations possibly could be done directly on the field level.
However the needed rewrite for this isn't trivial, but quite difficult. Moreover, in the phase of "toying around to see what works out best", working with fullsize frames is so much easier.

And lastly: for the next half year, I have zero time for all this video stuff. Thus, there's nothing to expect before autumn/winter.

kxproject
26th January 2007, 14:44
I dream of MCbob plugin for Vegas. It needs good deinterlacing module.

davidhorman
26th January 2007, 16:37
Didée/anyone ;),

One of the computers I use no longer likes mcbob (the other ~25 are still fine) - avs2avi and VirtualDub both exit with no error or crash report. The only change I've made is to update mvtools but even going back to the old version (1.4.13.0) doesn't make a difference. MVFlowFPS2 still works, so I don't think it's that plugin. avs2avi correctly reports the video size, then exits as it begins pass 1/1.

Can anyone suggest what I can try to find out what's wrong? The lack of error messages makes it difficult. Or, is there a particular place I should dissecting mcbob to track down the problem?

Sorry to hear you won't be working on mcbob for a while - I'll be making heavy use of it in the meantime!

David

kxproject
26th January 2007, 22:12
How should i treat these 50 fps movies in a video editor if i want to get 25 fps in the output clip?

zambelli
26th January 2007, 23:03
How should i treat these 50 fps movies in a video editor if i want to get 25 fps in the output clip?
Method 1:
Bob the source, edit the video as 50p, export as 50p, use SelectEven() in Avisynth to reduce to 25p

Method 2:
Edit the video as 25i, export as 25i, bob the video to 50p and use SelectEven() to reduce to 25p

J-Wo
27th January 2007, 05:53
hey all. I've just stumbled upon this thread and must admit that I am just starting to learn how to apply filters for interlaced material. I was once told to simply use a filter chain of:

separatefields(). filter(X). weave()

but now I read there is all this other bob stuff. Could someone please tell me what the difference between these commands are? I know this is in some faq somewhere, so if someone can please point me to the right place I'd be very appreciative!

foxyshadis
27th January 2007, 07:05
A lot of the explanations are stuck in the middle of long threads - in fact, this thread has been over it at least once iirc. There's also a short clarification (http://forum.doom9.org/showthread.php?t=113802) and Herr Didée's very detailed explanation (http://forum.doom9.org/showthread.php?t=120524).

J-Wo
27th January 2007, 16:16
Okay, I think I'm getting the idea... a little bit.. but still have some questions. I hope that's okay (there should be a newbie forum somewhere on doom9 eh?)

The only filters I use for interlaced materials are the spatial filter RemoveGrain and the spatio-termporal DegrainMedian. The latter already has an interlaced=true parameter, so I don't need to worry about that. As for the former, I was wondering if separatefields().removegrain().weave is sufficient or if I should look into other methods? Is there any point in looking into bob, leakkernalbob, selectevery, and all that jazz or is that only necessary for other types of filters? Colour me confused but I know this is a much discussed topic, I'm just finding it difficult to find a repository with all the answers I need. :)

J-Wo
27th January 2007, 16:59
Ha! I think I might have found the answer to my own question. Found this from a doom9 guide at http://www.doom9.org/index.html?/capture/postprocessing_avisynth.html. Please let me know if you guys think this quoted section is correct.
7.2.11 Processing interlaced video

If you want to process interlaced video (thus leaving it interlaced), you should remember the following issue. When using only a spatial smoother, it is sufficient to use:

SeparateFields()
Filter(...)
Weave()

But when using a spatio-temporal smoother (or just a temporal smoother), this produces incorrect results. The reason is that the temporal smoothing occurs over two fields from the same frame (this happens for half the number of frames). To avoid this, you should put them in different clips:

SeparateFields()
even = SelectEven(last).Filter(...)
odd = SelectOdd(last).Filter(...)
Interleave(even, odd)
Weave()

But for me, degrainmedian already has an interlaced mode, so the following line should be perfectly acceptable -- just wanted to check with you guys first tho!

SeparateFields().RemoveGrain().Weave().DeGrainMedian(limitY=5,limitUV=5,mode=3,interlaced=true)

davidhorman
31st January 2007, 17:07
Can anyone see a way to reduce the memory used by mcbob, even if it's at the cost of FPS? My users are starting to notice how slow their PCs have become lately, and it's all because of paging in and out of virtual memory :(

David

Boulder
31st January 2007, 17:28
Using tritical's Avisynth build might help a bit.

davidhorman
31st January 2007, 19:09
Thanks Boulder, I'll give it a try.

David

davidhorman
1st February 2007, 10:43
Well, I gave it a try :( tritical's avisynth.dll is actually using slightly more memory. I've also tried setmemorymax but I guess there's something in mcbob or mvflowfps2 that doesn't obey those limits...

David

Boulder
1st February 2007, 12:23
That's weird. His builds are for optimal memory usage and have always had a nice impact on my system.

MVAnalyse needs a lot of memory, I don't know if there is any way around that.

Didée
1st February 2007, 13:17
Didn't I tell already?
As of now, MCBob does "everything" on full-sized frames (fields blown up by dumb bobbing), but lots of operations possibly could be done directly on the field level.
Quick & big Guesstimate:
would reduce motion-related ressources by (almost) 50%, then needs additional new code to handle the occuring problems ... could end up with savings somewhere in the 20-40% range.

For the "when", read the end of the quoted post ...


BTW, the quickest usage is, obviously,

mcbob(edipre=0.0,edipost=0,sharpness=0.0)

how good-or-bad that result is, ive no clue. Try.

steve77
22nd February 2007, 13:38
http://img506.imageshack.us/img506/7981/errorkc6.jpg

Any Suggestions?

Boulder
22nd February 2007, 14:04
Update your MVTools plugin. http://avisynth.org.ru-->Fizick's plugins.

steve77
22nd February 2007, 14:08
Ok great... I've got it working, but the video comes out 59.97FPS, and MCBob does too. How do I bring it back to 29.97? ChangeFPS? AssumeFPS?

Thanks so much once again.

Terranigma
22nd February 2007, 14:51
Ok great... I've got it working, but the video comes out 59.97FPS, and MCBob does too. How do I bring it back to 29.97? ChangeFPS? AssumeFPS?

Thanks so much once again.

Add Selecteven() or Selectevery(2,0) after mcbob.
Example
mcbob(edipost=2,mtnmode=1).selecteven()

steve77
22nd February 2007, 21:00
Hello all,

Thanks again for your help. I'm encoding a 2h30 minute movie using MVBob() and:

http://img12.imagepile.net/img12/38076woohoo!.jpg

Just wanted to make sure that that's about right given my system.

Core 2 Duo @ 3.2Ghz, 1GB of DDR2-916

Script:

Mpeg2Source("mysource.d2v")
Import("D:\Work Folder\SeeSaw.avs")
Import("D:\Work Folder\MCBob_v03b.avs")
Import("D:\Work Folder\mvbob.avs")
mvbob()
Selecteven()
Lanczos4Resize(512,384)
DeGrainMedian(mode=3)

It looks like it's not multi-threaded, oh well.

Pookie
22nd February 2007, 21:03
Try a SetMemoryMax(x) with the x value being 50% of the total RAM installed on your system.

Terranigma
22nd February 2007, 21:03
It looks like it's not multi-threaded, oh well.

Read up on MT (http://forum.doom9.org/showthread.php?t=94996)

Boulder
22nd February 2007, 21:05
You can't use MT or SetMTMode on MVBob or MCBob because they are MVTools-dependant functions.

Pookie
22nd February 2007, 21:06
Terranigma - MVtools isn't MT compatible.

Terranigma
22nd February 2007, 21:16
Oh ok, thanks for clearing that up guys. I've never went to such extremes as to use strenuous bobbers like mcbob or mvbob for an entire video.

steve77
22nd February 2007, 21:24
I don't mind it using 100% of the RAM if it needs to; it's a folding/encoding box. I was going to run TDeint(mode=2), which is hella faster, but in any case with my x264 settings I can't go as fast as TDeint anyways.

The problem with TDeint was the frames kept bouncing around (slight, but noticable enough to be REALLY annoying.)

So if ~2FPS is about right, that's good with me. Just making sure.

radar
23rd February 2007, 09:59
hi, im trying to use mvbob on this clip... http://www.savefile.com/files/512187 im new to scripts.
looks like it needs to be deinterlaced,unsher of writing the script.

please someone help.:confused:

Blue_MiSfit
23rd February 2007, 10:56
@Steve,

Are you multithreading with x264? Probably, just wanted to check :)

@radar,

Your source looks like pure interlaced NTSC - probably originating on DV. Any deinterlacer is worth trying. If you want to do a format conversion (to PAL, or any resizing at all), then bobbing (double rate) is required. Here's a good place to start with a personal favorite of mine (good balance of speed and quality)

return 29.97fps (same rate)

mpeg2source("C:\radars test\VTS_01_1.d2v")

AssumeBFF()
tdeint(mode=2)


return 59.94fps (bobbing)

mpeg2source("C:\radars test\VTS_01_1.d2v")

AssumeBFF()
tdeint(mode=1)


Replace the d2v path with your own project of course :)

MVBob should work very nicely on that as well (of course!). Worthy contenders are also KernelDeint, TomsMoComp, etc...

~MiSfit

radar
23rd February 2007, 11:18
hi Blue_MiSfit,do i just load tdeint and try your script.:confused:

Blue_MiSfit
23rd February 2007, 11:39
Well, I'm assuming that you have AviSynth installed, and that TDeint is in your plugins folder.

You're not being too clear about your level of understanding :D

And no, you will have to make SOME modifications to my script, like the path to your D2V project. If you don't know how to make a D2V project - get DGIndex. It's a nice utility for getting MPEG-2 from multiple VOBs into one coherent stream that AviSynth loves.

Again, what is your end goal?

~MiSfit

radar
23rd February 2007, 11:57
i have very little understanding on using filters.i do have avisynth loaded and have many filters in my plug in.(TDeint).

im using dvdrebuilder with the filters.i know how to set paths(loadplugins).what i have trouble with is what you use for a script?also what plugins to use?is thier a order that you use when setting the paths for each plugin you use?

thanks for the help...

steve77
23rd February 2007, 13:25
@Blue_MiSfit: Yes I'm setup on 2 threads. x264 isn't so slow on my machine, I'm sure it's the filters I'm using.

I'm just making sure that everything is OK.

Kamui-
1st March 2007, 21:45
Im getting error:

RemoveGrain: invalid mode 20

For a second I thought I read that someone had the error msg somewhere so I went through all the posts 4 times and still havnt found it yet @@, I'm prolly getting old or blind or both =X

Script as follow:

loadplugin("C:\Avs filters\tdeint_25_dll_20060410\tdeint.dll")
loadplugin("C:\Avs filters\MaskTools-v1.5.6\masktools.dll")
loadplugin("C:\Avs filters\mvtools-v1.6.2\mvtools.dll")
loadplugin("C:\Avs filters\masktools-v2.0a30\mt_masktools.dll")
loadplugin("C:\Avs filters\EEDI2v091\eedi2.dll")
loadplugin("C:\Avs filters\removegrain_25_dll_20050501\RemoveGrainSSE3.dll")
loadplugin("C:\Avs filters\removegrain_25_dll_20050501\repairsse3.dll")
loadplugin("C:\Avs filters\reduceflicker\ReduceFlickersse3.dll")
loadplugin("C:\Avs filters\medianblur\medianblur.dll")
import("C:\Avs filters\MCBob_v03c.avs")

Using AVS 2.56 and I have AvsRecursion.dll in /system32

Solution: Yes it was the removegrain, I think I've dled 3 different ver and the one on SeeSaw page worked quite nicely.

Pookie
1st March 2007, 21:47
Your version of RemoveGrain is the culprit.

Livesms
4th April 2007, 21:27
Looks like McBob sounds better then any other deinterlace, but here is my samples
http://img46.imagevenue.com/loc996/th_18475_Original_122_996lo.jpg (http://img46.imagevenue.com/img.php?image=18475_Original_122_996lo.jpg)http://img133.imagevenue.com/loc46/th_18480_McBob_122_46lo.jpg (http://img133.imagevenue.com/img.php?image=18480_McBob_122_46lo.jpg)http://img164.imagevenue.com/loc92/th_18484_Mvbob_122_92lo.jpg (http://img164.imagevenue.com/img.php?image=18484_Mvbob_122_92lo.jpg)
Original - McBob 0.3 - MvBob
Strange color lines with McBob 0.3 and absolutely clear picture with MvBob. Why?

foxyshadis
4th April 2007, 21:47
The frequency pattern is present in the original, but not nearly as strong. Some component of mcbob must be amplifying it, hmm. You might want to use Defreq/Fanfilter either before or after in order to remove it, as well as the luma frequency going in the other direction.

Livesms
5th April 2007, 06:59
The frequency pattern is present in the original, but not nearly as strong. Some component of mcbob must be amplifying it, hmm. You might want to use Defreq/Fanfilter either before or after in order to remove it, as well as the luma frequency going in the other direction.

Can you give an example you see for my case?

morsa
12th April 2007, 08:55
Well, in fact I've been having lots of problems with Mcbob and the chroma channel.
Everytime I have some fast motion scenes ( like a soccer match) I get some color ghosts for the ball.
The effect is like a faint color copy of the yet to come next frame.
Anybody else with the same situation?

BTW, I guess it would be much better to continue discussions about MCbob in its own thread

http://forum.doom9.org/showthread.php?t=124636

davidhorman
12th April 2007, 11:44
Can you post your script or a sample original frame? Perhaps you did a converttoyv12 without specifying interlaced=true, or perhaps the fields were never completely separate in the source.

David

Didée
12th April 2007, 12:02
Thinking over it, it's quite possible that such chroma ghosts might arise: I remember to have used a fixed luma->chroma linking in some parts of the script, for the ease of things. (Can't remember to have seen such ghosts from MCBob, but that's no argument.)

A sample with a few frames showing the problem would be a good idea.

morsa
13th April 2007, 06:28
Right now I'm just trying to isolate the problem.Many different things to check.It is from an HDV source (Sony), so indeed one possibility is that the crappy realtime Mpeg2 compression is ***** the chroma fields as David pointed out.

The only thing that I can't understand is why those ghosts seem to not appear if I directly deinterlace the stuff using Smart Deinterlacer inside Vdub workflow.
The problem is that I can't post that stuff because it is not mine.It is from somebody else's project.
Anyway I managed to have the least noticeable ghosts (but they're still there).I will search for the original script, so you can tell me If I'm doing some nasty things.
Thank you as always.

scharfis_brain
13th April 2007, 12:26
the artifacts are already present in the source.
just replace mcbob() with a simple bob() and you'll see.

so mcbob isn't the one to blame.

Livesms
13th April 2007, 12:36
the artifacts are already present in the source.
just replace mcbob() with a simple bob() and you'll see.

so mcbob isn't the one to blame.

and how can i remove this artifacts?

scharfis_brain
13th April 2007, 13:26
either
- heavy temporal blurring of the chroma planes,
- some spatial wavelet (or fourier) denoising
or
a combination of both.

but I am not sure.

Better ask this in another (new) thread, as it doesn't blong to mcbob() anymore.

morsa
15th April 2007, 20:00
Anyway, one thing that is easily reproducible is this:

Whenever you have some kind of fast moving object (example: windshield wipers) you get as a result the deinterlaced wiper with some ghosting (just the chroma part) from the image behind them.
I guess this could be related to what Didee above told about the chroma copy.

Terka
4th June 2007, 11:33
Could mvbob/mcbob use yadif deinterlacer?

Didée
4th June 2007, 11:41
It could, but what for? Quality won't increase, speed increase would be academic ...

Terka
4th June 2007, 16:05
just want to try

WorBry
5th June 2007, 11:44
IMHO, Yadif is a great 'general purpose' bobber for 'on-the-fly' deinterlaced playback, as well as standards conversion of interlaced content (via a bobbed intermediate).

For (high quality) rendered 50p output however, my staple deinterlacer remains MVBob, although I have found Yadif very useful for previewing DV footage for difficult scenes that call for the special services of MCBob, particularly 'detail moving over detail' and relatively static objects exibiting marked 'vertical jittering' (aka shimmering....Didee, please dont cringe). And therein (for me at least) lies the main drawback of Yadif in that, of all 'smart bobbers' I have tested, it appears to be the most prone to the 'bobby shimmers'.

I raised a similar query over in the Yadif thread, but I'm wondering if there are routines that might be applied to 'calm-down' (or correct) the jitters, even if not as efficiently as the mighty MCBob itself?

Kool3ds
18th June 2007, 18:41
CAn somebody suggest some nice and good bob deinterlacers which can convert fps to 59.94 and then i can use to repal to get it back to 24.975 fps. Thanks in advance.

smok3
18th June 2007, 20:13
just making sure, if my source is 16:9 interlaced any my desired output y resolution is the same or lower than 288, is this the correct approach:

SeparateFields()
SelectOdd()
LanczosResize(512,288)

?

davidhorman
18th June 2007, 22:59
You'll get a less-aliased result by (smart) bobbing instead of separatingfields, because then you'll keep more of the static detail and get less aliasing when you resize (separatefields.selectodd is effectively a nearest neighbour resize to half height).

David

wicked_chan
23rd June 2009, 08:51
Thans very much for didee and every body here.I read all our discussion.I download didee's MCBob_v03c and jase99's MCBob_v03u3_MVT2 and do my test.The result is :

1、They seems cause some damage to my picture on top of my screen.you can look at my picture's top edge.I don't why,I hope somebody can tell me.Thank you.
http://myadultimage.com/images/eb41329l5qcqfogugo.jpg
http://myadultimage.com/images/zo6ktcy3w79fmmru7nr.jpg

2、MCBob by didee is more stable than jase 99's.The stable means the screen 's stability.At fast movements,didee's MCBob is more stable and better.

What about your result?

R3Z
23rd June 2009, 09:10
Thans very much for didee and every body here.I read all our discussion.I download didee's MCBob_v03c and jase99's MCBob_v03u3_MVT2 and do my test.The result is :

1、They seems cause some damage to my picture on top of my screen.you can look at my picture's top edge.I don't why,I hope somebody can tell me.Thank you.
2、MCBob by didee is more stable than jase 99's.The stable means the screen 's stability.At fast movements,didee's MCBob is more stable and better.

What about your result?

Looks like a garbage region that a simple crop + resize or crop + add border would fix.

Does a simple bob show the same artifact ?

wicked_chan
24th June 2009, 16:22
Looks like a garbage region that a simple crop + resize or crop + add border would fix.

Does a simple bob show the same artifact ?

My script is:

LoadPlugin("C:\Program Files\Pure Codec\AviSynth 2.5\plugins\DGDecode.dll")
LoadPlugin("C:\Program Files\Pure Codec\AviSynth 2.5\plugins\UnDot.dll")
import("C:\Program Files\Pure Codec\AviSynth 2.5\plugins\MCBob.avsi")
DGDecode_mpeg2source("f:\192.d2v",info=3) #加载d2v源视频
MCBob()
Crop(8,0,704,480)
LanczosResize(640,480) #强制调整最终屏幕比例
undot()

Should the MCBob after Crop and lanczosResize?:thanks:

R3Z
25th June 2009, 05:34
My script is:

LoadPlugin("C:\Program Files\Pure Codec\AviSynth 2.5\plugins\DGDecode.dll")
LoadPlugin("C:\Program Files\Pure Codec\AviSynth 2.5\plugins\UnDot.dll")
import("C:\Program Files\Pure Codec\AviSynth 2.5\plugins\MCBob.avsi")
DGDecode_mpeg2source("f:\192.d2v",info=3) #加载d2v源视频
MCBob()
Crop(8,0,704,480)
LanczosResize(640,480) #强制调整最终屏幕比例
undot()

Should the MCBob after Crop and lanczosResize?:thanks:

The way you have it is fine mate. Motion Compensated bobbing is best when all the fields are present so there is as much information as possible to reinterpolate lost information.

As a rule of thumb crop should always be done after deinterlacing and generally make it the last thing to be done before resizing.

Have you tried the bob function SecureBob ? Its part of the mvbob function and its super quick and the results are darn good.

wicked_chan
26th June 2009, 17:10
Thank you very much.R3Z.

I don't konw the what happened in MCBob now.But it is very slow.That is true,But very good,hehe.
I will find your SecureBob to have a try.Thanks~

wicked_chan
27th June 2009, 10:20
I read the thread again. I decide to use securebob now.Becuse it is very fast and good.
Could I keep it 60fps? I found 60fps is better than the 30fps.More stable.

Thank you very much.