TL; DR
При выборке вниз: используйте фильтрацию Ланцоша или Сплайна.
При взятии проб: используйте фильтрацию Бикуба или Ланцоша.
Они основаны на материалах, которые я читал на протяжении многих лет, и на том, что я видел в промышленности. Рекомендации могут различаться в зависимости от типа контента и области применения.
Почему это имеет значение?
Можно утверждать, что фильтры изменения размера не имеют большого значения, когда вы уменьшаете размер видео. Более того, они влияют на качество при масштабировании, потому что вам нужно генерировать данные там, где их нет.
Все эти фильтры оказывают лишь незначительное влияние на размер файла. Поэтому вам не стоит беспокоиться об огромных различиях.
Факт, как всегда при кодировании видео, что результат сильно зависит от исходного материала. Вы не всегда можете предсказать результат, но просто посмотрите, что работает лучше для вас.
Разные алгоритмы
В качестве примера приведем бикубическую и билинейную интерполяцию :
Видите, что бикубическая интерполяция приводит к более гладким краям? Это очень общее утверждение ... но вы можете найти обзор алгоритмов масштабирования изображения здесь .
Билинейная интерполяция использует среду пикселя 2x2, а затем использует среднее значение этих пикселей для интерполяции нового значения. Это не лучший алгоритм, но довольно быстрый.
Бикубическая интерполяция использует среду пикселя 4x4, взвешивая самые внутренние пиксели выше, а затем берет среднее значение для интерполяции нового значения. Это - насколько я понимаю - самый популярный.
При усреднении области используется сопоставление исходных и целевых пикселей, при этом усреднение исходных пикселей осуществляется с учетом доли покрываемых пикселей назначения. Согласно этой странице , она должна давать лучшие результаты при понижении частоты дискретизации.
Сплайн и синк интерполяция используют полиномы более высокого порядка и поэтому сложнее вычислить, чем бикубическая интерполяция. Я не думаю, что общее увеличение времени обработки стоит того, чтобы их использовать.
Повторная выборка Lanczos также включает в себя фильтр sinc. Это дороже в вычислительном отношении, но обычно описывается как очень высокое качество и может использоваться для повышения и понижения частоты дискретизации.
Фильтры hqx и 2xSaI используются для масштабирования пиксельной графики (например, игровые эмуляторы). Я не думаю, что есть веская причина использовать их в видео.
Сравнение Джеффа Этвуда
Оказывается, Джефф Этвуд провел сравнение алгоритмов интерполяции изображений . Его эмпирическое правило состояло в том, чтобы использовать бикубическую интерполяцию для понижающей дискретизации и билинейную интерполяцию при повышающей дискретизации. Тем не менее, это не то, что обычно рекомендуется для кодирования видео - и некоторые комментаторы ставят под сомнение опыт Atwood в этой области.
Тем не менее, он также отметил, что ...
Уменьшение изображений - абсолютно безопасная и рациональная операция. Вы просто снижаете точность и разрешение, отбрасывая информацию. Сделайте изображение настолько маленьким, насколько вы хотите, и вы получите полную точность - в пределах количества пикселей, которое вы разрешаете. Вы получите хорошие результаты независимо от того, какой алгоритм вы выберете. (Ну, если вы не выберете алгоритмы изменения размера нефа Pixel или Nearest Neighbor.)
Другие примеры
Вот еще несколько примеров алгоритмов интерполяции изображений , в том числе те, которые я упоминал выше.
Я также нашел документы (правила сцены) из сцены кодирования видео, которые явно запрещают бикубическую фильтрацию для понижающей дискретизации. Вместо этого они одобряют повторную выборку Lanczos, Spline или «Blackman».
Я нашел хорошее изображение, которое документирует некоторые из них.
Полная версия здесь .
В общем, вы хотите получить эффект мягкой резкости при превращении большего изображения в более мелкое, и эффект мягкого размытия при превращении меньшего изображения в более крупное. По умолчанию для фильтра MadVR установлено значение Lanczos для увеличения масштаба изображения и бикубическое для уменьшения масштаба.
источник
Вы преобразуете 3x3 исходных пикселей в 2x2 целевых пикселей.
Если вы хотите сохранить четкие линии, выберите Lanczos или что-то, что использует больше окружающих пикселей, чтобы не размыть резкие линии (например, мех или отражения)
В противном случае будет достаточно средней площади и т. Д. (Также билинейной / трилинейной).
источник