在Matlab中确定图像是否为灰度

Rea*_*ion 6 rgb matlab grayscale

我正在编写一个可以拍摄图像并执行特定平滑任务的函数.在我的功能的最开始,我使用了将图像转换为灰度图像pic = rgb2gray(pic);

我希望允许该功能拍摄任何图像(即使它已经是灰度).在Matlab中,如果我传递一个灰度图像,它当前会出错,因为它无法转换它(很明显).

是否有内置功能或简单的方法来测试图像并确定其颜色格式?

我在google上阅读了有关isRGB和isGrayscale函数的内容,但它们已从更高版本的Matlab中删除...

如果它具有内置功能,我认为这样的东西会很酷.

     if (pic == RGB)
         do
          .
          .
          .
     elseif (pic == GrayScale)
         do
          .
          .
          .
     else 
         do
          .
          .
          .
Run Code Online (Sandbox Code Playgroud)

如果没有,也许我可以编写一个函数来获取pixel x,y并测试其值?

if (p(x,y) == ....或者其他的东西?我不确定......想法?

Mil*_*ilo 12

彩色图像有3个通道(R,G,B),因此:

size(pic, 3) = 3
Run Code Online (Sandbox Code Playgroud)

对于灰度:

size(pic, 3) = 1
Run Code Online (Sandbox Code Playgroud)


bla*_*bla 6

与@Milo建议的类似,但具有不同的功能.用途ndims:

ndims(pic)
Run Code Online (Sandbox Code Playgroud)

返回图像中的尺寸数pic.数组中的维数始终大于或等于2,并且在RGB图像中它将是>2.尾随单身尺寸被忽略(单身尺寸是任何尺寸size(A,dim) = 1.)