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 обрезает излишек пикселей каждого кадра.

Если исходное видео имеет разрешение 720х480 и хочется уменьшить его до 352х240 для VideoCD, то правильный путь сделать это:

# Преобразует CCIR601 в VCD, сохраняя правильное соотношение сторон
ReduceBy2
Crop(4,0,352,240)
См фильтры преобразования цветового пространства для информации о ограничениях при использовании разных цветовых форматов.

(left - левая граница, top - верхняя граница, width - ширина, height - высота выходного кадра).

Если введено отрицательное значение ширины width и высоты height, то они также трактуются как отступы справа и снизу (right, bottom). Например:

# Обрезает 16 пикселей вокруг всего изображения, независимо от его размера:
Crop(16,16,-16,-16)

В v2.53 добавлена опция align (по умолчанию false):
Обрезание YUY2/RGB32 изображения всегда кратно четырем байтам. Однако, при считывании X байтов (целого 32битного числа), операция проводится быстрее, когда читаемое выровнено по некоторому кратному значению. ММХ/SSE любят 8-байтовое выравнивание и SSE2 любит 16-байтовое выравнивание. Если данные НЕ выровнены, то каждая операция чтения/записи будет задерживаться на время не менее 4 тактов. Так что изображения всегда выровнены по кратному 16 адресу когда они создаются AviSynth.

Если изображение было обрезано, оно иногда размещается в невыровненной памяти - "align = true" скопирует весь кадр из невыровненной памяти в выровненную область. Так что если пенальти (торможение) от следующего фильтра больше, чем пенальти от полного копирования изображения, использование "align=true" обеспечит более быструю работу. Особенно если следующие фильтры являются смягчающими (smoother).
Альтернативный CropBottom синтакс полезен для обрезания мусора из низа клипа, захваченного с VHS ленты. Этот фильтр обрезает count строк с низа каждого кадра.

Для сохранения структуры информации в разных цветовых пространствах должны использоваться следующие условия. Если они не выполняются, то сообщений об ошибках не будет, но могут появиться странные искажения.

В RGB:
ширина без ограничения
высота без ограничения если видео прогрессивное
высота кратна 2 если видео чересстрочное

В YUY2:
ширина кратна 2
высота без ограничений если видео прогрессивное
высота кратна 2 если видео чересстрочное

В YV12:
ширина кратна 2
высота кратна 2 если видео прогрессивное
высота кратна 4 если видео чересстрочное

ЗАМЕЧАНИЕ: Функции изменения размера опционально позволяют частичное обрезание пикселей входного кадра, это приводит к применению взвешивания к краевым пикселям, которые подвергаются изменению размера. Эти опции могут быть использованы, если ограничения кратности размера для обрезания являются неудобными. См Функции изменения размера. В общем - "Для обрезания жестких артефактов вроде шума головок VHS или краев для режима letterbox всегда используйте Crop. Для извлечения части изображения и для поддержания правильного пересчета на краях, используйте режим обрезания в функциях изменения размера." (Doom9 thread)

$English Date: 2005/03/24 22:07:08 $
Русский перевод 10.05.2005 Drakon Rider drakan.ru