Захват, обработка и хранение видео с использованием ПК
Содержание материала
Отображение чересстрочного видео на компьютере
Описанная выше структура чересстрочного видео нормально воспринимается при воспроизведении на телевизоре — он имеет невысокое разрешение по вертикали, потому чётные и нечётные строки выводятся практически одна поверх другой. Мы видим все 50 фаз движения в секунду, полукадры всегда отображаются последовательно, один за другим.
Иначе обстоит дело, когда мы пытаемся воспроизвести чересстрочное видео на прогрессивном устройстве, каким является монитор компьютера. Существует ряд способов, как показать на компьютере чересстрочное видео:
- показывать только чётные или только нечётные поля, получим 25 кадров в секунду;
- показывать все поля по очереди, получим 50 кадров в секунду;
- составить полный кадр из двух полей и показывать 25 кадров в секунду.
Оставляем только половину полей
Недостатки первого способа очевидны: мы теряем половину информации из исходного видео. Получаем картинку с половинным разрешением по вертикали и теряем половину фаз движения (половинное разрешение по времени). Этот способ исключительно прост, потому он достаточно распространён. Для восстановления исходных пропорций изображения обычно уменьшается вдвое разрешение по горизонтали, что ещё больше снижает чёткость оцифрованного видео. Безусловно, несложно программно увеличить вдвое разрешение по вертикали, что, конечно же, не добавит чёткости по вертикали (см. Разрешение и чёткость изображения).
Сохраняем 50 кадров в секунду
Из 50 полей в секунду можно получить 50 кадров в секунду двумя способами: оставить разрешение кадра равным разрешению поля, то есть половине разрешения кадра; или увеличить разрешение по вертикали вдвое. Первый вариант не так хорош, как кажется: поскольку одно из полей находится ниже другого, то при выводе полукадров последовательно на экран прогрессивного устройства (монитор компьютера) мы увидим мелкое дрожание изображения вверх–вниз (тремор). Второй вариант позволит сохранить вертикальную чёткость только в том случае, если при увеличении разрешения будет использоваться информация из двух полей (интерполяция), при этом вдвое вырастет время обработки видео и требуемый для хранения объём. Более чем вдвое возрастают требования к мощности компьютера для воспроизведения такого видео.
Реальная необходимость сохранять 50 фаз движения в секунду имеет смысл для записей ТВ трансляций спортивных передач: часто их просматривают в замедленном виде или же вообще покадрово. Также желательно сохранить 50 кадров в секунду для плохо снятых любительских записей видео камерой, когда камера у «оператора» постоянно дрожит.
Подробнее о работе с оцифрованным видео с сохранением 50 фаз движения в секунду вы можете прочесть в статье Виктора Томилова 50 кадров в секунду.
Формируем 25 кадров в секунду — deinterlace
Самый распространённый способ представления оцифрованного видео на компьютере — это составление полного кадра из двух полукадров: в нечётные строки записывается содержимое одного поля, в чётные — другого. Необходимо учитывать то, что разные полукадры могут относиться к разным моментам времени. За 20 мс, которые разделяют два полукадра, объекты в кадре могут сместиться. При выводе прогрессивного видео с частотой 25 кадров в секунду будут заметны дефекты изображения (артефакты), которые очень часто за характерную форму называют «гребёнкой» или «расчёской». Посмотрите, на этом примере автомобили движутся влево:
«Гребёнка» чересстрочного видео.
Вы видите, что контуры всех объектов, которые сместились за 20 мс, «двоятся»: в одном полукадре (который расположен в нечётных строках) мы видим одно положение объектов, в другом полукадре (чётные строки) — другое положение. Очевидно, что чем быстрее движется объект в кадре, тем больше несоответствие позиций объектов в полукадрах — и тем заметнее артефакты:
Пока правый автомобиль был далеко от камеры, разница его положений составляла всего пару пикселей.
Когда автомобиль приблизился к камере, разница его положений стала заметно больше.
На необычных видеоэффектах артефакты чересстрочности приобретают ещё более причудливые формы:
Надпись увеличивается.
Нужно добавить, что «гребёнка» содержит множество мелких деталей, а это чрезмерно усложняет процесс последующего сжатия видео.
Для устранения эффекта чересстрочности применяются специальные меры, которые называются deinterlace (произносится как «деинтерлейс»). Существует несколько методов deinterlace. Bob deinterlace применяется для вывода 50 фаз движения на прогрессивном устройстве: растягиваем первое поле вдвое по вертикали и при помощи интерполяции смещаем изображение на половину пикселя вниз, растягиваем второе поле вдвое по вертикали и при помощи интерполяции смещаем изображение на половину пикселя вверх. Field deinterlace строит один кадр из двух полукадров, результат обработки имеет 25 кадров в секунду. Способов устранения артефактов чересстрочности несколько: от простого усреднения содержимого двух полей, до сложных алгоритмов детектирования движения в кадре и построения результирующего прогрессивного кадра при помощи интерполяции. В результате применения таких методов несколько снижается чёткость изображения: у готового прогрессивного кадра чёткость практически равна чёткости исходного видеосигнала в статичных сценах, в динамичных сценах она несколько меньше.
Восстановление прогрессивного видео
Иногда прогрессивное видео передаётся посредством чересстрочного сигнала — например кинофильм транслируется по ТВ. В таком случае верхний и нижний полукадры могут попадать в поля одного чересстрочного кадра (…[1в 1н] [2в 2н] [3в 3н] [4в 4н]…), но возможен такой вариант: …[1н 2в] [2н 3в] [3н 4в]… — то есть полукадры смещены на один. При просмотре кадра такого видео будет заметна «гребёнка», характерная для чересстрочного видео. В результате применения deinterlace мы получим гало — полупрозрачную дымку — вокруг всех движущихся объектов, будем видеть два полупрозрачных контура движущихся объектов.
Для того чтобы реконструировать исходное прогрессивное видео нам необходимо сдвинуть поля видеосигнала таким образом, чтобы восстановить их исходный порядок. Необходимыми возможностями обладают наиболее универсальные фильтры для проведения deinterlace.
Восстановление чересстрочного видео
В силу различных причин, описанная выше для прогрессивного видео ситуация может возникнуть и для чересстрочного видео. Алгоритму deinterlace это не помешает, если будет сохранён правильный порядок полей. Но часть аппаратуры по работе с видео (в том числе и некоторые карты захвата видео) грешит тем, что переставляет поля в пределах кадра, реже — ещё как–либо меняет порядок полей или кадров. В случае, если после deinterlace вы получаете гало вокруг движущихся объектов — порядок полей в исходном видео сигнале перепутан.
Чтобы нормально обработать такую видеозапись вам необходимо переставить поля или кадры так, чтобы восстановить исходный порядок полей. Необходимыми возможностями обладают наиболее универсальные фильтры для проведения deinterlace. Комбинацию настроек, скорее всего, вам придётся подбирать экспериментально. Подробнее об этом написано в 4–м разделе статьи Виктора Томилова Захват и обработка аналогового видео с максимальным качеством для сжатия в MPEG–4.
К счастью, описанные выше проблемы появляются не часто: в подавляющем большинстве случаев чересстрочное видео имеет правильный порядок полей.
Сохраняем чересстрочное видео
Не смотря на то, что монитор компьютера выводит прогрессивное видео, мы можем сохранить наше чересстрочное видео в исходном виде. Потом нам нужно будет или производить deinterlace во время воспроизведения на компьютере, или выводить изображение на телевизор или видеомагнитофон (где артефакты чересстрочного видео не видны).
Проблем при этом подходе несколько. Во–первых на 20—30% вырастают требования к размеру сжатого видео. Вторая проблема — как организовать вывод с компьютера на ТВ «честного» чересстрочного видео: с правильным порядком полей, которые бы сменялись 50 раз в секунду. Некоторые видеокарты с ТВ выходом позволяют это делать (например, ATI Radeon или Matrox), другие — нет.
Описанную выше проблему можно обойти, записав видео в доступном для аппаратных проигрывателей формате. До недавнего времени таким форматом был только MPEG–2 — его сможет воспроизвести любой DVD проигрыватель. Для качественного сжатия видео в формат MPEG–2 необходимы огромные объёмы данных (25—30 минут на CD) — видео в формате MPEG–2 удобно записывать только на DVD. Такой вариант решения на сегодня несколько дороже, хотя он и обладает рядом неоспоримых преимуществ: видео DVD могут быть воспроизведены любым аппаратным DVD–проигрывателем (включая поддержку нескольких звуковых дорожек, субтитров и меню), использование более ёмких дисков позволяет использовать потоки данных большей ширины, чересстрочное видео просто сохраняется в исходном виде (сохраняется исходное разрешение по оси времени). Лично мне не доводилось работать с такой технологией, за подробностями рекомендую обратиться к сайту М. Афанасенкова или к FAQ по созданию и редактированию цифрового видео.
В последнее время начали появляться DVD проигрыватели с возможностью декодирования видео в формате MPEG–4. Последние версии кодеров DivX и XviD имеют режимы для сохранения чересстрочного видео. Но эти режимы пока мало протестированы, даже сами авторы кодеров не рекомендуют их использовать. Сегодняшние версии программных декодеров не позволяют качественно воспроизвести чересстрочное видео на компьютере: DivX производит во время воспроизведения некий вариант field deinterlace, что приводит к «размазыванию» краёв движущихся объектов. Лучше доверить deinterlace более сложному алгоритму на этапе обработки видео, там он не будет стеснён жёсткими временными рамками «40 мс на кадр» и в состоянии обеспечить более высокое качество. Также вы можете использовать аппаратные проигрыватели с возможностью декодирования MPEG–4, например проигрыватель Xoro в состоянии воспроизводить чересстрочное видео, закодированное DivX.
Также видео можно хранить непосредственно в формате DV. Такой вариант позволяет избежать дополнительных потерь при обработке и сжатии видео, с другой стороны — видео в формате DV занимает много места: 13 Гбайт/час. Вы можете хранить DV–записи на DV–кассетах, однако такой вариант достаточно дорог; кроме того кассеты подвержены механическому износу и не обеспечивают быстрого доступа к любому месту записи (в отличие от дисковых носителей).