FC2ブログ
にわとり遊び
PC関連とエンコードの覚書き
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

フィールドの選択 or Mergeを自動で (その4)
※Itsで使うと、条件フィルタ内のグローバル変数が前のフレーム?を呼び出してしまうようなので上手く動きません。
どうすればいいのかわからず、お手上げ状態です。


function GetBetterFrame

SelectEveryで選んだ2つのフレームから良いフレームを出力する関数です。
双方のノイズ量に大差がなければブレンドを行います。

前のは設定を固めすぎて2224プルダウンに使えなかったので、不要な部分を削って必要な機能に絞りました。
DoubleWeave().SelectEvery(5,1,3) or DoubleWeave().SelectEvery(5,1,4)
であれば以下のように書きます。
Interleave(DoubleWeave().SelectEvery(5,1),DoubleWeave().GetBetterFrame(5,3,4))


function GetBetterFrame (clip clip,int step,int f1,int f2,float "thr",int "show") {
show=default(show,0)
global thr=default(thr,1.0)

f1c=clip.SelectEvery(step,f1)
f2c=clip.SelectEvery(step,f2)

global f1V=f1c.ConvertToYUY2().anticomb(checkmode=true, pass1=16).ConvertToYV12()
global f2V=f2c.ConvertToYUY2().anticomb(checkmode=true, pass1=16).ConvertToYV12()

f1c=(show==2) ? f1c.Subtitle("1 ",size=30,align=8) : f1c
f2c=(show==2) ? f2c.Subtitle(" 2",size=30,align=8) : f2c

M=Merge(f1c,f2c)
S=ConditionalFilter(clip,f1c,f2c,"AverageChromaV(f1V)","<","AverageChromaV(f2V)")

clip=ConditionalFilter(clip,M,S,"Abs(AverageChromaV(f1V)-AverageChromaV(f2V))","<","thr")

clip=(show==1) ? StackHorizontal(Histogram(f1c,mode="luma"),Histogram(f2c,mode="luma")).HorizontalReduceBy2.\
ScriptClip("""subtitle(string(AverageChromaV(f1V))+" : "+string(AverageChromaV(f2V)),align=8)""") : clip
return clip
}
スポンサーサイト

コメント

コメントの投稿














管理者にだけ表示を許可する


トラックバック
トラックバック URL
http://sasamisi.blog24.fc2.com/tb.php/295-8a40c1bf
この記事にトラックバックする(FC2ブログユーザー)

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