RGB和YCBCR之间转换的问题

sherlock_lai 2010-07-08 09:59:11
转换过程中,如果某个值算出来等于负数,怎么办?
例如当Y=25,CB=CR=230的时候,通过BT.709里的计算公式得出的R=182,G=-40,B=210,G是负数,怎么处理?
...全文
882 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fen12 2011-02-21
  • 打赏
  • 举报
回复
多谢,大家的回复给我了帮助
visionbug 2010-12-12
  • 打赏
  • 举报
回复
不懂,是说两种色域无法一一对应?那么在相互转换过程肯定有问题,那怎么解决
fire_woods 2010-07-08
  • 打赏
  • 举报
回复
会出现负数的, YUV空间和RGB空间并不重叠.
一般的处理是负数归零.

当然逆回去以后结果会有偏差.
jtujtujtu 2010-07-08
  • 打赏
  • 举报
回复
正常应该不会出现这种情况的

如果出现,再怎么处理都无法恢复之前的YCBCR
sherlock_lai 2010-07-08
  • 打赏
  • 举报
回复
很精彩 谢谢各位。。。我懂了
真想给你们多加几分。。。但是我比较吝啬 嘿嘿
fire_woods 2010-07-08
  • 打赏
  • 举报
回复
楼上, 并不是颜色不存在, 而是每个颜色体系都有自己的色域空间.
每个颜色体系作为整个色采空间的子空间, 一般每个值都代表了一个有意义的颜色.
只是某些YCbCr上的颜色, 在RGB色域空间中无法表示而已.

另外,Lab的色域空间相对来说比较大, 所以打印机一般采用这种色域空间.
beyond071 2010-07-08
  • 打赏
  • 举报
回复 1
[Quote=引用楼主 sherlock_lai 的回复:]
转换过程中,如果某个值算出来等于负数,怎么办?
例如当Y=25,CB=CR=230的时候,通过BT.709里的计算公式得出的R=182,G=-40,B=210,G是负数,怎么处理?
[/Quote]
RGB 和 YCrCb之间的变换虽然看上去是一个线性变换,但实际上是利用了人眼对亮度敏感而对色度信号不敏感而对色差进行的压缩处理。
既然是压缩处理就要损失信号,YCrCb的三个量定义域虽然最大可取到[0,255],但实际上Y、Cr、Cb是相互关联的,这使得Y、Cr、Cb并不能在RGB的完整信号域[0,255][0,255][0,255]中任意取值。
注意到Cb和Cr分布代表蓝色分量和红色分量,Y代表的是亮度。像lz提出的Cb = Cr = 230这种情况就是要求当前颜色蓝色分量和红色分量特别大,而又要求一个小的亮度Y = 25,这种颜色肯定是不存在的,当然会求出G为负数的错误解。
而在实际操作中,YCbCr如果是由RGB计算得到的,那么它肯定可以逆算得到一个有效的RGB值,至于是不是原来那个RGB就不见得了(压缩的缘故),因此楼主给出的情况中YCbCr并不是一个有意义的颜色值。

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧