Деинтерлейс

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

В прошлой теме мы выяснили, что причиной интерлейса является смещение изображения объекта в кадре за промежуток времени между его фиксацией в нижнем и верхнем поле. И время это, для видеокамер, равно 1/50 секунды.

Как же можно избавиться от этой противной “гребенки”?

У нас на выбор целых 4 методики устранения интерлейса (здесь мы рассматриваем только общедоступные программные методы, без уменьшения физического разрешения по вертикали):

1.     Отбрасывание информации одного из полей и копирование в него информации из другого поля, т.е. дублирование одного из полей;

2.     Смешивание цветов из обоих полей;

3.     Отбрасывание информации одного из полей и интерполяция пикселей по окружающим его пикселям другого поля;

4.     Компенсация движения между полями, т.е. расчет векторов смещения объектов в одном поле относительно другого и возврат их в нужное положение.

Рассмотрим уже знакомый фрагмент кадра:

Рис.1.

Ниже приведена его часть, увеличенная в два раза, после обработки фильтрами деинтерлейса по каждой из методик (Рис.2).

Рис.2. Результаты работы фильтров деинтерлеса.

Рассмотрим подробнее каждую из методик:

Дублирование – самый простой и быстрый метод, однако на изображении явно заметны “ступеньки”. Фактически данный метод вдвое уменьшает вертикальное разрешение изображения, отбрасывая одно поле - теряем ровно половину информации.

Смешение цветов – так же достаточно простой и быстрый метод, с одной стороны потери информации не происходит, но смазывает детали и образует отражения движущихся объектов (как на следующем фрагменте).

Интерполяция – заметно проигрывает в производительности первым двум методам, однако, на первый взгляд, дает более симпатичный результат. Но, не будем забывать, что информация одного из полей интерполируется по информации из другого поля, детали, зафиксированные камерой в одном из полей потеряны. Фактически этот метод, как и первый, вдвое снижает эффективное разрешение изображения.

Компенсация движения – теоретически самый эффективный метод, поскольку должен предотвратить потерю информации из второго поля и сохранить лучшую детализацию по сравнению со всеми предыдущими методами. Хотя на практике этого практически не заметно, видимо, весьма сложно достаточно точно определить те самые вектора смещения изображения. Рассмотрим искусственно созданный пример с высокой вертикальной детализацией (Рис.3).

Рис.3.

Попытка фильтра, основанного на компенсации движения, сохранить детализацию (4) сильно похожа на шум и выглядит даже хуже чем результат интерполяции (3). При наличии в движении еще и вращательного момента, ситуация только усугубляется – появляются ложные детали. Вторая проблема – поля далеко не всегда дополняют друг друга. Такой простой пример – прыгающий матрос в тельняшке. Пусть в первый момент времени в первом поле были зафиксированы темные полосы тельняшки, какова вероятность того, что через 1/50 секунды во втором поле окажутся белые полосы? Думаю – 50/50. Т.е. запросто может оказаться, что и в первом и во втором поле будут зафиксированы темные полосы, и какой суперфильтр не применяй, а матрос будет не в полосатом тельнике, а в темной майке. Но все-таки, при малом движении существующие фильтры, применяющие компенсацию, показывают лучший результат.

Итак, мы пришли к тому, что практически любой способ деинтерлейса ведет к понижению эффективного вертикального разрешения вдвое. Не отчаивайтесь, не все так плохо. Здесь на сцену выступают так называемые area-based фильтры. До сих пор мы говорили о движущихся в пределах кадра изображениях, что же происходит с неподвижной частью кадра? Отличительной особенностью area-based фильтров является то, что они пытаются определить и подвергнуть обработке только движущиеся части изображения, в то время как неподвижная часть изображения остается не тронутой, т.е. сохраняется вся информация из обоих полей. А движущиеся изображения объектов и так немного смазаны. Вас это радует? Идем дальше…

Вернемся к рис.2, вы обратили внимание, что в результатах 2, 3 и 4 на некоторых участках изображения присутствуют горизонтальные полосы? А это как раз недостаток area-based фильтров. Дело в том, что фильтру необходимо по какому-то признаку определять является ли конкретный пиксель частью движущегося изображения и подлежит обработке или нет. А определяется это на основе сравнения соседних пикселей в разных полях, либо сравнением одного пикселя в разных кадрах, либо применяются оба метода вместе. Сравнение может проходить по цвету или по яркости. Т.о. должно существовать некоторое пороговое значение, если разница меньше – пиксель признается принадлежащим статичной части изображения и не подлежит обработке, если разница больше – пиксель принадлежит движущейся части изображения и подлежит обработке. Некоторые фильтры позволяют настраивать все эти параметры: производить сравнение в полях или кадрах, или и обоими способами, сравнивать по цветовой или яркостной составляющей, задавать пороговое значение. Чем больше величина порогового значения, тем меньше пикселей подвергаются обработке, чем меньше значение, тем больше размывается статичных элементов (Рис.4).

Рис.4.

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

И на последок выскажу еще несколько соображений.

Обращали ли вы внимание на то, что miniDV видеокамеры, имеющие (по проводимым тестам) горизонтальное разрешение чуть ли не более 600ТВЛ (что само по себе сомнительно, поскольку теоретический предел PAL кадра 720х576 – 540ТВЛ), в то же время, в вертикальном разрешении имеют показатели не многим более 400? Возможно, производители видеокамер намеренно занижают показатель вертикального разрешения, чтобы в изображении снизить искажения (изломы) тонких наклонных линий. 

И второе, коли речь идет о деинтерлейсе, вероятно, что видео предназначается для просмотра на ПК, тогда есть смысл сразу привести его к нормальному соотношению сторон, исправив тем самым некоторую вытянутость изображения по вертикали. Ближайшее “правильное” разрешение (с учетом дальнейшего сжатия в MPEG) составляет 720х544, можно уменьшить и до 640х480, или, если фильм захвачен с VHS видеомагнитофона, и мы хотим уместить 1.5 часа на 1 CD – уменьшить до 512х384. Изменяя размер кадра, мы интерполируем все пиксели изображения, частично скрывая артефакты в виде горизонтальных полос.

Я нарочно не приводил здесь сравнения фильтров различных производителей, поскольку многое зависит от самого видео, да и у пользователей нет единого мнения на их счет, тем более ПО постоянно обновляется. Многие фильтры являются встроенными в пакеты обработки видео (Adobe Premier, Canopus ProCoder), в кодеки (DivX), некоторые поставляются отдельными подключаемыми модулями (QS Deinterlace, Alparysoft Deinterlace). Я ставил себе задачу помочь начинающим разобраться в применяемых методиках и выбрать наилучший для себя вариант.

p.s.: если у вас ничего путного не получается с деинтерлейсом вашего видео - остается эффект отражения, или, хуже того, в видео наблюдается жуткий строб, смотрите следующую тему “Проблемы чередования полей”.

 

материал любезно предоставлен Александром Шустиковым
ales74@idknet.com