如何处理ColorMatrix溢出?

时间:2009-02-24 02:35:21

标签: c# gdi+ colormatrix

在我开始之前,我正在使用C#。我想使用ColorMatrix类进行一些转换。问题是有时r,g或b会发生溢出。不是将值钳位在255处,矩阵循环并再次从0开始。这意味着,对于应该看起来全白的图像,它们会再次变黑。我用这个来模拟线扫描相机不同线速的强度。有没有人知道如何绕过这个?

顺便说一句,我确实还有其他方法,我可以自己做矩阵变换,但我对这个特定问题的解决方案更感兴趣(如果当然有一个)。

1 个答案:

答案 0 :(得分:2)

我也碰到了这个问题,如果有人知道修复,那就太好了。我采取了丑陋的解决办法,如:

        float[][] matrixContrastFix =
        {
            new float[] {    1,     0,     0, 0, 0},
            new float[] {    0,     1,     0, 0, 0},
            new float[] {    0,     0,     1, 0, 0},
            new float[] {    0,     0,     0, 1, 0}, 
            new float[] {-.05f, -.05f, -.05f, 0, 1}
        };

(我将很多ColorMatrix混合在一起,最后得到这些东西。)

但我认为你的意思是其他方法,使用.LockBits并自己动手可能会更好。

希望你得到比我更好的答案!