在开始之前,我使用的是 C#。我想使用 ColorMatrix 类做一些变换。问题是有时 r、g 或 b 会发生溢出。矩阵没有将值限制在 255,而是循环并再次从 0 开始。这意味着,对于应该显示为全白的图像,它们又开始变黑。我正在使用它来模拟线扫描相机在不同线速率下的强度。有谁知道解决这个问题的方法?
顺便说一句,我确实有其他方法,我可以自己做矩阵变换,但我对这个特定问题的解决方案更感兴趣(如果有的话)。
在开始之前,我使用的是 C#。我想使用 ColorMatrix 类做一些变换。问题是有时 r、g 或 b 会发生溢出。矩阵没有将值限制在 255,而是循环并再次从 0 开始。这意味着,对于应该显示为全白的图像,它们又开始变黑。我正在使用它来模拟线扫描相机在不同线速率下的强度。有谁知道解决这个问题的方法?
顺便说一句,我确实有其他方法,我可以自己做矩阵变换,但我对这个特定问题的解决方案更感兴趣(如果有的话)。
我也遇到过这个问题,如果有人知道解决方法会很好。我采取了丑陋的变通方法,例如:
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 并自己做可能会更好。
希望你得到比我更好的答案!