2

ここで始める前に、私は C# を使用しています。ColorMatrix クラスを使用していくつかの変換を行いたいと思います。問題は、r、g、または b でオーバーフローが発生する場合があることです。値を 255 にクランプする代わりに、マトリックスはループして 0 から再び開始します。これは、すべて白く表示されるはずの画像が再び黒くなり始めることを意味します。これを使用して、ライン スキャン カメラのさまざまなライン レートで強度をモデル化しています。これを回避する方法を知っている人はいますか?

ところで、私は他の方法を念頭に置いており、行列変換を自分で行うこともできますが、この特定の問題の解決策にもっと興味があります(もちろん1つある場合)。

4

1 に答える 1

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を使用して自分で行う方が、おそらくうまくいくでしょう。

あなたが私のより良い答えを得ることを願っています!

于 2009-02-24T10:00:40.750 に答える