View Single Post
Old 7th July 2006, 05:26   #5  |  Link
Trixter
Registered User
 
Join Date: Oct 2003
Posts: 209
Quote:
Originally Posted by Clown shoes
My query is really as to whether existing filters are able to emulate or get close to the output of the Alchemist hardware converter. If Snell & Willcox's claims are to be believed, they have managed it with Hellios.
Alchemist, as well as Folsom's top of the line standards converter, indeed use motion synthesis along with several quality checks for the best results. Occaisonally they make mistakes (usually with film sources that aren't telecined properly), but most of the time the results look 99% close as if the material was shot in the other standard.

Luckily, MVTools comes pretty close. If the material you're converting is interlaced (ie. actually does have 50 or 60 different images per second) and doesn't contain any surprises, MVTools works damn near perfectly. Best of all, it's free :-)

Quote:
I am currently encoding with an adaption of the first script I posted, but using mvbob:

import("C:\Program Files\AviSynth 2.5\plugins\mvbob~.avs")
import("C:\Program Files\AviSynth 2.5\plugins\MotionProtectedFPS.avsi")
MPEG2Source("I:\Gucci NTSC M2Vs\Alexander McQueen Women.d2v")
mvbob()
assumefps(50.05)
motionprotectedfps(60)
assumefps(60000,1001)
converttoyuy2()
lanczos4resize(width,480)
assumetff().separatefields().selectevery(4,0,3).weave()


I'm pleasantly suprised to be getting 3fps with this script and am curious to see what it looks like.
Not sure why you're doing three different FPS conversions, but if you're using mvbob then mvconv is in the same package and it converts 50<-->59.9401 (60000/1001) like so:

Code:
mvbob
mvconv # <-- automatically figures out which way you want to go
#...resize to 480 lines, re-weave...
If mvconv isn't in whatever package you're using, I used to do it manually this way:

Code:
function MOCOMP_50_to_5994(clip c)
{
	backward_vec = c.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1)
	# we use explicit idx for more fast processing
	forward_vec = c.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1)
	cropped = c.crop(4,4,-4,-4)	# by half of block size 8
	backward_vec2 = cropped.MVAnalyse(isb = true, truemotion=true, pel=2, idx=2)
	forward_vec2 = cropped.MVAnalyse(isb = false, truemotion=true, pel=2, idx=2)
	c.MVFlowFps2(backward_vec,forward_vec,backward_vec2,forward_vec2,num=60000,den=1001,idx=1,idx2=2) # the 60000 / 1001 = 59.9401
}
The problem with mvbob is speed, obviously -- it goes overboard going for the best possible bob (and succeeds). For much faster processing, this is acceptable as long as you don't have single-pixel horizontal lines (like fine detail in the titles) in the source:

Code:
TDeint(order=1,mode=1,type=0,sharp=false,AP=50,APtype=0)
Let us know what you come up with. Standards conversion has been a hobby of mine for more than half a decade, as I've had to take very goofy source material (66p, 70p, and 72p computer sources) and convert it to NTSC without it looking like total ass... after using a gazillion products like ReTimer, Twixtor, MotionPerfect with less than optimal workflows, MVTools finally offers me a great workflow at about 99% of the quality. By 99%, I mean about 50 frames out of an hour's worth of footage might need to be touched up, which is par for the course for any converter, really.
Trixter is offline   Reply With Quote