Вы можете конвертировать RGB в HSB и использовать яркость.Но я думаю, что это медленный метод.Может быть, что-то вроде этого:
#define DWORD unsigned long
DWORD density(DWORD pixel)
{
// RGB in DWORD: 0x00rrggbb
return (pixel & 0x000000ff) + ((pixel >> 8) & 0x000000ff) + ((pixel >> 16) & 0x000000ff);
}