Какой алгоритм изменения размера выбрать для видео?

28749
Grumpy ol' Bear

Я использую VirtualDub для кодирования с этими настройками . алгоритмы изменения размера

Однако я записываю свои вещи в 1920x1080 и уменьшаю их до 1280x720. Теперь вопрос: какой алгоритм выбрать при принятии решения о соотношении качества и размера файла?

Я всегда ездил с Lanczos, потому что это то, что было предварительно настроено. Эти описания совсем не помогают мне в моем вопросе.

17

3 ответа на вопрос

21
slhck

Почему это имеет значение?

Можно утверждать, что фильтры изменения размера не имеют большого значения, когда вы уменьшаете размер видео. Более того, они влияют на качество при масштабировании, потому что вам нужно генерировать данные там, где их нет.

Все эти фильтры оказывают лишь незначительное влияние на размер файла. Поэтому вам не стоит беспокоиться об огромных различиях.

Факт, как всегда при кодировании видео, что результат сильно зависит от исходного материала. Вы не всегда можете предсказать результат, но просто посмотрите, что работает лучше для вас.

Разные алгоритмы

В качестве примера приведем бикубическую и билинейную интерполяцию :

    

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

  • Билинейная интерполяция использует среду пикселя 2x2, а затем использует среднее значение этих пикселей для интерполяции нового значения. Это не лучший алгоритм, но довольно быстрый.

  • Бикубическая интерполяция использует среду пикселя 4x4, взвешивая самые внутренние пиксели выше, а затем берет среднее значение для интерполяции нового значения. Это - насколько я понимаю - самый популярный.

  • При усреднении области используется отображение исходных и целевых пикселей, при этом усредняются исходные пиксели с учетом доли покрываемых пикселей назначения. Согласно этой странице, она должна давать лучшие результаты при пониженной выборке.

  • Сплайн и синк интерполяция используют полиномы более высокого порядка и поэтому сложнее вычислить, чем бикубическая интерполяция. Я не думаю, что общее увеличение времени обработки стоит того, чтобы их использовать.

  • Повторная выборка Lanczos также включает фильтр sinc.

  • Фильтры hqx и 2xSaI используются для масштабирования пиксельной графики (например, игровые эмуляторы). Я не думаю, что есть веская причина использовать их в видео.

Сравнение Джеффа Этвуда

Оказывается, Джефф Этвуд провел сравнение алгоритмов интерполяции изображений . Его эмпирическое правило состояло в том, чтобы использовать бикубическую интерполяцию для понижающей дискретизации и билинейную интерполяцию при повышающей дискретизации. Тем не менее, он также отметил, что ...

Уменьшение изображений - абсолютно безопасная и рациональная операция. Вы просто снижаете точность и разрешение, отбрасывая информацию. Сделайте изображение настолько маленьким, насколько вы хотите, и вы получите полную точность - в пределах количества пикселей, которое вы разрешаете. Вы получите хорошие результаты независимо от того, какой алгоритм вы выберете. (Ну, если вы не выберете алгоритмы изменения размера нефа Pixel или Nearest Neighbor.)

Вот еще несколько примеров алгоритмов интерполяции изображения, в том числе те, которые я упоминал выше.

Итак, какой выбрать?

Я наконец нашел документ из сцены кодирования видео, который явно запрещает бикубическую фильтрацию. Вместо этого он поддерживает повторную выборку Lanczos, Spline или «Blackman». Эти парни, вероятно, знают, о чем они говорят, так что вы можете просто придерживаться фильтрации Ланцоша.

Раньше я всегда использовал «точную бикубическую А = 100». При переустановке обновленной программы это был дефолт Ланцоша, многим это понравилось. Я оставил это так долго. В конце концов, я нашел время для просмотра закодированных позже вещей Ланцоша, и подумал, что это не очень хорошо, следующий набор кодов, я снова переключился на бикубику. Я также использовал сжатие, я думаю, что Lanczos мог бы показаться лучше, если бы я не пытался так сильно уменьшить общий объем данных. Psycogeek 12 лет назад 0
Я не считаю Джеффа Этвуда экспертом в обработке изображений, и в этой статье он не рассматривает ничего, кроме билинейного, ближайшего соседа или (одного конкретного варианта) бикубического. Большинство людей согласились бы с его рекомендацией использовать билинейный режим, когда увеличение является плохим. thomasrutter 8 лет назад 1
@thomasrutter Спасибо. Я согласен с вами - когда я писал это, я, вероятно, знал об обработке изображений не так много, как сейчас. Думаю, я удалю ссылку на эту статью и найду другой источник. slhck 8 лет назад 1
4
Jeff Atwood

Я нашел хорошее изображение, которое документирует некоторые из них.

enter image description here

Полная версия здесь .

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

2
ZaB

Вы преобразуете 3x3 исходных пикселей в 2x2 целевых пикселей.

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

В противном случае будет достаточно средней площади и т. Д. (Также билинейной / трилинейной).