6

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

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

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

我在谷歌上读到了一些关于 isRGB 和 isGrayscale 函数的内容,但它们已从更高版本的 Matlab 中删除......

我想如果它有一个内置的功能,这样的东西会很酷。

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

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

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

4

3 回答 3

12

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

size(pic, 3) = 3

For grayscale:

size(pic, 3) = 1
于 2013-02-13T19:41:23.317 回答
6

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

ndims(pic)

返回图像中的维数pic。数组中的维数始终大于或等于 2,在 RGB 图像中为>2. 尾随单件维度被忽略(单件维度是size(A,dim) = 1.)

于 2013-02-13T23:33:53.733 回答
1

f=imfinfo('yourimage.someextension');

f.ColorType

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

于 2015-01-05T12:17:25.213 回答