诛仙第二部在线阅读:亮度直方图中RGB转亮度的快速算法

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 07:49:46
1)首先给出标准的亮度公式:    Y(亮度)=(0.299*R)+(0.587*G)+(0.114*B)式中的 R 代表红色分量的值,G 为绿色分量的值,B 为蓝色分量的值。
2)为便于计算,快速算法不采用标准公式,而使用以下只取小数点后两个有效位的近似公式:    Y(亮度)=(0.30*R)+(0.59*G)+(0.11*B)
3) 对于 24 位图像而言,由于红,绿,蓝三原色分量的值域为0~255,我们完全可以事先将整个值域与系数的运算结果保存为三个元素大小为256的数组,并进一步将浮点数更改为两个无符号字符型的方式表示,如将 0.30 改为 { 0, 30 } 表示,其中前一元素表示值的整数部分,后一元素表示值的小数部分。则三原色的亮度值数组结果如下:(这里数据略去,可自己生成)
staticunsigned char lumRed[256][2]={
......};
staticunsigned char lumGreen[256][2]={
......};
staticunsigned char lumBlue[256][2]={
......};
4) 近似公式变为:    lumin = lumRed[red][0] + lumGreen[green][0]+ lumBlue[blue][0];    lumin1 = lumRed[red][1] + lumGreen[green][1]+ lumBlue[blue][1];    if( lumin1 >= 200 ) lumin += 2;    else if( lumin1 >= 100 ) lumin += 1;
5) 本算法的关键在于将费时的浮点运算转换为两个整数加法和两个判断处理,在嵌入式系统中对于无浮点协处理器的 MCU/MPU 性能的提高是极为显著的。是典型的以空间换时间的算法。