I noticed that on some places even if it works great for removing the drop outs http://forum.videohelp.com/threads/350646-RemoveDirtMC-error-cant-engage-it-at-all
( best that i have seen and tried with other scripts so far ) it leaves nasty artifacts i tried to deinterlace first and the nasty artifacts are gone but i deinterlaced ( i loose half the information so i don't want to do that
is this script ok it seems ok but is it keeping the interlaced and the filter works ?
or is there better solution to keep interlaced and use the devcr ?
+ Reply to Thread
Results 1 to 10 of 10
Thread: keeping interlaced with devcr
Yes, that should be OK and the output will be interlaced (assuming the source is). In the case where DeVCR() doesn't do anything the output will be the same as the input.
That commonly used de-interlace/re-interlace is often the only way to clean up many problems (I'd prefer QTGMC over yadif), or to repair some major faults. But note that the code discards 2 of every 4 fields.Our inventions are wont to be pretty toys, which distract our attention from serious things. They are but improved means to an unimproved end. -- Henry David Thoreau
The code posted by the OP discards no fields. The frames are separated into sequential fields , top and bottom fields are split into two separate streams, the top/bottom streams are interleaved back into one stream, then woven back together into interlaced frames.
The code posted by Pandy doesn't discard (overall) any fields either. It first doubles the frame rate with Yadif() (each field is converted to a frame), then the double frame rate frames are separated into fields, the interpolated fields are discarded, and the original fields are woven back into interlaced frames at the original frame rate.
In theory Yadif(mode=1) (double frame rate) could be better at times (in this application) but I find it makes many mistakes so it may not work as well in this application. It's worth a try:
AVISource("") AssumeTFF() Yadif(mode=1, order=1) # double frame rate smart bob, TFF f1=SelectEven().Devcr(10) f2=SelectOdd().DeVCR(10) Interleave(f1,f2) # back to one stream, double frame rate SeparateFields().SelectEvery(4,0,3).Weave() # back to original frame rate and interlaced
Last edited by jagabo; 9th Nov 2012 at 06:44.
The biggest problem with this plugin is that it doesn't have interlaced "preset" so it screws the interlaced material. I tried this approach with the script posted and it is much better than before ( when not separating and weaving back ). Before there was on times some like small block of like different places like squares and rectangles probably like error from the filter. Now I noticed "morphing" artifacts especially when there are short jerky shaky movements on that places and it seems that filter losses there.
It is however effective on those lines and lower numbers mean stronger filtering ( opposite of other filters ) and more artifacts along with it. I will try to do more passes with 30 instead of one pass with 10 ( i used as low as 1 stronger one and almost eliminate all the lines) to do the job.
jagabo, true what's being discarded by yadif or QTGMC is interpolated material -- so, in effect, nothing is "lost". I find I just have to be careful with those two plugins, as sometimes I eel something is amiss in the results -- even though I use it all the time. I get better results with some mild denoising or repair before the deinterlace routine, as interpolation sometimes carries some forms of artifacts/noise/whatever across multiple frames. Most of the time, QTGMC and yadif give me "better" results. Depending on the video's specific problems, you just have to be careful and fiddle a bit.Our inventions are wont to be pretty toys, which distract our attention from serious things. They are but improved means to an unimproved end. -- Henry David Thoreau
There is always good, old and fully predictable BOB()
I'm not sure Bob() will work well with DeVCR(). DeVCR() compares a line to the lines above and below to determine if that line is garbage or valid picture. With Bob() those lines will be partially the garbage, making detection more difficult.