ImageMagick-将RGB转换为BT.601和BT.709,结果相同

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

我使用下面的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:$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。你到底想做什么?我只是想验证不同转换之间会丢失多少数据!