具体:
RGB和HSL,RGB和YUV,RGB和YCbCr,RGB和Gamma之间的互换公式或者算法(注意:是两个公式,比方说RGB转换到HSL,同时要还有HSL转化到RGB)
另外一定附加HSL,YUV,YCbCr,Gamma的取值范围等,
反正越详细越好.一经完成马上给分.
RGB和HSL,RGB和YUV,RGB和YCbCr,RGB和Gamma之间的互换公式或者算法(注意:是两个公式,比方说RGB转换到HSL,同时要还有HSL转化到RGB)
另外一定附加HSL,YUV,YCbCr,Gamma的取值范围等,
反正越详细越好.一经完成马上给分.
解决方案 »
- MFC高手请进
- 又麻烦各位大侠了
- 如何让一个list控件填满 CFormView
- Gdi图像控件,请高手指教!!!
- 如何根据HANDLE hFile 值得到对应的文件名
- 在VC++中,如何2次封装一个ACTIVEX控件
- 请高手指点!弹出对话框“必需的资源无法得到”是windows的那个模块出了问题?
- 请问怎么取得远程的MAC地址呢?
- vc中不支持vector,map等容器类型吗?
- 我想问一下:我要做一个控制的程序。在面板上加两个按扭,一个是开关控制电源的开始工作和结束工作,另一个是微调按扭,控制电压的输出值范围在27~29之间。我用的是CVI编程,它用的是c语言,虽然不是VC但大同小异,哪位高手能给点解决的办法?
- 在线等待,散分:我如何改变CPropertySheet页面的最后一页的按扭事件?
- 在一个定时器里显示MessageBox,每来一个Timer消息就会出一个对话框,为什么?
http://expert.csdn.net/Expert/topic/1219/1219825.xml?temp=.2362024这个帖子里有YUV的,你先看看吧,源程序可以参考H263的编码解码器,里面做得不错的: )
如果你要的话,留下你的邮箱,我把这个源程序发给你。
我的E-mail:[email protected]
Y: 占用1个字节(8bit)
U,V: 每2个象素占用1个字节(8bit),及每个象素占4bitY:U:V=8:2:2
Y: 占用1个字节(8bit)
U,V: 每4个象素占用1个字节(8bit),及每个象素占2bit用解码器对该文件(clock.mpg)解压后产生的"YUV"目标码文件的说明:
Y文件的长度为:84,480 BYTE
U,V文件的长度分别为:21,120 BYTE
84480/21120=4
对该组YUV文件可得出结论:Y:U:V=8:2:2
RGB图象存储机制:
R:表示红色信息,占用1个字节(8bit)
G:表示绿色信息,占用1个字节(8bit)
B:表示蓝色信息,占用1个字节(8bit)
R:G:B = 8:8:8
YUV与RGB图象之间的变换关系:
Y= 0.2990R+0.5870G+0.1140B
U=-0.1687R-0.3313G+0.5000B + 128
V= 0.5000R-0.4187G-0.0813B + 128
反变换关系:
R= 1.0Y + 0 +1.402 (V-128)
G= 1.0Y - 0.34413(U-128)-0.71414(V-128)
B= 1.0Y + 1.772 (U-128)+0另一种变换关系:
Y = <(R + 2G + B)/4>
U = R - G
V = B - G
反变换:
G = Y - <(U +V)/4>
R = U + G
B = V + G
说明:式中<W>表示<=W的最大整数
以前曾见看过这类的文章,
下面是他们的转换公式。
Y = 0.299 R + 0.587 G + 0.114 B
U = - 0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128 R = Y + 1.402 (V - 128)
G = Y - 0.34414 (U - 128) - 0.71414 (V - 128)
B = Y + 1.772 (U - 128)YUV的颜色空间和RGB的颜色空间范围有些差异,而且YUV色系的颜色不是线性变化的,实际处理上有很多麻烦的地方。对于很大的图或者视频流用上面的转换公式速度会很慢,我没有分析过解霸,但是他曾经说过每个bit是2个时钟周期,我想他利用的一定是查表法。
不然当年的486下不可能那么流畅。由于在"Y文件"中,一个象素占一个BYTE,所以一帧数据应该是:352*240=84480 BYTE
在"U,V"文件中,每四个象素占一个BYTE,所以一帧数据的长度因该是:352*240/4=21120 BYTE
大家是否有RGB和Gamma互换的算法,以及Gamma的取值范围?