首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YUV格式反转颜色

YUV格式反转颜色
EN

Stack Overflow用户
提问于 2018-04-02 22:31:09
回答 2查看 374关注 0票数 1

我有YUV的图像,我想得到反转颜色的图像。如果我不想使用convert to RGB,我如何获得YUV的反转颜色?

EN

回答 2

Stack Overflow用户

发布于 2018-04-04 18:08:11

在经验层面上,使用安装在大多数Linux发行版上并可用于macOS和Windows的ImageMagick,您似乎需要:

代码语言:javascript
复制
Y' = 255 - Y
U' = 255 - U
V' = 255 - V

所以,如果我做一个4x1像素的迷你色板,用3个相等的步骤从蓝色变成洋红色,然后将其转换为文本:

代码语言:javascript
复制
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中显示:

代码语言:javascript
复制
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

如果我做一个稍微彻底的测试,并尝试不同的红色-黄色渐变:

代码语言:javascript
复制
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)

同样的,但是颠倒了:

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2018-04-04 17:42:02

我推导出了公式:

代码语言:javascript
复制
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‘形成了相反的颜色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49613188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档