`

RGB与YCbCr颜色空间的转换

阅读更多

原文:http://www.cnblogs.com/starspace/archive/2008/12/16/1356007.html

公式如下:
//数字RGB与YCbCr颜色空间转换的精度 
//在这两个公式中RGB和YCbCr各分量的值的范围均为0-255。
// RGB转换为YCbCr
// 这个公式来自:Genesis Microchip. gm6010/gm6015 Programming Guide[M]. California US: Genesis Microchip Company, 2002:85-90
// |Y   |    |16  |                    |65.738   129.057  25.06 |   |R|
// |Cb| = |128| + (1/256)*|-37.945  -74.494  112.43| *|G|
// |Cr |    |128|                   |112.439  -94.154  -18.28|   |B|
// YCbCr转换为RGB
// 这个公式来自:Genesis Microchip. gm6015 Preliminary Data Sheet[M]. California US: Genesis Microchip Company, 2001:33-34
//|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|
 
加一点我的代码,为什么要加我的代码呢,不是因为写的代码好,只不过是我把上面公式中的矩阵/256算成小数了,这样子我们可以省点时间:
 

 

// RGB转换为YCbCr

for(i =0 ; i < dest->dwSize; )
{
 UCHAR r,g,b;
 r = sBuf[i+0];
 g = sBuf[i+1];
 b = sBuf[i+2];
 dBuf[i+0]= (unsigned char)(r * 0.256789 + g * 0.504129 + b * 0.097906)+ 16; 
 dBuf[i+1]= (unsigned char)(r *-0.148223 + g * -0.290992 + b * 0.439215)+ 128;
 dBuf[i+2]= (unsigned char)(r * 0.439215 + g * -0.367789 + b *-0.071426)+ 128; 
 i += 3;
}

 

// YCbCr转换为RGB

for(i =0 ; i < dest->dwSize; )
{
 UCHAR y,u,v;
 y = sBuf[i+0];
 u = sBuf[i+1];
 v = sBuf[i+2];
 dBuf[i+0]= (unsigned char)(1.164383*(y- 16) + 0 + 1.596027*(v - 128)); 
 dBuf[i+1]= (unsigned char)(1.164383*(y- 16) - 0.391762*(u - 128) - 0.812969*(v - 128)); 
 dBuf[i+2]= (unsigned char)(1.164383*(y- 16) + 2.017230*(u - 128) + 0 );
 i += 3;
}

 

分享到:
评论

相关推荐

    数字RGB与YCbCr颜色空间转换的精度.pdf

    ### 数字RGB与YCbCr颜色空间转换的精度 #### 概述 本文主要探讨了在视频处理系统中,从数字RGB颜色空间到YCbCr颜色空间转换时所遇到的精度问题及其解决方案。数字RGB(Red Green Blue)是基于红、绿、蓝三种基本...

    基于FPGA的RGB到YCbCr色空间转换.pdf

    ### 基于FPGA的RGB到YCbCr色空间转换 #### 1. 引言 随着技术的发展和社会的进步,人们对图像质量的要求不断提高。在图像处理领域,色彩空间的选择对于提升图像质量和优化数据处理效率至关重要。传统的RGB色彩模型...

    实现RGB颜色空间到HSV和YCbCr颜色空间的转换

    RGB颜色空间到YCbCr颜色空间的转换是将RGB颜色空间下的颜色值转换为YCbCr颜色空间下的颜色值,YCbCr颜色空间是基于电视机和计算机显示器对颜色的显示特点设计的颜色空间,三个分量分别表示亮度(Y)和两个色差分量...

    rgb2ycbcr函数

    RGB到YCbCr色彩空间转换是图像处理领域中常见的操作,尤其在数字视频和图像编码标准如JPEG中广泛应用。RGB(Red, Green, Blue)是一种加性颜色模型,用于显示器等设备显示颜色,而YCbCr(Luma, Chrominance Blue, ...

    SDTV HDTV中RGB颜色空间到YCbCr颜色空间的相互转换

    ### SDTV HDTV中RGB颜色空间到YCbCr颜色空间的相互转换 #### RGB与YCbCr颜色空间的基础概念 在数字图像处理领域,颜色空间是用于表示图像颜色的一种数学模型。不同的颜色空间有着各自的特点和适用场景。RGB...

    RGB HSI YCbCr颜色空间的转换及图像滤波处理

    本程序功能强大,实现了图片读取,滤波处理,RGB HIS YCbCr颜色空间的转换,并实现了肤色分割。开发平台是MATLAB! 主要功能如下 1、完成RGB&lt;-&gt;HSI 之间的转换; 2、完成RGB&lt;-&gt;YCbCr 之间的转换, 并显示直方图; 3、...

    RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码

    了解图像颜色空间的转换关系。 了解图像的文件结构。 实验内容 完成如下颜色空间的转换。(4 Points) RGB -&gt; YIQ RGB -&gt; HSI RGB -&gt; YCbCr RGB -&gt; XYZ 选做: 自己实现对 BMP 文件头的读取,并解析 BMP 图像文件。 ...

    YCbCr-RGB.rar_RGB YCbCr_YCbCr_YCbCr RGB_dsp RGB YCbCr_dsp rgb

    在图像处理领域,色彩空间转换是一个非常重要的环节,其中RGB(Red, Green, Blue)和YCbCr是两种常见的色彩模型。本压缩包文件“YCbCr-RGB.rar”包含了与RGB到YCbCr色彩转换相关的DSP(Digital Signal Processing,...

    RGB2YCbCr.rar

    RGB到YUV颜色空间转换是图像处理中的常见操作,尤其在视频编码和解码中扮演着重要角色。YUV色彩模型是一种将图像数据分为亮度(Y)和两个色度分量(Cb和Cr)的形式,这有助于降低彩色图像的数据量,从而在存储和传输...

    YCbCr-RGB.rar_RGB YCbCr_RGB to YCbCr_YCbCr_YCbCr RGB_site:www.pu

    总的来说,这个压缩包中的资源可能是用于学习或实践颜色空间转换的工具,对于理解RGB和YCbCr之间的关系,以及在VC++环境中如何实现这种转换非常有帮助。通过阅读和分析源代码,开发者可以深入了解图像处理的原理,并...

    HDL.rar_YCbCr_hdl rgb_rgb _rgb to ycbcr vhdl_vhdl

    总结来说,这个压缩包提供的Verilog程序是为了在数字视频处理中进行RGB与YCbCr颜色空间的高效转换。通过理解和实现这样的代码,工程师可以更好地掌握颜色空间转换的原理,并将其应用到实际的视频处理硬件设计中。

    RGB到YIQ,RGB到HSI,RGB到YcbCr,RGB到XYZ颜色转换matlab代码包

    实现功能: 实验目标 了解图像颜色空间的转换关系。 了解图像的文件结构。 实验内容 完成如下颜色空间的转换。(4 Points) RGB -&gt; YIQ RGB -&gt; HSI RGB -&gt; YCbCr RGB -&gt; XYZ 选做: 自己实现对 BMP 文件头的读取,并...

    rgb_ycbcr.rar_YCbCr

    RGB到YCbCr色彩空间转换是图像处理领域中常见的操作,尤其在视频编码和数字电视标准中广泛应用。YCbCr是一种颜色空间模型,它将颜色分解为亮度(Y)和两个色差信号(Cb和Cr),以此来降低彩色图像的数据量,而不会...

    RGB_TO_YCBCR

    RGB到YCbCr色彩空间转换在数字图像处理和视频编码领域是至关重要的。RGB(红绿蓝)是一种加性颜色模型,广泛用于显示器显示颜色,而YCbCr(亮度、蓝色差、红色差)则常用于视频和图像的存储与传输,因为它可以有效地...

    颜色空间转换RGB to YCrCb

    本文将深入探讨RGB到YCrCb的颜色空间转换,以及在图形处理、控件、源码和资源管理中的应用。 RGB颜色空间是最常见的一种颜色模型,它基于红(Red)、绿(Green)和蓝(Blue)三种原色的组合。通过调整这三种颜色的...

    Ycbcr转换为RGB的verilog源代码

    本主题关注的是从YCbCr颜色空间转换到RGB颜色空间的Verilog源代码实现。YCbCr是广泛用于视频和图像编码的标准,因为它能够有效地压缩数据,而RGB则是我们日常生活中最常见、直观的颜色表示方式,适用于显示设备。 ...

    RGB-Ycbcr程序

    RGB-Ycbcr是一种色彩空间转换方法,广泛应用于图像处理和视频编码领域。RGB代表红绿蓝三原色,是我们常见的彩色显示器使用的颜色模型。而Ycbcr是为数字视频和图像压缩设计的颜色空间,它通过将RGB颜色分解为亮度(Y...

    RGB和其他颜色空间模型转换

    RGB 颜色空间称为与设备相关的颜色空间,因为不同的扫描仪扫描同一幅图像,会得到不同色彩的图像数据。 CMYK 颜色空间 CMYK 颜色空间应用于印刷工业,通过青、品、黄三原色油墨的不同网点面积率的叠印来表现丰富...

    matlab实现RGB、HSI、YCbCr之间的转换以及人脸检测

    总的来说,这个项目不仅涵盖了色彩空间转换的基础知识,还涉及到了实际应用中的人脸检测技术。对于MATLAB初学者来说,这是一个很好的起点,可以加深对图像处理原理的理解,并且通过实际操作提升编程技能。通过实践...

Global site tag (gtag.js) - Google Analytics