Advertisement
tophf

t_checkmate

Jul 16th, 2011
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. вызов: ReplaceFramesSimple(t_checkmate(tfm(ovr="22.tfm",cthresh=2,mi=100)),mappings="[1273 1449] [1522 1836]")
  2.  
  3. function t_checkmate( clip c, clip "cTFM", string "mappings", int "blksize", bool "showmask")
  4. {
  5.     mappings=default(mappings,"")
  6.     blksize=default(blksize,8)
  7.     showmask=default(showmask,false)
  8.  
  9.     vCM=c.checkmate().repair(c)
  10.     vMaskSkipCombed=c.mt_lutxy(c.daa(),"x y - abs",chroma="128").coloryuv(autogain=true,autowhite=true)
  11.     vMaskSkipCombed=vMaskSkipCombed.mt_lutf(vMaskSkipCombed,"avg","x 16 < 255 y - y ?").mt_expand().mt_expand(chroma="128").removegrain(4)
  12.     vMaskSkipCombed=vMaskSkipCombed.mt_logic(vMaskSkipCombed.trim(1,0),"min")
  13.     c.mt_merge(vCM,vMaskSkipCombed.mt_lutf(vMaskSkipCombed,"min","x",offx=8,offy=3,w=c.width-16).bilinearresize(c.width,c.height,8,3,c.width-16).mt_binarize(250),true)
  14.  
  15.     cTFM=default(cTFM,c.tfm(cthresh=1,mi=100)).crop(16,16,-16,-16).addborders(16,16,16,16)
  16.     vMA=manalyse(msuper(cTFM),blksize=blksize)
  17.     vSC=MSCDetection(cTFM,vMA)
  18.     vMM=cTFM.t_motionmask(2,blksize,MA=vMA)
  19.     vMMinv=vMM.mt_invert().mt_logic(vMaskSkipCombed,"min").bilinearresize(ceil(float(c.width)/blksize/8)*4,ceil(float(c.height)/blksize/8)*4).mt_inpand().bicubicresize(c.width,c.height)
  20.  
  21.     mt_merge(mt_merge(c.checkmate(100,50,50),vMMinv,y=2,u=4,v=4),vMMinv.mt_logic(c.linemask().mt_expand().binomialblur(5,u=1,v=1),"and"),true)
  22.     mt_merge(trim(1,0),mt_logic(vSC,vMM,"and"),true)
  23.     mt_merge(trim(0,-1)+last,mt_logic(vSC.trim(1,0),vMM,"and"),true)
  24.     mappings=="" ? last : c.ReplaceFramesSimple(last,mappings=mappings)
  25.     showmask ? overlay(mt_lut(y=-255,u=0,v=0),0,0,vMMinv,0.5,mode="chroma") : last
  26. }
  27.  
  28. function t_motionmask( clip c, int "tr", int "blksize", int "ml", bool "blur", clip "MA")
  29. {
  30.     tr=default(tr,1)
  31.     blksize=default(blksize,8)
  32.     ml=default(ml,50)
  33.     blur=default(blur,true)
  34.     MA=default(MA,manalyse(msuper(c),blksize=blksize))
  35.     c
  36.     vMM=mmask(MA,ml=ml,kind=0,Ysc=255).bilinearresize(max(64,ceil(float(width)/blksize/2)*2),max(64,ceil(float(height)/blksize/2)*2)).mt_binarize(1).removegrain(4).mt_expand().mt_expand().bicubicresize(width,height)
  37.     vMM=mt_logic(vMM,vMM.trim(1,0),"max")
  38.     vMM=(tr>=2) ? mt_logic(mt_logic(vMM,vMM.trim(1,0),"max"),vMM.trim(0,-1)+vMM,"max") : vMM
  39.     vMM=(tr>=3) ? mt_logic(mt_logic(vMM,vMM.trim(1,0),"max"),vMM.trim(0,-1)+vMM,"max") : vMM
  40.     blur ? vMM.gaussianblur(blksize*2) : vMM
  41. }
  42.  
  43. function linemask( clip c ) { mt_lutxy(c,c.mt_expand().mt_expand(),"x y - abs 8 - 7 <<") }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement