ImageMagick-将RGB转换为BT.601和BT.709,结果相同
我使用下面的bash脚本在MacOsx上将RGB转换为YCbCr601和YCbCr709,但结果相同:ImageMagick-将RGB转换为BT.601和BT.709,结果相同,imagemagick,Imagemagick,我使用下面的bash脚本在MacOsx上将RGB转换为YCbCr601和YCbCr709,但结果相同: PNGNAME="input.png" YUVNAME="image.yuv" YUVNAME709="image709.yuv" OUTNAME="result.png" W=8 H=8 convert -size ${W}x${H} xc:#008800 $PNGNAME convert $PNGNAME -depth 8 -colorspace Rec601YCbCr yuv:$YUV
PNGNAME="input.png"
YUVNAME="image.yuv"
YUVNAME709="image709.yuv"
OUTNAME="result.png"
W=8
H=8
convert -size ${W}x${H} xc:#008800 $PNGNAME
convert $PNGNAME -depth 8 -colorspace Rec601YCbCr yuv:$YUVNAME
echo "601"
od -v -t u1 $YUVNAME
convert $PNGNAME -depth 8 -colorspace Rec709YCbCr yuv:$YUVNAME709
echo "709"
od -v -t u1 $YUVNAME709
输出:
601
0000000 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000040 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000060 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000100 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82
0000120 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
0000140
709
0000000 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000040 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000060 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
0000100 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82 82
0000120 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
0000140
我认为ImageMagick正确地进行了颜色空间转换,如果运行以下两个命令,您将看到:
convert -depth 8 xc:'#008800' -colorspace Rec601YCbCr txt:
# ImageMagick pixel enumeration: 1,1,65535,rec601ycbcr
0,0: (20510.2,21189.7,18134) #505247 rec601ycbcr(80,82,71)
convert -depth 8 xc:'#008800' -colorspace Rec709YCbCr txt:
# ImageMagick pixel enumeration: 1,1,65535,rec709ycbcr
0,0: (24996.2,19296.5,16894.4) #614B42 rec709ycbcr(97,75,66)
问题是,当您将输出指定为
yuv:FILENAME
时,会导致隐式的颜色空间转换返回到Rec601
,而不管它是什么。我认为您的代码不正确。你是怎么运作的?我相信bash
会将008800
及其后的所有内容视为注释。此外,我认为ImageMagick会在输出文件前面加上yuv:
前缀时转换回601
。但它在我的macosx上确实有效!唯一的问题是601和709输出相同的结果!谢谢,所以没有办法保存到yuv文件?如何将yuv转换回rgb?我尝试了下面的命令“convert-depth 8-colorspace Rec709YCbCr xc:”#614b42'-colorspace RGB txt:“但输出是“RGB(30,18,14)”。我不确定我是否理解为什么您只想转换为YCbCr以恢复为RGB。你到底想做什么?我只是想验证不同转换之间会丢失多少数据!