OpenCV中的rgb2Yuv转换公式问题

千树之影 2014-02-21 05:01:44
Opencv中的cvtColor有两个选项参数CV_BGR2YCrCb和CV_BGR2YUV。
我一直以为YUV就是YCrCb,但最近刚发现,opencv里面这两个格式转换结果竟然是不同的!
前者用的系数表是:coeffs0[] = {R2Y, G2Y, B2Y, 11682, 9241};
后者用的是 yuv_i[] = { B2Y, G2Y, R2Y, 8061, 14369 }
不但两者的B和R系数换了一下,后面两个系数更是完全不同。

后来我去查了官网上2.4.8的文档,里面只有BGR2YCrCb的公式,没有BGR2YUV的公式。
有人知道这是什么情况吗?BGR2YUV到底转换成了什么?
...全文
6386 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxwangxin12 2016-03-28
  • 打赏
  • 举报
回复
引用 1 楼 relaxisland 的回复:
百度的,貌似说的有道理 下面区分一下YUV和YCbCr YUV色彩模型来源于RGB模型, 该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。 应用:模拟领域 Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y') R' = Y' + 1.140*V' G' = Y' - 0.394*U' - 0.581*V' B' = Y' + 2.032*U' YCbCr模型来源于YUV模型。 YCbCr是 YUV 颜色空间的偏移版本 应用:数字视频,ITU-R BT.601建议 Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16 Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128 Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128 R' = 1.164*(Y’-16) + 1.596*(Cr'-128) G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128) B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
但是根据Opencv2.4.9的代码\src\modules\imgproc\src\color.cpp的3074行可以看到,其实YUV420sp2RGB用的公式是下面的这个,也就是 R' = 1.164*(Y’-16) + 1.596*(V'-128) G' = 1.164*(Y’-16) - 0.813*(V'-128) - 0.392*(U'-128) B' = 1.164*(Y’-16) + 2.017*(U'-128) 而且也实际用图算了一遍,输入Y/V/U分别是:207/119/134,用CV_YUV2BGR_NV21之后,得到的B/G/R分别是:234/227/208,也就是验证了用的是下面的公式,所以这个运算跟帮助文档和wiki都不同……搞迷糊了……
wonrowl 2015-05-07
  • 打赏
  • 举报
回复
opencv如何吧jpg转成yuv,如何吧yuv转成jpg啊
qq_25220977 2015-04-23
  • 打赏
  • 举报
回复
请教楼主,opencv如何将RGB转换为YUV,再如何将YUV转换回RGB呢?求指教啊
relaxisland 2014-03-21
  • 打赏
  • 举报
回复
貌似一个是电视信号 一个是dvd信号?
TRTK 2014-03-21
  • 打赏
  • 举报
回复
cvCvtColor函数中的CV_BGR2YCrCb得到的YCrCb是4:4:4:的全抽样,对Cr和Cb分量进行抽样,可以得到YUV4:2:0的数据
u013529129 2014-03-03
  • 打赏
  • 举报
回复 1
貌似 YUV是YUV420格式的 YCrCb是YUV422格式的吧。
千树之影 2014-03-03
  • 打赏
  • 举报
回复
疯了,竟然有这么多不同的公式。。。。。。。。。。。。怎么判断该用哪个。。。。。
千树之影 2014-02-28
  • 打赏
  • 举报
回复
有人对此有所了解的吗?
relaxisland 2014-02-28
  • 打赏
  • 举报
回复
不好意思,前面给你的东西,也没仔细看,貌似是错的, 偏移 是 从(-128~127)变化到(0~128)的时候才需要 根据wiki资料, YUV还有2个变种(?) 这个就是前面的那种公式 YUV (PAL, SECAM) Y = 0.299 × R + 0.587 × G + 0.114 × B U = -0.14713 × R - 0.28886 × G + 0.436 × B V = 0.615 × R - 0.51499 × G - 0.10001 × B 这个就是前面的那种公式 ITU-R BT.601 / ITU-R BT.709 (1250/50/2:1) Y = 0.299 × R + 0.587 × G + 0.114 × B Cb = -0.168736 × R - 0.331264 × G + 0.5 × B Cr = 0.5 × R - 0.418688 × G - 0.081312 × B 这个用相同的方法改头换面,就可以得到你需要的系数 U=  0.564*(B- Y)V= 0.713*(R- Y) ITU-R BT.709 (1125/60/2:1) Y = 0.2126 × R + 0.7152 × G + 0.0722 × B Cb = -0.114572 × R - 0.385428 × G + 0.5 × B Cr = 0.5 × R - 0.454153 × G - 0.045847 × B
千树之影 2014-02-24
  • 打赏
  • 举报
回复
引用 1 楼 relaxisland 的回复:
百度的,貌似说的有道理 下面区分一下YUV和YCbCr YUV色彩模型来源于RGB模型, 该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。 应用:模拟领域 Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y') R' = Y' + 1.140*V' G' = Y' - 0.394*U' - 0.581*V' B' = Y' + 2.032*U' YCbCr模型来源于YUV模型。 YCbCr是 YUV 颜色空间的偏移版本 应用:数字视频,ITU-R BT.601建议 Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16 Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128 Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128 R' = 1.164*(Y’-16) + 1.596*(Cr'-128) G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128) B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
但是opencv里用的公式和百度上还是不一样啊。opencv里YUV的公式和百度里的公式相同,但opencv里Ycrcb的公式还是和百度里的公式不同,而且也没有16的偏移量。
relaxisland 2014-02-21
  • 打赏
  • 举报
回复
百度的,貌似说的有道理 下面区分一下YUV和YCbCr YUV色彩模型来源于RGB模型, 该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。 应用:模拟领域 Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y') R' = Y' + 1.140*V' G' = Y' - 0.394*U' - 0.581*V' B' = Y' + 2.032*U' YCbCr模型来源于YUV模型。 YCbCr是 YUV 颜色空间的偏移版本 应用:数字视频,ITU-R BT.601建议 Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16 Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128 Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128 R' = 1.164*(Y’-16) + 1.596*(Cr'-128) G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128) B' = 1.164*(Y’-16) + 2.017*(Cb'-128)

4,499

社区成员

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

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