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