Cómo encontrar que todos los píxeles en una imagen son en escala de grises o tienen R, G, B igual valor para cada píxel individual

Por favor no cites esto¿Cómo puedo verificar la profundidad de color de un mapa de bits? oCómo verificar si una imagen está en gris

Porque una imagen puede ser de 24/32 bits por píxel, incluso si todos los colores únicos tienen una escala de grises o menos de 256 y cada píxel puede ser de 24 o 32 bits.

¿Cómo encuentro que el píxel en una imagenBitmap.GetPixel(x, y) tiene valores iguales de R, G, B para que pueda averiguar si todos los píxeles de una imagen se encuentran en el rango de escala de grises. Debido a que el valor R, G, B de un píxel de escala de grises es el mismo. ¿O hay alguna forma mejor de saber si la imagen está en escala de grises?

Estoy escribiendo un código para comprimir el tamaño de una imagen de 16/24/32 bits, de modo que si la imagen tiene 256 colores únicos, cámbielo a una imagen de 8 bits y guárdelo.

Primero cuento colores únicos en una imagen que tiene más de 8 por píxel.

Si los colores únicos en la imagen son menores o iguales a 256, entonces

Si todos los colores únicos están en el rango de escala de grises, conviértalo a escala de grisesDe lo contrario, si algún color no es en escala de grises, convierta la imagen a 8 BPP

uint UniqueColors(Bitmap Bitmap)
{
    try
    {
        List<int> lstColors = new List<int>();

        if (null == Bitmap)
            return 0;

        for (int iCount = 0; iCount < Bitmap.Height; iCount++)
            for (int iCounter = 0; iCounter < Bitmap.Width; iCounter++)
                if (!lstColors.Contains(Bitmap.GetPixel(iCounter, iCount).ToArgb()))
                    lstColors.Add(Bitmap.GetPixel(iCounter, iCount).ToArgb());

        Bitmap.Dispose();

        return Convert.ToUInt32(lstColors.Count);
    }
    catch (Exception)
    {
        Bitmap.Dispose();
        return 0;
    }
}

Y entonces:

if (256 >= UniqueColors(new Bitmap(string ImagePath)))
{
    if (Is_Greyscale(new Bitmap(ImagePath))
        Convert_To_Greyscale(ImagePath);
    else
        Convert_To_8Bits(ImagePath);
}

ahora estoy atascado, ¿cómo puedo encontrar si cada color único en la imagen está en la furia de las grises? Con lo cual quiero decir que cada color único tiene valores iguales (R, G, B). Como R = G = B. ¿Cómo puedo encontrarlo en mi línea de código?

Bitmap.GetPixel(iCounter, iCount).ToArgb()