こんにちは。
Windows10でC#, Formのアプリケーションを開発しています。
Visual Studio 2015 Communityを使っています。
###前提・実現したいこと
表示した画像のRGBを補正したいです。
###試したこと
rScale, gScale, bScaleの最小値と中央値(元の色になる値?)、最大値を知りたいです。それをSliderに実装するにはどのように値をとればよいでしょう?
実際に、いくつか値を入れてみました。
rScale=0, gScale=0, bScale=0とすると黒くなるので最小値は0だと思います。
rScale=1, gScale=1, bScale=1とするともとに色になるので中央値は1だと思います。
しかし、
rScale=256, gScale=256, bScale=256としても真っ白になりません。
rScale=2560, gScale=2560, bScale=2560としても真っ白になりません。
###疑問点
表示した画像のRGBを補正するための、
Q1)最大値を知りたいです。
Q2)なぜ真っ白にならないのでしょう? 黄色い輪郭線が残ります。
Q3)0-1-256としたとき、これをスライダーで、中央が1になるようにするには、どのような数式を用いて変換したらよいですか?
###該当のソースコード
C#
1 public static Image CreateColorCorrectedImage(Image img, 2 float rScale, float gScale, float bScale) 3 { 4 //補正した画像の描画先となるImageオブジェクトを作成 5 Bitmap newImg = new Bitmap(img.Width, img.Height); 6 //newImgのGraphicsオブジェクトを取得 7 Graphics g = Graphics.FromImage(newImg); 8 9 //ColorMatrixオブジェクトの作成 10 //指定された倍率を掛けるための行列を指定する 11 System.Drawing.Imaging.ColorMatrix cm = 12 new System.Drawing.Imaging.ColorMatrix( 13 new float[][] { 14 new float[] {rScale, 0, 0, 0, 0}, 15 new float[] {0, gScale, 0, 0, 0}, 16 new float[] {0, 0, bScale, 0, 0}, 17 new float[] {0, 0, 0, 1, 0}, 18 new float[] {0, 0, 0, 0, 1} 19 }); 20 21 //ImageAttributesオブジェクトの作成 22 var ia = new System.Drawing.Imaging.ImageAttributes(); 23 //ColorMatrixを設定する 24 ia.SetColorMatrix(cm); 25 26 //ImageAttributesを使用して描画 27 g.DrawImage(img, 28 new Rectangle(0, 0, img.Width, img.Height), 29 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia); 30 31 //リソースを解放する 32 g.Dispose(); 33 34 return newImg; 35 } 36
###補足情報(言語/FW/ツール等のバージョンなど)
Microsoft Visual Studio Community 2015
Version 14.0.25424.00 Update 3
Microsoft .NET Framework
Version 4.6.01038
インストールしているバージョン:Community
Visual C# 2015 00322-20000-00000-AA575
Microsoft Visual C# 2015
です。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。