The effect I was going for is that I have Hiro Protagonist ,from the novel Snowcrash, entering the storage shed to practice with his samurai sword online. He has goggles that he puts on and this enters him into his online space in the dojo. So he enters the storage, puts on the goggles and his background changes as the dojo is loading into his goggles; next his new appearance begins loading and finishes, leaving him with a sword and ninja outfit; finally the dojo finishes loading up and fully appears. After this he begins practicing.
To achieve this effect I created two different masked images and masked them together with a separate mask. First I masked out the backgrounds to put the subject in the two different places. Next I took the moment the backgrounds were transitioning and created a mask for the foreground, so only the subject would be masked but the background would not.
The effect still needs some polishing and I believe the fault is that lighting for this effect should be more consistent for the right amount of color to be removed. I faced certain time constraints for my filming schedule but I will continue to work on this effect as I feel it has the possibility to turn out quite cool.
Here's the Code I used for the Final Project:
#!/bin/bash
# extract images from Original video files
echo "Extracting Images"
FILES=./*.avi
b=1
for i in $FILES
do
mkdir images$b
ffmpeg -i MaskTest$b.avi -f image2 images$b/%d.ppm
let b=$b+1
done
echo "Importing Backgrounds"
FILES=images4/*.ppm
b=1
mkdir EnterStorage
mkdir EnterStorage/Converted
mkdir EnterStorage/Comp
for i in $FILES
do
ppmchange -closeness=28 blue red images4/$b.ppm >EnterStorage/Converted/RED$b.ppm
ppmcolormask -color red EnterStorage/Converted/RED$b.ppm >EnterStorage/Converted/REDMASK$b.pbm
pamcomp background1/storage.ppm EnterStorage/Converted/RED$b.ppm -alpha=EnterStorage/Converted/REDMASK$b.pbm -
invert >EnterStorage/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images5/*.ppm
b=1
mkdir StraightenGoggles
mkdir StraightenGoggles/Converted
mkdir StraightenGoggles/Comp
for i in $FILES
do
ppmchange -closeness=42 blue red images5/$b.ppm >StraightenGoggles/Converted/RED$b.ppm
ppmcolormask -color red StraightenGoggles/Converted/RED$b.ppm >StraightenGoggles/Converted/REDMASK$b.pbm
pamcomp background1/storagecloseup.ppm StraightenGoggles/Converted/RED$b.ppm -
alpha=StraightenGoggles/Converted/REDMASK$b.pbm -invert >StraightenGoggles/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images6/*.ppm
b=1
mkdir Akimbo
mkdir Akimbo/Converted
mkdir Akimbo/Comp
for i in $FILES
do
ppmchange -closeness=42 blue red images6/$b.ppm >Akimbo/Converted/RED$b.ppm
ppmcolormask -color red Akimbo/Converted/RED$b.ppm >Akimbo/Converted/REDMASK$b.pbm
pamcomp background1/storagemediumshot.ppm Akimbo/Converted/RED$b.ppm -alpha=Akimbo/Converted/REDMASK$b.pbm -
invert >Akimbo/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images7/*.ppm
b=1
mkdir Akimbo2
mkdir Akimbo2/Converted
mkdir Akimbo2/Comp
for i in $FILES
do
ppmchange -closeness=31 blue red images7/$b.ppm >Akimbo2/Converted/RED$b.ppm
ppmcolormask -color red Akimbo2/Converted/RED$b.ppm >Akimbo2/Converted/REDMASK$b.pbm
pamcomp background1/storagemedium2.ppm Akimbo2/Converted/RED$b.ppm -alpha=Akimbo2/Converted/REDMASK$b.pbm -
invert >Akimbo2/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images9/*.ppm
b=1
mkdir NinjaSword
mkdir NinjaSword/Converted
mkdir NinjaSword/Comp
for i in $FILES
do
ppmchange -closeness=37 blue red images9/$b.ppm >NinjaSword/Converted/RED$b.ppm
ppmcolormask -color red NinjaSword/Converted/RED$b.ppm >NinjaSword/Converted/REDMASK$b.pbm
pamcomp background2/dojo.ppm NinjaSword/Converted/RED$b.ppm -alpha=NinjaSword/Converted/REDMASK$b.pbm -invert
>NinjaSword/Comp/Comp$b.ppm
let b=$b+1
done
#Creating Masked Backgrounds
echo "Creating Masked Backgrounds"
FILES=images2a/*.ppm
b=1
mkdir StorageToDojoBackground
mkdir StorageToDojoBackground/Converted
mkdir StorageToDojoBackground/Comp
for i in $FILES
do
ppmchange -closeness=37 blue red images2a/$b.ppm >StorageToDojoBackground/Converted/RED$b.ppm
ppmcolormask -color red StorageToDojoBackground/Converted/RED$b.ppm
>StorageToDojoBackground/Converted/REDMASK$b.pbm
pamcomp background2/dojo.ppm background1/storagemedium2.ppm -
alpha=StorageToDojoBackground/Converted/REDMASK$b.pbm -invert >StorageToDojoBackground/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images2b/*.ppm
b=1
mkdir StorageToDojoBackground2
mkdir StorageToDojoBackground2/Converted
mkdir StorageToDojoBackground2/Comp
for i in $FILES
do
ppmchange -closeness=37 blue red images2b/$b.ppm >StorageToDojoBackground2/Converted/RED$b.ppm
ppmcolormask -color red StorageToDojoBackground2/Converted/RED$b.ppm
>StorageToDojoBackground/Converted/REDMASK$b.pbm
pamcomp background1/storagemedium2.ppm background2/dojo.ppm -
alpha=StorageToDojoBackground/Converted/REDMASK$b.pbm -invert >StorageToDojoBackground2/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images11/*.ppm
b=1
mkdir End
mkdir End/Converted
mkdir End/Comp
for i in $FILES
do
ppmchange -closeness=26 blue red images11/$b.ppm >End/Converted/RED$b.ppm
ppmcolormask -color red End/Converted/RED$b.ppm >End/Converted/REDMASK$b.pbm
pamcomp background2/Dojocloseup.ppm End/Converted/RED$b.ppm -alpha=End/Converted/REDMASK$b.pbm -invert
>End/Comp/Comp$b.ppm
let b=$b+1
done
#Inputting Masked Backgrounds
echo "Inputting Masked Backgrounds"
FILES=StorageToDojoBackground/Comp/*.ppm
b=1
mkdir StorageToDojoComp
for i in $FILES
do
pamcomp StorageToDojoBackground/Comp/Comp$b.ppm Akimbo2/Converted/RED53.ppm -
alpha=Akimbo2/Converted/REDMASK53.pbm -invert >StorageToDojoComp/Comp$b.ppm
let b=$b+1
done
FILES=StorageToDojoBackground2/Comp/*.ppm
b=1
for i in $FILES
do
pamcomp StorageToDojoBackground2/Comp/Comp$b.ppm NinjaSword/Converted/RED$b.ppm -
alpha=NinjaSword/Converted/REDMASK$b.pbm -invert >NinjaSword/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images8a/*.ppm
b=1
mkdir WardrobeChange
mkdir WardrobeChange/Converted
mkdir WardrobeChange/Comp
for i in $FILES
do
ppmchange -closeness=37 blue red images8a/$b.ppm >WardrobeChange/Converted/RED$b.ppm
ppmcolormask -color red WardrobeChange/Converted/RED$b.ppm >WardrobeChange/Converted/REDMASK$b.pbm
pamcomp StorageToDojoComp/Comp61.ppm NinjaSword/Comp/Comp1.ppm -alpha=WardrobeChange/Converted/REDMASK$b.pbm
>WardrobeChange/Comp/Comp$b.ppm
let b=$b+1
done
FILES=images8b/*.ppm
b=1
mkdir WardrobeChange2
mkdir WardrobeChange2/Converted
mkdir WardrobeChange2/Comp
for i in $FILES
do
ppmchange -closeness=37 blue red images8b/$b.ppm >WardrobeChange2/Converted/RED$b.ppm
ppmcolormask -color red WardrobeChange2/Converted/RED$b.ppm >WardrobeChange2/Converted/REDMASK$b.pbm
pamcomp NinjaSword/Comp/Comp1.ppm StorageToDojoComp/Comp61.ppm -alpha=WardrobeChange2/Converted/REDMASK$b.pbm
-invert >WardrobeChange2/Comp/Comp$b.ppm
let b=$b+1
done
#Compiling avi Videos
echo "Compiling Avi Files"
ffmpeg -f image2 -i EnterStorage/Comp/Comp%d.ppm 1.avi
ffmpeg -f image2 -i StraightenGoggles/Comp/Comp%d.ppm 2.avi
ffmpeg -f image2 -i Akimbo/Comp/Comp%d.ppm 3.avi
ffmpeg -f image2 -i Akimbo2/Comp/Comp%d.ppm 4.avi
ffmpeg -f image2 -i StorageToDojoComp/Comp%d.ppm 5.avi
ffmpeg -f image2 -i WardrobeChange/Comp/Comp%d.ppm 6.avi
ffmpeg -f image2 -i WardrobeChange2/Comp/Comp%d.ppm 7.avi
ffmpeg -f image2 -i NinjaSword/Comp/Comp%d.ppm 8.avi
ffmpeg -f image2 -i End/Comp/Comp%d.ppm 9.avi
#Creating Video
echo "Creating Final Video"
ffmpeg -i 1.avi -sameq intermediate1.mpg
ffmpeg -i 2.avi -sameq intermediate2.mpg
ffmpeg -i 3.avi -sameq intermediate3.mpg
ffmpeg -i 4.avi -sameq intermediate4.mpg
ffmpeg -i 5.avi -sameq intermediate5.mpg
ffmpeg -i 6.avi -sameq intermediate6.mpg
ffmpeg -i 7.avi -sameq intermediate7.mpg
ffmpeg -i 8.avi -sameq intermediate8.mpg
ffmpeg -i 9.avi -sameq intermediate9.mpg
cat intermediate1.mpg intermediate2.mpg intermediate3.mpg intermediate4.mpg intermediate5.mpg intermediate6.mpg
intermediate7.mpg intermediate8.mpg intermediate9.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -sameq FINALOUTPUT.avi
And Here is the final outcome:
Monday, May 10, 2010
Subscribe to:
Posts (Atom)