Получить значения пикселей из изображения в C #?Почему они отличаются от значений в Matlab? - PullRequest
0 голосов
/ 11 июля 2019

Я пишу код c #, чтобы получить значения пикселей из изображения в градациях серого.

Color x= c.GetPixel(i,j);
byte y=(byte)(((int)x.R+x.G+x.B)/3);

Я сравнил их со значениями, полученными в Matlab командой imread. Почему они совершенно разные? Значения находятся между 0 и 255 в C # и в Matlab. Например:

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

1 Ответ

2 голосов
/ 11 июля 2019

Оттенки серого - , а не , просто среднее

 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...