PDA

Zobrazit plnou verzi : Chromakey jinak



shneck
19-07-2009, 16:32
Dobrej. Mám dotaz na někoho, kdo má aspoň trochu základy skriptování v sony vegasu. Nějak nemůžu docílit pěkného klíčování a proto mě napadla taková věc, která by mohla být užitečná. Pokud mám statický záběr, tak pozadí je vždy stejné a jediná pohyblivá věc na záběru jsem já. Abych nemusel tahat sebou klíčovací pozadí, tak nešlo by napsat nějaký skript, kterému zadám "hlavní pozadí" a video a on by porozvnával, která oblast je ještě stejná jako na pozadí a která je jiná (v mém případě třeba já) Stejné části nebo pixely by nastavil jako průhledné a jiné pixely by nechal. V podstatě by se jednalo o automatické maskování, ale značně by to ulehčilo práci. Do exteriérů by se nemuseli tahat klíčovací pozadí, světla, plachty atd a vše by šlo točit v podstatě v pokoji. Tak se vás ptám, zda-li něco takového již není, nebo jestli to někdo neumí vyřešit. Předem děkuji za odpověď.

LOPOLO_2
19-07-2009, 17:05
Mno, zajimalo by me, jak bys definoval "hlavni pozadi" jinak, nez jak je to uz v jinych programech reseno. Teda barvou nebo definovanou maskou. Barva je jasna a software, kterej dokaze vicemene udrzet masku na klicovanym objektu existuje, ale to uz takova sranda neni. Jako skript pro vegas si to nedovedu predstavit vubec.

Terka
19-07-2009, 19:13
pomoci masktools pod avisynthem by to pravdepodobne slo.
pokud se pozadi nehybe muzes odecist video od pozadi. tam kde neni rozdil, ziskas masku.
protoze pravdepodobne budou existovat v pozadi i popredi stejne barvy, musis masku rozsirit.
proste google masktools, pripadne site:forum.doom9.org.

shneck
20-07-2009, 20:39
Díky moc...Po kouknu se na to...

Terka
24-07-2009, 12:51
http://manao4.free.fr/MaskTools.htm#motionmask
source = AviSource("overlay.avi").AssumeFPS(24)
#blur the source
clip = source.Blur(1.58).Blur(1.58).Blur(1.58)
#load the background to replace, captured from the blurred sequence
bgnd = ImageReader("bgnd.ebmp", 0, clip.framecount()-1, 24,
use_DevIl=false)
#load new background
new = ImageReader("new.ebmp", 0, clip.framecount()-1, 24,
use_DevIl=false)
#integrated filter to output the mask = (clip~overlay?)
mask = OverlayMask(clip, overlay.ConvertToYV12(), 10, 10)
MaskedMerge(source, new.ConvertToYV12(), mask, Y=3, U=3, V=3)