【问题标题】:How to deal with ColorMatrix overflows?如何处理 ColorMatrix 溢出?
【发布时间】:2009-02-24 18:00:40
【问题描述】:

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

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

【问题讨论】:

    标签: c# gdi+ colormatrix


    【解决方案1】:

    我也遇到过这个问题,如果有人知道解决方法会很好。我采取了一些丑陋的变通办法,例如:

            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 并自己做可能会更好。

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

    【讨论】:

    • 是的,我决定自己扫描内存。谢谢。
    猜你喜欢
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多