关于ColorMatrix的任何解释性文档的良好来源?

时间:2010-06-08 12:23:57

标签: .net colormatrix system.drawing.imaging

我想尝试使用ColorMatrix,但我只能找到将图像转换为灰度的示例。即便如此,它们往往会被呈现为一组“魔术数字”代码而无需解释。

有没有人知道如何使用ColorMatrix的'教程'?例如,我有兴趣将灰度图像转换为彩色图像,其中白色==透明,黑色=纯色,中间有灰色像素。 ColorMatrix能做到吗?

1 个答案:

答案 0 :(得分:2)

我不知道任何文档,但是当ColorMatrix将一个RGBAW值转换为另一个时,您可以设置矩阵以获取输入RGB值并将它们应用于输出Alpha值。 (W仅用于使矩阵数学运算)。

好的,我认为以下矩阵应该做你想做的事情:

[1.0  0.0  0.0  0.333  0.0]
[0.0  1.0  0.0  0.333  0.0]
[0.0  0.0  1.0  0.333  0.0]
[0.0  0.0  0.0  0.0    0.0]
[0.0  0.0  0.0  0.0    1.0]

这将使当前RGB值保持不变,然后将alpha设置为R / 3 + G / 3 + B / 3,即RGB值的平均值。将沿对角线的1.0值更改为0.0以完全删除RGB值。

如果你知道图像是灰度,其中R == G == B那么你可以用1.0替换0.333(重复)中的任何一个,并将其他两个替换为0.0