Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用ColorMatrix进行sRGB灰度转换_.net_Image Processing_Colormatrix_System.drawing.imaging - Fatal编程技术网

.net 使用ColorMatrix进行sRGB灰度转换

.net 使用ColorMatrix进行sRGB灰度转换,.net,image-processing,colormatrix,system.drawing.imaging,.net,Image Processing,Colormatrix,System.drawing.imaging,灰度转换的sRGB系数为B、G、R=0.0722、0.7152、0.2126。 这个灰度转换可以在一个带有ColorMatrix的格式为24bpprgb的图像上进行吗(如果可以,如何进行)? 或者这只能通过像素来实现吗?我还不能完全确定,但也许这就是答案: Public Function ConvertToGrayscale(ByVal image As Bitmap) As Bitmap Dim grayscaleImage As Image = New Bitmap(image.

灰度转换的sRGB系数为B、G、R=0.0722、0.7152、0.2126。

这个灰度转换可以在一个带有ColorMatrix的格式为24bpprgb的图像上进行吗(如果可以,如何进行)?
或者这只能通过像素来实现吗?

我还不能完全确定,但也许这就是答案:

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