我正在尝试使用 ImageMagick 将一组原始视频帧从 YUV444 转换为 sRGB 。
输入格式:原始 YUV444 有限范围, BT.709 (按平面数据顺序)。
所需的输出格式: sRGB ( PNG 图像集)。
主要问题: ImageMagick 转换始终适用于JPEG conversion formula。
为了进行测试,我使用了以下示例图像:
我使用 FFmpeg 将样本转换为 YUV444 格式:
ffmpeg -y -colorspace bt709 -i rgb_input.png -pix_fmt yuv444p yuv_input.yuv
下图显示了YUV444输出(按平面数据顺序):
我使用 ImageMagick 转换器(版本7.0.8-51)将yuv_input.yuv
转换为 PNG :
magick -depth 8 -interlace plane -size 128x96 -colorspace Rec709YCbCr -sampling-factor 4:4:4 yuv:yuv_input.yuv rgb_output_magick.png
使用FFmpeg
进行相同的转换(用作参考):
ffmpeg -y -s 128x96 -colorspace bt709 -pix_fmt yuv444p -i yuv_input.yuv -pix_fmt rgb24 rgb_output_ffmpeg.png
从8位受限范围YUV BT.709到sRGB的转换公式:
R = 1.1644*Y + 0.00000*U + 1.79270*V - 248.10
G = 1.1644*Y - 0.21325*U - 0.53291*V + 76.878
B = 1.1644*Y + 2.11240*U + 0.00000*V - 289.02
如何使用 ImageMagick 转换器进行上述转换?
答案 0 :(得分:0)
根据您的要求,这将是用于变换的ImageMagick颜色矩阵命令,假设它是合理的。 ImageMagick颜色矩阵值被归一化为0到1的范围,包括偏移量(最右边)。我假设您的偏移量在0到255(8位)范围内。因此,我不确定这是否有意义。不过,这是它的外观。
magick input -color-matrix \
"1.1644 0.00000 1.79270 0, 0, -0.9729 \
1.1644 -0.21325 -0.53291 0, 0, 0.30148 \
1.1644 2.11240 0.00000 0, 0, -1.1334 \
0 0 0 1, 0, 0 \
0 0 0 0, 1, 0 \
0 0 0 0, 0, 1" output
参见http://www.adobetutorialz.com/articles/1987/1/Color-Matrix