c# – 这个颜色矩阵如何使图像变为黑白?

我正在学习图像处理,并看到了如何通过改变颜色矩阵将图像转换为黑白图像的实现.以下是从
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(红绿蓝琥珀色和白色).因此,根据我的理解,colormatrix将每种RGB颜色与数组{.3f,.59f,.11f}相乘.但是我相信我错过了最后一步.

常量.3f,.59f和.11f来自哪里使图像变为黑白?这种矩阵乘法如何使图像变为黑白?

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

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

点赞