Photo Gallery

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

表題の通りです。

TrimBlend(v1, v2, "2,5,10")


こうすることで、2, 5, 10 番目のフレームだけ、v2 クリップのものに差し変わります。
フレーム番号リストは、昇順でカンマ区切りが前提です。


function TrimBlend(clip v1, clip v2, string list) {
numstr=Findstr(list, ",")==0 ? list : LeftStr(list, Findstr(list, ",")-1)
num=Floor(value(numstr))
list=Findstr(list, ",")==0 ? "" : MidStr(list, Findstr(list, ",")+1)

num==0 ? v2.Trim(0,-1)++v1.Trim(1,0) :
\ (FrameCount(v1)-1)>num ? v1.Trim(0,num-1)++v2.Trim(num,num)++v1.Trim(num+1,0) :
\ v1.Trim(0,num-1)++v2.Trim(num,num)

return StrLen(list)>0 ? TrimBlend(last,v2,list) : last
}

>>バグ修正版を利用してください。



関連記事
(繰り返し版)指定したフレーム番号だけ別クリップのフレームを挿入する関数
指定したフレーム番号だけ別クリップのフレームを挿入する関数 (2)


twitter
↑参考になったという方は、是非記事のツイートをお願いします

スポンサーサイト

Tag:Trim クリップ ブレンド 結合

2 パターンのクリップを
1 画面で比較する関数です。
渡されたクリップを左右にシンメトリーで表示して、下には画像の差分が表示されます。

フィールド選択をする際に役立つと思います。

MPEG2Source("C:\encode\encode\inou_tx_01.d2v")
SeparateFields()
v1=SelectEvery(10,1,0,3,4,5,6,9,8).Weave()
v2=SelectEvery(10,1,0,3,2,5,6,7,8).Weave()
field_checks(v1, v2, select="2-3", mode=0)
return last


select で 2-3 を指定した場合は偶数フレーム、 3-2 を指定した場合は奇数フレームのみプレビューされます。
中央にフレーム番号があります。
mode は 0 ~ 2 まであり、表示方法の切り替えになっています。


■ mode=0 デフォルト
mode_0.png

■ mode=1 コーミング表示
mode_1.png

■ mode=2 反転
mode_2.png



function field_checks(clip v1, clip v2, string "select", int "mode") {
select=default(select,"2-3")
mode=default(mode,0)
v1=v1.Crop(v1.width/2, 0, 0, 0).Spline36resize(v1.width, v1.height)
v2=v2.Crop(v2.width/2, 0, 0, 0).Spline36resize(v2.width, v2.height)
v1=mode==0 ? v1 : mode==1 ? v1.ConvertToYUY2().AntiComb(checkmode=true, pass1=24).ConvertToYV12() : mode==2 ? v1.Invert() : v1
v2=mode==0 ? v2 : mode==1 ? v2.ConvertToYUY2().AntiComb(checkmode=true, pass1=24).ConvertToYV12() : mode==2 ? v2.Invert() : v2
v3=Subtract(v1, v2)
v4=Subtract(v1, v2)
v3=v3.Spline36resize(v1.width, v1.height)
v4=v4.Spline36resize(v2.width, v2.height)
v5=StackHorizontal(v3.FlipHorizontal().Crop(v1.width/2, 0, 0, 0), v4.Crop(0, 0, -v1.width/2, 0)).Spline36resize(v3.width, v3.height/2).Levels(112, 0.6, 255, 0, 512).AddBorders(0,0,0,v3.height/2,$000000)
v6=BlankClip(length=FrameCount(v1), width=v1.width, height=v1.height, color=$828282).ConvertToYV12()
ShowFiveVersions(v1.FlipHorizontal().SubTitle("v1", x=v1.width-48,size=32).Crop(0,0,-2,-2).AddBorders(0,0,1,1,$000000),v5,v2.SubTitle("v2", x=16,size=32).Crop(2,0,0,-2).AddBorders(2,0,0,1,$000000),v6,v6).Crop(0, 0, v1.width*2, -v3.height/2)
ShowFrameNumber(x=v1.width-80, y=v1.height, size=64)
select=="2-3" ? SelectOdd() : select=="3-2" ? SelectEven() : last
}





ちなみに、画質の差が小さいフレーム・大きいフレームのプレビュー例はこんな感じです。

34.jpg

516.jpg





関連記事
フィールド画質の比較関数 (2)


twitter
↑参考になったという方は、是非記事のツイートをお願いします




引用元:TVアニメ「異能バトルは日常系のなかで」
© 2014 望 公太・SBクリエイティブ/泉光高校文芸部


Tag:比較 プレビュー 画質

Take-R さんの pulldowncheck の SeparateFields 版


function PulldownCheckEx(clip clip, bool "checkmode") {
checkmode = default(checkmode, true)
clip
### プレビュー生成
SeparateFields()
a = SelectEvery(10,1,0,3,2,5,6,7,8).Weave().Subtitle("SelectEvery(10,1,0,3,2,5,6,7,8)", size=90)
b = SelectEvery(10,1,2,3,4,7,6,9,8).Weave().Subtitle("SelectEvery(10,1,2,3,4,7,6,9,8)", size=90)
c = SelectEvery(10,3,2,5,4,7,8,9,10).Weave().Subtitle("SelectEvery(10,3,2,5,4,7,8,9,10)", size=90)
d = SelectEvery(10,1,0,3,4,5,6,9,8).Weave().Subtitle("SelectEvery(10,1,0,3,4,5,6,9,8)", size=90)
e = SelectEvery(10,1,2,5,4,7,6,9,10).Weave().Subtitle("SelectEvery(10,1,2,5,4,7,6,9,10)", size=90)
ShowFiveVersions(a, b, c, d, e)
ConvertToYUY2()
AntiComb(checkmode=checkmode)
ConvertToYV12()
return last
}


pulldowncheckex.jpg

選択フィールドはオリジナル版と同じはずですが
処理データ量が DoubleWeave() より少ないので
動作がちょっとだけ軽いかも?しれません。

一応、一度だけベンチしましたが、若干処理が速かったです。
オリジナルに対して 10% 程度の速度アップを記録してます。


誤差です。




引用元:TVアニメ「異能バトルは日常系のなかで」
© 2014 望 公太・SBクリエイティブ/泉光高校文芸部


Tag:pulldowncheck DoubleWeave SeparateFields 異能バトルは日常系のなかで

トップファースト

3-2pulldown
DoubleWeave().SelectEvery(5,0,3)
└→SeparateFields().SelectEvery(10,1,0,3,4,5,6,9,8).Weave()
DoubleWeave().SelectEvery(5,1,3)
└→SeparateFields().SelectEvery(10,1,2,3,4,7,6,9,8).Weave()

2-3pulldown
DoubleWeave().SelectEvery(5,0,2)
└→SeparateFields().SelectEvery(10,1,0,3,2,5,6,7,8).Weave()
DoubleWeave().SelectEvery(5,0,3)
└→SeparateFields().SelectEvery(10,1,0,3,4,5,6,9,8).Weave()

3-2pulldown 前方1fズレ
DoubleWeave().SelectEvery(5,1,3)
└→SeparateFields().SelectEvery(10,1,2,3,4,7,6,9,8).Weave()
DoubleWeave().SelectEvery(5,1,4)
└→SeparateFields().SelectEvery(10,1,2,5,4,7,6,9,10).Weave()

2-3pulldown 後方1fズレ
DoubleWeave().SelectEvery(5,2,4)
└→SeparateFields().SelectEvery(10,3,2,5,4,7,8,9,10).Weave()
DoubleWeave().SelectEvery(5,0,2)
└→SeparateFields().SelectEvery(10,1,0,3,2,5,6,7,8).Weave()
前回 の続き


step00.jpg

こちらの 2-3pulldown された映像を例に、プログレッシブ化までの流れを説明します。




■ <STEP1> SeparateFields でフィールド分離する


step02.jpg


フレーム画像を、走査線単位で奇数行(トップフィールド)、偶数行(ボトムフィールド)に分離して
時間軸上に並べます。
データは上下に詰めるので、情報量は変わりません。




■ <STEP2> SelectEvery で選択・並べ替えを行う


step2.jpg

SelectEvery という関数を使うことで、フィールドを自分の思い通りの順番に並べることが出来ます。
画像のように並べる為には SelectEvery(10, 1, 0, 3, 4, 5, 6, 9, 8) と記述します。
こうすることで 10 フィールド単位で、1, 0, 3, 4, 5, 6, 9, 8 番目のフィールドが選択されます。




■ <STEP3> Weave でフレーム結合する


step3.jpg

STEP2 で規則的に並べられたフィールドを、Weave 関数で結合します。
余分なフィールドが除外されているので、縞フレームが無くなり、フレーム数が 4/5 になりました。


続きはまた後日






関連記事
エンコ入門 - フィールドを選択して逆テレシネ化 (1)
エンコ入門 - フィールドを選択して逆テレシネ化 (2)




twitter
↑参考になったという方は、是非記事のツイートをお願いします

Tag:エンコード 逆テレシネ フィールド フレーム AviSynth SeparateFields SelectEvery Weave

前回 のつづき


■ フィールドの並びをチェックする


SeparateFields() でフィールド分離したクリップは、下記のような並び順になります。

field.png


実際の映像ソースでプレビューするとどうなるか、GIF 動画を用意しました。
解像度が 1920x540 と大きいので、全体を見たい場合は画像リンクからお願いします。


field_0-9.gif



まずは変化が分かりやすいシーンを探して、10 フィールド分の動きをチェックします。
横スクロールの映像で、尚且つ静止しているオブジェクト(クレジットの文字など)があればチェックし易いです。

フィールドとは、フレームの偶数行と奇数行を分離して並べた状態ですので
コマ送りで見たとき、上下に 1 ピクセルずつブレているのが分かると思います。

2 枚のフィールドで 1 セット( 1 枚のフレーム ) ですから
最終的に 2 フィールドずつ規則的に並べなおして、2 フィールドずつブレンドしていけばいい訳です。

そのために、この映像を確認したら、まずはどういった規則で並んでいるのか下記のようにメモを取ります。
(我流なので、自分で分かれば良いです)


1T  1B  2T  2B  2T  3B  3T  4B  4T  4B
00 01 02 03 04 05 06 07 08 09


T = トップフィールド、 B = ボトムフィールドとして、同じフレームの絵は同じ番号を振ります。


( ※ 動きの少ないシーンでチェックをすると、上下のブレは分かっても、同じコマなのか違うコマなのか判別し辛いので
今回のように毎フレーム動いてくれるシーンを選びました。
縦スクロールのシーンを選んでも良いのですが、そうすると今度は上下にブレるフィールドの判別がし辛くなるので
チェックには横スクロールのシーンが最適だと思います。 )




続きはまた後日


関連記事
エンコ入門 - フィールドを選択して逆テレシネ化 (1)
エンコ入門 - フィールドを選択して逆テレシネ化 (3)



twitter
↑参考になったという方は、是非記事のツイートをお願いします



引用元:TVアニメ「グリザイアの果実」
©Frontwing/Project GRISAIA


Tag:エンコード 逆テレシネ フィールド AviSynth SeparateFields グリザイアの果実

今回は DoubleWeave() を使ったインターレース解除ではなく
直接フィールドを参照して、24fps 化してみます。

フィールドって何だ?って人は こちら の記事を読んでください。

■ この方法を使う利点
・より高画質なフレームを生成できる(こともある)
・フィールドのズレや、一般的でないフィールドの順番でも対処できるようになる
・インターレースについて、より理解が深まるので応用が利く

■ 今回使用する必須環境
・AviSynth
・AvsP(AvsPmod)


1 本のアニメ OP 映像を使って、24fps 化の方法を順番に説明します。
今回私がプレビューに使用したのは、 AvsPmod v2.2.0 です。

■ フィールドを分離する


■ 分離前のプレビュー
AvsPmod_Preview1.jpg

■ 分離後のプレビュー
AvsPmod_Preview2.jpg


AviSynth では、クリップに対して SeparateFields() という関数を使用することにより
フィールド分離することができます。
総フレーム数 解像度 フレームレート の変化に着目してください。


info_preview.jpg


それぞれ、総フレーム数が 2 倍、縦解像度が 1/2 倍、フレームレートが 2 倍になっています。
原理は以下の画像を確認してください。


SeparateFields_image.gif

field.png


AviSynthクリップは、フレームフィールドの区別をしないので
解像度が縦半分のフレームが、 2 倍の枚数出来た(再生時間は変わらないので fps も 2 倍)ようにプレビューされます。

上記は、フィールドの数が順番に 2 枚、3 枚、2 枚、3 枚と規則的に並んでいるので
このパターンを 2-3 pulldown と呼んでいます。



続きはまた後日



関連記事
エンコ入門 - フィールドを選択して逆テレシネ化 (2)
エンコ入門 - フィールドを選択して逆テレシネ化 (3)


twitter
↑参考になったという方は、是非記事のツイートをお願いします







引用元:TVアニメ「甘城ブリリアントパーク」
©賀東招二・なかじまゆか/甘ブリ再生委員会


Tag:エンコード 逆テレシネ フィールド AviSynth SeparateFields 甘城ブリリアントパーク


function SelectEveryField(clip c, string fields) {
c
SeparateFields()
Eval("SelectEvery(" + fields+ ")")
Weave()
return last
}
MediaInfo.dll を活用して、D&D されたメディアファイルの情報表示と
x264 のオプション引数を表示する GUI を作成しました。

おまけで エンコード時間などを日本時間で表示。

getStInfoGUI.jpg


使い方は、getStInfoGUI.exe を開いてウインドウにメディアファイルを D&D するだけです。
動作には MediaInfo.dll と putin さんの getStInfo.exe が必要です。

オプション引数形式への変換ルールは、同梱の CSV に定義してあるので
お好みで調整してください。
一応それなりに機能する default.csv と tModビルド用に調整した AQ 特化の aq.csv を同梱してあります。


twitter
↑参考になったという方は、是非記事のツイートをお願いします



ダウンロード
getStInfoGUI v0.6.zip

Tag:MediaInfo 引数 コピー x264 getStInfo getStInfoGUI



WHAT'S NEW?

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