.NETでColormatrixを使用して、明るさ、色、飽和、色合いを変える方法
-
28-10-2019 - |
質問
ランダムなビットマップデータを含む「ビットマップ」タイプがあります。私は、各ビットに個別に作用する明るさ、色、飽和、色相のための独自の調整を書きました。
私の研究では、マトリックスの使用がこれらを調整するのに非常に速くなる可能性があることに気付きました。さらに、.NETにはColorMatrixがあり、DrawImage()のときにマトリックス効果を適用できます。
設定したマトリックスは、次のように見えます(MSDN Webサイトから):
float[][] colorMatrixElements = {
new float[] {2, 0, 0, 0, 0}, // red scaling factor of 2
new float[] {0, 1, 0, 0, 0}, // green scaling factor of 1
new float[] {0, 0, 1, 0, 0}, // blue scaling factor of 1
new float[] {0, 0, 0, 1, 0}, // alpha scaling factor of 1
new float[] {.2f, .2f, .2f, 0, 1}}; // three translations of 0.2
しかし、私は適切な範囲や、これらの数字の正確なことを実際に行うことを見つけることができませんでした。明るさ、色、飽和、色相を調整する方法がわかりません。
何か助け??どこかで良いドキュメントが足りないのですか?
ありがとう!!
解決
にいくつかの詳細があります http://www.graficaobscura.com/matrix/index.html ただし、他のコードを投稿する場合があります。ピクセルごとに操作を行うことは非常に一般的であり、通常、この種の操作でパフォーマンスの問題に遭遇することはありません。 .NETのBITMAP.SETPIXELが遅いことで有名です。良いことがあります C#画像処理シリーズ より高速な方法を示すCodeProjectで。 C ++ -CLIの経験はありませんが、見てみます。
他のヒント
カラーマトリックスでできることには制限があります。
基本的に、提供するマトリックスは、実際には均質な4次元変換です。それはあなたがあなたの色の異なるチャネル(RGBA)を回転させ、スケーリングし、翻訳することができることを意味する大きな言葉です。
見る 変換マトリックス 詳細については。
所属していません StackOverflow