¿Qué algoritmo de cambio de tamaño elegir para los videos?

21

Estoy usando VirtualDub para codificar con esa configuración . cambiar el tamaño de los algoritmos

Sin embargo, grabo mis cosas en 1920x1080 y las redimensiono a 1280x720. Ahora la pregunta: ¿qué algoritmo debería elegir al tomar una decisión equilibrada de calidad versus tamaño de archivo?

Siempre fui con Lanczos porque eso fue preconfigurado. Esas descripciones realmente no me ayudan en absoluto en mi pregunta.

Oso gruñón
fuente

Respuestas:

25

TL; DR

Al muestrear: utilice el filtro Lanczos o Spline.

Al tomar muestras: utilice el filtro Bicubic o Lanczos.

Estos se basan en material que he leído a lo largo de los años y de lo que he visto utilizado en la industria. Las recomendaciones pueden variar según el tipo de contenido y el área de aplicación.

¿Por qué eso importa?

Se podría argumentar que los filtros de cambio de tamaño no importan mucho cuando se reduce el tamaño de un video. Más importante aún, tienen un impacto en la calidad al escalar, porque necesita generar datos donde no hay en primer lugar.

Todos estos filtros tienen un impacto marginal en el tamaño del archivo. Por lo tanto, no debe preocuparse por las grandes diferencias allí.

El hecho es, como siempre al codificar video, que el resultado depende en gran medida del material fuente. No siempre puede predecir el resultado, pero solo vea qué funciona mejor para usted.

Diferentes algoritmos

Como ejemplo, aquí está la interpolación bicúbica vs. bilineal :

     ingrese la descripción de la imagen aquí

¿Ves que la interpolación bicúbica da como resultado bordes más suaves? Esa es una declaración muy general ... pero puede encontrar una descripción general de los algoritmos de escala de imagen aquí .

  • La interpolación bilineal usa un entorno 2x2 de un píxel y luego toma el promedio de estos píxeles para interpolar el nuevo valor. No es el mejor algoritmo, sino bastante rápido.

  • La interpolación bicúbica utiliza un entorno 4x4 de un píxel, pesando los píxeles más internos más altos, y luego toma el promedio para interpolar el nuevo valor. Es, en lo que a mí respecta, el más popular.

  • El promedio de área utiliza una asignación de píxeles de origen y destino, promediando los píxeles de origen con respecto a la fracción de píxeles de destino que están cubiertos. Según esta página , debería producir mejores resultados al reducir la resolución.

  • La interpolación spline y sinc utiliza polinomios de orden superior y, por lo tanto, son más difíciles de calcular que la interpolación bicúbica. No creo que valga la pena usar el aumento general del tiempo de procesamiento.

  • El muestreo de Lanczos también incluye un filtro de sinc. Es más costoso desde el punto de vista computacional, pero generalmente se describe como de muy alta calidad y se puede usar para muestreo ascendente y descendente.

  • Los filtros hqx y 2xSaI se utilizan para el escalado de pixel art (por ejemplo, emuladores de juegos). No creo que haya una buena razón para usarlos en video.

Comparación de Jeff Atwood

Resulta que Jeff Atwood hizo una comparación de algoritmos de interpolación de imágenes . Su regla de oro era usar la interpolación bicúbica para la disminución de la resolución y la interpolación bilineal durante el muestreo ascendente. Dicho esto, esto no es lo que generalmente se recomienda para la codificación de video, y algunos comentaristas han planteado dudas sobre la experiencia de Atwood en el campo.

Sin embargo, también mencionó que ...

La reducción de imágenes es una operación completamente segura y racional. Simplemente está reduciendo la precisión y la resolución al descartar información. Haga la imagen lo más pequeña que desee y tendrá una fidelidad completa, dentro de los límites de la cantidad de píxeles que ha permitido. Obtendrá buenos resultados sin importar el algoritmo que elija. (Bueno, a menos que elija los algoritmos Nave Pixize Resize o Nearest Neighbour.)

Otros ejemplos

Aquí hay algunos ejemplos más de algoritmos de interpolación de imágenes , incluidos los que mencioné anteriormente.

También encontré documentos (reglas de escena) de la escena de codificación de video que prohíben explícitamente el filtrado bicúbico para la disminución de resolución. En cambio, respaldan el remuestreo de Lanczos, Spline o "Blackman".

slhck
fuente
Solía ​​usar siempre "bicúbico preciso A = 100". En una reinstalación del programa actualizado, Lanczos estaba predeterminado, a mucha gente le gustó. Lo dejé así por mucho tiempo. Finalmente llegué a ver las cosas de Lanczos codificadas más tarde, y pensé que eso no era tan bueno, el siguiente conjunto de codificaciones, lo volví a bicubic. También estaba reduciendo la compresión, creo que Lanczos podría haber parecido mejor si no hubiera tratado de reducir tanto el tamaño total de los datos.
Psycogeek
2
FWIW No consideraría a Jeff Atwood un experto en procesamiento de imágenes, y en ese artículo no examina nada más que bilineal, el vecino más cercano o (una variante particular de) bicúbico. La mayoría de la gente estaría de acuerdo con su recomendación de usar bilineal cuando la ampliación es mala.
thomasrutter
1
@thomasrutter Gracias. Estoy de acuerdo con usted: cuando escribí esto, probablemente no sabía tanto sobre el procesamiento de imágenes como ahora. Supongo que eliminaré la referencia a ese artículo y buscaré alguna otra fuente.
slhck
8

Encontré una buena imagen que documenta algo de esto.

ingrese la descripción de la imagen aquí

Versión de tamaño completo aquí .

En general, desea un efecto de nitidez leve cuando convierte una imagen más grande en una más pequeña, y un efecto de desenfoque leve cuando convierte una imagen más pequeña en una más grande. El filtro MadVR establece de forma predeterminada Lanczos para la ampliación de escala y bicúbico para la reducción de escala.

Jeff Atwood
fuente
2

Está convirtiendo píxeles originales de 3x3 en píxeles de destino de 2x2.

Si desea mantener líneas nítidas, elija Lanczos o algo que use más píxeles circundantes para no desenfocar líneas nítidas (como pieles o reflejos)

De lo contrario, el promedio de área, etc. (también bilineal / trilineal) sería suficiente.

ZaB
fuente