【问题标题】:How does this color matrix make image black and white?这个颜色矩阵是如何使图像变成黑白的?
【发布时间】:2013-09-19 06:51:12
【问题描述】:

我正在学习图像处理,并看到了如何通过更改颜色矩阵将图像变为黑白的实现。下面是来自Craigs Utility Library的这样一个函数的实现:

ColorMatrix TempMatrix = new ColorMatrix();
TempMatrix.Matrix = new float[][]{
                     new float[] {.3f, .3f, .3f, 0, 0},
                     new float[] {.59f, .59f, .59f, 0, 0},
                     new float[] {.11f, .11f, .11f, 0, 0},
                     new float[] {0, 0, 0, 1, 0},
                     new float[] {0, 0, 0, 0, 1}
                    };
Bitmap NewBitmap = TempMatrix.Apply(Image);

我从this 文章中知道矩阵代表RGBAW(红绿蓝琥珀色和白色)。因此,据我了解,颜色矩阵将每种 RGB 颜色与数组 {.3f, .59f, .11f} 相乘。但是我相信我错过了最后一步。

常数 .3f、.59f 和 .11f 是从哪里来的,它们使图像变成黑白的?这个矩阵乘法是如何让图像变成黑白的?

【问题讨论】:

    标签: c# .net image-processing matrix


    【解决方案1】:

    这些系数是基于人类对颜色的感知,这是从 RGB 到灰色的标准转换。参见维基百科页面http://en.wikipedia.org/wiki/Grayscale

    编辑:要回答您问题的另一部分,矩阵实际上并没有从 3 个颜色通道变为 1,它只是将所有 3 个颜色通道设置为相同的值0.3*R + 0.59*B + 0.11*G。该矩阵适用于 5 通道图像,并且根本不会更改最后一个通道。

    【讨论】:

    • 谢谢,我知道它们来自某个地方,不知道它们是 RGB 模型中人类感知黑白的一般系数。如此简单!
    猜你喜欢
    • 2021-04-28
    • 2019-07-13
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2013-06-22
    • 2013-01-13
    相关资源
    最近更新 更多