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. |
21st May 2013, 01:15 | #1 | Link |
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,691
|
Any tips for better 30p to 60i conversion?
My wife purchased a DVD of her fashion show. Here is a very short clip, unchanged from the original:
30p clip The clip has many problems, such as extensive noise due to low light, bad camera, bad camera settings. The audio is also trashed. Some of the problems may also have been caused by iMovie. I can take care of most of those things. However, because of the 30p cadence, the video lacks the fluidity of 60i material. I would therefore like to perform a 30p to 60i conversion. The following script does a reasonable job, but I wondered if anyone could suggest ways to improve this basic process? Thanks. Code:
# Convert 30p progressive camera movies to 60i loadplugin("C:\Program Files\AviSynth 2.5\plugins\MVTools\mvtools2.dll") blocksize=16 source=AVISource("E:\fs.avi") superfps= MSuper(source,pel=2) backward_vec2 = MAnalyse(superfps, isb = true,blksize=blocksize) forward_vec2 = MAnalyse(superfps, isb = false,blksize=blocksize) MFlowFps(source,superfps, backward_vec2, forward_vec2, num=60000, den=1001, ml=200) SeparateFields() SelectEvery(4,0,3) output=Weave() stackhorizontal(source.separatefields(),output.separatefields()) #return output |
21st May 2013, 10:58 | #2 | Link |
Registered User
Join Date: Aug 2008
Location: Isle of Man
Posts: 588
|
Things you could experiment with:
* Using smaller block size * Calculating motion vectors on prefiltered (denoised) input clip * Using current larger block size to detect large motion, then refining estimates for smaller motion using MRecalculate() and smaller block size * PS. Turn on overlap ~ blocksize/2 Out of interest, how did you arrive at the relatively high 'ml' value? From the (limited) testing I've done, I don't see much difference from around 1 and up. I'm probably missing something, but from the looks of it your output is 29.97 fps interlaced; is that what you wanted? Cheers, Francois Last edited by fvisagie; 21st May 2013 at 10:59. Reason: PS |
21st May 2013, 13:57 | #4 | Link |
Registered User
Join Date: Dec 2002
Location: UK
Posts: 1,673
|
I would increase it by a factor of exactly 2 - at least that way you keep every original frame - rather than having almost exclusively interpolated frames in the output.
Then convert 60p to 59.97p by an assumefps() and associated audio resample to maintain sync. No one will notice. Honestly though, I'd almost be tempted to leave it as 30p (assumefps() to 29.97 if needed). Normal people will think 30p looks kind of upscale/filmic, and video pro that you are, you'll be irritated the motion-compensation artefacts in the 60p/60i version. Depending on how well it works, even normal people might notice some of the weirdness in brief moments. From the brief sample, it looks like the shutter speed was appropriate for 30p to avoid stutter, and might look overly blurry at 60i. I could be wrong. I have changed 25p home movies to 50i to avoid a jarring change when editing it with other native 50i footage - but for a project that only used the 25p footage, I'd leave it as it is. People soon get used to it. Cheers, David. |
21st May 2013, 14:02 | #5 | Link |
Registered User
Join Date: Feb 2009
Location: USA
Posts: 676
|
Wow... That was produced in 2013? Glad to see they went all out on the video budget..
As for the motion - it looks natural to me? I'd echo what has been said. Clean it up and leave it as is. Most folks will probably notice the low quality issues more than the framerate/motion. |
21st May 2013, 17:15 | #6 | Link | ||
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,691
|
I looked at my restored result: I was able to make a huge difference in the grotesquely clipped audio by using the "Declip" module in iZotope RX2; I used Vegas to color correct the flourescent lighting; I used MDegrain2 to reduce the noise, using blocksize=8 and overlap=4.
All those things made significant, positive changes, with very little downside. I tried to get a little more detail by using sharpening, but I had to use pretty small values in order to avoid introducing halos. Quote:
I do not like the results of going from 29.97 progressive to 29.97 interlaced because there are just too many places where the motion estimation fails slightly, especially when the models move their hands quickly. Therefore, I'm taking the advice given here and just leaving it as 29.97 progressive. Quote:
BTW, in my experience, larger block sizes generally produce fewer artifacts when doing frame rate conversions using this technology, but I'm open to suggestions on specific settings because perhaps I haven't discovered the right combinations. Last edited by johnmeyer; 21st May 2013 at 17:16. Reason: Added additional quote |
||
24th May 2013, 17:47 | #8 | Link | |
Registered User
Join Date: Aug 2008
Location: Isle of Man
Posts: 588
|
Quote:
Code:
super = MSuper(hpad=16, vpad=16) backward_vec = MAnalyse(super, blksize=16, isb = true) forward_vec = MAnalyse(super, blksize=16, isb = false) MFlowFps(super, backward_vec, forward_vec, num=50, den=1, ml=100) No denoised prefiltered clip, nothing fancy helped. Even overlap caused a deterioration in artifacts. I find all this quite surprising, because MDegrain benefits from things like MRecalculate() with smaller block size, overlap etc. For what it's worth I also evaluated InterFrame() and MSU_FRC(). MSU_FRC() produced the best artificial motion of the lot, but also the worst artifacts which can't be tuned down towards some compromise. It also crashes AvsPmod and seems to require linear frame-serving which complicates testing. In the end I settled for MVTools . Cheers, Francois |
|
24th May 2013, 18:21 | #9 | Link | |
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,691
|
Quote:
And, just to make sure this isn't taken as a criticism of MVTools2, I have tried the trial version of Twixtor, and it fails in exactly the same way, in the same portions of the video. So, it appears that the problem is inherent to the approach, rather then the implementation. My solution, when I have the time, and when I'm being paid, is to create a second slow motion clip using frame/field blending. This is guaranteed to produce no artifacts. Then, I line up the MVTools2 version and the frame-blended version on the timeline in my editing program (Vegas) and whenever I see an artifact, I draw a quick garbage mask (i.e., the outline of the mask can be rough) that lets the frame-blended version cover up the artifacts on that portion of the frame in the MVTools2 version where they occur. It's a lot of work, but it produces artifact-free results. Last edited by johnmeyer; 24th May 2013 at 18:22. Reason: Edited the last sentence for clarity |
|
30th May 2013, 12:38 | #11 | Link | |
Registered User
Join Date: Dec 2002
Location: UK
Posts: 1,673
|
Quote:
Cheers, David. |
|
31st May 2013, 07:18 | #12 | Link | ||
Registered User
Join Date: Aug 2008
Location: Isle of Man
Posts: 588
|
Quote:
Quote:
If it's something else you mean, kindly explain? |
||
Thread Tools | Search this Thread |
Display Modes | |
|
|