视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )【转】
转自:http://blog.csdn.net/Times_poem/article/details/51471438
版权声明:本文为博主原创文章,未经博主允许不得转载。
需求说明:视频处理算法基本知识
第一部分:有参考出处的RGB与Ycbcr相互转换
第二部分:简单直接的RGB与Ycbcr相互转换
第三部分:优化乘法的RGB与Ycbcr相互转换
第一部分
来自:http://blog.chinaunix.NET/uid-215617-id-2212957.html
// |Cb| = |128| + (1/256)*|-37.945 -74.494 112.43| *|G|
// |Cr | |128| |112.439 -94.154 -18.28| |B|
//|R| |298.082 0 408.58 | |Y -16 |
//|G| = (1/256)*|298.082 -100.291 -208.12|* |Cb-128|
//|B| |298.082 516.411 0 | |Cr -128|
|
|
第二部分
来自:http://blog.csdn.net/a14730497/article/details/17886127
Y:明亮度(Luminance或Luma),也就是灰阶值。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。
Cb:反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。
Cr:反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。
在以下两个公式中RGB和YCbCr各分量的值的范围均为0-255。
RGB转换为YCbCr
Y = 0.257*R+0.564*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
等效为:
Y = (1/8192)[(135168 + 4129G) + (2015R + 803B)] 其他的Cb ,Cr 类似过程
//-------------------------------------------------------------------------------------------------------------------------------
YCbCr转换为RGB
R = 1.164*(Y-16)+1.596*(Cr-128)
G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)
B = 1.164*(Y-16)+2.017*(Cb-128)
或者
R = 1.164Y + 1.596Cr - 222.912
G = 1.164Y - 0.391Cb - 0.813Cr + 135.488
B = 1.164Y + 2.018Cb - 276.928
等效为:
R >> 9 = 596Y + 817Cr - 114131
G >> 9 = 596Y - 200Cb - 416Cr + 69370
B >> 9 = 596Y + 1033Cb - 141787
第三部分
来自: http://www.cnblogs.com/qiweiwang/archive/2011/07/07/2099731.html
YCbCr转RGB的公式如下:
R = 1.164(Y-16) + 1.596(Cr-128);
G = 1.164(Y-16) - 0.391(Cb-128) - 0.813(Cr-128);
B = 1.164(Y-16) + 2.018(Cb-128);
其中的系数可以表示成
1.164 = 1 + 1/2^3 + 1/2^5 + 1/2^7;
1.596 = 1 +1/2+ 1/2^4 + 1/2^5;
0.391 = 1/2^2 + 1/2^3 + 1/2^6;
0.813 = 1/2 + 1/2^2 + 1/2^4;
2.018 = 2 + 1/2^6;
故而,上述公式可以转化成没有乘法的公式,大大提高了运算的效率。
整理来自:时间的诗
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2016-07-21 理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比【转】
2016-07-21 模数转换器(ADC)的基本原理【转】
2016-07-21 linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】
2016-07-21 Linux系统调用--mmap/munmap函数详解【转】
2016-07-21 linux mmap 内存映射【转】
2016-07-21 mmap直接控制底层【转】
2015-07-21 ftruncate(改变文件大小)