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|?
// RGB转换为YCbCrfor(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转换为RGBfor(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;}
?