グレースケール変換について

GrayScale変換を行う式は、
Y = 0.299 * R + 0.587 * G + 0.114 * B
で表せます。

24bppのBitmapを8bppのBitmapに変換するとき、
カラーパレットが必要になりますが、カラーパレットの
指定は、
  Dim Col(255) As Color
  For i As Integer = 0 To 255
   Col(i) = Color.FromArgb(i, i, i)
  Next
  Dim pal As ColorPalette = dBmp.Palette
  For i As Integer = 0 To 255
   pal.Entries(i) = Col(i)
  Next
  dBmp.Palette = pal

このような形になります。
パレットの各色のRGB値を同じにし、それを0~255の256段階で作成します。


また、バイト配列を読み取り、書き込む場合には、
24bppのBitmapのバイト配列がBGRの順に並んでいるので、
それぞれのピクセルごとのRGB値(3Byte)からカラー情報を抜き出し、
それを上記式により、1Byteのカラー情報へ変換します。


LockBitsでの実装例は、こちらを参照して下さい。


システム開発のためのVB.NETプログラミング関係一覧に戻る


Google検索の結果


system-development