Good NLE's are beyond my wallet, but I could look around at the likes of Blender. I spied an older Premiere for 32-bit XP, but forums reported it was pirateware with activation issues (shucks). Offered to pay my nephew for a student version, he wouldn't go for it (shucks). Then there's the worldwide conspiracy to keep me from working on videos (shucks). I should consult an analyst about this nonpaying job, because I can't quit.
Luckily (? I use the term loosely) none of the credits involve fades. Even if they did, fades are so messy on this video I overlay them with my own in AviSynth or VDub, always as a last step. As for titles on backgrounds...
Several minutes of both rolling and static credits. They don't "jump" as much here, but you can see that they stumble on themselves vertically. This kinda stuff just dares me to fix it anyway. Thank you for all this info.
I'll take you up on TTempSmooth. I'm in the, uh, final tweak process (how do you "tweak" a disaster?), it'll come in handy. Still have a copy on my hard drive from a while ago, back when I would never have attempted to work on anything like The Capture From Hell.
+ Reply to Thread
Results 211 to 240 of 318
Thread
-
-
Thanks, jagabo. Yes, I tried that earlier on the area at the right, then cropped it and overlayed it onto the main clip in AviSynth. It helped visibly, but I'll try your script. Seems stronger than my re-try. The problem with the overlay was its border being a bit obvious. But I'll try to tweak the overlay somehow. Thanks again.
I have a feeling those blobs will keep bugging me until I rework that whole group of shots from scratch. There goes another weekend. -
Problem: The background in the image is darker than the original, but it's a continuous scene where the singer moves in and out of view of an even darker background with significant details that are plot elements. It's hard to say what the original brightness levels could have been (I don't even know what the colors are supposed to be, I'm just guessing from other scenes). I'll play with some of the lower midtones and blacks some more.
Last edited by sanlyn; 26th Jun 2011 at 19:04.
-
(Little Bits Of Some Of) Least-Worst Moments in Act 2 - Scene 1
F1A_Act2_Sc1_original.mpg
Herewith, short clips from 3 smaller nightmares on Diskette #2. These are MPEG direct copies from the crappy DVD, no processing. (a) Scene 1 fade-in. Noise typical for Diskette 2. Color gets better later. Damage gets worse. (b) 90 seconds later, the baroness sings away. I keep calling her The Countess. She's a baroness. Europeans, forgive me. I'll try to keep it straight. (c) 34 minutes later, Scene 2 end and fade-out.
Free download. (NTSC MPEG2 352x480, Layer2 Audio (no left channel), 22-secs, 10 MB)
http://dc357.4shared.com/download/Nv4WYJ8Y/F1A_Act2_Sc1_original.mpg
F1B_Act2_Sc1_Early_Efforts.mpg
Same shots, after initial chubbyrain2/Tweak/ColorYUV/NeatVideo, and clean the top and right borders. (a) Fade-in is oversaturated here on purpose to show the left-hand blue stain I harp about. Free software won't fix this. Lower blue, raise Red and Green, and there's little or no detail underneath. Complicated by a blue floodlight offstage left. (b) The baroness before further color work. The low-density image has faded below the noise level. The more color you get, the more noise. (c) Scene-1 fade-out, after initial denoising. Instead of simmering blobs I get dancing blobs.
NTSC MPEG2 352x480, Layer2 Audio, 21-secs, 10 MB
http://dc364.4shared.com/download/f4EGFzio/F1B_Act2_Sc1_Early_Efforts.mpg
F1C_Act2_Sc1_ToDate.mpg
Same scenes, but frames might not match exactly because I altered the fade-in and fade-out in AviSynth. After more denoise (some FFT3D, CNR2, light NeatVideo, and whatnot), and guessing at colors. Guess I'll have to live with stains across the top 1/3 and these results, but (b) I'm dissatisfied with the Baroness. I keep changing her shots. . .I finally figured why she looks weird: besides damage and corrupt color, I oversharpened. Live and learn. Reworking her 3 minutes now. (c) Used BadFrames at fade-out, but I might redo these last seconds with motion interp. There goes another weekend.
NTSC MPEG2 352x480, Layer2 Audio, 20-secs, 9.3 MB
http://dc383.4shared.com/download/XEzom4t5/F1C_Act2_Sc1_ToDate.mpgLast edited by sanlyn; 26th Jun 2011 at 13:02.
-
Off Topic: I see a couple of eBay listings for AE (Windows only) for $300 USD under MSRP. ...Hmm... I have an old 'puter and good hardware going unused, all I need is a mobo, AMD chip, RAM, and Win7 (many combo offers go cheap on Newegg).
Hmm. -
Do you still have a nephew in school?
People can say all they want about greedy "Adobe corporate moneybags", but there are incredible academic discounts available for Adobe products . They are often 70-80% off. (They are identical in functionality to the retail versions). You can get the Production Premium Suite for ~$450-550 (that includes AE, Photoshop, Illustrator, Premiere, Encore, Audition, AME, a few others.) -
Poison, thanks for the word. I'd never use all those apps. I have Photoshop, and alas the nephew moved on. I've built dozens of PC's, but I haven't tried all that hard to get a premium NLE like AE: I just don't have sources that look as bad as TCFH. But at the asking price and with my hardware, that cuts the cost of AE + PC to less than half.
Well, shucks, back to fixing these first and last minutes of the two diskettes. If not for those few minutes, I'd have finished this months ago. I have 8 days to make up my mind on advanced stuff. You're discerning and knowledgeable, so I'd have confidence in anything you recommend. You already have me digging into AviSynth again. You sure know how to plant seeds in my head . . .Last edited by sanlyn; 26th Jun 2011 at 19:06.
-
Just to clarify, After Effects is a compositing effects program, and Premiere Pro is a NLE for editing - they have different primary functions. You can do editing in AE, but it's way easier in PP. You can do simple keyframed masks, track mattes and some effects in PP, but it's way easier in AE.
-
I've been browsing PDF and FAQs for both products. No problem with edits. It's garbage like this opera that has me ruminating overtime about something like of AE. Twirling dissolves, sparkles, etc., not for me, but I could sure use masking, layers, motion tracking.
Ahem. Back to work. -
Forgive me, poisondeathray, but I just spent hours trying to go back to some motion-interp script I got from Doom9, that I referred to above, but haven't found it anywhere. I'm trying to rework some of these BadFrames sequences with mvtools and separating fields. I got blurs with motion interp, but I must have done something wrong (which is why I don't like copying scripts without knowing what the script is doing). How did you manage to isolate that particular frame? OR did mvtools just "see" this field as it went along and cleaned up the flash?
-
You can use the same syntax in 2BDecided's example, but you have to would apply it on fields, so this means grouping even and odd fields, then applying they filter, while they are in grouped even and odd fields. Then you interleave and weave to put it back into interlaced. This is the general concept to use any filter that doesn't have an interlaced mode
So the general syntax for any filter (that doesn't have an interlaced switch) applied to an interlaced source:
SourceFilter()
SeparateFields()
f1=SelectEven().FilterStack1
f2=SelectOdd().FilterStack1
Interleave(f1,f2)
Weave()
I'm still looking for a wrapper function for mflowinter that accepts a .txt file that automatically replaces the fields or frames in that list... but no go. The closest thing I could find (instead of typing that clunky example of mflowinter and trim statements for every field - which I had been doing) was to use the "RecoverOneFrame" function in this post from Pirej, with changes from Gavino
https://forum.videohelp.com/threads/308840-old-VHS-restoration/page3
I relabelled it "R" in this example, so if you had a list of bad fields to replace it would be easier. If I wanted to replace 34, 64, 96, it would just be like this instead of that clunky mflowinter and various trims
.
.
.
R(34)
R(64)
R(96)
.
.
.
Important to note, when done this way the numbering refers to their relationship in grouped even and odd fields, not separated field numbering, not frame numbering
This was the script used on "D_A01a9_newframe.mpg" . Since the bad field had been replaced by a blended frame in this version, both field pairs had to be replaced. If you look in the original sample, only the top field had to be replaced.
Code:MPEG2Source("D_A01a9_newframe.d2v") o=last even=o.assumetff.separatefields.selecteven odd=o.assumetff.separatefields.selectodd ##Even Fields Processing even Super_Even = even.msuper() bv1 = manalyse(Super_Even, isb=true, delta=2) fv1 = manalyse(Super_Even, isb=false, delta=2) global CandidatesForN = mflowinter(Super_Even, bv1, fv1, time=33.3, ml=100) global CandidatesForO = mflowinter(Super_Even, bv1, fv1, time=66.7, ml=100) global CandidatesForC = mflowinter(Super_Even, bv1, fv1, time=50.0, ml=100) even R(135) filtered_even=last ##Odd Fields Processing odd Super_Odd = odd.msuper() bv1 = manalyse(Super_Odd, isb=true, delta=2) fv1 = manalyse(Super_Odd, isb=false, delta=2) global CandidatesForN = mflowinter(Super_Odd, bv1, fv1, time=33.3, ml=100) global CandidatesForO = mflowinter(Super_Odd, bv1, fv1, time=66.7, ml=100) global CandidatesForC = mflowinter(Super_Odd, bv1, fv1, time=50.0, ml=100) odd R(135) filtered_odd=last interleave(filtered_even, filtered_odd) weave function RP(clip Source, int N) { # N is number of the first frame in Source that needs replacing. # Frames N and N+1(O) will be replaced. Source.trim(0,N-1) ++ CandidatesForN.trim(N-1,-1) \ ++ CandidatesForO.trim(N-1,-1) ++ Source.trim(N+2,0) } function R(clip Source, int N) { # N is number of the frame in Source that needs replacing. # Frame N will be replaced. Source.trim(0,N-1) ++ CandidatesForC.trim(N-1,-1) ++ Source.trim(N+1,0) }
Note, I forgot to add Gavino' s change in the function above, it doesn't work for frame #1
Also your functions won't work for the case N=1.
You need to replace Source.Trim(0, N-1) by Source.Trim(0, -N). -
Yep. I should have thought about that FilterStack business.
Tricky. I recall a script using "fr" counters for frames, f's for fields. Lordy, I thought when I retired from programming I'd never see another counter.
I know many scripts/plugins for rebuilding frames won't work on frame 0 or last frame. Makes sense. On frame 0 there's no "before", on last frame there's no "after". The logic I was trying to figure is how to group fields from frames, but I see how it can be done.
Sorry, I just realized you didn't really isolate that bad frame earlier, you just showed fields. Shoulda remembered seeing that myself. Coffee time again? I'm running out of Keurig K-Cups!
This will take a while. Going to Canada with the mrs in 2 days. Too bad the PC won't fit in the car (she wouldn't let me work on this anyway), but I can load scripts into the laptop.
Been playing with MCTemporalDenoise all morning. Tracing thru error messages is getting tiresome. It'll run sooner or later, or I'll just try separate parts and see what I get. The opera's opening minutes are such a mess! Also trying something you did with FFT3D a couple of days ago in another thread.
Thank you, poisondeathray. This did much to clear a path. I did some heavy C, PL/1, high-octane VB, but I'm still getting used to some AviSynth usage. Whatever happened to my retirement?Last edited by sanlyn; 28th Jun 2011 at 10:33.
-
LOL I don't blame you for taking a vacation from trying to fix this!
Enjoy the trip .
-
-
The other correction I pointed out is also required if you are going to use function RP (which replaces two consecutive bad frames). You need to add
Code:bv = manalyse(Super_Even, isb=true, delta=3) fv = manalyse(Super_Even, isb=false, delta=3)
Code:bv = manalyse(Super_Odd, isb=true, delta=3) fv = manalyse(Super_Odd, isb=false, delta=3)
That's right. Sometimes the process makes no sense for the first or last frame, but often it's just because the script writer or programmer has failed to take into account the special case processing required to make it work.
Here the problem was actually with frame=1, which is the second frame (Avisynth numbers from 0), and is because of the special treatment of 0 in the Trim function. To get the first frame, you cannot use Trim(0, 0), because the second 0 means 'end of clip', so you have to use Trim(0,-1). Unless forewarned, it's easy to overlook this when using Trim in a general function with the frame number as a parameter. This classic Doom9 post by stickboy should be required reading for all budding Avisynth function writers:
Caveats of using trim in functions -
Thanks gavino .
How would it be possible to clean it up for a generic function? Something somebody could just download as an avsi or import as an .avs function. Maybe a fixed version could be uploaded to the avisynth mediawiki? (I don't know who the original author is either) . What would be super cool is to have a function that accepts a list of field or frames for replacement, although this way is still faster than the mflowinter documentation example
I probably shouldn't have included that "RP" or "recover frame pair" at all. I find 2 consecutive bad frames (or fields) are never replaced properly with these functions, even on ideal low motion footage -
Gavino, poisondeathray: I'm paying very close attention!
Meanwhile . . . (A Bit Of) The Very Worst Of Act 3
Wouldn't you know it. The worst crap on this capture, at the final Magic Moment. Mignon rises on the stage, the lights go down around the scene, and some big amber floodlights (heavenly light, I guess) go crazy center-stage. Then the whopper. 500 frames of doodoo. I don't even know why I bothered.
Image of the last good frame before damage: The bright lights have just come up. The tape's owner managed to fry highlights and crush darks. I know it's supposed to be high contrast lighting, but this is murder. The 'scope from ColorTools shows colors climbing over (and under) the walls.
Lower it in YUV, RGB, try to help the blacks. Doesn't matter. The highlights are g-o-n-e. Horrible, even for VHS.
Starting with the very next frame, somebody turns on the proverbial fan. 3 of the next 204 frames. Altogether it goes on for 500 frames.
G1_End_original.mpg
Sorry for the file size. This clip is the last 47 disappointing seconds from the unprocessed original DVD. The worst of all possible times for damage. NO LEFT CHANNEL AUDIO. NTSC MPEG 352x480, Layer-2, 47-secs, 16-MB
http://dc376.4shared.com/download/2Z9CBNYS/G1_End_original.mpg
G2_End_Today.mpg
I rescued 5 decent frames from this sequence, made short clips in AviSynth, then joined with dissolves. Biggest problem was getting the saved frames to look like the "good" ones in level and color, and then getting audio to sync. Made 7 versions of the dissolves with various software, they all looked exactly alike (This was with TMPGEnc MPEG Editor v3). From start to finish, the sequence used 10 separate clips. The dissolve to white was a separate clip dissolved between 2 others. I also tried a plain white RGB-215 graphic, but that would be cheating, n'est-ce pas? This off-white is from the original; I never did get rid of the stains. A slightly lower bitrate than the final. NTSC MPEG 352x480, Layer-2, 44-secs, 22.3-MB
http://dc376.4shared.com/download/2Z9CBNYS/G1_End_original.mpg
I think I'll just leave the ending as-is. There are still other problems, and I wanna carefully track what Gavino and poisondeathray are doing.Last edited by sanlyn; 28th Jun 2011 at 16:44. Reason: url correction
-
Know what? I'll bet the dissolve looks clunky because those 5 short clips might not be interlaced properly from AVI to MPEG.
-
You'll probably hate me for this, but there are about 30-40 frames in the first bad sequence of the "G1_End_original.mpg" using mflowinter or related functions if you bob, apply it on frames (not fields) , then reinterlace
Do this exercise:
Mpeg2Source()
AssumeTFF()
Bob()
And step through the video. Those sections that alternate good-bad-good-bad .... can be repaired fairly well, since this is such a low motion sequence.
Similarly , the section before the white out final ending where there are distortions in the faces and dropouts, the defects only occur in the lower field. In the bobbed example, you can see it too (ie.. good-bad-good-bad). There's probably > 100 frames that can be salvaged there (including those dropouts) . It does work fairly well, I tested it out with the function listed above doing the same thing, but just modified for progressive frames.
It will look something like this, where every 2nd frame is specified
.
.
.
R(859)
R(861)
R(863)
.
.
.
The reason why this approach on frames (not fields) will work for this part of the video is the position of the defects w.r.t top and bottom fields. The defects in those sequences occur on the same grouping (ie. just odd or just even). So that's why interploating on grouped even and odd fields won't work for this section, because you'd be interpolating from a bad field, propogating that defect. The reason why you can't just use separatefields() before interploating, is fields are positionally offset. You cannot interpolate from translocated data - the motion vectors will be off and you get blurry image. When you use separatefields() and step through, you notice the picture goes up & down. That's what bobbing fixes.
When you bob the video you alterate top, bottom, top, bottom, fields; essentially each field is bicubic resized into a full frame and positioned properly. You don't want to use a temporal bobber here, QTGMC will give worse results because it will mix in the defects from the "bad" fields (temporal is bad in this case) . Once it's "fixed" you can reinterlace it
There is a long section with bad-bad-bad-bad (ie. VERY bad). That can't be helped with mvtoolsLast edited by poisondeathray; 28th Jun 2011 at 17:23.
-
I'll work on your idea, poiisondeathray. <sigh> Duty calls, I gotta repair a customer's PC tonight, will be working late. I'll be at the grindstone tomorrow.
Looks as if I'll still be fixing this in the rest home. -
Here is a quick proof of concept for one of the sections
You can open it up in vdub and go frame by frame. You will see the interpolated frames look ok, especially given the source quality. The motion is fine (e.g hand movement looks natural, dude walking looks ok) . The usual problems you usually want to look for motion interpolated frames are errors around edges of objects. It looks like edge morphing. But since this is such a low motion sample, and you have 2 adjacent "good" frames to interpolate from for each "bad" frame, the interpolation works ok
It's pretty quick to do for long sections where every 2nd frame is replaced, you can copy & paste from an excel spreadsheet into an .avs because it will auto fill the numbers if you drag the column , and it will fill in the "R" and brackets in other columns when you drag to fill. I did 669-1289 in this example and it literally took less than a minute in excel and to copy & paste into the .avs . (that's over 300 frames replaced for this section)
Then I added depan and stab to stabilize the frame. I think that's a better starting point . Presumably you've saved your scripts , filters or program presets for noise and color , so it wouldn't be too much work -
If we restrict ourselves to replacing single frames (as you said replacing two consecutive ones rarely works well), it can be done fairly simply making use of ReplaceFramesSimple (from stickboy's RemapFrames plugin).
Code:function FixBadFrames(clip c, string frames) { # Replace each frame from a list of 'bad' frames by using MFlowInter to interpolate # between the nearest pair of 'good' frames c sup = MSuper() bv = MAnalyse(sup, isb=true, delta=2) fv = MAnalyse(sup, isb=false, delta=2) candidates = MFlowInter(sup, bv, fv, time=50.0, ml=100).DuplicateFrame(0) ReplaceFramesSimple(candidates, mappings=frames) }
FixBadFrames("34 64 96")
To work with fields, separate into odd and even and apply the function to each branch as you described earlier.
Since ReplaceFramesSimple also accepts the list of frames from a file, the function could optionally be extended to do this too. -
Just got back from a PC repair, and my client wants me to fix 2 more tomorrow (it's a few bucks closer to that pricey Adobe stuff). I just looked over the last few posts. Juicy. I'm flabbergasted that you've contributed all this good info. You folks are really determined to keep me busy.
-
Always. Already burned a 50-disc spool of DVD's storing old work on this monster, and an extra 320-GB drive half full of AVI's.
I'm working on these very illuminating ideas now. Will take a couple of days, I have 2 PC clients later today. These occasional jobs keep my PayPal account going for video gear. Again, I can't thank you and the other contributors enough. Will post some results as soon as I can. -
I finally sneaked in some time today to download and watch the avi. Amazing work, poisondeathray. (Gosh, it'll only take me a mere week to do that!). Can't do much with the busted frames preceding these, but from the dissolves I used I can "cut in" to the clip earlier than before.
-
The section before the very bad section can be treated fairly well (409-486) with that method, but not every 2nd frame is bad, so you have to pick & choose and modify it a bit for the double bad frames, even replace the double bad frames with dupes or blends. I think you can still salvage them all.
But the long section from (487-652) is composed of ALL bad frames, either completely wrecked or black/white. There is no good information to interpolate from .
One way you might be able to treat that long bad section in AE is to rotoscope sections like a face, a hand, the dude moving in front, etc... - so you would take the last good frame, and the first good frame that are on the ends of the bad section as references , basically your goal is to go from point A to point B within that 165 bad frame span. Then you would animate the roto'ed objects maybe with something like the puppet pin tool. You don't need to do every frame, because there is keyframe interpolation
One way you can complement this or speed it up is to generate "intermediate keyframes" using mvtools or related functions/filters . e.g. You would take that A, B point and generate a middle point using interpolation. Then do it again, and repeat. So what you are basically doing is generating middle points for each iteration, and "halving" the distance. The problem is the distance between the frames is so great that the interpolation won't be as good as if from a true neighboring frame. It's might be possible to tweak the settings for a "cleaner" interpolation - I haven't looked into it. I included a zip file that has the "A" point, the "B" point and the interpolated middle frame using default settings - you can see it's noticably blurrier and can see the edge morphing that I talked about earlier. Each interation after that will be even worse, because you are using that as new reference -
The "automatic" method might work ok... considering that sequence of frames are severely damaged in the first place, you don't really "lose" anything
It's actually not as bad as I thought, because each interation doubles, so 2, 4, 8, 16, 32, 64, 128... So what I did was use Interleave() with BlankClip(), and each iteration, blankclip framecount doubles. Interleave alternates 2 clips, so the idea is to put a black frame between each "good" frame, so you can use mvtools to replace that black frame with interpolated frame. Since every 2nd frame is replaced, you can use the same excel trick and copy & paste, so it really only takes a few minutes. So starting from those 2 good "bookends", you generate 166 "in between" frames . I bet Gavino could write a super sexy iterative function that does this automatically, but the copy & paste method isn't too bad.
256 is too many "in between" frames, but 128 is too few. So I used TDecimate(mode=2 , rate=167) to attempt to decimate semi-evenly spaced frames. So those will replace 487-652, or the "bad bad section". I suppose you can use mvtools again to generate more inbetween frames to get perfect cadence, but this should be ok for smoothness. In fact it's TOO smooth.
So this sample clip represents 400-1291 . There are some interpolation errors, but IMO those artifacts are minor compared to the completely damaged frames. The main problem with that big long stretch, is it seems to be slower timing compared to the sections around. I don't know what the timing of the audio or the clip is, but every "bad frame" in that stretch was replaced. So maybe there were actually too many superfluous bad frames in that sequence. For example , maybe you only need 1/2 the frames for example, and fix the audio to match -
I'm still here, silently listening and paying too much attention to this interesting lesson about video restoration.
Poisondeathray, man, what you did with 400-1291.xvidq3.avi is amazing! I could say, it's indeed a miracle! I never knew it could be done with that so damaged piece of video. Congrats!Thank you.
Similar Threads
-
I think an easy way to fix dots flickering (sample included)
By jairovital in forum RestorationReplies: 28Last Post: 11th Jan 2012, 15:39 -
Are these VHS tapes fixable? youtube sample included.
By kcr in forum RestorationReplies: 11Last Post: 29th Sep 2010, 07:37 -
Need help in deinterlacing an old VHS converted video (Sample included) ..
By ahmadka in forum RestorationReplies: 22Last Post: 30th Jun 2010, 12:43 -
Help with Color Correction (Sample Included)
By mlong30 in forum RestorationReplies: 9Last Post: 13th Mar 2008, 23:01 -
Magnetized VHS - How to fix it? (Sample included)
By djnice in forum RestorationReplies: 16Last Post: 18th Sep 2007, 13:14