Деинтерлейсить или не деинтерлейсить?

А нужно ли вообще избавляться от этой расчески, то есть деинтерлейсить видео?
В инете на форумах находят все новые и новые методы борьбы с черезстрочным (интерлейсным) видео. Придумывают новые алгоритмы хитрее прежних, некоторые известные фирмы даже продают программы на основе этих алгоритмов. Строят какие-то мега скрипты на несколько страниц кода, чтобы убрать “ненавистную” гребенку. А надо ли это делать? Нужно ли переводить ваше видео из “i” в “p” (из интерлейсного в прогрессивное).? НЕТ. Делать этого не надо. А почему? А потому что, как бы ни были умны алгоритмы деинтерлейсинга, все равно они ухудшают первоначальное видео. Да, да. Все эти интерполяции, смешивания, достройки недостающих линий, очень сильно влияют на первоначальное видео. Поэтому мой вам совет, если уж у вас исходное видео интерлейсное, то и кодируйте его, как интерлейсное, все кодеки это умеют делать. И даже большинство фильтров, которые вы будете включать в процессе кодирования, тоже умеют различать интерлейсное видео от прогрессивного (для каждого из типов видео у них свой алгоритм работы), главное не забыть этим фильтрам указать с каким типом видео им нужно работать.
Запомните: во время кодирования деинтерлейсить не надо. Это уж потом, при просмотре в том или ином плэйере включите деинтерлейсинг какой вам понравится, а во время кодирования не надо.

Да, чуть не забыл. Интерлейсное (черезстрочное) видео было придумано в стародавние времена, когда слой люминофора на электронно-лучевых трубках телевизоров был настолько тормозным, что не успевал передавать киношное изображение 24 кадра в секунду (об этом я писал здесь). Тем не менее, сейчас, когда все телевизоры умеют показывать прогрессивное видео, черезстрочное видео никуда не делось. Так, все центральные каналы ведут свое вещание в этом режиме и даже спутниковое телевидение высокой четкости HDTV передает свой сигнал в интерлейсном виде 1080i. Так что, все эти деинтерлейсеры по прежнему нужны. Без них телепередачу на мониторе вашего компьютера смотреть не комфортно. Но помните, кодируем видео, как интерлейсное, а смотрим уже с деинтерлейсингом.

Как работает деинтерлейсинг?

Методов борьбы с черезстрочностью много. Об этом я уже писал в предыдущих постах. Все эти методы используют разные алгоритмы, от простеньких до таких крутожопых, что лучше вообще с ним не разбираться, а просто использовать, как есть. Вот, например, статейка описывающая работу алгоритма YADIF. Там все на английском, но по картинкам понятно, что без бутылки не разберешься.

Сравнение методов деинтерлейсинга

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

orig dv_orig оригинальное видео, полученное с dv-камеры
ci ci кубическая интерполяция
li li линейная интерполяция
lb li простое смешивание полей
md медианный фильтр
yadif один из продвинутых деинтерлейсеров, который удваивает частоту кадров (и не только)

Как видно из этой таблицы, самые четкие пылинки были получены методом кубической интерполяции. Остальные методы гребенку убирают, но частицы остаются смазанными.

Черезстрочное видео

Черезстрочность в телевещании была заложена еще в эпоху становления телевидения. Решено было показывать по телевизору с частотой 25 кадров в секунду, как в кино. Но оказалось, что реализовать такое был очень проблеммно. Потому что, пока луч телевизора пробегал по всем строчкам люминофора, верхние, подсвеченные строки уже начинали гаснуть. Получилось, что пол экрана показывала изображение, а вторая половина нет. Возникал эффект мерцания. Инженеры подумали и придумали. Раз уж люминофор такой тормозной, то давайте по нему рисовать не весь кадр, а только половину. Сказано, сделано, поделили весь кадр пополам. Только не тупо пополам. В первой половине все нечетные строки, во второй все четные. Вот теперь луч уже успевал пробежаться по экрану и когда он подсвечивал нижние строки, то верхние еще не успевали погаснуть. Так как кадров стало больше, то и частоту пришлось увеличить в два раза, до 50.
Экраны компьютеров, LCD и плазма – это устройства, которые призваны работать с прогрессивным видео. Они просто показывают кадр, который им необходимо показать и ни на какие поля его не делят.Видео они показывают кадр за кадром и если видео черезстрочное, то появляются артефакты в виде гребенки. Чтобы избавиться от этих артефактов нужно перевести видео из черезстрочного в прогрессивное, провести деинтерлейсинг.

Есть два распространенных метода деинтерлейсинга:
linear blend простейший деинтерлейсер, все что он делает, так это смешивает два полукадра (по полям) в один. Работает очень быстро. Движение, панорамарование, переходы передаются гладко, без рывков. Минусы: при большой разнице в полях появляются паразитные изображения, “ghost, что приводит к раздвоению картинки. Чтобы использовать этот метод надо запустить mencoder с параметром pp=lb.

yadif более продвинутый деинтрлейсер, который пытается анализировать такие параметры, как границы объектов и векторы движения. В результате получается картинка на которой абсолютно не видно эффектов черезстрочности. Правда этот фильтр слегка медленнее чем pp=lb и еще он спотыкается на сложных сценах, таких как панорамирование, что приводит к рывкам в движении.

Ну и какой же из них использовать? Записанные телепередачи, которые представляют собой черезстрочное видео лучше всего кодировать с опцией pp=lb. Движение будет плавным, но будут встречаться артефакты в том месте видео, где движение очень быстрое.

Если же вы конвертируете видео, которое было снято на пленку (то есть прогрессивное), а затем на каком-нибудь студийном оборудовании записанное как черезстрочное, то для деинтерлейсинга лучше использовать yadif. С помощью него можно добиться результатов, как в прогрессивном оригинале.

Кроме linear blend и yadif есть еще методы деинтерлейсинга, но эти пожалуй самые распространенные.