User Tools

Site Tools


photo:tilt-shift

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

photo:tilt-shift [2009/11/15 08:21]
ben created
photo:tilt-shift [2010/03/06 01:54] (current)
ben
Line 1: Line 1:
 For now, I just wanted to note that if a site were created to edit someone'​s video, it would make sense to upload the images and process them in a RAM disk on the server, processing will be much faster that way. For now, I just wanted to note that if a site were created to edit someone'​s video, it would make sense to upload the images and process them in a RAM disk on the server, processing will be much faster that way.
 +
 +====== Tilt-shift a video file with ImageMagick ======
 +
 +  -dump video to image files.
 +  -create a mask.
 +  -create a set of blurred images.
 +  -create a set of composite images created from the blurs with the mask.
 +  -recombine images to video file.
 +
 +Steps:
 +
 +  -mplayer -vo jpeg myfile.mov (or mplayer -vo png:z=0 -ao pcm:​file=file.wav file)
 +  -convert -threshold 100% 00001.jpg -fill white -draw '​ellipse 160,160 300,40 0,360' -gaussian 35x35 +matte circle_mask.jpg;​display circle_mask.jpg
 +  -for i in *.jpg;do convert -gaussian 3x3 $i blur/​$i;​done
 +  -for i in cropped*.jpg;​do composite $i blur/$i circle_mask.jpg out/$i;done
 +  -mencoder "​mf:​\/​\/​out\/​cropped*.jpg"​ -mf fps=24 -o blur_output.avi -ovc lavc -lavcopts vcodec=mpeg4 \\
 +
 +
 +That's it.
 +
 +"​That'​s it" nice.  not quite-
 +
 +To get better results, a simple ellipse just isn't appropriate. ​ what is better may be a rotated ellipse. ​ To get a rotated ellipse, SVG drawing is necessary.
 +
 +M: move abosolute
 +Z: end path
 +A: draw an Arc
 +
 +Specs are here: http://​www.w3.org/​TR/​SVG/​paths.html#​PathDataGeneralInformation
 +
 +something that is close:
 +
 +  convert -threshold 100% koytmp/​00000600.png -fill white -draw "path 'M 330,​240 ​ A 45,5  187  1,0 340,320 A 45,5  187  0,0 330,240 Z '"​ -depth 8 -gaussian 35x35 +matte circle_mask.png;​display circle_mask.png
 +
 +A values:
 +45,5 = radii
 +187 = angle of rotation
 +1,0 = sweep and some other shit, not so important
 +340,320 = endpoint x,y
 +
 +
 +Another very decent shape:
 +
 +  convert -threshold 100% koytmp/​00000600.png -fill white -draw "path 'M 352,​340 ​ A 10,1  187  1,1 350,260 A 10,1  187  1,1 352,340 Z '"​ -depth 8 +matte circle_mask.png;​display circle_mask.png
 +  convert -threshold 100% koytmp/​00000600.png -fill white -draw "path 'M 352,​340 ​ A 10,1  187  1,1 350,220 A 10,1  187  1,1 352,340 Z '"​ -depth 8 +matte circle_mask.png
 +
 +Less blur worked better, 3x3 gauss on Koyaanisqatsi video...
 +
 +
 +To extract audio:
 +
 +  mplayer -vc null -vo null -ss 2700 -frames 300 -ao pcm:​file=koy300.wav Koyaanisqatsi.mkv ​ - frames doesn'​t seem to stop the dump at the appropriate place. ​ is there an end seconds arg?
 +  mplayer -vc null -vo null -ss 2700 -endpos 300 -ao pcm:​file=koy300.wav Koyaanisqatsi.mkv
 +
 +endpos arg note in the man page: When used in conjunction with -ss option, -endpos time will shift forward by seconds specified with -ss.
 +i.e. subtract ss from the absolute number of seconds for your end time.
 +
 +Can't seem to combine, mplayer can at least play this one: 
 +
 +  encoder "​mf://​out/​*.png"​ -mf fps=24 -o koytest2.avi -audiofile koy300.wav -oac lavc -lavcopts acodec=mp2 -ovc lavc -lavcopts vcodec=mpeg4:​vhq:​vbitrate=2400
 +
 +----
 +
 +Bezier'​s instead?
 +
 +  convert -threshold 100% train1.png -fill white -draw "path '​M100,​200 C100,100 400,100 400,200 C400,300 100,300 100,​200'"​ -depth 8 -gaussian 15x15 +matte circle_mask.png;​display circle_mask.png
 +
 +M is the starting point. ​ First C field is first bezier control point, second field is second bezier control point, 3rd C field is the end point. ​ So above, 100,200 is start, 100,200 is end, and 4 control points result in a nice ellipse in the center of an image 500x365px.
 +
 +This one results in a tilted ellipse, changes of -80 in x value on top, +80 in x value below:
 +
 +  convert -threshold 100% train1.png -fill white -draw "path '​M100,​200 C20,100 320,100 400,200 C480,300 180,300 100,​200'"​ -depth 8 -gaussian 15x15 +matte circle_mask.png;​display circle_mask.png
 +  convert -threshold 100% train1.png -fill white -draw "path '​M50,​200 C20,80 320,80 500,200 C420,300 180,300 50,​200'"​ -depth 8 -gaussian 35x35 +matte circle_mask.png;​display circle_mask.png
 +
 +The second give a shapelier sort of shape.
 +
 +Decent results on file "​P1030435.jpg"​ with- 5x5 gauss blur, mask of path "'​M-300,​1050 C-10,500 1600,300 1520,300 C1600,700 400,1000 180,​1400'",​ mask blur gauss 25x25, and finally -contrast-stretch 1600x1038 -modulate 100,150,100 on the file output.
 +
 +{{:​p1030435sm.jpg?​600|result}}
 +{{:​p1030435sm_circle_mask_sm.jpg?​600|mask}}
 +
 +Would like to try changing the mask to inverted- let the background be in focus, the foreground out.
 +
 +More decent results with:  ​
 +  convert -threshold 100% test.jpg -fill white -draw "path '​M100,​1000 C200,600 1600,-200 1400,-200 C1400,700 400,1000 100,​1000'"​ -depth 8 -gaussian 25x25 +matte circle_mask.jpg;​open circle_mask.jpg ​
 +and 
 +  convert -quality 100 -modulate 115,140,100 output.jpg outputhigh.jpg;​open outputhigh.jpg &
 +
 +{{:​p1030435sm2.jpg?​600|}}
 +{{:​p130435sm_circle_mask_sm2.jpg?​600|}}
 +
 +
 +Contrast- -contrast increases, +contrast decreases... can apply to different channels as well, need to do more reading. ​ This one was interesting on the above image: ​
 +  convert -quality 100 -modulate 105,160,100 +contrast output.jpg outputhigh.jpg;​open outputhigh.jpg
 +
 +Not bad:
 +  convert -threshold 100% test.jpg -fill white -draw "path '​M-100,​-150 C200,200 1400,600 1800,1000 C1800,1600 400,600 -100,​100'"​ -depth 8 -gaussian 1x1 +matte circle_mask.jpg;​open circle_mask.jpg
 +  convert -gaussian 25x25 circle_mask.jpg circle_mask.jpg
 +  composite test.jpg testblur.jpg circle_mask.jpg output.jpg;​open output.jpg &
 +  convert -quality 100 -modulate 110,160,100 output.jpg outputhigh.jpg;​open outputhigh.jpg
 +
 +{{:​outputhigh.jpg?​900|}}
 +{{:​circle_mask.jpg?​900|}}
 +
 +
 +
 +
 +
 +
photo/tilt-shift.1258291277.txt.gz ยท Last modified: 2009/11/15 08:21 by ben