【问题标题】:Get pixel values from an image in C#? Why are they different from values in Matlab?从 C# 中的图像中获取像素值?为什么它们与 Matlab 中的值不同?
【发布时间】:2019-07-11 08:42:40
【问题描述】:

我编写了一个 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

【问题讨论】:

  • 您可能还想演示如何在 Matlab 中获取颜色,并添加一个 Matlab 标记。
  • 您能否提供所选点的 R、G 和 B 值以及您的 Matlab 计算?

标签: c# image bitmap


【解决方案1】:

灰度只是一个平均值

 Y != (R + G + B) / 3

例如,R + B - 紫色 - 的组合应该比R + G - 黄色 更暗。正确的公式是(详见https://en.wikipedia.org/wiki/Grayscale

 Y = (299 * R + 587 * G + 114 * B) / 1000 

C# 代码

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

【讨论】:

    猜你喜欢
    • 2019-02-24
    • 2018-02-13
    • 2012-09-13
    • 1970-01-01
    • 2012-06-01
    • 2016-03-13
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多