En este artículo, quiero compartir con ustedes cómo reducir la resolución del material 4K de smartphone para crear material estupendo en 1080p con mínimos artefactos de muestreo de crominancia.
Para los que me siguen en redes sociales o que hayan visto mi canal de YouTube, sabrán que filmo una gran cantidad de videos con mi iPhone SE y iPhone 7 Plus. Hago el etalonaje en Resolve como lo haría con cualquier otro material, y los resultados me han sorprendido lo suficiente como para seguir experimentando y extendiendo la frontera de lo que se puede hacer con un video bien filmado y bien expuesto desde un smartphone. Estos dispositivos, junto con la aplicación FiLMiC Pro, me siguen fascinando e impresionando. Quiero compartir mis hallazgos tanto como me sea posible, y esta es una de mis técnicas.
Es sabido y aceptado que la reducción de escala desde un material con resolución más alta (como UHD a HD) produce resultados más bonitos, nítidos y limpios comparados con material originado en esa resolución nativa. Hay muchas razones para esto, y los resultados difieren dependiendo del método y las matemáticas involucradas.
Me abstendré de decir que mis resultados muestran auténtico 1080p YCbCr 4:4:4 de una fuente 4K YCbCr 4:2:0 para ahorrarme el trauma en línea que sin dudas vendría luego.
Afirmaré, sin embargo, que el método que están a punto de aprender reducirá la resolución de los archivos iniciales 4K YCbCr 4:2:0 a 1080p YCbCr con una mejor resolución de crominancia espacial relativa y menos artefactos que la fuente 4K 4:2:0 que es simplemente reducida a HD en un Editor No Lineal (ENL).
Submuestreo de crominancia
Dejando de lado los efectos de la compresión de video (especialmente el bloqueo de macro), echemos un vistazo rápido al muestreo de crominancia YCbCr.
Espero que estén familiarizados con las discusiones de muestreo de crominancia 4:2:0, 4:2:2 y 4:4:4. Probablemente sepan que 4:2:2 otorga más información de color que 4:2:0, y que 4:4:4 brinda una información de color total. He escrito sobre esto antes Lidiando con el Submuestreo de Crominancia, pero por ahora nos enfocaremos específicamente en YCbCr 4:2:0 y YCbCr 4:4:4.
En post-producción a menudo se suele hablar de color en términos de RGB, pero RGB es diferente de YCbCr. El video generalmente se codifica como YCbCr ya que permite que la información de luminancia (Y) esté separada de la información de crominancia (Cb,Cr), y que parte de la información de crominancia sea descartada. El video se comprime reduciendo la resolución espacial de los canales de crominancia en relación con el canal de luminancia -esto puede pasar desapercibido para el espectador y permitir un ahorro sustancial en el ancho de banda.
Tu smartphone está grabando video comprimido h.264 el cual es codificado como YCbCr 4:2:0. Esto significa que por cada bloque de 4 píxeles de la imagen (dos píxeles verticales, dos píxeles horizontales), se graban cuatro muestras de información de luminancia (una para cada píxel), pero se graba sólo una muestra de croma para las cuatro muestras de luminancia. Esto quiere decir que solo 1/4 de la información de croma está siendo grabada. La mayoría de las veces ni siquiera lo notas, pero está allí.
Si observas alrededor de los bordes de alto contraste en una imagen codificada a 4:2:0, verás artefactos de croma evidentes, que a menudo aparecen como un halo más claro o más oscuro alrededor del borde de los objetos.
Afortunadamente hay una manera de eliminar estos artefactos y mejorar la fidelidad relativa de croma del video originado en smartphone al reducir la resolución de la imagen en una relación 4:1 y promediar los valores de píxel de cada canal Y, Cb, Cr.
Reducción de resolución RGB vs YCbCr
No existe tal cosa como el “almuerzo gratis”, y no se puede obtener mágicamente más información de un archivo que la que ya posee. Pero si, como yo, prefieres tener una imagen que se vea estupenda en 1080p antes que una imagen mediocre en 4K, puedes reducir la resolución de tu fuente 4K a HD y hacer un mejor uso de la información de imagen existente en el archivo. Puede igualar la proporción de muestras de luminancia y crominancia, dando a cada píxel de tu imagen 1080p una muestra de luminancia y una de crominancia. Esto no significa interpolar ni agregar ninguna información que no esté codificada en el archivo original, sino simplemente reasignar lo que ya está allí.
Sin embargo, no todos los métodos y procesos de reducción de resolución son iguales, y no todas las aplicaciones te darán el resultado que voy a mostrarte.
Por ejemplo, DaVinci Resolve y muchos ENL convierten toda la media original a RGB (o YRGB) antes de cualquier operación. En este caso, el muestreo de crominancia y los artefactos resultantes se hornean en la imagen YRGB antes de escalar, por lo que Resolve y la mayoría de los ENL no se pueden usar para cambiar la proporción de muestras de luminancia y crominancia. Los artefactos permanecerán.
La clave está en asegurarse de que el proceso de escalado ocurra en YCbCr, no en RGB. Aquí es donde entra el FFmpeg.
Introducción al FFmpeg
FFmpeg es una estructura de video de código abierto muy poderosa, se puede encontrar todo acerca de la misma aquí.
“FFmpeg es la estructura multimedia líder, capaz de decodificar, codificar, transcodificar, multiplexar, demultiplexar, transmitir, filtrar y reproducir casi cualquier cosa que los humanos y las máquinas hayan creado. Es compatible con los formatos más antiguos y oscuros hasta los de vanguardia. No importa si fueron diseñados por algún comité de estándares, la comunidad o una corporación. También es muy portátil: FFmpeg compila, ejecuta y transfiere infraestructuras de prueba FATE en Linux, Mac OS X, Microsoft Windows, BSD, Solaris, etc. bajo una amplia variedad de entornos de construcción, arquitecturas de máquina y configuraciones.“
Procesar archivos de video a través de FFmpeg te da un control total sobre exactamente cómo se llevan a cabo las operaciones. Sin embargo, a menos que seas un desarrollador, no es muy fácil de usar.
Por suerte existe el iFFmpeg.
iFFmpeg
iFFmpeg proporciona una interfaz gráfica de usuario (GUI, por sus siglas en inglés) para la estructura FFmpeg. Puede encontrar más información y comprar iFFmpeg aquí. Cuesta €18,50 pero vale cada centavo y probablemente resolverá todo tipo de problemas de flujo de trabajo cuando necesites un control estricto sobre las transcodificaciones o las conversiones de formato.
Yo uso FFmpeg para reducir la escala de los archivos de origen 4K YCbCr 4:2:0 a 1080p YCbCr Apple ProRes 4444 con una mejor resolución de crominancia relativa.
Pasemos a detallarlo.
Resolución de la imagen de origen: 3840 x 2160 píxeles
Muestras de origen Luma (Y): 3840 x 2160
Muestras de origen Croma (CbCr): 1920 x 1080 (cada muestra cubre 4 píxeles)
Cuando a cada canal de resolución de 3840 x 2160 se le reduce el muestreo en exactamente 4:1 utilizando un proceso de promediado, el resultado es:
Resolución de imagen reducida: 1920 x 1080 píxeles
Muestras de Luma (Y) reducidas: 1920 x 1080
Muestras de croma (CbCr) reducidas: 1920 x 1080 (cada muestra cubre 1 píxel)
Elijo ProRes 4444 para no volver a descartar la información de croma con codificación 4:2:2. El promediado 4:1 da como resultado una resolución espacial igual, de 1920 x 1080 en los tres canales Y, Cb y Cr, y la única manera de mantener eso es con una codificación 4:4:4.
Cómo reducir la resolución de material de smartphone en 4K con iFFmpeg
Aquí les explico cómo configurar esto en iFFmpeg.
Paso 1. Inicie iFFmpeg
Paso 2. Arrastre y suelte el/los archivos de origen 4K.
Paso 3. Configure el parámetro de escalado correcto. Haga clic en “Editar” al lado de “Avanzado” en el panel lateral derecho. En el cuadro de diálogo emergente, seleccione “Opciones generales” en el menú desplegable. Importante: Seleccione “Área promedio” en el menú desplegable “Escalador”. Cierre el cuadro de diálogo.
Paso 4. Configure los parámetros de codificación correctos. Desde la pantalla principal, haga clic en “Editar” al lado de “Video” en el panel lateral derecho. En el cuadro de diálogo emergente, seleccione “PRORES” en el menú desplegable “Códec”. Importante: Seleccione “YUV444p10le” en el menú desplegable “Formato de píxeles”. Cierre el diálogo.
Paso 5. Establezca la carpeta de destino y nombre de archivo para cada clip en la cola. Desde la pantalla principal, haga clic en el icono de la carpeta en la esquina inferior derecha del panel lateral derecho.
Paso 6. Ejecute la transcodificación. Cuando cada clip en la cola haya sido configurado correctamente, haga clic en el botón Reproducir en la barra superior de la pantalla principal para comenzar a transcodificar.
Los archivos resultantes serán Apple ProRes 1080p codificados en YUV 444 de 10 bits sin ninguno de los artefactos de muestreo de croma de los archivos 4K 4:2:0 originales.
¿Por qué codificar a 10 bits cuando la fuente es claramente de 8 bits? Creo -y admito que podría estar equivocado al respecto, ya que no estoy 100% seguro- que cuatro valores de canal de luminancia de 8 bits (ignoren los canales de crominancia por ahora) pueden promediarse en un solo valor de 10 bits.
He aquí un ejemplo.
Pixel 1 (solo canal de luma): 213
Pixel 2 (solo canal de luma): 212
Pixel 3 (solo canal de luma): 211
Pixel 4 (solo canal de luma): 213
Valor promedio: 212,25
Obviamente, si estamos generando un valor codificado de 8 bits, 212,25 es imposible ya que solo tenemos valores entre 0 y 255. Simplemente se redondea a 212.
Sin embargo, si estamos promediando a un espacio de 10 bits y generando un valor codificado de 10 bits, 212.25 es registrado como 849, donde 212 es el valor 848.
Eso es controvertido e, incluso si es cierto, solo es cierto para el canal luma (Y), no para el croma… los canales Cb,Cr solo serán de 8 bits. Mi razonamiento puede ser demasiado simplificado, pero en este momento hasta que se demuestre lo contrario, elijo codificar a 10 bits por si acaso. No tengo nada que perder excepto un poco de espacio de almacenamiento.
De nuevo, en relación a la resolución de crominancia, no estoy afirmando que este método produzca archivos YCbCr 4:4:4 con muestreo de croma perfectos, y esto se debe a la compresión h.264 y al macrobloqueo de los archivos de origen. Sin embargo, mis pruebas muestran que incluso los artefactos de compresión se minimizan después reducir el muestreo de esta forma, especialmente cuando el archivo de origen se graba a una velocidad de bits alta (100Mbps en este caso).
¿Vale la pena el problema extra?
He leído muchos argumentos a favor y en contra de este tipo de cálculos en muchos foros, y soy consciente de los problemas que podría tener al poner esto aquí, pero conozco los resultados que he obtenido con esto y lo he chequeado todo con un destacado científico del color que permanecerá en el anonimato, pero que trabaja para uno de los principales fabricantes de cámaras de cine digital. Es muchísimo más inteligente que yo en lo que se refiere a esto, y si él está de acuerdo, entonces no tengo problema en arriesgar mi pellejo aquí y darte mis hallazgos y métodos.
Si todo lo que vas a hacer es subir a YouTube, entonces en cualquier caso volverás a bajar a 4:2:0. No he hecho ninguna comparación visual todavía para ver si hay alguna diferencia perceptible en YouTube o Vimeo entre archivos de origen con codificación de croma 4:2:0, 4:2:2 o 4:4:4. Dudo que haya alguna diferencia notable luego de la compresión en línea.
Sin embargo, si estás masterizando para cualquier otro fin, como un cortometraje o una película que hayas grabado con un smartphone que pueda mostrarse en un festival vía DCP o que le vayas a dar cualquier persona que necesite un archivo master de alta calidad, entonces creo que vale la pena el tiempo y el esfuerzo extra.
Al final depende de ti. Prefiero grabar a 4K con velocidad de bits alta (100Mbps) y reducir a una resolución a 1080p más limpia, nítida y más bonita para la post-producción y la entrega, que entregar en 4K que parece grabado con un smartphone.
Me encantaría saber lo que piensas, qué ideas tienes e incluso cuán escéptico eres sobre esto. Por favor, dinos lo que piensas en los comentarios debajo.