PDA

View Full Version : Final Improvements (Deinterlacing w/mvbob)


Seraphic-
12th August 2006, 08:26
Hi,

Over the past few weeks I've been doing deinterlacing testing using MVBob, EEDI2, LeakKernelDeint, VitualDub Filter: Deinterlace - Smooth, and even
VitualDub: "Blend Fields Together". For me, there is no comparison, MVBob looks the "best". I say that because the video almost mirrors the raw avi after deinterlacing. There are just a few issues with sharp horizontal lines and with text looking kind of odd as it fades away.

So I just a few questions I would like to ask and any help would be great.

1. What would be a good way I could try to optimize MVBob so that it works better with sharp horizontal lines and text? Oh, and right now, I'm having to keep the videos at 60FPS. (these two issues aren't as bad when doing so)

2. I found a test video to be somewhat "jumpy" after using MVBob to deinterlace it (it's a Playstation 1 game). And by "jumpy" I mean, objects on the screen seem to jump up and down every second or so. I think this is caused by the 30FPS to 60FSP boost. But when I use "TDecimate(mode=0,cycler=1,cycle=2)" it's even worse, so i'm not sure. Cropping also doesn't seem help, as it's doing this in all parts of the video. I don't have this issue when using something like "LeakKernelDeint" and the really the odd thing is it just seems to do this with PS1 games, PS2 games don't look to have this problem.

3. Is it "safe" to crop and FlipVertical a video at the same time MVBob is working it's magic to deinterlace? I thought it would save having to encoding over and over, but would it cost quality to do them all at the same time?

I have other questions but I'll leave it at three for now. I have test videos, but since they are large (few 100MB) I'm not going to post their links. Please post or PM me if you want one to test with.

Thanks

Trixter
12th August 2006, 09:34
I've captured PS1 games and had no trouble, so it looks like you'll have to post one second of footage or at the very least a PNG'd frame if you're going to expect some help :)

Seraphic-
12th August 2006, 19:43
Hi,

Sure, here are a few sample clips. It's kind of hard to see the jumping; but it's there with the two that are using MVBob, not with the LeakKernelDeint one however.

Download Here (http://www.seraphicgate.com/60fps.rar) - MVBob at 60 FPS
Download Here (http://www.seraphicgate.com/30fps.rar) - MVBob at 30 FPS (used "TDecimate(mode=0,cycler=1,cycle=2)")
Download Here (http://www.seraphicgate.com/30fpsleak.rar) - LeakKernelDeint at 30 FPS

scharfis_brain
12th August 2006, 20:05
playstation1 has two resolution modes:
full-frame resolution and field-resolution.

this clip anly has field-resolution.
this means separatefields() is all you need for a proper deinterlace without jumping.

Seraphic-
12th August 2006, 20:10
But the thing is I'm playing the game through a Playstation 2. Not PSone.

Does that matter?

Seraphic-
12th August 2006, 20:10
Also, wouldn't using "separatefields()" remove one whole field lowering the overall quality of the video?

Thanks

scharfis_brain
12th August 2006, 20:26
Look at the static scenes. You'll notice heavy stairstepping due to identical image contents in even & odd fields.
Separatefields() just chains the fields from frames.

720x576@25fps will become 720x288@50fps

Please provide an UNPROCESSED sample clip.

Seraphic-
12th August 2006, 20:43
Sure, here is a sample raw avi in YUY2.

EDIT: PM'ed you the link as it's 130MB

Thanks

check
13th August 2006, 05:34
The bumping up and down is a side effect of the type of deinterlacing used - ie a bobber.
Bobbers take each field and use it to create an entire frame - which is why mvbob produces twice the output framerate. As every other field is one pixel (or is it a half pixel? I forget :P) above/below the previous field static areas will appear to 'bob' up and down. To fix this you use the seperatefields() command which will align them correctly before deinterlacing.

Btw, the other type of deinterlacer is a 'weaver', which combines two fields into one frame, thus producing an output framerate the same as input. While this smooths scenes where nothing is changing (as the deinterlacer effectively just had to merge the two fields), it can cause issues in motion because the deinterlacer is merging two fields with different content.
Some deinterlacers combine these two methods based on all sorts of trickery, but those are the basic theories.

Seraphic-
13th August 2006, 09:03
Well, I gave separatefields() a try, but it turned the 640x480 video into 640x240. I guess that's what it does, but can I get it back to 640x480 or is that not possible?

Seraphic-
13th August 2006, 12:39
scharfis, did you get my PM with the link to the video?

scharfis_brain
13th August 2006, 15:32
@check: this is special video footage that ALWAYS causes vertical bobbing due to its nature.

@Seraphic-: the native resolution of this video is 640x240. There is NOT more resolution. I explained this in my previous post!
in static scenes you get heavy stairstepping, becaus both fields contain IDENTICAL pixels.
With normal interlace the even and odd fields are shifted 1/2 pixel against each other allowing full frame resolution with deinterlacing.

With your footage you anly can get field resolution becuase there is not more resolution.

Seraphic-
13th August 2006, 17:39
Oh, I see now. It takes 240+240 to make 480. Thanks for your help, but I don't think this is going to work for me. I would like to keep the video at x480, and the other issue is the video looks squished at x240.

Also, why is there stairstepping/jumping after using MVBob but not with LeakKernelDeint?

JMP
13th August 2006, 18:35
sharfis_brain explained it already twice... Your video is 640x240 different pixels. Every pixel of this 640x240 is duplicated, thus you get 640x480 frame.

Now, a bob deinterlacer is built to recover missing fields in a video that has no duplicated pixels. It splits a frame into fields and for each of them tries to "reconstruct" the other one. In your case the correct way of reconstruction would be simply duplicating, but the bob filter does not know that. It tries instead to interpolate the "missing" field (alternately odd/even lines), leading to "bobbing" of the whole picture.

What you need is probably something like
Separatefields().bilinearresize(640,480)
Or, if you don't want to interpolate the other field, but just duplicate (as in the original video)
Separatefields().Selectevery(1,0,0).Weave()
(never tested the last one... would Selectevery(1,0,0) work as frame duplicator?)

Read a bit about video resolution and interlacing...

scharfis_brain
13th August 2006, 19:18
Every pixel of this 640x240 is duplicated, thus you get 640x480 frame.
No completely true. The fields are the same in vertical resolution as well as shift. But you got different contents with movements.
spoken in a different manner:
you got a true progressive video here.
A progressive video with 640x240 pixels.

Trixter
15th August 2006, 04:38
But the thing is I'm playing the game through a Playstation 2. Not PSone. Does that matter?

No, because the video output is the same.

PS3 might be a different story; I believe they're saying it performs line doubling. But PS2 and PS1 output low-res modes the same way.