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.

 Doom9's Forum another restore function
 User Name Remember Me? Password
 Register FAQ Calendar Search Today's Posts Mark Forums Read

 Thread Tools Search this Thread Display Modes
 23rd July 2005, 23:39 #41  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 @yaz I had some time to work on my functions the last night. My next just better Cdeint version I´ll offer next week. But I also created the function for your use. So here is my motion_interpolate_deblend function: Code: ```crop(8,8,-8,-8) ord = last.getparity() ? 1 : 0 a = tdeint(mode=1) c = leakkernelbob(order=ord).BilinearResize(480,288) motion_interpolate_deblend(a, tclip=c, thresh=45) Function motion_interpolate_deblend(clip input, clip "tclip", float "thresh") { ###### PREPARATION ###### e = input.selecteven() o = input.selectodd() tempe1 = e.MVAnalyse(isb=true, sx=4,sy=4, lambda=4000) tempe2 = e.MVAnalyse(isb=false, sx=4,sy=4, lambda=4000) eout = MVInterpolate(e, tempe1, tempe2, nb=1, bl=0.5, el=0.5, fbw=4).trim(1,0) tempo1 = o.MVAnalyse(isb=true, sx=4,sy=4, lambda=4000) tempo2 = o.MVAnalyse(isb=false, sx=4,sy=4, lambda=4000) oout = MVInterpolate(o, tempo1, tempo2, nb=1, bl=0.5, el=0.5, fbw=4) global intout = interleave(oout,eout) global diffval = default(thresh,50.0)/100.0 + 1.0 global output = input global blendclip = tclip ###### FRAMES FOR BLENDPARAMETERS ###### global frame_c0 = blendclip global frame_c1 = blendclip.trim(1,0) global frame_c2 = blendclip.trim(2,0) ###### VAR.. ###### global diff_c2 = 1 global btest1 = 1 global btest0 = 1 ###### Conditional Function Chain, evaluated from bottom to top (!) ###### b99=scriptclip(input, "(btest0 / btestb + btest0 / btest1) < diffval ? intout : output") b4=FrameEvaluate(b99, "global btest1 = LumaDifference(MergeLuma(frame_c0,frame_c2,blendl), frame_c1) / \ (diff_c1 < diff_c2 ? diff_c1 : diff_c2)") b3=FrameEvaluate(b4, "global blendl = diff_c1 < diff_c2 ? 0.5 * Exp(0.85 * Log(diff_c1 / diff_c2)) : \ 1 - 0.5 * Exp(0.85 * Log(diff_c2 / diff_c1)) global btest0 = btest1") b2=FrameEvaluate(b3, "global diff_c2 = YDifferenceToNext(frame_c1) global btestb = btest0") b1=FrameEvaluate(b2, "global diff_c1 = diff_c2") return(b1) }``` It use the newer simpler and better Cdeblend, but it doesn´t double the frames, it interpolates the motion. I don´t like the results of mvinterpolate too much, just to blocky for my eyes. But of course better than your strange blends. Higher thresh values mean detecting more blends (everything higher than 75 is too heavy I think). Just try it out. I don´t tested it till now together with Cdeint, but you can try if they run together. Alone it just runs stable for me. I hope this help you a little bit. ps: I don´t know much about the mvtools parameter. If you want to tweak them, therefore you should ask anybody else. Last edited by MOmonster; 26th July 2005 at 00:00.
26th July 2005, 19:26   #42  |  Link
MOmonster
Registered User

Join Date: May 2005
Location: Germany
Posts: 495
@all
Ones more I updated the my function. It has many big changes, not only the change of the name.
I wrote a readme and created a package that includes Cdeint, Crestore and Cdeblend.
The bthresh value and with it the blenddetection work different from the last version. The motion is now much better and many other changes applied to the function. It is really worth a try.
Quote:
 Originally Posted by scharfis_brain how does it handle the Starship Voyager Intro video? Is it able to deblend the nebula scene without jerkyness?
Yes on my test, the newest version really seems to handle this hard stuff.

 28th July 2005, 15:30 #43  |  Link Didée Registered User   Join Date: Apr 2002 Location: Germany Posts: 5,391 Oh, the attachment has appeared Could only do two small tests so far on Crestore. Judging from these, the new routine seem to do a darn good job. Very well done, MOmonster! And yes, even the VOY intro is almost perfect now. Small problems detected: 1) In the beginning, from ca. 0:06 to ca. 0:14, there was a slight "pulsing" in the motion - not jerky, just a very small speed difference in the flow of motion. However the effect was not very easy to spot. 2) A clear jerk (dup) was produced around approx. 0:37 (floating blue nebula scene), but this could also have been caused by decimating to 24fps instead of 23.976. (Should be re-tryed with another decimator.) 3) The blended scene transition at 0:49 was definetly jerky - the flying rock was appearing in a bonanza style ... No. 1) is rather minor - I just noticed it on 3rd view. No. 2) could be an issue of the decimator, so it doesn't count for now. This leaves us with 3) as the only noticeable error in the whole sequence. This is a very good result indeed. In relation to No. 2) , I'd suggest to switch to another decimator than decimate() - either TDecimate or FDecimate. In the most common standard case, for each 1000 PAL frames there *are* only 959 FILM frames available to restore. Decimating to 24fps tries to restore 960 FILM frames instead, so one jerk (duplicate) is preassigned. There's no guarantee to avoid these by decimating to 23.976 fps, but the chances are much better. __________________ - We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) Last edited by Didée; 28th July 2005 at 15:33.
 28th July 2005, 16:15 #44  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 Thanks for the testing Didee, the first and the second point I know very well. The first is because it don´t find the pattern so accurate, it need some seconds or better a high motion scene (with clear fields) to find the pattern offset more accurate. And yes the second point is because of the decimation process. Theoretical tdecimate should give better results with the right settings, but I don´t get it running together on my pc (not enough ram I think or something similar). Fdecimate doesn´t create good results, that´s why decimate is recommed. Because of the third point, I´ll have a closer look on it. Maybe it´s just a point of the bthresh. We´ll see. I already think about the next version, but mainly to get it more stable and maybe a little bit faster. MOmonster Last edited by MOmonster; 9th August 2005 at 23:45.
 18th August 2005, 12:59 #46  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 Ok, ones more a new Version (v0.9b) of Crestore is out. Also Cdeblend is updated. The speed problems are solved. This version is the fastest Crestore till now, also the dup problem seems to be solved. I really like the output. The readme is updated, there are some new parameters, so please read it. At this point I think, that it is a real alternative for restore24. Also the quality fanatics should have a look on it.
 18th August 2005, 14:24 #47  |  Link Didée Registered User   Join Date: Apr 2002 Location: Germany Posts: 5,391 I would give applause, but ... try processing the Voyager Intro with an additional "trim(8,0)" before doing anything else, and prepare for an effect. BTW, somehow the flying rock is still riding bonanza for me? __________________ - We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!)
 19th August 2005, 08:34 #48  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 @Didee So I use trim(8,0) before the script. No problems. It makes no difference for me. Or did you use it only on the bobbed inputs? I switched framewise the first 1800 frames and there were no dups, but how fluency the motion is I can´t say you, because on my 60 hz monitor the whole intro doesn´t looks that smooth. I try to make it better in my next version. I know what you mean with the motion of the rock. No dups, but bad motion, because there are too many blends left. I think with the right settings it should be possible to make it better. I will play a little bit with the parameter this evening. Last edited by MOmonster; 19th August 2005 at 08:40.
 19th August 2005, 13:03 #49  |  Link Didée Registered User   Join Date: Apr 2002 Location: Germany Posts: 5,391 Oh, indeed. My apologies. In fact I was testing the version you PM'ed me, and that one showed the behaviour I mentioned. And since you said apart from some minor thingies it were practically the same, I drew my conclusion. Still, I think your used method is not correct, and don't understand why it seems to work nonetheless: Basically, Crestore_xx is producing a de-blended stream @ input framerate, and you're simply calling a "changeFPS(x.xxx)" on that, at the end. This seems more than risky to me, since the source can contain the blends in arbitrary positions, where ChangeFPS works its way through in a fixed pattern. Or did I miss something, and ChangeFPS has bacome a smart decimator that chooses the least-difference frames for dropping? __________________ - We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!)
 21st August 2005, 22:56 #50  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 @Didee I pm'd you to explain how my function does it. @all A smaller update of the package. A small improving of the blenddetection should give better results (also for the rock scene, but still far from perfect). Crestore and Cdeblend don´t have any longer a nlv parameter.
 24th August 2005, 21:23 #51  |  Link Roscoe62 Registered User   Join Date: Nov 2004 Location: NZ Posts: 141 At the risk of incurring wrath for being a total newb, I'd like to know the best way to use this function. I'm trying to "clean up" my PAL ST:TNG episodes and using a function like this seems the right way to go. However, I'm unsure of the best way to apply it in an avs script. I know I'll be using a .d2v file based on the DVD Vobs of the individual episode for an input. I also know that, ultimately, I wish to produce an XVid file as the finished result, by feeding VDubMod the avs file. However, is it better to apply a function like this as a separate step before doing the XVid conversion - i.e. Produce a "corrected" file first before worrying about doing the XVid conversion (and if so, a file of what format is best?), or do it all in one go - fix it AND produce the XVid? Sorry if this seems like an overly simple question to ask, but the avisynth FAQs and tutorials don't really cover a situation as specific as this one, and I'm grateful for any help or advice. Cheers Ross
 24th August 2005, 21:52 #52  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 @Roscoe62 Did you already try this function. Imean for some sources it works really nice, but in general restore24 still produced the better results in my tests. But of course the big advantages till now are the speed and stability. Till now I don´t find any problems running it with virtualdub to get a xvid file. Maybe if you want to do a twopass encoding or your script has many other functions or filters you should first produce the corrected file (I didn´t try a twopass encoding yet), but till now I see no problem to do it in one go. If you want to produce a corrected file before you should use a lossless codec. The most popular is huffyuv, but there are also some slower but more efficient codecs.
 25th August 2005, 21:22 #53  |  Link Roscoe62 Registered User   Join Date: Nov 2004 Location: NZ Posts: 141 Thanks MOMonster, No, I haven't tried your function yet because, as I thought I hinted at in my earlier post, I haven't quite figured out how to use it yet! I had a look at your script, and I know I'd import it into my own script but, apart from using the import line in my own script and possibly tweaking some parameters in C_package, is there anything else I should do? I "think" I figured out how to use Restore24 last night and I decided to use it in 2 passes. The first involved importing R24 and doing all normal processing EXCEPT using the dust filter and converting to XVid. Instead I just created a Huffyuv file. The next stage I'll use that Huffyuv file as the input, add my dust filter and do a 2 pass XVid encode. I'm interested to see the results, but I'm still very keen to try out C_restore to compare. Also, Didee says to try your C-restore function, and you're telling me to try R24, so who should I believe?? Again, sorry for the newbie questions, but I'm grateful for any guidance you can provide. Thanks again!
 25th August 2005, 22:26 #54  |  Link Roscoe62 Registered User   Join Date: Nov 2004 Location: NZ Posts: 141 Just quickly checked again and I see the C_package contains 4 distinct functions so do I just choose to use one of the functions (Crestore_film perhaps?) or just import all?Hmmm.....maybe I need to do some more reading :-{
 25th August 2005, 22:27 #55  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 @Roscoe62 Ok, short to the differences between these both functions. At this point for non-anime sources restore24 gives the better results. The output of my Crestore isn´t that smooth like restore24 for some sources (on other it works great, but there are many examples restore24 works better). So qualitywise for the most sources restore24 gives better results (don´t has to be, just try it out). But my function has also some advantages. It is much faster than restore24 (will change for the next version, restore24 get much faster). You don´t has to load so many filters (only the bobber), because it works with the internal filters of avisynth2.5. The whole function isn´t that komplex and runs more stable on my system and it doesn´t has the limitations of smartdecimate (50min length, but ofcourse you can use tdecimate instead). So you can do the filtering and encoding in one go But if time and space aren´t that important for you and you see the motiondifferences between these functions of course you should use restore24. And yes to use my function just load the avs and the filter for the bobber and then begin to tweak the settings. Defauts doesn´t work that bad. Please read the readme for more. For pal material Crestore_film. Don´t use Cdeint!!!. If motion isn´t good enough for you, you can also try Cdeblend with a decimater. Last edited by MOmonster; 25th August 2005 at 23:02.
 7th September 2005, 12:14 #56  |  Link MacAddict XviD User   Join Date: Oct 2004 Location: Ky Posts: 190 Just trying this for the first time. Anyone tried running this function with the latest AVS 2.56 RC1? I'm getting an invalid argument to 'trim' on line 41 of the function. Maybe I'll go back to 2.55 and give it a try later. __________________ DFI NF4 SLI Expert | Opteron 165 CCBBE 0616 XPMW (9x325HTT=2.9Ghz) | 2x1GB G.Skill HZ (3-4-4-8-12-16-2T) | LG 62L DVD/CD | Geforce 7300GT | All SATA | Antec 650 Trio PSU | XP SP2
 7th September 2005, 12:19 #57  |  Link Wilbert Moderator   Join Date: Nov 2001 Location: Netherlands Posts: 6,365 Which line is line 41?
 7th September 2005, 14:49 #58  |  Link MOmonster Registered User   Join Date: May 2005 Location: Germany Posts: 495 @MacAddict What function did you use. With avisynth 2.55 it all seems to be ok. I´ll test it with version 2.56rc1 the next time.
 8th September 2005, 00:06 #59  |  Link MacAddict XviD User   Join Date: Oct 2004 Location: Ky Posts: 190 Sorry for the delay guys, just got in from work. I'm not sure what line is 41 to be honest because it's all dependent on which application opens the avs file. VdubMod editor shows this line as being 41 and in fact has 'trim' in red letters for some reason. Code: `global testclip = bclip.trim(2,0)` The function I tried was Crestore_film() on a PAL blended DVD source. Korean flick named Seom. __________________ DFI NF4 SLI Expert | Opteron 165 CCBBE 0616 XPMW (9x325HTT=2.9Ghz) | 2x1GB G.Skill HZ (3-4-4-8-12-16-2T) | LG 62L DVD/CD | Geforce 7300GT | All SATA | Antec 650 Trio PSU | XP SP2
 8th September 2005, 02:36 #60  |  Link mg262 Clouded     Join Date: Jul 2003 Location: Cambridge, UK Posts: 1,148 It is probably objecting to bclip because there is something wrong with it. MOmonster may be able to pinpoint the problem straightaway, but I think it might help if you were to post the arguments for your function call -- or even better the whole script you are using. I've just opened up the script, and it looks to me like you may not be passing enough arguments to the function... but that's just a guess.

 Tags mrestore, srestore

 Thread Tools Search this Thread Search this Thread: Advanced Search Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is Off Forum Rules
 Forum Jump User Control Panel Private Messages Subscriptions Who's Online Search Forums Forums Home Announcements and Chat     General Discussion     News     Forum / Site Suggestions & Help General     Decrypting     Newbies     DVD2AVI / DGIndex     Audio encoding     Subtitles     Linux, Mac OS X, & Co Capturing and Editing Video     Avisynth Usage     Avisynth Development     VapourSynth     Capturing Video     DV     HDTV / DVB / TiVo     NLE - Non Linear Editing     VirtualDub, VDubMod & AviDemux     New and alternative a/v containers Video Encoding     (Auto) Gordian Knot     MPEG-4 ASP     MPEG-4 Encoder GUIs     MPEG-4 AVC / H.264     High Efficiency Video Coding (HEVC)     New and alternative video codecs     MPEG-2 Encoding     VP9 and AV1 (HD) DVD, Blu-ray & (S)VCD     One click suites for DVD backup and DVD creation     DVD & BD Rebuilder     (HD) DVD & Blu-ray authoring     Advanced authoring     IFO/VOB Editors     DVD burning Hardware & Software     Software players     Hardware players     PC Hard & Software Programming and Hacking     Development     Translations

All times are GMT +1. The time now is 07:35.

 doom9.org - Archive - Top