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

时间:2013-02-13 19:36:34

标签: matlab rgb grayscale

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

将图像转换为灰度图像

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

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

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

如果它具有内置功能,我认为这样的话会很酷。

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

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

if (p(x,y) == ....还是什么?我不确定......想法?

3 个答案:

答案 0 :(得分:12)

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

size(pic, 3) = 3

灰度:

size(pic, 3) = 1

答案 1 :(得分:6)

与@Milo建议类似,但具有不同的功能。使用ndims

ndims(pic)

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

答案 2 :(得分:1)

F = imfinfo( 'yourimage.someextension');

f.ColorType

这将返回图像的ColorType,您可以通过编程方式进行检查。