Эта формула сработала:
int C = luma - 16;
int D = cr - 128;
int E = cb - 128;
r = (298*C+409*E+128)/256;
g = (298*C-100*D-208*E+128)/256;
b = (298*C+516*D+128)/256;
Я получил это из примера с Matlab.
Вот что: в памяти растровые изображения Windows - это не RGB, а BGR Если вы пишете в буфер памяти, вам нужно сделать что-то вроде этого:
rgbbuffer[rgbindex] = (char)b;
rgbbuffer[rgbindex + 1] = (char)g;
rgbbuffer[rgbindex + 2] = (char)r;