从C#中的图像获取像素值?为什么它们与Matlab中的值不同?

从C#中的图像获取像素值?为什么它们与Matlab中的值不同?,c#,image,bitmap,C#,Image,Bitmap,我写了一个c#代码从灰度图像中获取像素值 Color x= c.GetPixel(i,j); byte y=(byte)(((int)x.R+x.G+x.B)/3); 我将它们与使用imread命令在Matlab中得到的值进行了比较。为什么它们完全不同?C#和Matlab中的值介于0和255之间。 例如: i=0,j=0-C:153,Matlab:149 i=0,j=1-C:153,Matlab:152 i=0,j=1-C:170,Matlab:156 灰度是不是只是平均值 例如,R+B-紫

我写了一个c#代码从灰度图像中获取像素值

Color x= c.GetPixel(i,j);
byte y=(byte)(((int)x.R+x.G+x.B)/3);
我将它们与使用imread命令在Matlab中得到的值进行了比较。为什么它们完全不同?C#和Matlab中的值介于0和255之间。 例如:

  • i=0,j=0
    -C:
    153
    ,Matlab:
    149
  • i=0,j=1
    -C:
    153
    ,Matlab:
    152
  • i=0,j=1
    -C:
    170
    ,Matlab:
    156

灰度是不是只是平均值

例如,
R+B
-紫色-的混合色应该比
R+G
-黄色深。正确的公式为(有关详细信息,请参阅)

C#代码

 byte y = (byte)((499 + 299 * x.R + 587 * x.G + 114 * x.B) / 1000);

灰度值不是平均值

例如,
R+B
-紫色-的混合色应该比
R+G
-黄色深。正确的公式为(有关详细信息,请参阅)

C#代码

 byte y = (byte)((499 + 299 * x.R + 587 * x.G + 114 * x.B) / 1000);

您可能还需要演示如何在Matlab中获得颜色,并添加一个Matlab标记。您可以提供所选点的单个R、G和B值,以及您的Matlab计算结果吗?您可能还需要演示如何在Matlab中获得颜色,并添加一个Matlab标记。您可以提供单个R、G和B值吗,选择点的B值和Matlab计算?
 byte y = (byte)((499 + 299 * x.R + 587 * x.G + 114 * x.B) / 1000);