PDA

View Full Version : Noise reduction on interlaced video


WarpEnterprises
7th February 2006, 09:14
Is there a (spatial+temporal) noise reduction filter which really works on interlaced video?
All I found is to SeparateField the video and process the fields on their own.
But wouldn't it be much better to use the combined information of both fields at once (of course taking into account the temporal difference between the fields)?

AS
7th February 2006, 09:30
I believe scharfis recommends doing a bob().denoiser().reinterlace() for these kind of tasks

AVIL
7th February 2006, 09:40
Hi,

I agree with that. I do the bobbing with tritical's filter EEDI2 upsizer. But fft3dfilter and vaguedenoiser have interlaced modes that performs well.

foxyshadis
7th February 2006, 16:24
"interlaced" mode always just means "process only even scanlines, then only odd", it doesn't actually use any extra info from the other field. When you think about it, they'd have to include the whole code from a bobber (kernel, ela, mc) just to do it, and then reinterlace afterward, so it's no faster and potentially worse quality than doing it yourself.

WarpEnterprises
7th February 2006, 17:01
(regarding a median filter like convolution3d) - my thoughts were:
- use a normal matrix for the neighbour pixels on the current field
- use a "shifted by a half line" matrix for the past and future field
- but not doing any actual bobbing and only using the shifted(bobbed) fields to gather the necessary median statistic, but not to use the values for calculating the average which is eventually used as new result pixel (in order to avoid field blending).

Mug Funky
8th February 2006, 03:17
interesting, but the problem with noise reduction is a half-pixel shift will reduce high-frequency noise by a significant amount, and most likely throw off the calculations. maybe a quarter-pel shift on both fields would be best for finding metrics, so that way the error is the same on both fields, and all that's needed to correct it is a simple multiplier.

good idea though - i wonder if it could be applied to more things? c3d is a bit outdated by now (though still pretty useful).

mochevolete
24th February 2006, 13:29
..... c3d is a bit outdated by now (though still pretty useful).
sorry for asking but wich filter would be better for denoise instead of C3D ?

Nik :)

Mug Funky
25th February 2006, 02:48
jury is still out on that one. there's a few denoiser comparisons floating around the forum (i believe there's some stickied in the usage forum), so you could look there.

i'm currently using (rather outlandish) combinations of denoisers, but each script is tailored to a specific task. i've yet to find one that works nicely for everything without killing off too much detail.

some suggestions though:

- degrainmedian by fizick
- fft3dfilter/fft3dgpu (use the latter if you have a fast video card, like 6600 or above, pci-e preferred). the former by fizick, the latter ported to GPU by tsp.
- removegrain/removedirt by kassandro

don't use all of these at once though, unless you know what you're doing :)

hvj
6th March 2006, 09:09
You could try DVfilter, that is an avisynth script using spatio-temporal filtering and MVTools for deciding where to use temporal and where to use spatialsmoothing. There results are great for home DV shots, but DVfilter is terrible slow.
It is for interlaced input of course, so works on separated fields. (but could be used on non-interlaced input also...)

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

hvj

JuanC
7th March 2006, 05:20
Is there a (spatial+temporal) noise reduction filter which really works on interlaced video?
All I found is to SeparateField the video and process the fields on their own.
But wouldn't it be much better to use the combined information of both fields at once (of course taking into account the temporal difference between the fields)? You made me remember... May be you can find interesting reading some old posts from HighSpeedDub (http://forum.doom9.org/showthread.php?p=365047#post365047) about PeachSmoother. After reading that, I understood why some filters could cause problems when using them more than once in the same script (global variables).