c# - 如何处理 ColorMatrix 溢出?

标签 c# gdi+ colormatrix

在开始之前,我使用的是 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 并自己动手可能会更好。

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

关于c# - 如何处理 ColorMatrix 溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/580244/

相关文章:

c# - 适用于 ASP.NET c# 的谷歌地图

c# - .NET 库绘制路线避开障碍物

c# - 如何使用 NUnit (C#) 进行通用测试?

c# - 如何将 MSI(托管服务身份)与 Azure 存储模拟器一起使用?

c# - 使用 C# 将文本数据文件写入 Excel

c++ - 如何创建实心箭头 CustomLineCap?

arrays - 动态数组与静态数组有何不同?

java - 图像处理 - 曝光对图像的影响

黑色的android colormatrix