使用色彩矩阵处理图像,灰度处理的颜色矩阵是哪几个值变化

使用颜色矩阵处理图像,灰度处理的颜色矩阵是哪几个值变化?
我要学习一下颜色矩阵调节图像,就下了个代码,亮度对比度都可以调节,唯独在调节灰度的时候,它的颜色矩阵是指定了的,不是随着你输入的值不同而不同:
C/C++ code

ColorMatrix grayMatrix = 
        {
            0.299f,0.299f,0.299f,0,0,
            0.587f,0.587f,0.587f,0,0,
            0.114f,0.114f,0.114f,0,0,
            0,     0,     0,1,0,
            0,     0,     0,0,1
        };

各位大神看看,他指定了那几个值,所以一运行只有一种情况,而调节对比度的颜色矩阵是:

float fValue = ((int) m_nContrastPos + 150) / 150.0f;
float fT = 0.5f * (1.0f - fValue);
m_ColorMatrix.m[0][0] = fValue;
m_ColorMatrix.m[1][1] = fValue;
m_ColorMatrix.m[2][2] = fValue;
m_ColorMatrix.m[4][0] = fT;
m_ColorMatrix.m[4][1] = fT;
m_ColorMatrix.m[4][2] = fT;

m_ColorMatrix和上面的grayMatrix 是同一种类型的,都是ColorMatrix类型。
求大神看看,上面的灰度调节该怎么改变呢?
也就是怎么通过类似m_nContrastPos这么一个值,来改变其中的一些数据,而不是仅仅指定了数据。

百度无果,特来想问。
颜色矩阵 灰度调节 图像处理 求大神

------解决方案--------------------
http://blog.****.net/zhou8572/article/details/11673969
------解决方案--------------------
那是死的关系:

crPixel = ::GetPixel(hMemDC2, dwLoopX, dwLoopY);

NewPixel = (BYTE)((GetRValue(crPixel) * 0.299) + (GetGValue(crPixel) * 0.587) + (GetBValue(crPixel) * 0.114));

------解决方案--------------------
引用:
Quote: 引用:

http://blog.****.net/zhou8572/article/details/11673969

感谢大神,可是灰度的的值的计算公式是啥?

LX给出了标准的 算式,你也可以试试使用(r+g+b)/3
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

http://blog.****.net/zhou8572/article/details/11673969

感谢大神,可是灰度的的值的计算公式是啥?

LX给出了标准的 算式,你也可以试试使用(r+g+b)/3


也就是灰度和反色一样,都是定死了的,并不是像对比度是可以调节的吧?

在一定范围内应该能调整吧,比如加亮或者变暗,但是,使用矩阵方法估计不好控制,因为很容易色分量值超过255或者小于0