Просто ради ответа,
Вы можете очень просто использовать только Y канал YUV,
и вы получите точно монохромную версию изображения.
Итак, в абстрактных терминах псевдокода, просто сделайте что-то вроде этого ...
uint32_t grayscale_from_y(uint8_t y)
{
// when we want to show a YUV texture on screen
// for checking during development,
// you can be super lazy and just feed
// the "Y" to RGB upstream,
// set R G and B to the Y value, something like this:
uint32_t r = y;
uint32_t g = y;
uint32_t b = y;
return r + (g << 8) + (b << 16) + 0xff000000;
// (alpha is one there)
}
это может кому-то помочь!