Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
Thread Tools | Search this Thread | Display Modes |
11th July 2012, 13:31 | #1 | Link |
Registered User
Join Date: Aug 2007
Posts: 79
|
after IVTC'ing anime material still some combed frames left
hello there
have some trouble here to ivtc batman the animated series. tried the following usual combo: Code:
tfm(chroma=true, pp=0, slow=2) tdecimate(mode=1) thought about srestore (doubleblend removal) with blur or vinverse as a preprocessing step: Code:
vinverse() #or blur(0,1) Srestore(omode="PP3") so the last thing I tried was to combine both clips with conditionalfilter. only to use frames of the srestore clip on still combed frames of the tfmclip. but since the frames doesn't match exactly it introduces jerky movement on cam panning: Code:
ConditionalFilter(tfm, sres, tfm, "IsCombedTIVTC(chroma=true)", "=", "true") tdecimate(mode=1) hope you can help me with the problem. I uploaded the intro of an episode as a sample (35MB): http://mir.cr/14HLXHXE |
11th July 2012, 14:58 | #3 | Link |
Registered User
Join Date: Aug 2007
Posts: 79
|
@librarian
that's nearly the same solution like my vinverse/blur.srestore-try with the same described problems. besides that fixblend seems to produce worse results than srestore. look at frame 333 with your script (the eyes): |
11th July 2012, 15:41 | #5 | Link |
Registered User
Join Date: Aug 2007
Posts: 79
|
yeah you're right. the error was probably caused by non-linear order of frame serving.
I used vdub to preview the avs. put in a requestlinearorder after fixblendivtc and its ok now. poblem still remains: because of the preprocessing step for the blend removal there is a loss in sharpness and detail in fine textured areas compared to the tfm.tdecimate clip. edit: my script for now with the best results: Code:
DGDecode_mpeg2source("VTS_01_1.d2v") ColorMatrix(d2v="VTS_01_1.d2v", threads=0, interlaced=true) vinverse().Srestore(omode="PP3", cache=10) tdecimate(mode=1) Last edited by Sp00kyFox; 12th July 2012 at 14:32. |
15th July 2012, 23:53 | #6 | Link |
Registered User
Join Date: Aug 2007
Posts: 79
|
came up with a solution while searching through the interwebs. maybe it can help someone else.
here is the commented code (based on Didée), you still have to add extra filters for any other artifacts or picture enhancements: Code:
luma = tfm(pp=0, slow=2) chroma = vinverse().Srestore(omode="PP3", cache=10) # manual sync: figure out which frame (previous,current aka p,c) of 'chroma' clip is most similar to current frame of 'luma' clip # 46*log(|x-y|+1) uses the full [0,255]-range and scales little differences better than |x-y|*2 diffp = mt_lutxy(luma,chroma.selectevery(1,-1),"x y - abs 1 + log 46 *") diffc = mt_lutxy(luma,chroma, "x y - abs 1 + log 46 *") # average difference between compared frames mp = mt_lutf(diffp,diffp,"avg",expr="x") mc = mt_lutf(diffc,diffc,"avg",expr="x") # build conditional masks based on the caculated comparisons maskp = mt_lutxy(mp,mc,"x y < 255 0 ?") # finally merge the luma of the tfm with the chroma of the srestore clip accordingly to the binary mask MergeChroma(luma,chroma).mt_merge(chroma.selectevery(1,-1),maskp,luma=true,Y=2,U=3,V=3) tdecimate(mode=1) # debug output. check calculations and decisions #stackhorizontal(stackvertical(maskp,luma)\ #,stackvertical(chroma.selectevery(1,-1),chroma)) #stackhorizontal(stackvertical(diffp,diffc)\ #,stackvertical(mp,mc)) Code:
separatefields.bilinearresize(width,height) stackvertical(last.greyscale(),stackhorizontal(last.utoy(),last.vtoy())) simplified the code (only current or previous frame is necessary) and change to a better frame distance norm. since after every calculation the result is rounded to the next integer in [0,255] it's better to scale it logarithmically, otherwise small differences are indistinguishable. the constant factor 46 is there to stretch the value to our luma range. Last edited by Sp00kyFox; 20th July 2012 at 00:45. |
29th July 2012, 09:30 | #7 | Link | |
Registered User
Join Date: Jul 2007
Posts: 4
|
Quote:
|
|
24th August 2012, 13:34 | #8 | Link | |
Registered User
Join Date: Aug 2007
Posts: 79
|
Quote:
Last edited by Sp00kyFox; 25th August 2012 at 11:23. |
|
22nd November 2020, 19:38 | #10 | Link |
Registered User
Join Date: Jan 2003
Posts: 124
|
My source is a 29.97 cartoon with bad interlace resizing.
A TFM().TDecimate() removed most of the interlace, but there are chroma ghosting and linear chroma leftovers in some frames. I attempted to run the above script, but I get this: Code:
Average: all clips must be have same or greater number of frames as the first one. (Srestore.avsi, line 53) (New File (1), line 12) |
Thread Tools | Search this Thread |
Display Modes | |
|
|