我有YUV的图像,我想得到反转颜色的图像。如果我不想使用convert to RGB,我如何获得YUV的反转颜色?
发布于 2018-04-04 18:08:11
在经验层面上,使用安装在大多数Linux发行版上并可用于macOS和Windows的ImageMagick,您似乎需要:
Y' = 255 - Y
U' = 255 - U
V' = 255 - V所以,如果我做一个4x1像素的迷你色板,用3个相等的步骤从蓝色变成洋红色,然后将其转换为文本:
convert -size 4x1 gradient:blue-magenta -depth 8 -colorspace YUV txt:
# ImageMagick pixel enumeration: 4,1,65535,yuv
0,0: (7493.93,61340.8,26214) #1DEF66 yuv(29,239,102)
1,0: (14022.1,58129.5,39648.7) #37E29A yuv(55,226,154)
2,0: (20550.2,54918.3,53083.4) #50D6CF yuv(80,214,207)
3,0: (27078.3,51707.1,66518) #69C9FF yuv(105,201,255)

如果我取相同的小色块,将其反转,并在YUV中显示:
convert -size 4x1 gradient:blue-magenta -depth 8 -negate -colorspace YUV txt:
# ImageMagick pixel enumeration: 4,1,65535,yuv
0,0: (58041.1,4194.24,39321) #E21099 yuv(226,16,153)
1,0: (51512.9,7405.46,25886.3) #C81D65 yuv(200,29,101)
2,0: (44984.8,10616.7,12451.7) #AF2930 yuv(175,41,48)
3,0: (38456.7,13827.9,-983.025) #963600 yuv(150,54,0)您可以看到所有的值都是255-previous。
如果我做一个稍微彻底的测试,并尝试不同的红色-黄色渐变:
convert -size 4x1 gradient:red-yellow -depth 8 -colorspace YUV txt:
# ImageMagick pixel enumeration: 4,1,65535,yuv
0,0: (19584.4,23133.9,73071.5) #4C5AFF yuv(76,90,255)
1,0: (32403.3,16820.7,61821.4) #7E41F1 yuv(126,65,241)
2,0: (45222.2,10507.4,50571.2) #B029C5 yuv(176,41,197)
3,0: (58041.1,4194.24,39321) #E21099 yuv(226,16,153)

同样的,但是颠倒了:
convert -size 4x1 gradient:red-yellow -depth 8 -negate -colorspace YUV txt:
# ImageMagick pixel enumeration: 4,1,65535,yuv
0,0: (45950.6,42401.1,-7536.52) #B3A500 yuv(179,165,0)
1,0: (33131.7,48714.4,3713.65) #81BE0E yuv(129,190,14)
2,0: (20312.8,55027.6,14963.8) #4FD63A yuv(79,214,58)
3,0: (7493.93,61340.8,26214) #1DEF66 yuv(29,239,102)同样,结果值都是255-previous。
发布于 2018-04-04 17:42:02
我推导出了公式:
Y' = 251 - Y
U' = 256 - U
V' = 256 - V因此,如果YUV和RGB,以及Y'U'V‘和R' G’B‘,那么R+ R’=G+G‘=B+ B’= 255。而Y'U'V‘形成了相反的颜色。
https://stackoverflow.com/questions/49613188
复制相似问题