KernelDeint

Общая информация

Автор: Donald A. Graft
Версия: 1.4.0
Загрузка: http://neuron2.net/mine.html
Категория: деинтерлейс и устранение pulldown
Требования: цветовые пространства YV12 & YUY2 & RGB

Введение

Этот фильтр делает деинтерлейс (удаление чересстрочности), используя ядерный (матричный взвешенный, kernel) подход. Это дает значительно улучшенное вертикальное разрешение в деинтерлейсных областях по сравнению с простым отбрасыванием поля.

Если вы устанавливаете порог фильтра в 0, вы получите результат, совершенно свободный от артефактов, но при этом с меньшей потерей вертикального разрешения, чем простое отбрасывание одного поля. Для дальнейшего улучшения результата установите некоторый порог фильтра, определяющий величину движения: если движение меньше порога, то область считается статической и не обрабатывается (при этом сохраняется полное вертикальное разрешение), а в движущихся областях применяется матричная (kernel-based) интерполяция, что позволяет сохранить более высокое вертикальное разрешение, чем отбрасывание одного поля с последующей обычной интерполяцией.

Фильтр работает в цветовых пространствах RGB, YUY2 или YV12.

Чтобы применять фильтр для постобработки после Telecide(), используйте следующий скрипт:

Telecide(..., post=1, hints=true)
KernelDeint(...)

Примечание перев.: в настоящее время существует усовершенствованная (MMX-оптимизированная) версия этого фильтра (от Leak) под названием LeakKernelDeint. Рекомендуется пользоваться именно ей.


Синтаксис

KernelDeint() имеет следующие именованные параметры:

order (0-1, по умолчанию не задан!) Этот параметр определяет порядок полей в клипе. Чрезвычайно важно задать его правильно. Используйте order=0 для задания нижнего поля первым (bff), order=1 для верхнего поля первым (tff). Параметр необходим, при его отсутствии фильтр возвращает ошибку. Так как этот параметр имеет ключевое значение, рекомендуется не делать предположений о порядке полей, а определить его явным образом, используя следующую методику:

Создайте скрипт AVISynth, выдающий входной файл без всякой обработки. Например, если это AVI файл, то используйте AviSource (прим.перев.: или лучше OpenDMLSource) Добавьте строку, разделяющую поля в предположении верхнего поля первым:

AviSource("your_clip.avi")
AssumeTFF().SeparateFields()

Загрузите этот скрипт в VirtualDub, отыщите сюжет с движением и просматривайте его покадрово. Если движение происходит всегда в правильном направлении, то всё в порядке и наше предположение о верхнем поле первом было справедливо. Если движение дёрганное ("шаг назад, три шага вперед, шаг назад, три вперед..."), то попробуйте поменять AssumeTFF на AssumeBFF, если после этого всё встанет на свои места, то видео имеет нижнее поле первое. (прим.перев.: картинка при такой проверке может немного дрожать по вертикали, это нормально. нужно искать горизонтальное движение и смотреть по нему. Кроме того, есть и более автоматизированные способы определения порядка полей, например, скрипт CheckTopFirst)

threshold (0-255, по умолчанию 10) Этот параметр определяет порог движения. Движущиеся области подвергаются деинтерлейсингу с применением матричного подхода, статические оставляются без изменений. Используйте параметр map для тонкой настройки порога: только области с "гребёнкой" должны деинтерлейситься.

sharp (true/false, по умолчанию false) Установка этого параметра в true задаёт ядро интерполяции, которое обеспечивает более высокое вертикальное разрешение, но при этом поднимает резкость изображения (sharpen), что может давать некоторые артефакты на контрастных деталях.

twoway (true/false, по умолчанию false) Установка в true этого параметра задаёт ядро, включающее и предыдущее, и последующее поле для интерполяции. В противном случае используется только предыдущее поле, что даёт более чёткую картинку и меньше смешивает кадры (что положительно сказывается на anime), а также быстрее. Параметр twoway включён для совместимости с предыдущими версиями, где подразумевалось использование двух полей.

map (true/false, по умолчанию false) Установка map=true включает режим показа движущихся областей, определяемых параметром threshold. Используйте для настройки порога определения движения.

debug (true/false, по умолчанию false) Включает вывод отладочной информации для DebugView. В нынешней версии информация заключается в номере версии и "подсказках" (hints) от фильтра Telecide() о том, является кадр прогрессивным или чересстройным. Если подсказки отсутствуют, все кадры считаются чересстрочными.

 


Copyright © Donald A. Graft, All Rights Reserved.

Чтобы узнать об обновлениях и других фильтрах и утилитах, посетите мой сайт:
http://neuron2.net/

$English Date: 2004/08/13 21:57:25 $
Русский перевод 25.06.2005 Eugene Vasiliev (eugvas@mccme.ru)