View Full Version : Use of spatio-temporal filters on interlaced material
joe355
21st July 2006, 01:43
Ive seen other posts on this topic but haven't really understood them. At the moment, the script im using to apply spatio-temporal filtering on interlaced (TFF) material is:
assumeTFF.separatefields()
a=selectodd.MipSmooth(preset="MovieLQ", spatial=4)
b=selecteven.MipSmooth(preset="MovieLQ", spatial=4)
interleave(b,a).Weave()
Is this correct ? Ive also seen "Doubleweave.selectodd()" added after "Weave()", but is this necessary ?
foxyshadis
21st July 2006, 02:44
It's the fastest correct way. Smart bobbing is often better but slower, and if you're just going to reinterlace it's a waste to process it all.
DoubleWeave.SelectOdd is a way of reversing parity (ie, making TFF into BFF). Weave is identical to DoubleWeave.SelectEven. So you'd use the former only if you needed BFF for some reason. (Note this is not the same thing as ComplementParity.)
Serbianboss
21st July 2006, 09:31
Because i always work with interlaced material i found that Smart bobing(like LeakKernelBob) and reinterlance is excellent combination for applying filters.
You first deinterlance the source(with LeakKernelBob), applying filters, and than reinterlance(with separate fields,select every, and wave).
Boulder
21st July 2006, 12:42
It's the fastest correct way. Smart bobbing is often better but slower, and if you're just going to reinterlace it's a waste to process it all.
This is something I've sometimes wondered: since in truly interlaced video every field is almost always different, shouldn't one filter the top field of frame 0 against the bottom field of frame 0, bottom field of frame 0 against top field of frame 1 and the top field of frame 0 etc. assuming the temporal radius is 1. With SeparateFields().Selectxxx() the top field is filtered against the next frame's top field etc.
stickboy
21st July 2006, 13:43
This is something I've sometimes wondered: since in truly interlaced video every field is almost always different, shouldn't one filter the top field of frame 0 against the bottom field of frame 0, bottom field of frame 0 against top field of frame 1 and the top field of frame 0 etc. assuming the temporal radius is 1.Why would you want to do that?
Fields represent different locations in both space and time. If you're applying a temporal filter, you don't want it to be affected by spatial components, so you should not filter top fields against bottom fields.
If you're applying a spatial filter, you don't want it to be affected by temporal components, so in non-static scenes, again you should not filter top fields against bottom fields.
As a pathological case, suppose you have an interlaced source where you have alternating black and white fields. Each frame will have alternating horizontal black and white lines. Apply a naive temporal filter to the fields using your approach, and you'll end up with gray.
Guest
21st July 2006, 14:21
Yes, but your pathological case could apply to frames as well. Suppose you had frames that alternated black and white. Applying a temporal filter to the frames would make gray also.
To get the analog of the frame case for fields, you could do what Boulder suggests, but first shift or interpolate one field to align spatially with the other field.
stickboy
21st July 2006, 14:35
Yes, but your pathological case could apply to frames as well. Suppose you had frames that alternated black and white. Applying a temporal filter to the frames would make gray also.Sure, but in that case, what else would you expect?
To get the analog of the frame case for fields, you could do what Boulder suggests, but first shift or interpolate one field to align spatially with the other field.Well, no amount of non-fractional shifting will ever make either field match spatially to the other. Interpolating works, of course, and that's what the bob/filter/SelectEvery/Weave method does.
Guest
21st July 2006, 16:00
Sure, but in that case, what else would you expect? Well, what else would you expect when applied to fields?
no amount of non-fractional shifting will ever make either field match spatially to the other Nobody claimed that. But it could be good enough to allow for useful field-based temporal filtering.
Revgen
28th July 2006, 06:17
Sometimes sources are so noisy that denoising first is more preferable since it makes it difficult for the deinterlacer, epsecially if it's motion-based. These however are usually TV caps with a lot of crap in them.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.