グレースケール変換の sRGB 係数は、B、G、R = 0.0722、0.7152、0.2126 です。 https://en.wikipedia.org/wiki/Grayscale
このグレースケール変換は、ColorMatrix を使用した Format24bppRgb 画像で実行できますか? それとも、これはピクセル単位でのみ行うことができますか?
グレースケール変換の sRGB 係数は、B、G、R = 0.0722、0.7152、0.2126 です。 https://en.wikipedia.org/wiki/Grayscale
このグレースケール変換は、ColorMatrix を使用した Format24bppRgb 画像で実行できますか? それとも、これはピクセル単位でのみ行うことができますか?
まだ完全にはわかりませんが、おそらくこれが答えです。
Public Function ConvertToGrayscale(ByVal image As Bitmap) As Bitmap
Dim grayscaleImage As Image = New Bitmap(image.Width, image.Height, PixelFormat.Format24bppRgb)
Dim attributes As ImageAttributes = New System.Drawing.Imaging.ImageAttributes()
Dim d1 As Double = 0.0722
Dim d2 As Double = 0.7152
Dim d3 As Double = 0.2126
Dim grayscaleMatrix As New ColorMatrix(New Single()() {New Single() {d1, d1, d1, 0, 0}, New Single() {d2, d2, d2, 0, 0}, New Single() {d3, d3, d3, 0, 0}, New Single() {0, 0, 0, 1, 0}, New Single() {0, 0, 0, 0, 1}})
attributes.SetColorMatrix(grayscaleMatrix)
Using g As Graphics = Graphics.FromImage(grayscaleImage)
g.DrawImage(image, New Rectangle(0, 0, grayscaleImage.Width, grayscaleImage.Height), 0, 0, grayscaleImage.Width, grayscaleImage.Height, GraphicsUnit.Pixel, attributes)
End Using
Return grayscaleImage
End Function