PDA

View Full Version : Flickering after Bob


Pentajet
7th September 2007, 00:42
I am trying to produce a good quality output in PAL out of my She-Ra NTSC DVDs. The picture looks acceptable to me (not fantastic but passable) BUT the Bob with tdeint produces too much flickering. Here is a sample:

http://www.mediafire.com/?5j5xbm0nldl (look at Glimmer's hand to see the problem clearly)

I do need to use a Bob because the NTSC DVDs are really a PAL conevrsion with blended fields and I need to Bob to recover the original progressive frames (the progressive frames consist of 5 fields hidden within a sequence of 12 - I can recover them using a small routine with Execl since I finally managed to find the exact pattern that's on these DVDs)

I would like to avoid using filters like ReduceFlicker etc. that may produce artifacts on the output. Any alternative deinterlacers or smarter settings with the one I am using, maybe?

Any help much appreciatted.

Atak_Snajpera
7th September 2007, 00:56
Use Yadif deinterlacer

http://forum.doom9.org/showthread.php?p=1040077#post1040077

neuron2
7th September 2007, 01:04
In the future, post unprocessed *source* video. When you post only your processed result all we can do is say "Oh my, quite right." But if you post the source we can try different things to give you better advice.

Didée
7th September 2007, 01:30
I would like to avoid using filters like ReduceFlicker etc. that may produce artifacts on the output.
ReduceFlicker(strength=1) will not produce any artifacts in this case. Because of the properties of bobbed fieldblended(!) content, the necessary 2-fold oscillation period per 5 frames can not be met due to motion. It can only be met due to bob flicker, hence RF(1) is safe.
However, the smart part of any smart bobber may interfer with ReduceFlicker, so that it can't always remove all flicker of the bobber.
The most balanced compromise between 'calm' result and 'full' resolution which I found so far, mentioned earlier here (http://forum.doom9.org/showthread.php?p=968473#post968473), is this:

EEDIbob()
maxx = mt_expand()
minn = mt_inpand()
maxx = maxx.mt_logic(maxx.selectevery(1,1),"max")
\ .mt_logic(maxx.selectevery(1,-1),"max")
minn = minn.mt_logic(minn.selectevery(1,1),"min")
\ .mt_logic(minn.selectevery(1,-1),"min")
reduceflicker(strength=1)
mt_lutxy(mt_convolution("1","1 2 1",U=2,V=2),"x x y - 1.49 * +",U=2,V=2)
mt_clamp(maxx,minn,0,0,U=2,V=2)

Jeremy Duncan
7th September 2007, 02:12
I'm sorry for interrupting, but I tried to use EEDIbob()

I got EEDI2.dll EEDI2_imp.dll, and copied this code and made EEDIbob.avsi

EEDIbob()
maxx = mt_expand()
minn = mt_inpand()
maxx = maxx.mt_logic(maxx.selectevery(1,1),"max")
\ .mt_logic(maxx.selectevery(1,-1),"max")
minn = minn.mt_logic(minn.selectevery(1,1),"min")
\ .mt_logic(minn.selectevery(1,-1),"min")
reduceflicker(strength=1)
mt_lutxy(mt_convolution("1","1 2 1",U=2,V=2),"x x y - 1.49 * +",U=2,V=2)
mt_clamp(maxx,minn,0,0,U=2,V=2)

I then put this into FFDshow avisynth, EEDIbob()
but MPC crashed on me.

What plugins do I need to make EEDIbob() work ?

I want to try it on this clip:
Link to Over Canada d2v (http://www.megaupload.com/?d=MVUIW7OZ)

Didée
7th September 2007, 02:39
No, not like that. The code posted above needs scharfis_brain's function EEDIBob() to be imported beforehand. EEDIBob can be found in the scripts of MVBob or MCBob.

BTW, Leak told that this sample is pure interlaced, not fieldblended. Remember? Therefore, the above posted bobbing code is not suited for it. With true interlaced material, ReduceFlicker is not safe, i.e. it can introduce artifacts.

Jeremy Duncan
7th September 2007, 02:41
Ok. Thank you.

Pentajet
7th September 2007, 14:34
Thanks for all the input. I am trying it right now.

Here is the ORIGINAL in case anyone wants to take a look:

http://www.mediafire.com/?7wwncoyww5y

Nevermind the field blended garbage as I did take rid of that. IN case this can be of any help to anyone (although I doubt it will work on other DVDs) here is how I did it:

1) I bobbed the source
2) I created these five "operators":

.selectevery(12,2,4,7,9,11)
.selectevery(12,3,5,8,10,12)
.selectevery(12,1,4,6,9,11)
.selectevery(12,2,5,7,10,12)
.selectevery(12,1,3,6,8,11)

3) One of these operators applied on the clip above will ALWAYS produce perfect PAL (flickering aside) with ALL frames 100% progressive and not one single blend for the whole 2:30hours of DVD. I took the first 600 frames of the clip and found out which of the five operators works on the first 200 frames (by applying the operators to the bobbed output in turn and seeing which of the five doesn't produce any blends).

4) The pattern shifts every 200 frames by one FRAME (i.e. two fields). This means if op1 works for the first 200 frames, op3 (shift of TWO fields) will work on the next 200. Op 5 will work on the next, then op2, op4, op1, op3, op2, op4, and so on. What I did was created and excel text file to generate a shift every 200 frames.

It's not as complicated as it may sound. It just takes 15 minutes to do all the job. The result, as I said is perfect. I doubt that it will work on other DVDs. NOTE THAT THE LONG "TRIM" LIST IS GENERATED AUTOMATICALLY WITH EXCEL. The bit that requires a little manual work is just the very first trim. Here is a sample script:

source=mpeg2source("e:\DVDs\shera\she.d2v").tdeint(1,1,mtnmode=3)

oper1=source.selectevery(12,2,4,7,9,11).assumefps(25)
oper2=source.selectevery(12,3,5,8,10,12).assumefps(25)
oper3=source.selectevery(12,1,4,6,9,11).assumefps(25)
oper4=source.selectevery(12,2,5,7,10,12).assumefps(25)
oper5=source.selectevery(12,1,3,6,8,11).assumefps(25)

p02=trim(oper2,0,394)
p03=trim(oper4,395,594)
p04=trim(oper1,595,794)
p05=trim(oper3,795,994)
p06=trim(oper5,995,1194)
p07=trim(oper2,1195,1394)
p08=trim(oper4,1395,1594)
p09=trim(oper1,1595,1794)
p10=trim(oper3,1795,1994)
p11=trim(oper5,1995,2194)
p12=trim(oper2,2195,2394)
p13=trim(oper4,2395,2594)
p14=trim(oper1,2595,2794)
p15=trim(oper3,2795,2994)
p16=trim(oper5,2995,3194)
p17=trim(oper2,3195,3394)
p18=trim(oper4,3395,3594)
p19=trim(oper1,3595,3794)
p20=trim(oper3,3795,3994)
p21=trim(oper5,3995,4194)
p22=trim(oper2,4195,4394)
p23=trim(oper4,4395,4594)
p24=trim(oper1,4595,4794)
p25=trim(oper3,4795,4994)
p26=trim(oper5,4995,5194)
p27=trim(oper2,5195,5394)
p28=trim(oper4,5395,5594)
p29=trim(oper1,5595,5794)
p30=trim(oper3,5795,5994)
p31=trim(oper5,5995,6194)
p32=trim(oper2,6195,6394)
p33=trim(oper4,6395,6594)
p34=trim(oper1,6595,6794)
p35=trim(oper3,6795,6994)
p36=trim(oper5,6995,7194)
p37=trim(oper2,7195,7394)
p38=trim(oper4,7395,7594)
p39=trim(oper1,7595,7794)
p40=trim(oper3,7795,7994)
p41=trim(oper5,7995,8194)
p42=trim(oper2,8195,8394)
p43=trim(oper4,8395,8594)
p44=trim(oper1,8595,8794)
p45=trim(oper3,8795,8994)
p46=trim(oper5,8995,9194)
p47=trim(oper2,9195,9394)
p48=trim(oper4,9395,9594)
p49=trim(oper1,9595,9794)
p50=trim(oper3,9795,9994)
p51=trim(oper5,9995,10194)
p52=trim(oper2,10195,10394)
p53=trim(oper4,10395,10594)
p54=trim(oper1,10595,10794)
p55=trim(oper3,10795,10994)
p56=trim(oper5,10995,11194)
p57=trim(oper2,11195,11394)
p58=trim(oper4,11395,11594)
p59=trim(oper1,11595,11794)
p60=trim(oper3,11795,11994)
p61=trim(oper5,11995,12194)
p62=trim(oper2,12195,12394)
p63=trim(oper4,12395,12594)
p64=trim(oper1,12595,12794)
p65=trim(oper3,12795,12994)
p66=trim(oper5,12995,13194)
p67=trim(oper2,13195,13394)
p68=trim(oper4,13395,13594)
p69=trim(oper1,13595,13794)
p70=trim(oper3,13795,13994)
p71=trim(oper5,13995,14194)
p72=trim(oper2,14195,14394)
p73=trim(oper4,14395,14594)
p74=trim(oper1,14595,14794)
p75=trim(oper3,14795,14994)
p76=trim(oper5,14995,15194)
p77=trim(oper2,15195,15394)
p78=trim(oper4,15395,15594)
p79=trim(oper1,15595,15794)
p80=trim(oper3,15795,15994)
p81=trim(oper5,15995,16194)
p82=trim(oper2,16195,16394)
p83=trim(oper4,16395,16594)
p84=trim(oper1,16595,16794)
p85=trim(oper3,16795,16994)
p86=trim(oper5,16995,17194)
p87=trim(oper2,17195,17394)
p88=trim(oper4,17395,17594)
p89=trim(oper1,17595,17794)
p90=trim(oper3,17795,17994)
p91=trim(oper5,17995,18194)
p92=trim(oper2,18195,18394)
p93=trim(oper4,18395,18594)
p94=trim(oper1,18595,18794)
p95=trim(oper3,18795,18994)
p96=trim(oper5,18995,19194)
p97=trim(oper2,19195,19394)
p98=trim(oper4,19395,19594)
p99=trim(oper1,19595,19794)
p100=trim(oper3,19795,19994)
p101=trim(oper5,19995,20194)
p102=trim(oper2,20195,20394)
p103=trim(oper4,20395,20594)
p104=trim(oper1,20595,20794)
p105=trim(oper3,20795,20994)
p106=trim(oper5,20995,21194)
p107=trim(oper2,21195,21394)
p108=trim(oper4,21395,21594)
p109=trim(oper1,21595,21794)
p110=trim(oper3,21795,21994)
p111=trim(oper5,21995,22194)
p112=trim(oper2,22195,22394)
p113=trim(oper4,22395,22594)
p114=trim(oper1,22595,22794)
p115=trim(oper3,22795,22994)
p116=trim(oper5,22995,23194)
p117=trim(oper2,23195,23394)
p118=trim(oper4,23395,23594)
p119=trim(oper1,23595,23794)
p120=trim(oper3,23795,23994)
p121=trim(oper5,23995,24194)
p122=trim(oper2,24195,24394)
p123=trim(oper4,24395,24594)
p124=trim(oper1,24595,24794)
p125=trim(oper3,24795,24994)
p126=trim(oper5,24995,25194)
p127=trim(oper2,25195,25394)
p128=trim(oper4,25395,25594)
p129=trim(oper1,25595,25794)
p130=trim(oper3,25795,25994)
p131=trim(oper5,25995,26194)
p132=trim(oper2,26195,26394)
p133=trim(oper4,26395,26594)
p134=trim(oper1,26595,26794)
p135=trim(oper3,26795,26994)
p136=trim(oper5,26995,27194)
p137=trim(oper2,27195,27394)
p138=trim(oper4,27395,27594)
p139=trim(oper1,27595,27794)
p140=trim(oper3,27795,27994)
p141=trim(oper5,27995,28194)
p142=trim(oper2,28195,28394)
p143=trim(oper4,28395,28594)
p144=trim(oper1,28595,28794)
p145=trim(oper3,28795,28994)
p146=trim(oper5,28995,29194)
p147=trim(oper2,29195,29394)
p148=trim(oper4,29395,29594)
p149=trim(oper1,29595,29794)
p150=trim(oper3,29795,29994)
p151=trim(oper5,29995,30194)
p152=trim(oper2,30195,30394)
p153=trim(oper4,30395,30594)
p154=trim(oper1,30595,30794)
p155=trim(oper3,30795,30994)
p156=trim(oper5,30995,31194)
p157=trim(oper2,31195,31394)
p158=trim(oper4,31395,31594)
p159=trim(oper1,31595,31794)
p160=trim(oper3,31795,31994)
p161=trim(oper5,31995,32194)
p162=trim(oper2,32195,32394)
p163=trim(oper4,32395,32594)
p164=trim(oper1,32595,32794)
p165=trim(oper3,32795,32994)
p165=trim(oper5,32995,33194)
p166=trim(oper2,33195,33394)
p167=trim(oper4,33395,33594)
p168=trim(oper1,33595,33794)
p169=trim(oper3,33795,33994)
p170=trim(oper5,33995,34194)
p171=trim(oper2,34195,34394)
p172=trim(oper4,34395,34594)

fin=r1+r2+r3+r4+r5+r6+r7+r8+r9+r12+r13+r14+r15+r16+r17+r18+r19+r20+r21+r22+r23+r24+r25+r26+r27
fin2=fin.vmtoon(sharpen=false, strength=150, thinning=0).ffdshow(preset="shesharp")

EDIT: I tested Didee's script but the result was the same. Anyway thanks everyone for the input! Any more ideas welcome.

EDIT 2: Yadif produces more flicker than tdeint (MUCH more and more artifacts too). I tried using Didee's script but with tdeint instead of EEDIbob. This gave the best result although their is still a lot of flicker but not as much as before.