## Crop / CropBottom

`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)

`Crop` は、各フレームの余分なピクセルを切り落とします（crop）。

もしソースビデオの解像度が 720x480 で、これを VideoCD 向けに 352x240 に縮小したいなら、その正しいやり方は次のとおりです:

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

各カラーフォーマットを使用する際の制限事項については、色空間変換フィルタを参照。

width と height に負の値が入力されると、これらの値はオフセットとして取り扱われます。例えば:

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

v2.53 において、align オプション（デフォルトは false）が追加されました:
YUY2/RGB32 画像のクロップは、つねに 4 の倍数（4 バイト）で行われます。しかし、x バイト（整数）読み込む時、読み出しがメモリ内で x の倍数の配置にアライン*1されるとより高速になります。MMX/SSE は 8 バイトアラインメントを好み、SSE2 は 16 バイトアラインメントを好みます。データがアラインされていないと、読み出し/書き込み操作は、それぞれ少なくとも 4 バイト周期で遅延されます。このため、AviSynth によって画像が生成される時、それらの画像はつねに 16 の倍数にアラインされます。
画像がクロップされた場合に、それらのデータがメモリ内でアラインされずに配置されることもあるでしょう - 「align = true」は、アラインされていないメモリ配置からアラインされた配置へフレーム全体をコピーします。このため、もし次のフィルタの不利益が完全な画像のコピーの不利益よりも大きいなら、「align = true」を使ったほうがより高速に処理できます。とりわけ、次に平滑化フィルタが来るときには。
もう一方の `CropBottom` のシンタックスは、VHS テープからキャプチャされたクリップの下端からゴミを切り落とすのに役に立ちます。各フレームの下端から count ライン削除します。

異なる色空間のデータ構造を保持するには、以下の倍数を使用する必要があります。それらが守られなくてもエラーメッセージは出ませんが、奇妙な人工ノイズが発生するかもしれません。

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

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

YV12:
幅 2 の倍数
高さ ビデオがプログレッシブなら、2 の倍数
高さ ビデオがプログレッシブなら、2 の倍数

注: リサイズ関数では、オプションで入力フレームの分数ピクセルのクロップが可能です。この場合、リサイズされる端のピクセルに重み付けが適用されることになります。もし Crop の n の倍数というフォーマット次元での制限が不便なら、これらのオプションを使用することができます。リサイズ関数を参照してください。要約すると -- 「VHS のヘッドノイズやレターボックスの縁のようなくっきりした人工ノイズを切り落とすには、つねに Crop を使用してください。画像の一部分を抽出したり、画像の端の正確なリサンプリングを維持するには、リサイズの cropping パラメータを使ってください。」（Doom9 スレッド）

`原文 Date: 2005/03/24 22:07:08`
`日本語訳 $Date: 2008/06/22 07:41:11 $`

- 訳者註:
  - *1 整列、位置合わせ。参考: データ型のアラインメントとは何か，なぜ必要なのか？、hydrangea 0.09