2009-02-24 62 views
2

在我开始之前,我正在使用C#。我想用ColorMatrix类做一些变换。问题是有时r,g或b发生溢出。代替将值限制在255,矩阵循环并从0开始。这意味着,对于应呈现全白色的图像,它们会再次变黑。我正在使用它来模拟线扫描相机的不同线速度的强度。有谁知道一种方法来解决这个问题?如何处理ColorMatrix溢出?

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

回答

2

我也遇到过这个问题,如果有人知道修补程序会很好。我使出丑陋的变通办法,如:(我一起乘了很多ColorMatrixes,并与这些东西到底结束)

 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} 
     }; 

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

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

+0

是的,我决定自己扫描内存。谢谢。 – 2009-02-24 18:44:30