Crop のバックアップの現在との差分(No.7)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#code(nonumber){{
Crop(clip clip, int left, int top, int width, int height, bool align)
#pre{{
Crop (clip, int left, int top, int width, int height, bool "align")
Crop (clip, int left, int top, int -right, int -bottom, bool "align")
CropBottom (clip, int count, bool align)
}}

#code(nonumber){{
Crop(clip clip, int left, int top, int -right, int -bottom, bool align)
}}
Crop は、各フレームの余分なピクセルを切り落とします(crop)。もしソースビデオの解像度が 720x480 で、これを VideoCD 向けに 352x240 に縮小したいなら、その正しいやり方は次のとおりです:

#code(nonumber){{
CropBottom(clip clip, int count, bool align)
}}

Cropは、各フレームの余分なピクセルを切り落とします(crop)。もし、あなたのソースビデオが解像度720x480であり、なおかつ、VideoCD用に352x240に縮小したいなら、ここに、そのための正確な方法があります:

#code(nonumber){{
# 正しいアスペクト比を保持したまま、CCIR601をVCDに変換する:
#pre{{
# 正しいアスペクト比を保持したまま、ITU-R BT.601 を VCD に変換する
ReduceBy2
Crop(4, 0, 352, 240)
Crop(4,0,352,240)
}}

AviSynth v2.01以降では、負の値(または0)を使った代替シンタックスが可能です。この場合、最後の2つのパラメータは、VirtualDubスタイルのオフセットとして取り扱われます。たとえば:
各カラーフォーマットを使用する際の制限事項については、[[色空間変換フィルタ>Convert]]を参照。

#code(nonumber){{
# 画像サイズを考慮せずに、すべての縁を16ピクセルをCropする:
Crop(16, 16, -16, -16)
'''width''' と '''height''' に負の値が入力されると、これらの値はオフセットとして取り扱われます。例えば:

#pre{{
# 画像サイズに関係なく、画像の四辺すべてから 16 ピクセル切り落とす:
Crop(16,16,-16,-16)
}}

v2.53において、'''align'''オプション(デフォルトはfalse)が追加されました:
v2.53 において、'''align''' オプション(デフォルトは false)が追加されました:~
YUY2/RGB32 画像のクロップは、つねに 4 の倍数(4 バイト)で行われます。しかし、x バイト(整数)読み込む時、読み出しがメモリ内で x の倍数の配置にアライン((訳者註: 整列、位置合わせ。参考: [[データ型のアラインメントとは何か,なぜ必要なのか?:http://www5d.biglobe.ne.jp/~noocyte/Programming/Alignment.html]]、[[hydrangea 0.09:http://homepage2.nifty.com/hydrangea/note/computer_architecture.html]]))されるとより高速になります。MMX/SSE は 8 バイトアラインメントを好み、SSE2 は 16 バイトアラインメントを好みます。データがアラインされて''いない''と、読み出し/書き込み操作は、それぞれ少なくとも 4 バイト周期で遅延されます。このため、AviSynth によって画像が生成される時、それらの画像はつねに 16 の倍数にアラインされます。

YUY2/RGB32画像のクロップ(crop)は、つねに4の倍数(4バイト)です。しかし、xバイト(整数)を読み込むとき、読み込みがメモリ内でxの倍数の配列にアラインされて(aligned)((訳者註: [[hydrangea 0.09:http://homepage2.nifty.com/hydrangea/]]の[[メモリアーキテクチャ/メモリアラインメント:http://homepage2.nifty.com/hydrangea/note/computer_architecture.html]]あたりを参照。なお、alignという言葉には「一列に整列する」などの意味がある。))いると、より高速になります。MMX/SSEは8バイトのアライ(ン)メントを好み、SSE2は16バイトのアライ(ン)メント(alignment)を好みます。もし、そのデータがアラインされて''いない''なら、読み/書きの実行は、少なくとも4サイクル遅れるでしょう。そのため、画像がAviSynthによって生成されるとき、それらは、つねに16の倍数にアラインされます。
画像がクロップされた場合に、それらのデータがメモリ内でアラインされずに配置されることもあるでしょう - 「'''align''' = true」は、アラインされていないメモリ配置からアラインされた配置へフレーム全体をコピーします。このため、もし次のフィルタの不利益が完全な画像のコピーの不利益よりも大きいなら、「'''align''' = true」を使ったほうがより高速に処理できます。とりわけ、次に平滑化フィルタが来るときには。

ある画像がクロップされているなら、それらは時にはアラインされずに(unaligned)配列されることもあるでしょう - "align = true"は、非アラインな(unaligned)メモリ配列からアラインされた(aligned)配列へ、全フレームをコピーするでしょう。そのため、もし、(Cropの)次にくるフィルタの不利益(penalty)が、完全な画像のコピーにかかる不利益よりも大きいなら、"align=true"を使うことによって、より高速になるでしょう。とりわけ、平滑系フィルタが次に来るようなときは。
もう一方の CropBottom のシンタックスは、VHS テープからキャプチャされたクリップの下端からゴミを切り落とすのに役に立ちます。各フレームの下端から '''count''' ライン削除します。

代替的な[[CropBottom>Crop]]シンタックスは、VHSテープからキャプチャされたクリップ底部(bottom)から、ゴミを切り落とすのに役に立ちます。各フレームの底部から'''count'''分のラインを削除します。
異なる色空間のデータ構造を保持するには、以下の倍数を使用する必要があります。それらが守られなくてもエラーメッセージは出ませんが、奇妙な人工ノイズが発生するかもしれません。

異なる色空間のデータ構造を保持するためには、以下の倍数が使用されなければなりません。もし、それらが守られていないとしても、エラーメッセージは出ないでしょう。しかし、それは、奇妙な人工物(artifact)を作り出すかもしれません。これに関する完全な論議は、DataStorageInAviSynthを参照。

RGB:~
width 制限なし~
height ビデオがプログレッシブなら、制限なし~
height ビデオがインターレースなら、2の倍数
幅 制限なし~
高さ ビデオがプログレッシブなら、制限なし~
高さ ビデオがインターレースなら、2 の倍数

YUY2:~
width 2の倍数~
height ビデオがプログレッシブなら、制限なし~
height ビデオがインターレースなら、2の倍数~
幅 2 の倍数~
高さ ビデオがプログレッシブなら、制限なし~
高さ ビデオがインターレースなら、2 の倍数~

YV12:~
width 2の倍数~
height ビデオがプログレッシブなら、2の倍数~
height ビデオがインターレースなら、4の倍数
幅 2 の倍数~
高さ ビデオがプログレッシブなら、2 の倍数~
高さ ビデオがインターレースなら、4 の倍数

注: リサイズ関数は、オプションで、入力フレームを分数でクロップすることを許可しています。これは、重みがリサイズされる端のピクセルに適用されるという結果になります。これらのオプションは、Cropのnの倍数というフォーマット面の制限が不便なら、使ってもよいでしょう。[[リサイズフィルタ>Resize]]を参照。要約すると -- "VHSのヘッドノイズやレターボックスの縁のようなハードな人工物を切り落とすためには、つねにCropを使ってください。画像の一部分を抽出するためや、正確なエッジのリサンプリングを維持するためには、リサイズのcroppingパラメータを使ってください。"([[Doom9 スレッド:http://forum.doom9.org/showthread.php?s=&threadid=91630]])
''注:'' リサイズ関数では、オプションで入力フレームの分数ピクセルのクロップが可能です。この場合、リサイズされる端のピクセルに重み付けが適用されることになります。もし Crop の n の倍数というフォーマット次元での制限が不便なら、これらのオプションを使用することができます。[[リサイズ関数>Resize]]を参照してください。要約すると -- 「VHS のヘッドノイズやレターボックスの縁のようなくっきりした人工ノイズを切り落とすには、つねに Crop を使用してください。画像の一部分を抽出したり、画像の端の正確なリサンプリングを維持するには、リサイズの cropping パラメータを使ってください。」([[Doom9 スレッド:http://forum.doom9.org/showthread.php?s=&threadid=91630]])

#hr
註: このページは、http://www.avisynth.org/Cropの日本語訳です。

註: このページは、AviSynth 2.5.7 に同梱されているマニュアル(英語版)の日本語訳です。原文は、AviSynth をインストールしたフォルダ内の Docs/english/corefilters/crop.htm にあります。なお、このページのテキストおよび画像のライセンスは、オリジナルのそれに準じます。