Determine whether an image is Grayscale in Matlab

Reanimation picture Reanimation · Feb 13, 2013 · Viewed 11.7k times · Source

I'm writing a function which can take an image and perform specific smoothing tasks on. At the very beginning of my function I convert the image to a grayscale image using pic = rgb2gray(pic);

I'm hoping to allow the function to take any image (even if its already grayscale). In Matlab, if I pass it a grayscale image it currently errors because it cannot convert it (which is obvious).

Is there a built in function or an easy way to test an image and determine its colour format?

I read on google something about isRGB and isGrayscale functions but they have been removed from later versions of Matlab...

I'm thinking something like this would be cool if it had a built in function.

     if (pic == RGB)
         do
          .
          .
          .
     elseif (pic == GrayScale)
         do
          .
          .
          .
     else 
         do
          .
          .
          .

If not, maybe I could write a function that takes a pixel x,y and tests its value?

if (p(x,y) == .... or something? I'm unsure... Thoughts?

Answer

Milo picture Milo · Feb 13, 2013

Color images have 3 channels (R, G, B), so:

size(pic, 3) = 3

For grayscale:

size(pic, 3) = 1