17

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

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

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

3 ответа3

21

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

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

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

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

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

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

    

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

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

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

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

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

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

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

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

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

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

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

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

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

6

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

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

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

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .