¿Cómo leer valores RGB de 10 bits de video HDR?

Tenía un video HDR y el formato es ProRes. La profundidad de bits de color de ProRes es de 10 bits. Me gustaría extraer los valores RGB de 10 bits del video HDR.

Según este enlace, primero convertí el video HDR de 10 bits en varias imágenes TIFF de 16 bits. Sin embargo, cuando uso algún programa como python para leer los valores RGB de la imagen TIFF, algunos de los valores RGB de 16 bits son mayores que 1024 (= 2 ^ 10). Me parece que el valor RGB de 10 bits se ha expandido a 16 bits y almacena el valor expandido en la imagen TIFF, pero no estoy seguro de si ese es el caso. ¿Cómo puedo obtener los valores RGB originales de 10 bits a partir de los valores RGB de 16 bits almacenados en la imagen TIFF?

Respuestas (1)

La entrada ProRes tendrá codificación YUV, no RGB. Si necesita un volcado sin procesar, guárdelo como rawvideo.

ffmpeg -i in.mov -f rawvideo raw.yuv

Tenga en cuenta que las profundidades de bits que no son múltiplos de 8 todavía se almacenan en diseños de datos que son, con relleno. Por lo tanto, si ProRes es yuv422p10le en el rango de estudio/limitado, el valor de luminancia de 10 bits para un píxel blanco será 940 o 1110101100se almacenará como 16 bits en el archivo: 1110110000000011donde el orden es little-endian.

Sin embargo, puede guardar como RGB de 10 bits (con relleno),

ffmpeg -i in.mov -pix_fmt gbrp10be -f rawvideo raw.rgb

donde se almacena primero el plano verde, luego el azul, luego el rojo. Lo anterior es para big-endian, por lo que el orden de los bytes no se invierte.

Lo siento por la respuesta tardía. Si uso el segundo comando ffmpeg para convertir el archivo con el formato RGB de 10 bits como 'raw.rgb', ¿cómo puedo convertir 'raw.rgb' a una imagen TIFF? lo he intentado ffmpeg -f rawvideo -pix_fmt gbrp10be -i raw.rgb -f image2 img%05d.tifpero se queja[IMGUTILS @ 015ff914] Picture size 0x0 is invalid raw.rgb: Invalid argument
Reemplazar -f rawvideo raw.rgbconout.tiff
Mostrará la siguiente advertencia Incompatible pixel format 'gbrp10be' for codec 'tiff', auto-selecting format 'rgb48le'y he usado el programa python para leer las imágenes, pero los valores no son de 10 bits.
¿Su aplicación solo puede leer archivos TIFF?
Estoy escribiendo un programa de Python para leer los valores RGB del video HDR de 10 bits. Estaba planeando convertir el video en varias imágenes y leer los valores RGB de 10 bits. Inicialmente, pensé que tiff puede almacenar valores de 16 bits, por lo que es adecuado para almacenar fotogramas HDR de 10 bits. Desafortunadamente, ffmpeg no parece tener un códec tiff para admitir el gbrp10beformato. Cualquier sugerencia alternativa es bienvenida siempre que pueda leer los valores RGB de 10 bits del video HDR.