スポンサーサイト

 --, -- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

クレジットをマスクしてFlexibleMergeを使用する

 19, 2015 11:38
ED などのクレジットに差異があるクリップ同士を Merge するためのスクリプトです。
まだ実験段階ですので、今後も改良するかもしれません。

クリップの差分検出したのちにエッジ検出でクレジットをマスキングしていますので、背景のアニメーションに差異がある場合は有効に働きませんので悪しからず…。

1031.png

v01-v12: Mergeするクリップ。偶数個指定。
nmax: FlexibleMerge(nmax)
weight: FlexibleMerge(weight)
weight2: FlexibleMerge(weight2)
thr: FlexibleMerge(thr)
thY1: クレジットを検出するためのmt_edgeのthY1
thY2: クレジットを検出するためのmt_edgeのthY2
expand: クレジットマスクの膨張量
credit_clip: クレジットを使用するクリップ(v01-v12の中から選択)


function CustomMergeEx(clip v01, clip v02, clip "v03", clip "v04", clip "v05", clip "v06", clip "v07", clip "v08", clip "v09", clip "v10", clip "v11", clip "v12", int "nmax", float "weight", float "weight2", int "thr", int "thY1", int "thY2", int "expand", clip "credit_clip") {
v03=default(v03,blankclip(v01,length=-1))
v04=default(v04,blankclip(v01,length=-1))
v05=default(v05,blankclip(v01,length=-1))
v06=default(v06,blankclip(v01,length=-1))
v07=default(v07,blankclip(v01,length=-1))
v08=default(v08,blankclip(v01,length=-1))
v09=default(v09,blankclip(v01,length=-1))
v10=default(v10,blankclip(v01,length=-1))
v11=default(v11,blankclip(v01,length=-1))
v12=default(v12,blankclip(v01,length=-1))
credit_clip=default(credit_clip,v01)
nmax=default(nmax,5)
thY1=default(thY1,80)
thY2=default(thY2,255)
weight=default(weight,0.25)
weight2=default(weight2,0.1)
thr=default(thr,2)
expand=default(expand,30)

w1=weight
w2=weight2
n=nmax
t=thr
s=0
clip=FlexibleMerge(v01,v02,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s)
clip=v03.framecount!=-1?FlexibleMerge(clip,v03,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v04.framecount!=-1?FlexibleMerge(clip,v04,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v05.framecount!=-1?FlexibleMerge(clip,v05,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v06.framecount!=-1?FlexibleMerge(clip,v06,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v07.framecount!=-1?FlexibleMerge(clip,v07,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v08.framecount!=-1?FlexibleMerge(clip,v08,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v09.framecount!=-1?FlexibleMerge(clip,v09,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v10.framecount!=-1?FlexibleMerge(clip,v10,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v11.framecount!=-1?FlexibleMerge(clip,v11,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip
clip=v12.framecount!=-1?FlexibleMerge(clip,v12,weight=w1,weight2=w2,thr=t,nmax=n,exc=2,show=s):clip

maskA=mt_makediff(v01,v02,U=-128,V=-128)
maskB=v03.framecount!=-1&&v04.framecount!=-1?mt_makediff(v03,v04,U=-128,V=-128):BlankClip(v01,length=-1)
maskC=v05.framecount!=-1&&v06.framecount!=-1?mt_makediff(v05,v06,U=-128,V=-128):BlankClip(v01,length=-1)
maskD=v07.framecount!=-1&&v08.framecount!=-1?mt_makediff(v07,v08,U=-128,V=-128):BlankClip(v01,length=-1)
maskE=v09.framecount!=-1&&v10.framecount!=-1?mt_makediff(v09,v10,U=-128,V=-128):BlankClip(v01,length=-1)
maskF=v11.framecount!=-1&&v12.framecount!=-1?mt_makediff(v11,v12,U=-128,V=-128):BlankClip(v01,length=-1)

mask=mt_makediff(maskA,maskB,U=-128,V=-128)
mask=maskC.framecount!=-1?mt_makediff(mask,maskC,U=-128,V=-128):mask
mask=maskD.framecount!=-1?mt_makediff(mask,maskD,U=-128,V=-128):mask
mask=maskE.framecount!=-1?mt_makediff(mask,maskE,U=-128,V=-128):mask
mask=maskF.framecount!=-1?mt_makediff(mask,maskF,U=-128,V=-128):mask

mask=mask.mt_edge(thY1=thY1,thY2=thY2,mode="sobel",chroma="none").Levels(0,3.3,90,0,255).mt_binarize()
mask=Eval(AppendFunc("mask","mt_expand()",expand))

return mt_merge(clip,credit_clip,mask,luma=true)
}

function AppendFunc(string clip, string func, int limit, int "cnt") {
cnt=default(cnt,0)
cnt=cnt+1
clip=limit==cnt?clip:clip+"."+func
return limit==cnt?clip:AppendFunc(clip, func, limit, cnt)
}





©スズキヒサシ/株式会社KADOKAWA メディアファクトリー刊/すばる魔法学院

スポンサーサイト

COMMENT - 0



WHAT'S NEW?

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。