IVTC, интерлейс и прогрессив. Теория и проблемы перевода 29.97 кадров в 23.97.

Что такое Interlace и что такое Progressive?

Стандарты систем видео PAL и SECAM подразумевают запись и вывод видеосигнала в стандартном разрешении (768х576) и при конкретной частоте кадров - 25 кадров в секунду. Но кроме этих параметров они еще включают в себя способ вывода кадров (скажем на экран телевизора). Каждый кадр выводится не просто цельной картинкой, а картинкой, разбитой через каждую строку - двумя полями. Такой способ вывода называется интерлейсным (дословно "чередование"). То есть на самом деле мы получаем не 25, а 50 полукадров в секунду, что дает нам более плавно сдвигающуюся картинку. Но при создании AVI из такого фильма (хоть с видео источника, хоть с DVD) нам приходится применять фильтр deinterlace, чтобы на мониторе не было заметно "гребёнки" на движущихся объектах.

Монитор, в отличие от телевизора, выводит каждый кадр целиком, без чрезстрочного вывода полей. Такой способ вывода называется прогрессивным (дословно "последовательный").

На DVD дисках встречаются фильмы, записанные и тем, и другим способом. Но встречаются также и гибридные, когда чередуются прогрессивные и интерлейсные кадры. Что же это такое и как с этим бороться?

Зачем переводить 29.97 кадров/сек. в 23.97.

Телевизионный формат NTSC подразумевает размер кадра 640х480 (состоящий из двух полей 640х240) и 30 кадров в секунду. При переводе прогрессивного видеосигнала (обычно с кинопленки) 24 fps (кадра в секунду) в телевизионный формат NTSC используется увеличение количества кадров за счет вставки (и смещения) полей. В результате мы получаем источник с чередованием прогрессивных и интерлейсных кадров.

Последовательность полей в кадре в различных системах видео:

A C E G I
B D F H J
A B C D
A B C D
A A B C D
A B C C D
A C E G I
B D F H J
25 fps PAL(SECAM)
(интерлейсные
кадры)
24 fps NTSC
(кино, прогрессивные
кадры)
30 fps NTSC
(TC NTSC, телесине смесь, 3:2)
30 fps NTSC
(телевизионный или видео NTSC, интерлейсный)

Вот так это выглядит в виде последовательности полукадров. Была последовательность из 4 прогрессивных кадров (с двумя одинаковыми полями), стала (за счет добавления одинаковых полей и смещения полей) последовательность из двух интерлейсных и трех прогрессивных кадров. АА - прогрессивный кадр с двумя одинаковыми полями. АВ - кадр интерлейсный, с двумя разными полями. Процесс увеличения фрэймрэйта при подготовке видеосигнала к телевещанию называется telecine.

Из той же таблички мы видим, что система Pal (как и Secam) имеет в два раза больший объем полезной информации об изменениях в кадре в единицу времени (8 разных полукадров против 4 одинаковых пар), чем TC NTSC, несмотря на меньший фрэймрэйт. Системы ТВ PAL и NTSC примерно равны - у видео NTSC больше полей, следовательно плавнее сдвиг, а у PAL больше размер кадра, значит чуть больше резкость каждого кадра.

Когда к нам попадает фильм, записанный в NTSC, мы можем попробовать не портить его фильтром deinterlace, а попытаться провести обратную процедуру - inverse telecine (IVTC). Это способ удаления лишних вставленных полей с автоматическим доведением фрэймрэйта до 24 fps. Таким образом мы убиваем сразу двух зайцев - уменьшаем количество сжимаемой информации на 20%, при этом ничего не теряя в качестве, и уменьшаем излишнее действие фильтров (размывающих картинку) на наш фильм, опять же выигрывая в качестве.

Выводы:

1. При применении IVTC мы уменьшаем количество кадров на 20% абсолютно без потери информации. Следовательно:
 а) на 20% увеличивается поток (и на столько же улучшается качество) на каждый кадр при том же общем потоке видео;
 б) снижается нагрузка на процессор при декодировании фильма, т.к. каждый кадр просчитывается на восстановление и ресемплинг (потребуется проц меньшей мощности на тот же фильм, либо можно добавить CPU quality в установках декодера).

2. Применение IVTC позволяет сохранить полный кадр фильма без размывания его фильтром deinterlace (который ухудшает резкость кадра).

3. Все вышеизложенное применимо только к фильмам, над которыми проводили операцию TeleCine. Фильмы (клипы), снятые на видео- или телекамеру с системой NTSC имеют все кадры интерлейсными, аналогично PAL (SECAM) и фильтр IVTC не принесет каких-либо преимуществ, а наоборот, может ухудшить картину.

4. Переводить NTSC в PAL и наоборот для дальнейшего просмотра на компьютере не имеет ни малейшего смысла:
 а) система цветности при этом не меняется, изменения картинки не произойдет, изменится только относительное количество кадров в секунду, что не даст визуального выигрыша в качестве;
 б) корректно перевести 24 или 30 кадров в 25 (и наоборот) очень сложно, а в результате могут получится рывки с пропаданием кадров или же с их дублированием, что даст как раз проигрыш в визуальном качестве;
 в) для вывода на ТВ используются свои методы и задать вывод NTSC или PAL с видеокарты можно независимо от количества кадров в секунду.

Применение программ для IVTC (29.97 -> 23.97).

Flask MPEG 0.594. У Фласки есть опция изменения оригинальной частоты кадров фильма на одну из стандартных. Но при попытке изменить 29.97 fps на 23.97 конечный фильм не теряет интерлейсных кадров. Автор не пожелал писать модуль для автоматического удаления излишних полей. Не вздумайте при смене битрэйта применить опцию "сохранить структуру дельта-кадров", иначе вы получите сильные ежесекундные подергивания.

Вывод: пользоваться Флаской для изменения фрэймрэйта можно, но с использованием деинтерлейса. Плюс Фласки в том, что в ней можно применить интеллектуальный деинтерлейс - размыты будут только места, где появляется гребёнка. Об этой возможности рассказывалось в статье про Flask MPEG.

Flask MPEG 0.6. IVTC так и не сделана автором, интерлейс не прошел.

Вывод: пользоваться уменьшением фрэймрейта можно, но с применением деинтерлейса.

DVD2AVI. В последних версиях реализована опция Force Film, призванная уменьшать фрэймрейт с 29.97 до 23.97 кадров. При применении этой опции интерлейсные кадры не исчезают. Автор использует иной способ, чем IVTC, либо его алгоритм не может подстроится под сдвиг последовательности (ведь не обязательно начало фрагмента попадет на начало последовательности TC), хотя фильм при этом не дергается, следовательно программа выкидывает лишние кадры достаточно равномерно.

Вывод: применять Force Film можно, но с последующей обработкой фильтром deinterlace.

Virtual Dub. У Дуба есть опция IVTC. Причем есть возможность задать автоматическое определение начала последовательности и можно выставить начало (сдвинуть маркер начала последовательности) вручную. При этом задавать изменение fps не нужно - программа сама уменьшит его при применении этого фильтра. На небольшом куске фильма все проходит "на ура", все кадры идут резкими и прогрессивными. Но при применении этого фильтра на трехминутный видеоклип оказалось, что фильтр начинает ошибаться и интерлейсные кадры появляются снова. В чем же дело? При ближайшем рассмотрении оказалось, что каждая сцена на DVD начинается с последовательности ТС (повидимому при монтаже фильма-клипа сбивается последовательность интерлейсных-прогрессивных кадров), и фильтр, настроившись один раз, естесственно сбивается после смены порядка полукадров в начале следующей сцены, правда потом исправляется, оставляя нам в виде артефакта только один кадр с "гребёнкой". Редкие интерлейсные кадры приходятся как раз на стыки сцен (но не на каждый стык, а пореже). Кроме того, иногда появляется двойной кадр - кадр, следующий за ключевым, дублирует КК. При малой подвижности кадра, скажем когда шевелятся только губы актера, Дуб также допускает оплошности и оставляет интерлейс - возможно для ускорения обработки проверяется не весь кадр, а только его некоторая часть, либо несколько недоработан алгоритм.

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


(c) 04/2001 (03/2002), Сибирский Лихоман http://mydivx.lihoman.ru
Следующая статья раздела
Возврат на список статей